Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
af103aa
Fix typo: serizliation -> serialization in Gradle configuration
AgentKush Jan 21, 2026
388ed31
Fix: Implement info menu action in ReaderMenuProvider
AgentKush Jan 21, 2026
67e2bc9
Fix: Add documentation for page count mismatch handling in ReaderView…
AgentKush Jan 21, 2026
0733353
Fix: Replace internal PlatformRegistry API with OkHttp.initialize
AgentKush Jan 21, 2026
129bef3
Implement TODO items: onTrimMemory and TIP spacing
AgentKush Jan 21, 2026
84f7698
Implement adaptive prefetch queue limit based on RAM, network, and po…
AgentKush Jan 21, 2026
aafde60
Localize WebView proxy unsupported error message
AgentKush Jan 21, 2026
0df96fa
Clean up stale TODO/FIXME comments and improve code documentation
AgentKush Jan 21, 2026
17e87f1
Implement adblock CSS element hiding and domain modifiers
AgentKush Jan 21, 2026
e4ef5bc
Implement directory sharing support for local manga
AgentKush Jan 21, 2026
f95e139
Improve UX for missing chapters and clean up remaining TODOs
AgentKush Jan 21, 2026
ac2e165
Update kotatsu-parsers to v1.2
AgentKush Jan 22, 2026
42510b3
Add configurable JS timeout for WebView evaluation
AgentKush Jan 22, 2026
74dba9f
Add configurable compression format options to BitmapWrapper
AgentKush Jan 22, 2026
c906f70
Add persistent blacklist with TTL to MirrorSwitcher
AgentKush Jan 22, 2026
f4dc2ec
Add related manga support for external plugins
AgentKush Jan 22, 2026
4088fb9
Add exponential backoff retry to RateLimitInterceptor
AgentKush Jan 22, 2026
1d56aa7
Add persistent blacklist for image proxy interceptors
AgentKush Jan 22, 2026
e529452
Add configurable TTL for memory content caches
AgentKush Jan 22, 2026
098c31b
Add configurable parallel chapter checking for tracker
AgentKush Jan 22, 2026
0c9ebd9
feat: Implement Scrobbler Offline Queue (#5)
AgentKush Jan 22, 2026
f2f8190
feat: Implement Network Quality Adaptive Behavior (#6)
AgentKush Jan 22, 2026
65a0879
feat: Implement DNS Prefetching for Common Domains (#7)
AgentKush Jan 22, 2026
e2f97b5
feat: Implement Download Resume Support (#8)
AgentKush Jan 22, 2026
cd4df25
chore: Update Java target to 17 and improve DNS prefetch
AgentKush Jan 22, 2026
a44909c
feat: Database Query Optimization (#9)
AgentKush Jan 22, 2026
bb33f23
Improvement #10: Enhanced App Update Check
AgentKush Jan 22, 2026
3b00220
Improvement #11: Source Health Monitor
AgentKush Jan 22, 2026
639ddfa
Add fallbackToDestructiveMigration for incompatible database schemas
AgentKush Jan 22, 2026
6449afd
Fix memory leak in CaptchaHandler.onError()
AgentKush Jan 22, 2026
284df7c
Update kotatsu-parsers to latest commit (b5b4d2cd43)
AgentKush Jan 22, 2026
c939d74
Fix VersionId parsing for nightly builds
AgentKush Jan 22, 2026
c4c0e85
Enable release APK signing with debug keystore
AgentKush Jan 22, 2026
a80ea61
Add comprehensive README
AgentKush Jan 22, 2026
74738d7
Fix README logo path to use .webp extension
AgentKush Jan 22, 2026
6da7e1c
Bump version to 9.4.2
AgentKush Jan 22, 2026
7dadbb1
Add CONTRIBUTING.md
AgentKush Jan 22, 2026
0a31660
Fix lint errors
AgentKush Jan 22, 2026
5560d82
Add Selective Backup feature and Source Health improvements
AgentKush Jan 22, 2026
affa7c2
Fix memory leaks in CoilImageView and PagesFragment
AgentKush Jan 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
434 changes: 434 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

189 changes: 189 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# Contributing to Yumemi

Thank you for your interest in contributing to Yumemi! This document provides guidelines and instructions for contributing.

## Code of Conduct

Please be respectful and considerate in all interactions. We welcome contributors of all experience levels.

## Getting Started

### Prerequisites

- Android Studio Ladybug or later
- JDK 17 or later
- Android SDK 36
- Git

### Setting Up the Development Environment

1. **Fork the repository**
```bash
# Click "Fork" on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/Yumemi.git
cd Yumemi
```

2. **Add upstream remote**
```bash
git remote add upstream https://github.com/AgentKush/Yumemi.git
```

3. **Create a feature branch**
```bash
git checkout -b feature/your-feature-name
```

4. **Open in Android Studio**
- Open Android Studio
- Select "Open an existing project"
- Navigate to the cloned directory

5. **Build the project**
```bash
./gradlew assembleDebug
```

## How to Contribute

### Reporting Bugs

Before creating a bug report, please check existing issues to avoid duplicates.

**When reporting a bug, include:**
- Device model and Android version
- App version (found in Settings > About)
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots or screen recordings if applicable
- Logcat output for crashes

### Suggesting Features

Feature requests are welcome! Please provide:
- Clear description of the feature
- Use case and benefits
- Possible implementation approach (optional)

### Submitting Code

#### Commit Guidelines

We follow conventional commit messages:

```
type(scope): description

[optional body]

[optional footer]
```

**Types:**
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `style`: Code style changes (formatting, etc.)
- `refactor`: Code refactoring
- `perf`: Performance improvements
- `test`: Adding or updating tests
- `chore`: Maintenance tasks

**Examples:**
```
feat(reader): add double-tap zoom gesture
fix(parser): resolve CloudFlare bypass issue
docs(readme): update build instructions
refactor(database): simplify migration logic
```

#### Code Style

- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Add KDoc comments for public APIs
- Keep functions focused and concise
- Use `TODO:` comments sparingly and with issue references

#### Pull Request Process

1. **Ensure your code builds**
```bash
./gradlew assembleDebug
```

2. **Run tests**
```bash
./gradlew test
```

3. **Update documentation** if needed

4. **Create a Pull Request**
- Use a clear, descriptive title
- Reference any related issues
- Describe what changes you made and why
- Include screenshots for UI changes

5. **Respond to feedback** promptly

### Parser Contributions

Manga source parsers are maintained in a separate repository:
**[YakaTeam/kotatsu-parsers](https://github.com/YakaTeam/kotatsu-parsers)**

To fix or add parsers:
1. Fork the kotatsu-parsers repository
2. Make your changes following their contribution guidelines
3. Submit a PR to that repository

## Project Structure

```
app/src/main/kotlin/org/koitharu/kotatsu/
├── bookmarks/ # Bookmark management
├── browser/ # WebView browser
├── core/ # Core utilities, database, network
│ ├── db/ # Room database and DAOs
│ ├── network/ # OkHttp client and interceptors
│ ├── parser/ # Parser integration
│ └── ui/ # Base UI components
├── details/ # Manga details screen
├── download/ # Download management
├── explore/ # Source exploration
├── favourites/ # Favorites management
├── filter/ # Search filters
├── history/ # Reading history
├── local/ # Local manga handling
├── main/ # Main activity and navigation
├── reader/ # Manga reader
├── scrobbling/ # External tracker integration
├── search/ # Search functionality
├── settings/ # App settings
├── sync/ # Cloud sync
├── tracker/ # Update tracker
└── widget/ # Home screen widgets
```

## Building Variants

| Command | Output | Description |
|---------|--------|-------------|
| `./gradlew assembleDebug` | `app-debug.apk` | Development build |
| `./gradlew assembleRelease` | `app-release.apk` | Optimized build |
| `./gradlew assembleNightly` | `app-nightly.apk` | Daily build |
| `./gradlew test` | — | Run unit tests |

## Need Help?

- Check existing [Issues](https://github.com/AgentKush/Yumemi/issues)
- Review the [README](README.md)
- Look at recent commits for examples

## License

By contributing, you agree that your contributions will be licensed under the [GNU General Public License v3.0](LICENSE).

---

Thank you for contributing! 🎉
168 changes: 168 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# Yumemi

<p align="center">
<img src="app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp" width="120" alt="Yumemi Logo"/>
</p>

<p align="center">
<b>A feature-rich manga reader for Android</b>
</p>

<p align="center">
<a href="https://github.com/AgentKush/Yumemi/releases"><img src="https://img.shields.io/github/v/release/AgentKush/Yumemi?style=flat-square" alt="Release"/></a>
<a href="https://github.com/AgentKush/Yumemi/blob/devel/LICENSE"><img src="https://img.shields.io/github/license/AgentKush/Yumemi?style=flat-square" alt="License: GPL-3.0"/></a>
<img src="https://img.shields.io/badge/Android-7.0%2B-brightgreen?style=flat-square" alt="Android 7.0+"/>
<img src="https://img.shields.io/badge/Kotlin-2.2-blue?style=flat-square" alt="Kotlin"/>
</p>

---

Yumemi is a free and open-source manga reader for Android based on [Kotatsu](https://github.com/KotatsuApp/Kotatsu). It provides a clean, modern interface for reading manga from various online sources with powerful features for organizing and tracking your reading progress.

## Features

- **Multiple Sources** — Access manga from 1000+ sources via [kotatsu-parsers](https://github.com/YakaTeam/kotatsu-parsers)
- **Offline Reading** — Download chapters for reading without internet
- **Reading Progress Tracking** — Automatic history and bookmarks
- **Scrobbling** — Sync progress with MyAnimeList, AniList, Shikimori, and Kitsu
- **Local Manga** — Read downloaded CBZ/CBR/ZIP archives
- **Customizable Reader** — Multiple reading modes, color filters, and gestures
- **Material Design** — Modern UI following Material Design 3 guidelines
- **App Lock** — Protect the app with biometric or PIN authentication
- **Discord Rich Presence** — Share what you're reading on Discord
- **Tracker** — Get notified when new chapters are available
- **Categories & Favorites** — Organize your library your way
- **Search** — Find manga across all sources simultaneously

## Screenshots

<!-- Add screenshots here -->

## Download

Download the latest APK from the [Releases](https://github.com/AgentKush/Yumemi/releases) page.

### Build Variants

| Variant | Description |
|---------|-------------|
| **Release** | Optimized build with ProGuard minification |
| **Debug** | Development build with debugging enabled |
| **Nightly** | Daily builds with latest changes |

## Building from Source

### Prerequisites

- Android Studio Ladybug or later
- JDK 17 or later
- Android SDK 36

### Build Commands

```bash
# Clone the repository
git clone https://github.com/AgentKush/Yumemi.git
cd Yumemi

# Build debug APK
./gradlew assembleDebug

# Build release APK
./gradlew assembleRelease

# Build nightly APK
./gradlew assembleNightly

# Run tests
./gradlew test
```

### Output Locations

- Debug: `app/build/outputs/apk/debug/app-debug.apk`
- Release: `app/build/outputs/apk/release/app-release.apk`
- Nightly: `app/build/outputs/apk/nightly/app-nightly.apk`

## Tech Stack

- **Language:** Kotlin
- **Architecture:** MVVM with Clean Architecture
- **Dependency Injection:** Hilt
- **Database:** Room
- **Networking:** OkHttp + Coroutines
- **Image Loading:** Coil 3
- **Background Work:** WorkManager
- **UI:** Material Design 3, ViewBinding

## Project Structure

```
app/
├── src/main/kotlin/org/koitharu/kotatsu/
│ ├── bookmarks/ # Bookmark management
│ ├── browser/ # WebView browser for sources
│ ├── core/ # Core utilities, database, network
│ ├── details/ # Manga details screen
│ ├── download/ # Download management
│ ├── explore/ # Source exploration
│ ├── favourites/ # Favorites management
│ ├── filter/ # Search filters
│ ├── history/ # Reading history
│ ├── list/ # Manga list components
│ ├── local/ # Local manga handling
│ ├── main/ # Main activity and navigation
│ ├── reader/ # Manga reader
│ ├── scrobbling/ # External tracker integration
│ ├── search/ # Search functionality
│ ├── settings/ # App settings
│ ├── sync/ # Cloud sync
│ ├── tracker/ # Update tracker
│ └── widget/ # Home screen widgets
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

### Reporting Issues

- Check existing issues before creating a new one
- Include device info, Android version, and app version
- Provide steps to reproduce the issue
- Include screenshots or logs if applicable

## Acknowledgements

- [Kotatsu](https://github.com/KotatsuApp/Kotatsu) — Original project
- [YakaTeam/kotatsu-parsers](https://github.com/YakaTeam/kotatsu-parsers) — Manga source parsers
- All the contributors who help improve this project

## License

```
Copyright (C) 2020-2026 Yumemi Contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
```

---

<p align="center">Made with ❤️ for manga readers everywhere</p>
Loading