Two related bugs left anime downloads stuck at 0% with no error visible to the user. Manga downloads from clean HTTPS sources were unaffected. 1) lib/utils/extensions/string_extensions.dart isMediaVideo() did a plain endsWith on the full URL string, so URLs shaped like https://host/play/{id}/video.mp4?for={token} (used by AnimeGG and several other sources) failed the filter because of the trailing `?for=...` query string. With both m3u8Urls and nonM3u8Urls empty in downloadChapter, the surrounding Future.doWhile(() => isOk == true) poll never sets isOk and waits forever -- MDownloader is never constructed. Fix: match against Uri.tryParse(this)?.path instead of the full string, and use a leading "." in the suffix so e.g. "flashmp4" cannot accidentally match. 2) lib/services/download_manager/download_isolate_pool.dart Once the URL passes the filter, _downloadFile (anime branch) opens a streaming request. When the source extension sets Range: bytes=0-, the server correctly responds with HTTP 206 Partial Content. The previous "if (response.statusCode != 200)" check rejected that, retried 3x, and threw. The throw was masked by an outer catch(_) in downloadChapter, so the user only saw a forever-spinner. Fix: accept any 2xx (>= 200 && < 300). Same fix applied to _downloadSegment for HLS segment fetches. Repro - Source: AnimeGG (en) -- install via Mangayomi extensions - Pick any episode (tested with Toriko Ep 147, Gintama Ep 39, Grand Blue Ep 12) - Tap the download icon Before: an empty ".../AnimeGG (EN)/<series>/<episode>.mp4"-named folder is created, the download icon stays in the spinner state, no error toast. After: the .mp4 is written to disk at the size declared in Content-Length (65,026,283 bytes for Toriko Ep 147), plays in the system video player. Tested on macOS 26.3 / Apple Silicon with AnimeGG (multiple episodes, multiple series, including a 180 MB 720p) and a manga control (Asura Scans, 9 pages) on the same build to confirm no regression on the manga path. |
||
|---|---|---|
| .github | ||
| android | ||
| assets | ||
| go | ||
| ios | ||
| lib | ||
| linux | ||
| macos | ||
| packaging/arch | ||
| proto | ||
| repo | ||
| rust | ||
| rust_builder | ||
| test | ||
| windows | ||
| .gitignore | ||
| analysis_options.yaml | ||
| devtools_options.yaml | ||
| ffigen.yaml | ||
| flutter_rust_bridge.yaml | ||
| l10n.yaml | ||
| LICENSE | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
Mangayomi
Mangayomi is an open-source Flutter app for reading manga, novels, and watching animes across multiple platforms.
Features
Features include:
- Reading manga, webtoons, comics, novels, animes, movies, and more.
- Local reading of content.
- A configurable reader with multiple viewers, reading directions and other settings.
- Tracker support for anime and manga: MyAnimeList, AniList, SIMKL, trakt and Kitsu support.
- Categories to organize your library.
- Light and dark themes.
- Create backups locally to read offline or to your desired cloud service.
Download
Get the app from our releases page.
iOS Sideloading Sources
Note: Only future releases (> 0.5.2) will be signed (and therefore have AltStore/SideStore compatibility).
Contributing
Contributions are welcome!
To get started with extension development, see CONTRIBUTING-DART.md for create sources in Dart or CONTRIBUTING-JS.md for create sources in JavaScript.
Using flutter_rust_bridge
To run and build this app, you need to have Flutter SDK and Rust toolchain installed on your system. You can check that your system is ready with the commands below. Note that all the Flutter subcomponents should be installed.
rustc --version
flutter doctor
You also need to have the CLI tool for flutter_rust_bridge ready.
cargo install 'flutter_rust_bridge_codegen'
run the following command:
flutter_rust_bridge_codegen generate
Now you can run and build this app just like any other Flutter projects.
flutter run
License
Copyright 2023 Moustapha Kodjo Amadou
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Disclaimer
Mangayomi is not hosting any kind of content and the developer(s) of this application does not have any affiliation with the content providers that are freely available in the internet.



