kodjodevf/mangayomi
52.8
Adequate · 5 August 2026
98.7k
lines of production code
Dart
primary language
3
measurements over time
What this system is
Mangayomi is a cross-platform media consumption application supporting manga, anime, and novels across Android, iOS, macOS, Windows, and Linux. It features a modular architecture that allows users to browse, read, and track content from diverse sources, including local archives and external extension services. The system integrates a Go-based torrent server for P2P functionality, Rust-backed image decoding for performance, and a multi-language extension engine that supports Dart, JavaScript, and Mihon formats. Additionally, it provides robust state management via Riverpod, data persistence with Isar, and synchronization with external tracking services.
How it got here
2023 — multi-platform expansion and feature consolidation
89 changes.
This period focused on establishing native support for Linux, Windows, and macOS while refactoring the Android and iOS build configurations. The team also overhauled the application's architecture by migrating data storage to Isar, implementing a centralized navigation system, and introducing extensive settings and UI components for manga, anime, and extension management.
2024–2025 — Multi-language extension runtime and native backend
43 changes.
The project significantly expanded its extension ecosystem by introducing native runtimes for Dart, JavaScript, and Mihon/LNReader plugins, alongside a new Go-based torrent server with FFI bindings. Concurrently, the codebase integrated Rust for EPUB parsing and HTTP client operations, while refactoring the download manager and reader architecture to support these new capabilities.
2026 — feature expansion and performance improvements
10 changes.
This period focused on adding significant new features and improving performance across the application. Key additions include DNS-over-HTTPS support, biometric app lock, calendar widgets for manga releases, and text-to-speech for novels. The team also introduced a mass migration tool for library sources, a native image decoding hook for faster rendering, and TV-optimized interfaces for anime details.
Features
Add DNS-over-HTTPS (DoH) support with custom endpoint selection
Users can now choose from a variety of DNS-over-HTTPS providers (such as Cloudflare, Google, AdGuard, and others) or configure a custom DoH endpoint URL. The app resolves hostnames using the selected DoH service, with fallback to other providers if the primary one fails, and caches results for improved performance.
lib/services/http/doh · high confidence
Add EPUB parsing and HTTP client APIs
The Rust backend now includes a new \epub\ module that parses EPUB files, extracting metadata, chapters, and resources (CSS, images) from both file paths and byte arrays. Additionally, a new \rhttp\ module provides a configurable HTTP client with support for proxies, TLS settings, timeouts, and request cancellation via cancellation tokens.
rust · high confidence
Add M3U8 video and subtitle download support
The M3U8 download manager is introduced to handle video segment downloads, including support for downloading and saving external subtitle tracks alongside the video content. The implementation includes new models for download parameters and segment information, enabling concurrent segment downloads and automatic merging of downloaded parts.
_lib/services/download\manager/m3u8 · high confidence
Add Manage Trackers settings screen
A new Manage Trackers settings screen has been added, allowing users to view and manage their configured media trackers. The screen displays a grid of tracker options (including a 'Local' option and external services like Trakt.tv), and selecting a tracker navigates to a detail view that lists associated manga and anime titles tracked by that service.
_lib/modules/more/settings/track/manage\trackers · high confidence
Add TV-optimized anime detail view
A new TV-specific detail page for anime entries has been added, providing a d-pad-first interface with a split layout: the left column displays actions (such as tracking and categories) while the right column lists episodes. The view implements a custom focus model to manage navigation between the action menu and the episode list, ensuring that focus is correctly restored when returning from nested screens like migration or tracking dialogs.
_lib/modules/library/tv\home, lib/modules/manga/detail/tv · high confidence
Add Windows build configuration and native library support
The Windows build configuration (CMakeLists.txt) is introduced, enabling the compilation and installation of the subsampling image decoder shared library (subsampling\_scale\_image\_view) and the libmtorrentserver DLL. This change ensures that these native components are correctly built, linked, and installed alongside the executable, supporting dynamic library loading for image decoding on Windows.
windows · high confidence
Add about screen with update and logging controls
A new About screen has been added to the app, providing users with controls to manage application settings. Users can now toggle automatic update checks and enable application logging. The screen also includes a manual check for updates, options to share application logs, and links to the project's GitHub and Discord channels.
lib/modules/more/about · high confidence
Add calendar widgets for upcoming manga releases
Added new Flutter widgets to support a calendar-based view of upcoming manga releases. The change introduces \UpcomingCalendar\ for the main calendar interface, \CalendarDay\ for individual day cells, \CalendarHeader\ for navigation, \CalendarIndicator\ for event markers, and \UpcomingItem\ for listing individual manga entries. These components collectively enable users to browse and interact with scheduled manga updates via a monthly calendar view.
lib/modules/calendar/widgets · high confidence
Add desktop WebView support for Linux and Windows
The webview module now includes a new \webview.dart\ implementation that provides a native desktop WebView experience on Linux and Windows, utilizing \desktop\_webview\_window\ and \flutter\_inappwebview\ to render web content in separate windows or embedded views, while maintaining the existing mobile WebView behavior for other platforms.
lib/modules/webview · high confidence
Add mass migration feature to select and migrate library items between sources
Users can now initiate a mass migration process from the library. The flow begins with a source selection screen that groups library items by source, allowing users to choose which source to migrate. From there, users can review and select specific items to migrate, with the ability to deselect or select ranges of items. The process then moves to a destination selection screen, where users choose the target source for the migration, respecting the NSFW filter settings. Finally, the runner screen handles the matching, review, and application of migrations, providing progress updates and a summary of the results.
_lib/modules/mass\migration · high confidence
Add novel text-to-speech playback and settings
Users can now use text-to-speech to listen to novel content. This adds a new \NovelTtsService\ that handles speech synthesis, paragraph extraction, and word-level progress tracking. A \TtsPlayerBar\ provides playback controls (play, pause, skip, progress) for the novel content. Additionally, a \TtsSettingsTab\ allows users to adjust speech speed, pitch, and language. The service includes a platform check to ensure TTS functionality on non-Linux platforms.
lib/modules/novel/tts · high confidence
Add rhttp HTTP client library to the services layer
The rhttp HTTP client library has been added to the lib/services/http/rhttp directory, including its MIT license file and the main Dart entry point that exports the client, models, and exceptions. This introduces a new HTTP client implementation for use within the application.
lib/services/http/rhttp · high confidence
Add rhttp-based HTTP client with cancellation support
Introduced a new HTTP client implementation in lib/services/http/rhttp/src/client that wraps the rhttp library. The RhttpClient provides direct access to rhttp's features, including request cancellation via CancelToken. The RhttpCompatibleClient adapts this client to the standard http package interface, enabling a switch to rhttp while maintaining compatibility with existing code that relies on the http package's BaseClient interface.
lib/services/http/rhttp/src/client · high confidence
Add stream provider for category filtering by item type
A new Riverpod provider, \getMangaCategorieStream\, has been added to the \lib/modules/more/categories/providers\ directory. This provider exposes a stream of \Category\ objects, filtered by a specific \ItemType\. This change enables the application to dynamically load and display categories for different content types (such as novels or anime) through a reactive stream, supporting the broader feature of adding support for new content categories.
lib/modules/more/categories/providers · high confidence
Add support for Mihon extensions via a new service layer
The \lib/eval/mihon\ directory now contains the core implementation for integrating Mihon extensions. This includes \models.dart\, which defines data structures for parsing manga/anime metadata and status codes, and \service.dart\, which implements the \ExtensionService\ interface. The service communicates with a remote proxy server to fetch popular, latest, and search results, as well as detailed information and chapters, by executing source code provided by the extensions. This change enables the application to utilize external content sources through the Mihon ecosystem.
lib/eval/mihon · high confidence
Add support for custom DNS-over-HTTPS and external Cloudflare-bypass proxies
The HTTP service layer now supports configuring a custom DNS-over-HTTPS (DoH) endpoint and an external Cloudflare-bypass proxy (e.g., FlareSolverr or Byparr). Users can enable DoH via the settings, selecting from built-in providers or a custom URL, and can configure a proxy URL that is persisted in the app's settings. The HTTP client initialization has been updated to apply these DNS and proxy configurations, and a new \CfProxyStore\ class manages the proxy URL storage.
lib/services/http · high confidence
Add tracking service management screen
The app now includes a dedicated settings screen for managing tracking services. Users can connect and configure accounts for AniList, Kitsu, MyAnimeList, Simkl, and Trakt.tv directly from the More \> Settings \> Tracking section. The screen also provides a toggle to update progress after reading and a link to manage tracker settings.
lib/modules/more/settings/track · high confidence
Added AES encryption/decryption and JavaScript unpacking utilities
Added new utility classes for cryptographic operations and code deobfuscation. The \CryptoAES\ class provides static methods to encrypt and decrypt strings using AES with CryptoJS-compatible formatting (including salt and IV derivation). Additionally, \Deobfuscator\ and \JsUnpacker\ classes were introduced to parse and deobfuscate JavaScript code, specifically handling packed scripts and bracket-based password decoding.
lib/utils/cryptoaes · high confidence
Added Arch Linux package for Mangayomi
Users on Arch Linux can now install the Mangayomi application via the official PKGBUILD, which packages the Linux binary, creates a system symlink, and installs the desktop entry and icon for a seamless integration.
packaging · high confidence
Added CBZ archive conversion for downloaded chapters
The download module now includes a new \convert\_to\_cbz.dart\ provider and its Riverpod-generated counterpart, enabling the application to automatically convert downloaded chapter images into CBZ (Comic Book Zip) archive files. This feature allows users to download content in a more portable, single-file format that is compatible with many e-reader and comic book applications, alongside the existing directory-based storage.
lib/modules/manga/download/providers · high confidence
Added FFI bindings and native libraries for torrent server and image decoding
New FFI bindings and native libraries have been added to support a torrent server and an image decoder. The diff introduces \lib/ffi/libmtorrentserver.h\ and \lib/ffi/torrent\_server\_ffi.dart\, which expose the \Start\ function from a new \libmtorrentserver\ shared library, enabling torrent server functionality across macOS, Linux, and Windows. Additionally, \lib/ffi/image\_decoder.cpp\ and \lib/ffi/image\_decoder.h\ introduce a C++ image decoder with a custom regional BMP decoder and margin detection logic, with corresponding Dart bindings in \lib/ffi/generated\_bindings.dart\ and \lib/ffi/image\_decoder.h\ exposing the \init\_decoder\, \decode\_region\, and \free\_decoder\ functions.
lib/ffi · high confidence
Added Go-based torrent server implementation with cross-platform bindings
The Go directory now contains a new torrent server implementation (server.go) that exposes an HTTP API for managing torrents, including features like a worker pool for concurrent I/O, optimized HTTP transport settings, and strict security constraints (e.g., rejecting non-loopback addresses, limiting request body size, and validating origins). This core logic is exposed to desktop (main.go) and mobile (main.go) environments via C bindings, allowing native applications to start the server with a JSON configuration. A build script (build\_go.sh) is also added to compile these bindings for Linux, macOS, Windows, Android, and iOS, while server\_test.go provides unit tests for the server's configuration and security validations.
go · high confidence
Added Linux platform support with full plugin registration
This change introduces Linux platform support for the Flutter application. It adds the necessary CMake build configuration and generates the plugin registrant files, which register a suite of plugins including desktop\_webview\_window, flutter\_qjs, gtk, isar\_community\_flutter\_libs, m\_extension\_server, media\_kit\_libs\_linux, media\_kit\_video, screen\_retriever\_linux, url\_launcher\_linux, volume\_controller, window\_manager, and window\_to\_front, along with FFI plugins like flutter\_discord\_rpc\_fork, jni, and rust\_lib\_mangayomi.
linux/flutter · high confidence
Added Linux torrent server library header
A new header file for the libmtorrentserver library has been added to the Linux bundle. This header defines the C/C++ interface for the torrent server functionality, including type definitions for Go interop and the declaration for the Start function, enabling the Linux build to link against and use the torrent server library.
linux/bundle · high confidence
Added MyAnimeList tracker service
Users can now connect their MyAnimeList account to the app's tracking system. This change introduces the necessary model to handle OAuth authentication, including the storage of the client ID alongside standard token fields like access and refresh tokens.
lib/modules/more/settings/track/myanimelist · high confidence
Added Rust builder infrastructure for cross-platform builds
The \rust\_builder\ directory now includes the full Cargokit integration, providing build scripts and CMake configurations for iOS, macOS, Linux, and Windows. This enables the project to compile and bundle Rust libraries on all supported platforms.
_rust\builder · high confidence
Added Windows deep link protocol registration
Introduced a new \url\_protocol\ utility that enables registering custom URL schemes on Windows, allowing the app to handle deep links. The implementation uses platform-specific code to modify Windows registry entries for URL handling, with a fallback for web and other platforms. This supports the broader capability of deep linking into the application from external sources on Windows.
_lib/utils/url\protocol · high confidence
Added Xcode scheme configuration for the macOS Runner app
A new Xcode scheme file (Runner.xcscheme) was added to the macOS project, defining build, test, launch, profile, analyze, and archive actions for the 'mangayomi.app' target. This change establishes the development environment settings for the macOS application, ensuring that the app can be correctly built, tested, and launched within the Xcode IDE.
ios/Runner.xcodeproj/xcshareddata, macos/Runner.xcodeproj/xcshareddata · high confidence
Added application-level logging capability
Users can now have application logs written to a file (logs.txt) in the app's storage directory. The logging system includes an in-memory buffer for immediate access to recent logs and a persistent file-based logger that respects a user preference for enabling/disabling logs. Logs are formatted with timestamps and log levels (debug, info, warning, error) and are automatically rotated if the file exceeds 100KB.
lib/utils/log · high confidence
Added calendar provider for favorite manga updates
A new Riverpod provider has been added to the calendar module, exposing a stream of favorite manga that are ongoing, unknown, or finished, and have a scheduled update day. This allows the calendar feature to track and display upcoming manga releases based on their update schedule.
lib/modules/calendar/providers · high confidence
Added chapter preloading manager for seamless navigation
A new ChapterPreloadManager has been introduced to handle bidirectional preloading of previous and next chapters. This manager maintains a list of preloaded pages, tracks loaded chapters in memory, and supports concurrent preloading of adjacent chapters to ensure smooth scrolling and navigation within the manga reader.
lib/modules/manga/reader/managers · high confidence
Added filter and card selector widgets for the manga home screen
A new FilterWidget was added to the manga home screen, providing a reusable component for applying and managing various filter types (text, header, separator, tri-state, checkbox, group, sort, and select filters) using a SuperListView. Additionally, a new MangasCardSelector widget was introduced to handle the selection of manga categories or sources, featuring a TV-optimized pill-style UI for Android TV and a standard ElevatedButton for other platforms.
lib/modules/manga/home/widget · medium confidence
Added iOS Flutter build configuration files
The project now includes the standard iOS Flutter configuration files (AppFrameworkInfo.plist, Debug.xcconfig, and Release.xcconfig) in the ios/Flutter directory. These files define the app framework's bundle settings and configure the build system to include the necessary Pods and generated configurations for both debug and release builds.
ios/Flutter · high confidence
Added iOS Libmtorrentserver framework
The iOS framework for the torrent server library (Libmtorrentserver) has been added, providing the Objective-C headers and configuration files for both the arm64 and simulator (x86\_64) architectures. This enables the iOS application to interface with the Go-based torrent server functionality via the generated bindings.
ios/Frameworks · high confidence
Added iOS and macOS app launch screens and main UI storyboards
The iOS and macOS native app templates now include their default launch screen and main interface storyboards. On iOS, this provides the standard white splash screen and the initial Flutter view controller. On macOS, the default application menu and window setup are included. These changes ensure the apps build and run with the expected initial UI for each platform.
(repo-wide) · high confidence
Added iOS and macOS workspace configurations
New workspace configuration files were added for both the iOS and macOS targets. This includes the main workspace data files that link the Xcode projects and the Pods, along with shared settings such as disabling previews and suppressing the 32-bit warning. These changes ensure that the Xcode workspaces are correctly structured for building and running the app on Apple platforms.
ios/Runner.xcworkspace, macos/Runner.xcworkspace · high confidence
Added iOS project configuration with Libmtorrentserver integration
The iOS project file (project.pbxproj) was created, establishing the build configuration for the iOS application. This includes linking the Libmtorrentserver.xcframework, which enables torrent server capabilities on iOS, alongside standard Flutter and CocoaPods dependencies.
ios/Runner.xcodeproj · high confidence
Added localization files for Arabic, Assamese, German, English, Spanish, French, and Hindi
New localization files (app\_ar.arb, app\_as.arb, app\_de.arb, app\_en.arb, app\_es.arb, app\_es\_419.arb, app\_fr.arb, app\_hi.arb) have been added to the lib/l10n directory, providing translated strings for the respective languages. This enables the application to display its interface in these languages, covering core UI elements such as library management, reader settings, and download options.
lib/l10n · high confidence
Added macOS platform support for Flutter plugins
The macOS build configuration and plugin registry have been added to the project. This enables the application to properly register and utilize various Flutter plugins on macOS, including media playback (MediaKit), in-app web views, text-to-speech, and system controls (volume, brightness, window management).
macos/Flutter · high confidence
Added mass migration service for updating manga metadata and chapters
A new service at lib/modules/mass\_migration/services/mass\_migration\_service.dart introduces the capability to migrate a manga entry to a new source. This service handles updating the manga's metadata (name, link, image, source info) and synchronizes chapters and reading history from the old entry to the new one, effectively allowing users to update their library with fresh data from a different source.
_lib/modules/mass\migration/services · high confidence
Added native image decoding build hook
A new build hook has been added to compile the 'subsampling\_scale\_image\_view' native library from C++ sources. This hook configures the build to link against CoreFoundation, CoreGraphics, and ImageIO frameworks on iOS and macOS, enabling native image decoding capabilities for the application.
hook · high confidence
Added per-source saved searches and home display type state providers
Users can now save and re-run frequent searches per source, with the search history persisted in the local database. Additionally, the app now tracks the manga home screen display type preference, allowing users to remember their chosen layout across sessions.
lib/modules/manga/home/providers · high confidence
Added source preference management and extension listing providers
The browse module now includes dedicated providers for managing source preferences and listing available extensions. A new \extension\_preferences\_providers.dart\ file introduces logic to persist and retrieve source-specific settings (such as list, checkbox, and edit text preferences) using Isar, while \extensions\_provider.dart\ adds a Riverpod stream to fetch active sources filtered by item type. This enables users to customize and remember settings for individual extensions.
lib/modules/browse/extension/providers · high confidence
Added state providers for app settings
New Riverpod state providers have been added to manage application settings, including algorithm weights, downloaded-only mode, and incognito mode. These providers enable users to configure and persist these specific preferences within the app's settings.
lib/modules/more/providers · high confidence
Added support for Aniyomi and Mihon backup formats
The application now supports importing backups from Aniyomi and Mihon. New protocol buffer definitions (BackupAnime, BackupAniyomi, BackupMihon, etc.) have been added to define the structure for these backup formats, enabling users to migrate their data from these specific apps.
proto · high confidence
Added sync settings and auto-sync configuration
A new SyncScreen is introduced in the app's settings, allowing users to enable or disable syncing, configure automatic sync intervals (from 5 minutes to 12 hours), and toggle the synchronization of histories, updates, and settings. The screen also provides a way to log out of the sync server.
lib/modules/more/settings/sync · high confidence
Added track list item widget for settings
A new \TrackListile\ widget was added to the settings UI, providing a list-item component for tracking services. This widget displays the tracker's icon and name, shows a checkmark if the user is logged in, and presents a confirmation dialog to log out when tapped.
lib/modules/more/settings/track/widgets · medium confidence
Added video extractors for multiple streaming services
Added new video extractors for Doodstream, Filemoon, GogoCDN, Mp4Upload, MyStream, MyTV, Okru, Quark/UC Cloud Drive, Sendvid, Sibnet, StreamLare, StreamTape, StreamWish, Vidbom, Voe, and YourUpload, enabling playback from these additional anime hosting providers.
_lib/services/anime\extractors · high confidence
App lock with biometric authentication
Users can now secure the app with a biometric or device credential. A new Security screen in Settings allows enabling or disabling the app lock, which requires authentication to access the app.
lib/modules/more/settings/security · high confidence
Automatic update check and Android APK installation
Users can now enable automatic update checks, which will compare the current app version against the latest release on GitHub. When a new version is found, the app presents a dialog allowing users to download the APK directly on Android or open the release page in a browser on other platforms. This includes a new download screen that handles file downloads and triggers the Android package installer, replacing the previous method of installing updates.
lib/modules/more/about/providers · high confidence
Centralized app navigation with GoRouter and Riverpod
The application's navigation has been consolidated into a single \router.dart\ file, implementing a GoRouter-based routing system managed by Riverpod. This change introduces a unified navigation structure that defines routes for manga, anime, and novel libraries, as well as dedicated views for reading, browsing, and settings. The router is now a managed state, allowing for dynamic updates to the navigation stack and consistent deep-linking across the app.
lib/router · high confidence
Centralized appearance settings via new providers
The appearance settings are now managed by dedicated state providers (e.g., \appFontFamily\, \appUiScaleState\, \blendLevelState\, \flexSchemeColorState\, \pureBlackDarkModeState\, \themeModeState\, and \themeProvider\). These providers read from the local database and update the app's theme, font, scale, and color scheme reactively, ensuring that changes to appearance settings are immediately reflected across the application.
lib/modules/more/settings/appearance/providers · high confidence
Centralized storage and localization providers
Introduced new Riverpod providers for managing application state: l10n\_providers.dart handles locale selection and localization lookups, while storage\_provider.dart centralizes file system operations including directory management, cache handling, and permission requests. These changes consolidate storage and localization logic into dedicated provider classes, improving code organization and enabling consistent access to user preferences and file paths across the app.
lib/providers · high confidence
Customize the app's appearance and navigation layout
Users can now adjust the app's visual style and layout through a new Appearance settings screen. This includes a 'Follow system theme' option to automatically switch between light and dark modes, alongside manual dark mode and theme selection. The app UI scale is now adjustable across the entire app, not just on TV. Additionally, users can reorder and toggle the visibility of each navigation item in the bottom bar, and choose between a flat grid or rows-based layout for the TV home screen.
lib/modules/more/settings/appearance · high confidence
Initial Linux desktop platform support
Adds the foundational Linux build configuration (CMakeLists.txt), application entry point (main.cc), and GTK-based window management (my\_application.cc/h) to enable running the application on Linux desktops.
linux · high confidence
Introduce Dart-based extension service for evaluating extensions
Added a new Dart extension service implementation that uses the d4rt package to execute extension code. The service handles standard extension operations such as fetching popular/latest updates, searching, retrieving manga details, and processing page/video lists, while also providing a fallback mechanism for header retrieval and supporting source preferences and filter lists.
lib/eval/dart · medium confidence
Introduce JavaScript extension runtime with HTTP, DOM, and extractor support
Added a new JavaScript extension runtime in lib/eval/javascript that enables executing JS-based extensions. The update introduces a JsExtensionService that wires up helper modules for HTTP requests (JsHttpClient), DOM selection and parsing (JsDomSelector), video/content extractors (JsVideosExtractors), and source preferences (JsPreferences). This allows extensions to make network requests, parse HTML, and extract video links using a consistent JS API.
lib/eval/javascript · high confidence
Introduce global search screen for browsing all sources
A new GlobalSearchScreen widget has been added to the browse module, providing a centralized interface for searching across all configured sources. The screen features a search input field and dynamically loads search results from each source in a scrollable list, handling loading states and error messages for each individual source query.
_lib/modules/browse/global\search · high confidence
Introduce reusable custom text field widget
A new \CustomTextFormField\ widget has been added to the application's UI library. This component provides a styled text input field that integrates with category name validation logic, displaying specific error states and localization for the 'name' field. It is designed to be reused across the app, particularly for category management screens.
lib/modules/more/categories/widgets · medium confidence
Introduce the 'More' settings and utility hub
A new 'More' screen has been added to the application, consolidating various settings and utility options into a single, accessible location. This includes direct links to History, Download Queue, Mass Migration, Categories, Statistics, Calendar, Data & Storage, Settings, and About. The screen also features toggles for 'Downloaded Only' and 'Incognito Mode', and conditionally displays the History and Download Queue entries based on user preferences and platform (e.g., hiding downloads on TV).
lib/modules/more · high confidence
Introduce track provider for managing anime/manga tracking preferences
A new provider, \track\_providers.dart\, is added to manage user tracking preferences and sync state for anime and manga services. This includes logic for logging in and out of trackers, updating track records, deleting tracks, and managing the \updateProgressAfterReading\ setting. The implementation uses Isar for local storage and Riverpod for state management, laying the groundwork for integrating external tracking services like MyAnimeList, AniList, and Trakt.
lib/modules/more/settings/track/providers · high confidence
Introduce universal UI scaling and new reusable widget components
Added app\_ui\_scale.dart to provide a universal UI scaling mechanism that normalizes the layout across different screen sizes and densities, with specific handling for Android TV to ensure consistent appearance. Introduced a suite of new reusable widgets in the lib/modules/widgets directory, including CoverViewWidget for consistent card rendering with focus states, BaseLibraryTabScreen for tabbed library views, BottomSelectBar and BottomTextWidget for selection and text display, CategorySelectionDialog for category management, and various list/grid view wrappers. These changes standardize the UI components used across the application, particularly improving the Android TV experience with proper focus management and layout scaling.
lib/modules/widgets · high confidence
Introduces Cargokit build tool for Rust integration
The Cargokit build tool is added to the Flutter/Rust bridge, enabling the automatic building of Rust libraries for Android (via Gradle), iOS/macOS (via CocoaPods), and CMake. This includes support for precompiled binaries, artifact management, and environment configuration for cross-compilation.
_rust\_builder/cargokit/build\tool · high confidence
Introduces a new high-performance image rendering engine for the manga reader
The manga reader now utilizes a new subsampling image view that replaces the previous implementation with a custom tiling engine and FFI-based image decoding. This change introduces a new \CoordinateTransformer\ for handling image rotation and scaling, a \TilingEngine\ for efficient memory management of image tiles, and an \FfiImageDecoder\ that loads native shared libraries (\.so\/\.dll\) to decode images in background isolates. Users will experience smoother scrolling and faster image loading in the manga reader, with improved memory management for large images.
_lib/modules/manga/reader/subsampling\_scale\_image\view · high confidence
MacOS app now supports deep links and grants file/network permissions
The macOS build now handles deep links via the \app\_links\ plugin, allowing the app to open URLs and process universal links. Additionally, the app's configuration has been updated to grant network access and file system permissions (including read/write access to user-selected files and the Downloads folder), enabling features like backup creation and restoration.
macos/Runner · high confidence
Manga reader UI overhaul with new widgets and layout options
The manga reader's user interface has been significantly refactored and expanded. A new chapter transition page provides a dedicated view for navigating between chapters. The reader's navigation overlay now supports multiple layout modes (default, L-shaped, Kindle-style, edge, and disabled), allowing users to customize how they access previous, next, and menu actions. A new bottom bar widget consolidates page slider, chapter navigation, and reader mode selection. Additional widgets include an auto-scroll play/pause button, a chapter list dialog, a page indicator, a color filter widget for image enhancements, and a bottom sheet for image actions (set as cover, share, save). The double-page view has been unified to reduce code duplication, and the app bar has been extracted into a dedicated widget.
lib/modules/manga/reader/widgets · high confidence
Mangayomi iOS repo metadata and update script added
The repository now includes the necessary files to distribute the Mangayomi iOS app via the repo system. This includes \source.json\ containing version history and download links for iOS builds, \config.json\ with repository settings, \colours.json\ for theming, and \update\_source.py\ to automate metadata updates from GitHub releases.
repo · high confidence
New Downloads settings screen with concurrency and delay controls
A new Downloads settings screen has been added, allowing users to configure download behavior. Key additions include a toggle to restrict downloads to Wi-Fi only, an option to save downloads as CBZ archives, and a new setting to automatically delete downloaded files after reading. Users can also enable concurrent downloads with a configurable limit (1-255) and set a delay between download requests (0-120 seconds).
lib/modules/more/settings/downloads · high confidence
New General Settings screen consolidates DNS, proxy, and user-agent options
A new General settings screen has been introduced, bringing together several previously scattered configuration options. Users can now manage DNS-over-HTTPS (DoH) providers and custom endpoints, configure a default user-agent string, and set up a Cloudflare bypass proxy (FlareSolverr / Byparr) all in one place. The screen also includes controls for Discord RPC integration and other general preferences, providing a centralized hub for these settings.
lib/modules/more/settings/general · high confidence
New HTTP request and response model classes
The \lib/services/http/rhttp/src/model\ directory now contains new model classes for the HTTP client, including \CancelToken\ for request cancellation, \HttpRequest\ and \BaseHttpRequest\ for defining HTTP requests, \HttpResponse\ and related classes for responses, and \ClientSettings\ for configuring proxy, redirect, and TLS options. These changes introduce the data structures used to construct and handle HTTP traffic within the application.
lib/services/http/rhttp/src/model · high confidence
New Isar-based history and update streams
The history module now uses new Riverpod providers to expose real-time streams of user history and content updates via Isar. Users can now access live, filtered lists of history and update records through the \getAllHistoryStream\ and \getAllUpdateStream\ providers, which support filtering by item type and searching by name.
lib/modules/history/providers · high confidence
New LNReader extension engine with JS runtime and polyfills
Added a new LNReader extension engine in lib/eval/lnreader that enables running JavaScript-based source plugins. The change introduces a JavaScript runtime (QuickJS) and a suite of polyfills and wrappers: an HTTP client (JsHttpClient) that maps JS fetch-like calls to Dart HTTP requests; a Cheerio-like DOM parser (JsCheerio) for HTML manipulation; a JS HTML parser (JsHtmlParser) for tokenizing HTML; and utility libraries (JsLibs) providing URL encoding, logging, and helper functions. The service layer (service.dart) initializes these components, loads the source's JS code, and exposes methods to fetch popular, latest, and search results, as well as novel details and chapters. This allows users to use LNReader-style JS plugins for reading novels.
lib/eval/lnreader · high confidence
New Reader Settings Screen
A new Reader Settings screen has been added to the app, providing a centralized location for configuring reader-specific preferences. Users can now adjust the default reading mode, double-tap animation speed, background color, page preload amount, scale type, and other display options. This change consolidates reader configuration into a dedicated interface, improving discoverability and organization of these settings.
lib/modules/more/settings/reader · high confidence
New TV mode providers and migration scaffolding
Added tv\_mode\_provider.dart, which introduces four new NotifierProviders (animeOnly, playerStyle, homeStyle, and genreRows) to manage Android TV-specific UI preferences, persisting them to the Isar settings store. Also added migration.dart (and its .g.dart) to scaffold a future database migration path, though the actual migration logic is currently commented out.
_lib/modules/main\view/providers · high confidence
New Tracker Library module for browsing and managing external tracking services
A new 'Tracker Library' feature has been added, providing a unified interface to browse, search, and manage tracked content from external services including MyAnimeList, Anilist, Kitsu, Simkl, and Trakt. The implementation introduces a dedicated screen (\TrackerLibraryScreen\) that supports search functionality, pull-to-refresh, and a two-way tracking flow that allows users to navigate from a tracker result directly to the local library. The UI includes new components such as \TrackerItemCard\ for detailed views and \TrackerLibraryImageCard\ for list items, with caching via Hive and state management via Riverpod.
_lib/modules/tracker\library · high confidence
New anime player controls and subtitle management
The anime player now features a dedicated TV-style controls overlay for remote navigation, a custom seek bar with chapter marks, and a countdown button for skipping intros. Users can also search for and download subtitles, and adjust subtitle font, color, and style settings.
lib/modules/anime/widgets · high confidence
New appearance settings widgets for theme and blend level
Added four new widgets in the appearance settings module: BlendLevelSlider for adjusting color blending, DarkModeButton for manual light/dark mode toggling, FollowSystemThemeButton to sync with the device's system theme, and ThemeSelector for choosing from a horizontal list of color schemes. The theme selector also includes TV-specific focus and selection handling for remote navigation.
lib/modules/more/settings/appearance/widgets · high confidence
New auto-backup and backup compression settings
Users can now configure automatic backup scheduling and compression levels. The \auto\_backup.dart\ file introduces providers for managing backup frequency, location, and options, while \backup\_compression.dart\ adds a new setting to control the compression level used when creating backup archives. Additionally, new protobuf definitions for Aniyomi and other backup formats have been added to support structured backup and restore operations.
_lib/modules/more/data\_and\storage/providers · high confidence
New chapter list and detail widgets for manga
The manga detail view now uses a set of new, dedicated widgets for the chapter list and related UI elements. A new \ChapterListTileWidget\ replaces the previous implementation, introducing swipe gestures to toggle read/bookmark status and displaying chapter metadata (filler status, date, progress). Supporting components include \ChapterFilterListTileWidget\ and \ChapterSortListTileWidget\ for filtering and sorting, a \CustomFloatingActionBtn\ for the play/continue action, and an \ExpandableText\ widget for descriptions. These changes restructure the manga detail page's UI, providing a more interactive and information-rich chapter list.
lib/modules/manga/detail/widgets · high confidence
New discovery and tracking services for anime and video content
Added new services to support anime and video content discovery and metadata. The AniList discovery client provides a lean GraphQL interface for searching, recommendations, and watch-order relations, replacing the defunct Anibrain backend. Aniskip integration fetches opening/ending skip times for anime episodes. Subtitle fetching for video content is now handled via an IMDB-based search and a dedicated subtitle API. Watch order and sequel fetching leverage the new AniList client to build chronological lists for anime. These services enable new features like anime tracking, watch orders, and subtitle support for video content.
lib/services · high confidence
New download management settings and state providers
The app now exposes granular controls for download behavior. Users can now configure a custom download location, enforce Wi-Fi-only downloads, save archives as CBZ files, automatically delete downloaded chapters after reading, and manage concurrent download limits and delays. These settings are now managed via dedicated state providers in the settings module.
lib/modules/more/settings/downloads/providers · high confidence
New extension management UI components
Added new widgets for the extension module: a 'Create Extension' page for configuring source details (name, language, URL, type), a list tile for displaying installed extensions with install/update/uninstall actions, a widget for managing source-specific preferences (text, checkboxes, switches, lists), and a language toggle tile. These components enable users to create, browse, configure, and remove extensions directly within the app's browse interface.
lib/modules/browse/extension/widgets · high confidence
New extension management interface with code editing and preference controls
The browse/extension module has been restructured into dedicated files (edit\_code.dart, extension\_detail.dart, extension\_lang.dart, extension\_screen.dart) that provide a new code editor for writing and testing extension scripts, a detail view for managing source preferences and metadata, a language-based filtering list with enable/disable-all actions, and a main screen that groups extensions by update status, installation state, and NSFW filtering.
lib/modules/browse/extension · high confidence
New extension model and bridge for source management and filtering
A new evaluation model is introduced in the \lib/eval/model\ directory, providing a dedicated set of data classes and utilities for handling extension sources. This includes \MSource\ and \SourcePreference\ (with Isar persistence) to manage source metadata and user-configurable settings, alongside \MProvider\, \MManga\, \MChapter\, \MPages\, and \MVideo\ to represent content entities. The addition of \MDocument\ and \MElement\ wrappers for DOM parsing, combined with \Filter\ classes and the \m\_bridge\ utility, enables extensions to parse HTML, apply filters, and manage source-specific preferences directly within the evaluation environment.
lib/eval/model · high confidence
New extension server management UI and utilities
The settings interface for managing the extension server has been updated with new components: a dialog for configuring the Android proxy server, status and info tiles for displaying server details, and utility functions to locate the Java executable, find the extension server JAR, and resolve version information from release data.
_lib/modules/more/settings/browse/extension\server · high confidence
New history screen with TV support and grouped date headers
The history module now uses a dedicated \HistoryScreen\ widget that groups history entries by date headers and supports Android TV navigation with focus overlays and remote-friendly row layouts. The screen provides a 'clear all' action to remove history entries and integrates with the existing Isar local storage and Riverpod state management.
lib/modules/history · high confidence
New novel reader with dedicated settings and progress tracking
The application now includes a dedicated novel reader view, separating novel reading functionality from the existing manga reader. This introduces a new \NovelReaderController\ that tracks reading progress and scroll position, ensuring chapters are marked as read and the last page is remembered. A new settings sheet allows users to customize the reading experience with themes (Dark, Light, Black, Sepia), text alignment, padding, and line height. The reader also integrates Text-to-Speech (TTS) capabilities, allowing users to listen to the content while reading.
lib/modules/novel · high confidence
New player settings for audio, decoding, and playback behavior
Added new provider files in the player settings module to manage user preferences for audio configuration (preferred language, pitch correction, channel, and volume boost), video decoding (hardware acceleration modes, debanding, GPU next, YUV420P), and playback behavior (default subtitle language, skip intro/double-tap lengths, playback speed, fullscreen mode, and AniSkip). These providers wire the existing Isar settings model to the Riverpod state management layer, enabling the UI to read and update these specific player options.
lib/modules/more/settings/player/providers · high confidence
New player settings screens for video, audio, decoder, and custom buttons
The player settings have been reorganized into dedicated screens for video, audio, decoder, and custom buttons, allowing users to configure subtitle language, audio channels, hardware acceleration, and custom button actions. A new 'Advanced' screen enables MPV configuration and MPV redownload, while the overview screen provides a structured navigation menu for these new settings.
lib/modules/more/settings/player · high confidence
New providers for anime player state and auto-play
Added new Riverpod providers to manage anime player state and preferences. The \anime\_player\_controller\_provider\ introduces an \AnimeStreamController\ that handles playback position, episode navigation, and integrates with the AniSkip service to fetch skip-able segments. A new \auto\_play\_next\_provider\ allows users to toggle automatic playback of the next episode, with the setting persisted in the database. Additionally, a \state\_provider\ is introduced to manage and persist player subtitle settings, including color, font size, and style options.
lib/modules/anime/providers · high confidence
New providers for local library scanning, filtering, and archive import
The library module introduces a suite of new Riverpod providers to handle local content management. \file\_scanner.dart\ adds \scanLocalLibrary\ to automatically detect and import local manga, anime, and novels from user-specified folders. \library\_filter\_provider.dart\ introduces reactive streams for downloaded and tracked chapter IDs, enabling the \filteredLibraryManga\ provider to efficiently filter and sort the library by download status, reading progress, and source. \local\_archive.dart\ provides \importArchivesFromFile\ to manually import local archives (CBZ, EPUB, video formats) into the library. Additionally, \library\_state\_provider.dart\ manages display and grid size preferences for each content type, while \library\_source\_badge\_provider\ persists the setting to show source badges on covers.
lib/modules/library/providers · high confidence
New reader state management and navigation providers
The manga reader module introduces several new Riverpod providers to manage reader state and navigation. \reader\_controller\_provider.dart\ adds the \ReaderController\ and \CurrentIndex\ providers to handle reader mode, page mode, and page index tracking. \color\_filter\_provider.dart\ introduces \CustomColorFilterState\, \EnableCustomColorFilterState\, and \ColorFilterBlendModeState\ to manage color filter settings. \manga\_reader\_provider.dart\ provides a \mangaReader\ family provider to fetch chapter and page data. \push\_router.dart\ adds \pushMangaReaderView\ and \pushReplacementMangaReaderView\ functions to handle navigation to the manga reader view, including routing to anime or novel readers based on content type.
lib/modules/manga/reader/providers · high confidence
New reader state providers for display and navigation settings
The application introduces a new \reader\_state\_provider\ and its generated counterpart, which manage user preferences for the reader interface. These providers expose settings for default reading mode, page transition animations, double-tap animation speed, border cropping, scale type, page preload amount, background color, tap zones, full-screen mode, and navigation order. This change centralizes the state management for these reader-specific configurations, allowing users to customize their reading experience through these new state hooks.
lib/modules/more/settings/reader/providers · high confidence
New settings for browsing and extension management
The app now exposes several new settings in the browse and extension management sections. Users can now control the visibility of NSFW content, choose whether to only include pinned sources in the list, configure the Android proxy server for network requests, and manage the repositories used for manga, anime, and novel extensions. Additionally, users can enable automatic extension updates and receive notifications about available updates.
lib/modules/more/settings/browse/providers · high confidence
New settings for managing extension sources and server configuration
Users can now configure extension sources and the extension server directly from the app's settings. A new 'Browse' section allows users to manage manga, anime, and novel source repositories, including adding, removing, and refreshing repository URLs. Additionally, users can configure the Android proxy server or desktop extension server, with options to download, update, or detect existing server files. The interface also includes controls for checking for extension updates, enabling auto-updates, and cleaning the database or library.
lib/modules/more/settings/browse · high confidence
New settings providers for DoH, Discord RPC, and User Agent
The app introduces new state management providers for general settings, enabling users to configure a custom DNS-over-HTTPS (DoH) endpoint, manage Discord Rich Presence integration (including toggling it, hiding it in incognito mode, and controlling title/cover image visibility), and set a custom User Agent string. These changes add the necessary provider logic and generated code to persist and manage these specific user preferences.
lib/modules/more/settings/general/providers · high confidence
New settings toggles for filtering and privacy
The app now includes UI widgets for a 'Downloaded Only' filter and an 'Incognito Mode' toggle in the More section. The Downloaded Only widget allows users to filter their library to show only downloaded content, while the Incognito Mode widget lets users enable private browsing, which also manages Discord RPC status based on user preferences.
lib/modules/more/widgets · high confidence
New source list tile and TV row widget for browsing sources
A new SourceListTile widget has been added to the browse sources module, providing a detailed list item for each source in the library. This widget displays the source's icon, name, language, and an NSFW badge if applicable. It includes a 'Latest' button to view the latest updates for that source and a pin icon to pin the source to the top of the list. Additionally, a TvSourceRow widget is provided for Android TV, offering a focusable row of buttons (source, latest, pin) for remote control navigation. This change introduces the UI components for displaying and interacting with sources in the browse module.
lib/modules/browse/sources/widgets · high confidence
New sources filter and management screens for browsing
Added new Flutter widgets for browsing and filtering sources: a SourcesFilterScreen that groups sources by language and allows enabling/disabling them, and a SourcesScreen that lists installed sources with support for TV remote navigation, pinning, and last-used grouping. The filter respects the show NSFW setting, and the list handles empty states and extension navigation.
lib/modules/browse/sources · high confidence
New sync provider for managing local sync state and change tracking
A new \Synching\ provider has been introduced to manage local sync preferences and track changes for synchronization. This provider handles login/logout states, updates last sync timestamps for manga, history, and updates, and manages settings like auto-sync frequency and toggles for syncing histories, updates, and settings. It also includes methods to retrieve and clear changed parts, enabling the application to track and synchronize local modifications with a server.
lib/modules/more/settings/sync/providers · high confidence
New tracker services for Anilist, Kitsu, MyAnimeList, Simkl, and Trakt.tv
The application now supports syncing reading progress with five external tracking services: Anilist, Kitsu, MyAnimeList, Simkl, and Trakt.tv. Each service is implemented as a new provider in the \lib/services/trackers\ directory, implementing a common \BaseTracker\ interface. This allows users to connect their accounts and automatically update or retrieve their reading status, scores, and chapter counts from these platforms.
lib/services/trackers · high confidence
New upcoming manga calendar view
A new calendar screen has been added to display upcoming manga releases. The feature provides a date-based view of scheduled manga updates, allowing users to see which titles are expected on specific days. The implementation includes a dedicated screen with a calendar header and a list of upcoming items, supporting filtering by item type (e.g., manga, anime) and handling empty states gracefully.
lib/modules/calendar · high confidence
New utility modules for image caching, date formatting, and platform detection
Added several new utility files in lib/utils: cached\_network.dart provides thumbnail-resized image caching to reduce memory usage; chapter\_recognition.dart parses chapter/episode numbers with multi-season support; constant.dart maps status enums to localized strings and tracker icons; date.dart handles relative and absolute date formatting; discord\_rpc.dart integrates Discord Rich Presence; fetch\_interval.dart calculates manga update intervals; global\_style.dart defines popup animations; headers.dart generates HTTP headers for sources; reg\_exp\_matcher.dart provides HTML parsing helpers; window\_geometry.dart saves and restores desktop window state; and platform\_utils.dart detects mobile, desktop, and TV environments.
lib/utils · high confidence
Persistent update errors screen with migrate-away option
A new persistent screen has been added to display the last library update's failures, allowing users to dismiss individual errors or navigate to a migration screen to resolve source issues. The updates screen now includes an error indicator in the header that links to this new screen, ensuring recurring source failures are caught in a dedicated view rather than a transient dialog.
lib/modules/updates · high confidence
Redesigned download page with progress tracking and file sharing
The download page for manga chapters has been completely rewritten to provide a more robust user experience. It now features a live progress bar that animates during active downloads, allowing users to visually track the status of their downloads. Additionally, users can now share downloaded files directly from the interface, and the UI distinguishes between starting a new download and retrying a stalled or failed one, improving clarity on available actions.
lib/modules/manga/download · high confidence
Support for reading local archive files and image folders as manga sources
Users can now import manga from local archive files (such as .cbz, .zip, .cbt, .tar) and image folders. The new archive reader module provides providers to extract full content or just metadata (cover images) from these local sources, enabling offline reading of downloaded or manually added comic archives.
_lib/modules/manga/archive\reader · high confidence
Windows desktop support added
The Windows desktop platform is now supported. This change introduces the native Windows runner files (CMakeLists.txt, main.cpp, win32\_window, etc.) that build the executable, handle window creation, and manage the Flutter view on Windows.
windows/runner · high confidence
iOS app launch and file handling configuration
The iOS application entry point (AppDelegate) was added to handle deep links via the app\_links plugin and to initialize a native torrent server library through a method channel. Additionally, the Info.plist was created to define app metadata, request permissions for photo library and file access, configure background modes, and register file type handlers for CBZ comic archives.
ios/Runner · high confidence
Architecture
Refactored manga reader architecture with new mixins
The manga reader's internal structure has been refactored to improve code organization and reduce duplication. A new \ChapterControllerMixin\ centralizes chapter navigation and history tracking logic, which is now shared across reader controllers. A \ChapterReaderSettingsMixin\ has been introduced to handle bookmark toggling and auto-scroll preferences. Additionally, a \ReaderMemoryManagement\ mixin has been added to handle bidirectional chapter preloading and memory-bounded caching, while a \ReaderKeyboardHandler\ class provides keyboard shortcut support for navigation and full-screen toggling.
lib/modules/manga/reader/mixins · high confidence
Restructured manga detail view into modular components
The manga detail screen has been refactored to improve code organization and maintainability. The previous monolithic implementation has been split into separate files: \manga\_detail\_main.dart\ for the main container and state management, \manga\_detail\_view.dart\ for the primary detail layout, and \manga\_details\_view.dart\ for the header and metadata display. This separation isolates the header, the main content area, and the loading/error states, making the feature easier to extend and debug.
lib/modules/manga/detail · high confidence
Behavioural changes
9 commits (1 fix) modifying android/app/libs
A change to existing behaviour in android/app/libs — 9 commits (1 fix), 1 file.
android/app/libs · medium confidence · unverified
Add macOS build configuration files
The macOS build configuration has been structured by introducing four new .xcconfig files: AppInfo.xcconfig defines the application name (mangayomi), bundle identifier, and copyright; Debug.xcconfig and Release.xcconfig include the respective Flutter build configurations and the Warnings.xcconfig; Warnings.xcconfig enables a comprehensive set of compiler warnings to improve code quality.
macos/Runner/Configs · medium confidence
Android app baseline, TV support, and performance fixes
The Android app now includes the core AndroidManifest.xml, MainActivity, and resource files, establishing the base configuration. This adds Android TV/Leanback launcher discovery and form-factor detection, enables APK installation via a FileProvider, and configures the Skia renderer to fix scroll and tab jank on Android devices.
android/app/src · high confidence
App startup and error handling overhaul
The application now initializes the Isar database with graceful error handling, displaying a dedicated error screen if the database fails to start. Additionally, global error handling has been added to capture both Flutter widget-layer errors and platform-level async errors, logging them via the app logger instead of crashing. The main entry point also introduces a new JWT token model for sync settings and implements a Rust-backed HTTP request handler for the rhttp client.
lib · high confidence
Download queue now supports manual reordering
The download queue screen has been refactored to allow users to manually reorder the download list. The interface now uses a ReorderableListView, enabling users to drag and drop items to change their processing order. The implementation also includes a badge to display the current number of items in the queue and cleans up orphaned download records automatically.
_lib/modules/more/download\queue · high confidence
Improved statistics screen performance by aggregating data in the database
The statistics screen now uses Isar database queries to aggregate counts and sums directly, rather than loading all favorite manga and their chapters into memory. This change prevents memory exhaustion and crashes on Android devices when viewing the statistics of large libraries.
lib/modules/more/statistics · high confidence
Introduce animated category reordering and management
The Categories screen now supports reordering and managing categories with smooth animated transitions. Users can drag and drop categories to change their order, with the new position persisted to the database. The UI includes a tabbed interface for different content types (e.g., Manga, Anime) and allows users to hide certain UI elements or exclude categories from mass updates. The implementation uses SuperListView for efficient list rendering and includes a swap animation controller for visual feedback during reordering.
lib/modules/more/categories · medium confidence
Introduce extension service abstraction for multi-language source plugins
Users can now use source plugins written in Dart, JavaScript, Mihon (APK), or LNReader formats, as the app now dynamically loads and manages these extension services with proper lifecycle disposal.
lib/eval · high confidence
Introduce main screen with auto-sync, backup timers, and TV update suppression
The main application shell now manages periodic auto-sync and backup timers, initializes source fetching, and suppresses the in-app update modal on Android TV to prevent focus traps. It also handles navigation state, including anime-only TV layouts and hidden library items.
_lib/modules/main\view · high confidence
Library UI and behavior refactored into dedicated widgets
The library screen's user interface has been reorganized into a set of dedicated widgets (ContinueReaderButton, LibraryAppBar, LibraryBody, etc.) to reduce code duplication and improve readability. This refactoring introduces a 'Continue Reading' button on library entries, updates the library header to support stopping a running library update, and ensures the unread badge respects the per-manga scanlator filter. Additionally, the library entry utilities now handle cover image resolution and long-press selection logic, while the delete dialog has been expanded to properly handle local archives and their associated files.
lib/modules/library/widgets · high confidence
Manga detail page now uses reactive state and stream providers
The manga detail screen now relies on new Riverpod providers to manage state and data. The \state\_providers.dart\ file introduces reactive notifiers for chapter selection (\ChaptersListState\), long-press mode, and chapter sorting/filtering preferences, allowing the UI to reactively update when users select or sort chapters. The \track\_state\_providers.dart\ file centralizes tracking state for external services (AniList, Kitsu, MyAnimeList, Simkl, Trakt), providing a unified interface to update, search, and display scores across different trackers. Additionally, \isar\_providers.dart\ and \update\_manga\_detail\_providers.dart\ provide reactive streams for manga details and chapters, ensuring the UI stays in sync with the local database and handles updates with improved duplicate prevention logic.
lib/modules/manga/detail/providers · high confidence
Migrate data models to Isar for improved performance and reliability
The application's data layer has been migrated from Hive to Isar, introducing new or updated models for categories, chapters, downloads, history, manga, and settings. This change improves data persistence performance and reliability, ensuring that user progress, library organization, and app settings are stored more efficiently. The migration includes updated schemas for core entities like \Category\, \Chapter\, \Manga\, and \Settings\, which now leverage Isar's optimized storage engine.
lib/models · high confidence
Migrate extension bridge to d4rt
The extension bridge has been migrated to the d4rt framework, introducing new bridged classes for MDocument, MElement, HTTP clients, and various model types (MChapter, MManga, MPages, MProvider, MSource, MStatus, MTrack, MVideo, and source preferences). This enables the Dart-based extension runtime to interact with the core application models and services through the new d4rt interpreter.
lib/eval/dart/bridge · high confidence
New manga home screen implementation
The manga home screen has been refactored into a new \manga\_home\_screen.dart\ file, introducing a unified interface for browsing popular, latest, and filtered manga content. This change implements a scrollable list view with infinite scrolling support, dynamic filter application, and integration with the library state to track saved manga. The new screen replaces the previous implementation, providing a consistent user experience for navigating manga sources.
lib/modules/manga/home · medium confidence
New settings screen with organized navigation
The settings interface has been restructured into a single \SettingsScreen\ that presents a scrollable list of categories. Users can now access General, Appearance, Reader, Player, Downloads, Tracking, Sync, Browse, Security, and About sections directly from this unified menu. The Reader and Security options are conditionally shown based on the device type and platform.
lib/modules/more/settings · high confidence
Redesign of the Browse screen with TV and extension support
The Browse screen has been refactored to support a tabbed interface for Sources and Extensions, with specific UI treatments for Android TV (pill tabs, focus management, and anime-only gating). It introduces a Create Extension button, a global search action for sources, and a language filter for extensions.
lib/modules/browse · high confidence
Redesigned anime player view with new widget structure
The anime player view has been refactored into a new file, introducing a structured widget hierarchy with separate components for the player stream, error handling, and loading states. This change includes the addition of an AniSkip phase enum and integrates with new TV player controls and settings panels, enhancing the overall playback experience and UI consistency.
lib/modules/anime · high confidence
Refactored and consolidated utility extensions
The \lib/utils/extensions\ directory has been reorganized into distinct, focused extension files: \build\_context\_extensions.dart\ for theme and media queries, \chapter\_extensions.dart\ for chapter navigation and download management, \manga\_extensions.dart\ for filtering and sorting chapters, \dom\_extensions.dart\ for HTML parsing and pseudo-selectors, \others.dart\ for image caching and file formatting, \stream.dart\ for StreamBuilder helpers, and \string\_extensions.dart\ for string manipulation. This refactoring improves code organization and maintainability without changing external behavior.
lib/utils/extensions · high confidence
Refactored download manager with shared isolate pool and queue ordering
The download manager has been refactored to use a shared isolate pool for concurrent downloads, improving performance and preventing UI freezing. The system now supports configurable pool sizes to enhance concurrent download capabilities. Additionally, the download queue order is persisted in settings, allowing users to manually reorder downloads. Subtitle downloads are also supported for video content.
_lib/services/download\manager · high confidence
Refactored library screen into modular components with enhanced filtering and TV support
The library screen was refactored from a single large file into a modular structure, decomposing the UI into separate widgets for the app bar, body, and dialogs, while introducing a dedicated TV home view for anime content. The change also adds comprehensive filtering capabilities, allowing users to filter by source, download status, reading progress, and other attributes, alongside support for local sources and display type preferences.
lib/modules/library · medium confidence
Refactored manga reader into modular components with improved navigation and performance
The manga reader has been refactored into distinct, modular components: \ImageViewPaged\ for paged reading modes, \ImageViewVertical\ for vertical continuous scrolling, and \ImageViewWebtoon\ for webtoon-style infinite scrolling. A new \PageNavigationService\ abstracts the logic for switching between paged and continuous navigation, ensuring consistent behavior across all reader modes. Additionally, a new \UChapDataPreload\ data class centralizes chapter and page metadata, enabling better state management and preloading optimization.
lib/modules/manga/reader · high confidence
Renamed 'Backup and Restore' to 'Data and Storage' with new backup creation UI
The 'Backup and Restore' section in the app's More menu has been renamed to 'Data and Storage' to better reflect its broader scope. This change introduces a new 'Create Backup' screen that allows users to select specific libraries, settings, and extensions to include in a backup. The main 'Data and Storage' page now features a segmented button to switch between creating and restoring backups, and includes a new slider to adjust the compression level for backup files.
_lib/modules/more/data\_and\storage · medium confidence
Update flutter\_rust\_bridge code generation to v2.12.0
The automatically generated Dart bindings in lib/src/rust have been regenerated using flutter\_rust\_bridge version 2.12.0. This update refreshes the API layer for EPUB parsing and HTTP client interactions, ensuring compatibility with the latest Rust bridge implementation.
lib/src/rust · high confidence
Updated Gradle wrapper to version 8.13
The Android Gradle build system has been updated to use Gradle 8.13, as specified in the gradle-wrapper.properties file. This change ensures the project uses a specific, newer version of the Gradle build tool, which may bring performance improvements, new features, or compatibility updates for the Android build process.
android/gradle · high confidence
Updated Windows build configuration and plugin registrations
The Windows build system (CMakeLists.txt) and generated plugin registration files have been updated to include a new set of Flutter plugins. The configuration now registers support for app\_links, connectivity\_plus, flutter\_inappwebview\_windows, flutter\_qjs, flutter\_tts, isar\_community\_flutter\_libs, local\_auth\_windows, m\_extension\_server, media\_kit\_libs\_windows\_video, media\_kit\_video, permission\_handler\_windows, screen\_brightness\_windows, screen\_retriever\_windows, share\_plus, url\_launcher\_windows, volume\_controller, window\_manager, and window\_to\_front. Additionally, FFI-based plugins for flutter\_discord\_rpc\_fork, jni, and rust\_lib\_mangayomi are included in the build.
windows/flutter · high confidence
Updated app localization strings
The generated localization files in lib/l10n/generated have been updated with new and revised translations for multiple languages, including Arabic, German, English, Spanish, French, Hindi, Indonesian, Italian, Japanese, Portuguese, and Russian. This ensures that UI elements such as library, updates, history, browse, and various settings and actions are correctly translated for users in these locales.
lib/l10n/generated · high confidence
Updated flutter\_rust\_bridge code generation for rhttp API
The rhttp API layer has been regenerated using flutter\_rust\_bridge version 2.12.0. This update introduces new types and functions for HTTP client configuration, including \ClientSettings\, \TimeoutSettings\, \TlsSettings\, and \ProxySettings\, as well as a comprehensive \RhttpError\ sealed class for handling various HTTP error states such as timeouts, redirects, and status code errors.
lib/src/rust/api/rhttp · medium confidence
Visual update for chapter list items in the Updates module
The Updates module now uses a new \UpdateChapterListTileWidget\ to render individual chapter entries. This widget displays the manga cover, title, and chapter name, and applies a greyed-out style to chapters that have already been read. The implementation also includes a dedicated layout for Android TV, where each entry provides two focusable targets: the chapter entry itself and a download control, optimizing remote navigation.
lib/modules/updates/widgets · high confidence
macOS build configuration updated to include libmtorrentserver.dylib
The macOS Xcode project (macos/Runner.xcodeproj) has been updated to integrate the libmtorrentserver.dylib library. This change adds the library to the project's framework and embed phases, ensuring the dynamic library is correctly linked and bundled with the macOS application.
macos/Runner.xcodeproj · high confidence
Test coverage
Added initial test scaffolding for iOS and macOS platforms; Added initial widget test for the application.
Dependencies
Updated build configurations and dependencies for Android, iOS, macOS, and Go
The project's build system and dependencies have been updated across multiple platforms. Android build configurations now target SDK 36 and Java 17, with the \libmtorrentserver\ library linked. iOS and macOS platforms have new \Podfile\ and \Podfile.lock\ files defining CocoaPods dependencies for Flutter plugins and native libraries. The Go module (\go.mod\) has been updated to use Go 1.25.0 and includes the \github.com/anacrolix/torrent\ library and its dependencies. Additionally, the Dart \pubspec.yaml\ and \pubspec.lock\ files have been refreshed with current package versions, and the Rust \Cargo.lock\ has been regenerated to reflect the latest crate versions.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 53.
Lenses
- Code Health 93
- Architecture 99
- Maturity 56
- Readiness 45
- Security 43
- Domain Modelling 100
Changes since last survey
- 300 commits — 204 feature/other, 96 fixes
By area
- lib/modules — 139 commits
- (repo) — 73 commits
- lib/services — 19 commits
- (root) — 14 commits
- lib/main.dart — 8 commits
- lib/models — 8 commits
- lib/utils — 8 commits
- lib/l10n — 6 commits
- repo/source.json — 6 commits
- android/app — 3 commits
- lib/eval — 3 commits
- .github/workflows — 2 commits
- lib/ffi — 2 commits
- lib/providers — 2 commits
- android/tv_res — 1 commit
- assets/app_icons — 1 commit
- lib/src — 1 commit
- linux/packaging — 1 commit
- rust/src — 1 commit
- windows/CMakeLists.txt — 1 commit
Notable commits
- fix: Fix Flutter Framework Warning
- fix: Fix Kitsu date corruption from bad UTC format
- fix: Fix MAL status update failing on new tracks
- fix: Fix bug
- fix: Fix bug lastPageRead not saving
- fix: Fix bug: update tracker with latest selected chapter
- fix: Fix downloadedChapterIdsProvider
- fix: Fix null pointer exception
- fix: Fix potential focus flicker
- fix: Fix tracker start date not set on bulk-read
- fix: Merge pull request #720 from NBA2K1/fix-downloadedChapterIdsProvider
- fix: Merge pull request #722 from NBA2K1/fix-exception
- fix: Merge pull request #724 from mrandhawa14/fix/anime-download-stall
- fix: Merge pull request #725 from mrandhawa14/fix/macos-tcc-permission-denied
- fix: Merge pull request #726 from mrandhawa14/fix/statistics-memory
- fix: Merge pull request #727 from mrandhawa14/fix/image-cache-cap
- fix: Merge pull request #728 from mrandhawa14/fix/cover-decode-resize
- fix: Merge pull request #735 from Mallyd11/fix/m3u8-downloader-segment-url-slash
- fix: Merge pull request #741 from NBA2K1/fix-chapter-recognition
- fix: Merge pull request #742 from NBA2K1/fix-bottom_select_bar-not-appearing
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kodjodevf/mangayomi was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4eec7aca6f1c8bd563d0bc79bcf895f46bb30b74 — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.