Skip to content
CAI
Software that uses CAICheck a score

Anxcye/anx-reader

47.1

Weak · 22 September 2026

79.4k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Anx Reader is a cross-platform e-book reader application built with Flutter that supports Android, iOS, macOS, Windows, Linux, and HarmonyOS. It provides comprehensive reading capabilities including EPUB and PDF rendering, text-to-speech narration, and extensive customization of the reading interface. The system integrates a local AI assistant for library management, translation, and content analysis, while offering robust data synchronization via WebDAV and other cloud protocols.

How it got here

2024 — Initial project scaffolding and core feature implementation

55 changes.

This period established the Anx Reader Flutter application through comprehensive initial scaffolding, including multi-platform support for Android, iOS, macOS, Linux, and Windows. It introduced the core reading engine using Foliate-js, implemented a complete data layer with SQLite for book and note management, and added essential features like AI integration, translation, and statistics. The work also covered extensive localization, UI redesigns for settings and bookshelves, and the setup of CI/CD automation and release tooling.

2025 — AI integration and platform automation

32 changes.

This period focused on overhauling the AI service layer to support multi-provider chat, context-aware tools, and bookshelf organization, while unifying TTS and sync architectures. It also established comprehensive Fastlane automation for Android, iOS, and macOS releases and introduced a shared UI component library.

2026 — Platform expansion and service configurability

4 changes.

This period focused on expanding the application's reach and flexibility by adding initial HarmonyOS support and integrating a comprehensive Dart client for Google AI Gemini and Vertex AI APIs. Concurrently, the core service layer was enhanced with configurable in-app search engines and global HTTP proxy capabilities, including built-in connectivity testing to ensure reliable network access.

Features

AI service architecture overhaul with multi-provider support and caching

The AI service layer has been completely rewritten to support a broader range of providers (OpenAI, Claude, Gemini, DeepSeek, OpenRouter) and introduce persistent AI chat history and response caching. Users can now manage multiple API keys per provider with automatic round-robin rotation, configure custom provider URLs and models, and benefit from rate limiting to prevent API throttling. The new system also includes a configurable cache size to store recent AI responses and conversation history, improving performance and allowing users to resume or review past interactions.

lib/service/ai · high confidence

Add Developer Options page with Vibration Test tool

A new Developer Options page has been added to the app settings, allowing users to toggle developer features on or off. When enabled, this page provides access to a Vibration Test tool that displays device vibration capabilities (such as vibrator presence, amplitude control, and haptic support) and allows users to trigger specific vibration patterns for testing purposes.

_lib/page/settings\page/developer · high confidence

Add HintBanner widget for dismissible in-app hints

A new HintBanner widget has been introduced to display dismissible hint messages within the application. The banner supports optional icons, custom margins, and padding, and uses the theme's primary color scheme for styling. It integrates with shared preferences to track whether specific hints (identified by HintKey) have been shown, automatically hiding them on subsequent visits. When a user closes a hint, the banner animates out, the preference is updated to prevent re-display, and a toast notification is shown to indicate that the hint can be restored later.

lib/widgets/hint · high confidence

Add configurable 3x3 grid page-turning layout options

The reading settings now allow users to customize the page-turning area using a 3x3 grid layout. This change introduces a new UI component that visualizes the grid with color-coded zones for next, previous, menu, and no-action areas, along with a dropdown menu to select from five predefined configuration presets. Users can now choose how they interact with the reading page by tapping specific zones within this grid.

_lib/widgets/reading\_page/more\_settings/page\turning · high confidence

Add empty-state tips for bookshelf, notes, and statistics views

New Flutter widgets have been introduced in the tips module to display contextual help messages when the bookshelf, notes, or statistics sections are empty. These components render localized strings (e.g., \bookshelfTips\_1\, \notesTips\_1\) alongside emoticon-style illustrations, providing users with guidance on how to populate these areas.

lib/widgets/tips · high confidence

Add iOS share extension for importing books

Users can now import books directly from other apps on iOS via the system share sheet. This change adds the ShareExtension target, configuring it to accept PDF, EPUB, plain text, and generic data files, and wires it to the share\_handler library to handle the import process.

ios/ShareExtension · high confidence

Add initial HarmonyOS (OpenHarmony) platform support

This change introduces the initial project structure and entry point for the HarmonyOS platform, enabling the application to be built and run on OpenHarmony devices. It adds the necessary configuration files (such as \module.json5\ and \app.json5\), resource definitions, and the core \EntryAbility\ and \Index\ components that initialize the Flutter engine and register plugins. The entry also includes the Hvigor build configuration and a test suite setup to support development and verification on this new platform.

ohos, ohos/entry · high confidence

Add swipe-up gesture to dismiss reading pages

Users can now dismiss the current reading page by swiping up. This change introduces a new gesture-based dismissal mechanism where dragging the page upward triggers a visual slide-out animation; if the drag distance exceeds a threshold or the swipe velocity is sufficiently high, the page is popped from the navigation stack. The implementation includes a dedicated controller to manage the drag state and animation, a route builder for the dismissible page, and a widget that applies the vertical translation based on the user's input.

_lib/widgets/page\router · high confidence

Add unofficial Dart client for Google AI Gemini and Vertex AI APIs

Introduces the \googleai\_dart\ library, providing a unified Dart interface for the Google AI Gemini Developer API and Vertex AI Gemini API. The client supports both Google AI and Vertex AI modes, configurable via API version (v1 or v1beta) and authentication providers (API key, Bearer token, or OAuth with dynamic refresh). It includes resource-based access to models, files, batches, corpora, and interactions, along with features like exponential backoff retry logic, request interception, and convenience extensions for extracting text and function calls from responses.

_third\_party/googleai\_dart, third\_party/langchain\google · high confidence

Added Android Play Store release automation via Fastlane

This change introduces Fastlane configuration files (Appfile and Fastfile) to the Android build pipeline, enabling automated building and releasing of the application to the Google Play Store. The setup defines the package name (com.anxcye.anx\_reader) and provides a 'release\_play\_store' lane that builds a release Android App Bundle with the 'isPlayStore' flag enabled and uploads it to the Play Store using Fastlane Supply, defaulting to the 'internal' track with a 'draft' release status.

android/fastlane · high confidence

Added deterministic color hashing and RGB utility functions

New utility functions have been added to the color handling library to support consistent color generation and manipulation. The \hashColor\ function now allows generating a deterministic, opaque RGB color from any string input, which is useful for assigning stable visual identities to items like tags. Additionally, a set of RGB conversion helpers (\sanitizeRgb\, \colorFromRgb\, \rgbFromColor\, \parseRgb\, \rgbString\) has been introduced to standardize how RGB values are parsed from various formats (hex strings, integers, Colors) and converted back to string representations, ensuring alpha components are handled consistently.

lib/utils/color · high confidence

Added localization files for Arabic, German, English, Spanish, French, and Italian

The application now includes initial localization resource files (ARB format) for Arabic (ar), German (de), English (en), Spanish (es), French (fr), and Italian (it). These files provide the translated strings for the user interface, including navigation labels, reading settings, statistics, and common actions, enabling the app to display in these languages.

lib/l10n · high confidence

Added macOS CI configuration for App Store and direct distribution

This change introduces the fastlane configuration files (Appfile, Fastfile, Matchfile) required to automate the macOS build and release process. It enables two distinct distribution paths: releasing to the Mac App Store via the \release\_app\_store\ lane, and building and notarizing for direct distribution via the \release\_direct\ lane. The configuration handles code signing synchronization using Match, authenticates with Apple services via API keys, and ensures version strings are cleaned for Apple platform compliance.

macos/fastlane · high confidence

Added status bar utility functions

A new utility file \lib/utils/ui/status\_bar.dart\ has been added, providing helper functions to control the visibility and layout of the system status bar. These functions allow the application to hide the status bar, show it, enable edge-to-edge display without resizing, or display only the top status bar overlay.

lib/utils/ui · high confidence

Added toast notification utility

A new toast notification utility has been added to the application, providing a centralized way to display brief messages to users. The implementation uses the fluttertoast package to show bottom-aligned notifications with customizable icons and durations, ensuring that only one toast is visible at a time by removing any queued toasts before displaying a new one.

lib/utils/toast · high confidence

Added utility to convert Dart color format to JavaScript format

A new utility function has been added to convert color strings from the Dart AABBGGRR format to the JavaScript RRGGBBAA format, ensuring compatibility when passing color data between Dart and JavaScript contexts.

lib/utils/js · high confidence

App branding, permissions, and background audio support

The app now displays the name "Anx Reader" and uses a new adaptive icon with a blue background. To support background text-to-speech playback, the AndroidManifest registers the AudioService and MediaButtonReceiver, adds necessary permissions (WAKE\_LOCK, FOREGROUND\_SERVICE, FOREGROUND\_SERVICE\_MEDIA\_PLAYBACK, VIBRATE), and declares intent queries for TTS services. The app also gains the ability to receive shared files via SEND, SEND\_MULTIPLE, and VIEW intents, and enables full-screen display cutout handling on both light and dark themes. Additionally, network security is configured to allow cleartext traffic and trust user-installed certificates.

android/app · high confidence

Comprehensive model layer overhaul for reading, AI, and library management

The \lib/models\ directory has been completely rewritten to support a wide range of new features and configuration options. Key additions include \AiProvider\ and \AiQuickPromptChip\ models for configuring AI services and custom prompts, and \BgimgModel\ to support day/night background images with blur and opacity controls. Reading customization is expanded via \BookStyle\ (supporting font weight, column thresholds, and heading sizes), \ReadingInfoModel\ for header/footer content, and \ReadingRules\ for bionic reading. Library management now includes \Book\ with optional MD5 fields for duplicate detection, \ChapterSplitRule\ for custom chapter parsing, and \Tag\ with color support. State management models like \CurrentReadingState\, \BookNotesState\, and \IapState\ have been introduced to track reading progress, notes, and in-app purchase status. Additional models cover bookmarks, search results, statistics, and window state persistence.

lib/models · high confidence

Configurable in-app search engine support

The search service now supports a configurable search engine model, allowing users to define custom search providers alongside built-in options for Bing, Google, DuckDuckGo, and Baidu. This change introduces the core data structure and serialization logic for search engines, enabling the application to build URLs based on user-defined templates or use the default built-in engines.

lib/service/search · high confidence

Enable Linux desktop plugins for audio, window management, and file handling

The Linux build now registers several new Flutter plugins, enabling features such as text-to-speech (audioplayers), persistent window position and size management (window\_manager), system file dropping (desktop\_drop), screen information retrieval (screen\_retriever\_linux), database support (sqlite3\_flutter\_libs), and URL launching (url\_launcher\_linux). This allows the application to utilize native Linux capabilities for audio playback, window state persistence, and file integration.

linux/flutter · high confidence

Enable Windows platform support for Flutter plugins

The Windows build now registers a comprehensive set of Flutter plugins, enabling features such as text-to-speech, audio playback, file sharing, URL launching, window management, and system connectivity checks. This change adds the necessary plugin registrations and CMake configurations to support these capabilities on Windows.

windows/flutter · high confidence

Enable macOS support with comprehensive plugin integration

The macOS build now includes full support for a wide range of Flutter plugins, enabling features such as text-to-speech, in-app purchases, file picking, system sharing, and window management. This change updates the Flutter configuration files to include CocoaPods dependencies and registers all necessary plugins in the generated registrant, allowing the application to utilize native macOS capabilities for audio, storage, connectivity, and UI control.

macos/Flutter · high confidence

Export notes in multiple formats with chapter grouping options

Users can now export their reading notes from a book in four formats: plain text, Markdown, CSV, or copied directly to the clipboard. The export service supports an option to merge notes by chapter headings, allowing for cleaner organization in the output files. CSV exports are encoded in GBK for compatibility, while Markdown and text files preserve the book title, author, and chapter structure.

lib/service/notes · high confidence

Global HTTP proxy support with connectivity testing

Users can now configure a global HTTP proxy via advanced settings, which applies to all network requests while automatically bypassing localhost addresses. The new \AnxHttpProxyOverrides\ service in \lib/service/network\ implements this by intercepting HTTP client creation to route traffic through the specified host and port. Additionally, a built-in connectivity test feature allows users to verify proxy configuration validity before applying it, ensuring reliable network access.

lib/service/network · high confidence

Initial iOS Fastlane configuration for App Store releases

Added the initial Fastlane setup for the iOS platform, including Appfile, Fastfile, and Matchfile. This configuration enables automated building of iOS IPA files and uploading to TestFlight via the \build\_ipa\ and \release\_app\_store\ lanes. It integrates with Apple Store Connect using API keys, manages code signing certificates and provisioning profiles via Git-based Match, and ensures clean version strings are used for Apple platform builds.

ios/fastlane · high confidence

Initial project scaffolding and release tooling

The repository has been initialized with the core structure for the Anx Reader Flutter application. This includes the addition of a comprehensive CONTRIBUTING.md guide for developers, localized README files for Turkish and Russian, and an MIT LICENSE. To support the release process, a suite of automation scripts and configurations has been added: a Dart-based release tool (release.dart) for managing versioning and git tags, a Fastfile for CI/CD automation, and helper scripts for renaming APKs and building macOS releases. The project also includes configuration files for localization (l10n.yaml), launcher icons, and devtools, alongside updates to .gitignore to manage generated files and sensitive environment variables.

(repo-wide) · high confidence

Introduce AI chat stream with model switching, reasoning display, and quick prompts

The AI chat interface now supports selecting specific AI models via a new picker dialog (fetching available models for OpenAI-compatible providers), displays collapsible reasoning steps alongside answers, and offers quick prompt chips for common tasks. The chat stream also includes history management, customizable font sizes, and improved UI consistency with Material icons and updated color schemes.

lib/widgets/ai · high confidence

Introduce AI tool registry and library of context-aware tools

The app now provides a centralized registry of AI tools that the assistant can invoke to interact with your library and reading session. This includes tools to search book content, look up and organize your bookshelf, manage and apply tags, search notes, and retrieve reading history. It also adds tools to fetch the current chapter or table of contents, get reading metadata, calculate expressions, draw mind maps, and check the current time. All tool names and descriptions are localized, and the registry allows enabling or disabling specific tools.

lib/service/ai/tools · high confidence

Introduce book excerpt sharing with customizable templates

Users can now share selected book excerpts as images via a new bottom sheet interface. This feature allows customization of the share card's appearance, including font selection, color schemes, and background images, with these preferences persisted for future use. The system supports multiple visual templates (simple, elegant, vertical, and default) and handles the capture, saving, and sharing of the generated image.

_lib/widgets/book\share · high confidence

Introduce core TTS data models for voice and segment management

The application now includes dedicated data models to support Text-to-Speech functionality, specifically for integrating providers like Azure and Aliyun. New classes define TtsVoice to handle voice metadata (such as short names, display names, locales, and gender) with flexible parsing from various API response formats, TtsSentence to represent individual text segments with optional CFI references, and TtsSegment to manage the state of audio generation including silent flags and fetch versioning. These models provide the structural foundation for the enhanced TTS features introduced in this update.

lib/service/tts/models · high confidence

Introduce dedicated book notes list and tile widgets

Added \BookNoteTile\ and \BookNotesList\ widgets to provide a structured, filterable, and selectable interface for viewing and managing notes within a book. The new list supports sorting by time or chapter, multi-select for batch deletion or export, and displays note content, reader annotations, and chapter context in a consistent tile layout.

_lib/widgets/book\notes · high confidence

Introduce new app screens and navigation structure

The application now includes dedicated pages for Book Details, Book Notes, In-App Purchases (IAP), and a Changelog, alongside a new Onboarding flow and a macOS data migration screen. The main navigation has been restructured in the new HomePage to support these sections, replacing the previous placeholder Home widget.

lib/page · high confidence

Introduces Anx component library and common UI utilities

This change adds a new set of reusable UI components and utilities to the application's common widget library. It introduces the Anx design system with standardized button variants (AnxButton, AnxSegmentedButton, AnxDropdownButton) that wrap Flutter's Material equivalents for consistent styling and behavior. Additionally, it provides utility widgets such as AxisFlex for dynamic layout switching, FittedText for scalable text rendering, and AsyncSkeletonWrapper for simplified handling of async data states with skeleton loading. The update also includes a TagChip component with support for custom colors and eInk mode optimization, along with a reusable RGB color picker dialog.

lib/widgets/common · high confidence

Introduction of centralized shared preferences backup and restore

The application now includes a dedicated mechanism to back up and restore user settings. This feature allows users to export their configuration (including themes, reading styles, and AI settings) to a structured format and import it back, ensuring that preferences persist across device changes or app reinstalls. The implementation handles various data types such as booleans, integers, doubles, strings, and string lists, while explicitly skipping sensitive keys like in-app purchase status.

lib/config · high confidence

Introduction of local HTTP server for book rendering

The book player now utilizes a local HTTP server (via the shelf package) to serve book content, fonts, and JavaScript assets to the embedded reader view. This change replaces previous methods of content delivery, enabling features such as local font handling, background image support, and integration with the foliate-js rendering engine by exposing assets through specific URL paths (/book/, /fonts/, /js/, /foliate-js/, /bgimg/). The server binds to 127.0.0.1 and manages its own lifecycle, including port selection and caching headers for fonts.

_lib/service/book\player · high confidence

Introduction of structured logging utility with file persistence and colored console output

A new logging utility has been added to the application, providing structured log entries that are written to a persistent file and displayed in the console with color-coded severity levels (red for errors, orange for warnings, blue for info) in debug mode. The implementation includes a parser for converting log strings back into structured objects and handles error and stack trace information, ensuring that logs are maintained across sessions while offering improved visibility during development.

lib/utils/log · high confidence

New AI tool repositories for book search, content, notes, and tags

This change introduces a set of new repository classes in the AI tools layer to support enhanced book management and search capabilities. The new \BookContentSearchRepository\ enables searching within book content, with a specific implementation for Windows that leverages the live reader to avoid WebView2 crashes. \ChapterContentRepository\ provides tools to fetch current or specific chapter content via a bridge. \BooksRepository\ adds methods to fetch books by ID and search books by keyword or group. \NotesRepository\ allows searching for book notes with keyword and date filters. \ReadingHistoryRepository\ fetches reading history records. \TagRepository\ implements fetching, creating, updating, and merging tags, including color handling. \GroupsRepository\ provides fetching groups by ID. These repositories form the data access layer for the new AI-driven book management features.

lib/service/ai/tools/repository · high confidence

New AI tool tiles for mindmaps, book tagging, and bookshelf organization

Added three new interactive UI components in the AI tool tiles section: a MindmapStepTile that renders a zoomable, scrollable graph visualization of book structures with dynamic node styling; an ApplyBookTagsStepTile that displays AI-suggested tag plans for books, highlighting conflicts and requiring user confirmation before application; and an OrganizeBookshelfStepTile that presents a scrollable summary of AI-generated bookshelf reorganization plans, including group details and cleanup actions. All three tiles utilize a new ToolTileBase widget for consistent expandable card styling and status indication.

_lib/widgets/ai/tool\tiles · high confidence

New EPUB conversion service implementation

The application now includes a new service in lib/service/convert\_to\_epub for generating EPUB files. This feature introduces the core logic to construct valid EPUB archives, including the creation of required metadata files (content.opf, toc.ncx, container.xml), styling (style.css), and chapter content (XHTML). It also implements a table-of-contents generator that handles nested sections and XML escaping, along with a Section data model to represent book content structure.

_lib/service/convert\_to\epub · high confidence

New Riverpod providers for AI, reading stats, and UI customization

The app introduces a suite of new Riverpod providers in the \lib/providers\ directory to manage state for several new and enhanced features. AI capabilities are now supported by providers for chat history (\ai\_history.dart\), chat sessions (\ai\_chat.dart\), and cache management (\ai\_cache\_count.dart\), enabling features like chat history, regeneration, and custom cache size configuration. Reading statistics are managed by new providers for daily reading time per book (\book\_daily\_reading\_provider.dart\) and heatmap data (\heatmap\_data.dart\), powering the new dashboard tiles and heat map visualizations. UI customization is handled by providers for background images (\bgimg.dart\) supporting day/night modes and local imports, and font management (\font\_list.dart\, \fonts.dart\) supporting remote font downloads. Additionally, book management is enhanced with providers for filtering (\book\_filters.dart\), sorting (\book\_list.dart\), and grouping books, as well as providers for bookmarks (\bookmark.dart\), table of contents (\book\_toc.dart\), and current reading state (\current\_reading.dart\). The dashboard tile layout is now configurable via \dashboard\_tiles\_provider.dart\.

lib/providers · high confidence

New book player components: EpubPlayer, ImageViewer, and MinuteClock

The reading experience now includes a new \EpubPlayer\ widget that manages EPUB rendering via an in-app web view, handling page navigation, theme changes, and style adjustments. An \ImageViewer\ component has been added to allow users to view, zoom, download, and share images found within books. Additionally, a \MinuteClock\ widget is introduced to display the current time, updating every minute.

_lib/page/book\player · high confidence

New bookshelf organization service for applying AI-driven grouping plans

A new BookshelfOrganizeService has been added to handle the application of bookshelf organization plans. This service processes a plan containing book ID lists, group creation/update instructions, and cleanup commands, executing them by updating book group assignments, creating or renaming groups, removing books from groups, and hard-deleting specified groups. It ensures data consistency by refreshing the book list and group providers after changes are applied.

lib/service/bookshelf · high confidence

New configuration enums for AI, reading, and sync features

This change introduces a comprehensive set of new enum definitions in the \lib/enums\ directory to support recent feature additions. For AI capabilities, it adds \AiChatDisplayMode\ (adaptive, split, popup), \AiPanelPositionEnum\ (right, bottom), \AiReasoningEffort\ (auto, low, medium, high), and \AiPrompts\ (which includes structured prompts for summaries, full-text translation, and mindmaps). Reading experience settings are expanded with \BgimgAlignment\, \BgimgFitEnum\, \BgimgThemeMode\, \BgimgType\, \CodeHighlightThemeEnum\ (supporting themes like GitHub, Dracula, Nord), \ConvertChineseMode\ (simplified/traditional conversion), \PageTurnMode\ (simple, custom), \ReadingInfoEnum\ (customizable status bar info), \SearchDisplayMode\, \TextAlignmentEnum\, and \TranslationModeEnum\ (off, translation-only, original-only, bilingual). Bookshelf and library management now include \BookshelfFolderStyle\ (stacked, grid2x2), \BookSyncStatusEnum\, \ChartMode\ (week, month, year, heatmap), \SortFieldEnum\, \SortOrderEnum\, and \LangListEnum\ (which adds support for Crimean Tatar). Sync and utility features are supported by \SyncProtocol\ (WebDAV, FTP, S3, Google Drive, OneDrive, Dropbox), \SyncDirection\, \SyncTrigger\, \HintKey\ (for onboarding hints), and \VersionCheckType\.

lib/enums · high confidence

New consolidated reading settings dialog with custom CSS support

The reading interface now features a unified 'More Settings' dialog that groups options into Reading, Style, and Other tabs. This new layout introduces a custom CSS editor in the Style tab, allowing users to write and apply their own styles with basic validation. The Other tab provides granular control over page turning, including a 3x3 grid for customizing tap zones. The Reading tab consolidates typography and content controls, such as Chinese character conversion, column count, and text alignment.

_lib/widgets/reading\_page/more\settings · high confidence

New context menu with integrated note, translation, and search tools

The reading experience now features a unified context menu that appears when text is selected. This menu provides immediate access to several tools: you can add and edit reader notes, translate selected text with configurable source and target languages, and perform in-app searches using a configurable search engine. The menu layout adapts to the device's orientation (portrait or landscape) and respects keyboard insets to prevent overlap. It also supports auto-highlighting selections based on user preferences and includes specific styling for e-ink mode to ensure visibility.

_lib/widgets/context\menu · high confidence

New database access layer with search, reading stats, and tag management

The \lib/dao\ directory now contains a complete set of data-access objects that power several new user capabilities. \SearchRepository\ and \BookNoteDao\ enable searching both books and annotations by keyword, with advanced filtering by book, date range, and annotation type. \ReadingTimeDao\ tracks daily reading sessions and provides statistics for weekly, monthly, and yearly views, while \TagDao\ and \BookTagDao\ implement a tag management system (create, update, delete, and associate tags with books) stored within the styles table. \BookDao\ adds MD5-based duplicate detection and book deletion support, and \ThemeDao\ allows users to create, update, and delete reading themes. \BaseDao\ provides the underlying SQLite abstraction, and \database.dart\ initializes the schema (version 7) and handles platform-specific database setup.

lib/dao · high confidence

New home screen pages and search functionality

The app introduces dedicated pages for the home screen navigation: a new AI assistant page (AiPage) with quick prompts, a redesigned Bookshelf with drag-and-drop reordering and tag filtering, a split-pane Notes view, a Statistics dashboard with reading heatmaps, and a new Search page that allows users to find books and notes by keyword. The Settings page now includes a direct link to the In-App Purchase (IAP) status page when enabled.

_lib/page/home\page · high confidence

New localized date and time formatting utilities

Added three new utility files in lib/utils/date to handle time display with full localization support. convert\_seconds.dart now formats raw seconds into human-readable hour, minute, and second strings using localized labels. relative\_time\_formatter.dart provides a RelativeTimeFormatter class that converts timestamps into relative phrases (e.g., 'just now', '2 hours ago', 'yesterday', 'last month') based on the current context. week\_of\_year.dart calculates and returns the week number of a given date in a localized format (e.g., '2023-W42'). These utilities ensure consistent, user-friendly time representations across the application.

lib/utils/date · high confidence

New platform-specific storage and migration utilities

The application now includes a dedicated set of utilities in lib/utils/get\_path to manage file storage locations across Android, iOS, macOS, Windows, and HarmonyOS. This introduces platform-aware path resolution for databases, documents, caches, downloads, and temporary files, ensuring data is stored in the correct system directories (e.g., Application Support on macOS/Windows). It also adds a migration mechanism for macOS users to move existing data from the Documents folder to Application Support, and supports custom storage paths on Windows with permission verification.

_lib/utils/get\path · high confidence

New protocol-based sync architecture with connection testing

The sync service in lib/service/sync has been refactored from a direct WebDAV implementation to a protocol-based architecture. A new SyncClientBase abstract class defines the interface for sync operations, and a SyncClientFactory manages client instantiation based on the selected protocol (currently WebDAV, with stubs for FTP, S3, Google Drive, OneDrive, and Dropbox). The existing WebDAV functionality is now encapsulated in a WebdavClient that implements this base interface. Additionally, a new SyncConnectionTester utility has been added, providing both simple ping tests and comprehensive capability tests (create, upload, download, verify, delete) with localized error messages for common connection issues like timeouts, authentication failures, and SSL errors.

lib/service/sync · high confidence

New reading page drawer with TOC, bookmarks, and background image selector

The reading page now features a drawer navigation containing three new widgets: a Table of Contents list (BookToc) with search, auto-scrolling to the current chapter, and progress indicators; a Bookmarks list (BookmarkWidget) that displays saved bookmarks with chapter and percentage details, allowing users to navigate to a bookmark or delete it; and a Background Image Selector (BgimgSelector) that lets users import local images, select from built-in assets, apply day/night mode pairs, and adjust blur and opacity settings.

_lib/widgets/reading\page/widgets · high confidence

New reusable UI widgets for confirmation, display, and loading states

This change introduces several new widget components in the lib/widgets directory to standardize UI patterns. The new DeleteConfirm widget provides a toggleable confirmation action (switching between delete and confirm states) available in both icon and text button modes. IconAndText now supports a configurable layout that can hide text labels based on user preferences, displaying only icons when labels are disabled. Additional utilities include HighlightDigit for styling numeric characters within text, LinearProportionBar for displaying segmented progress or statistics, and a centralized showLoading function to display a consistent loading indicator using SmartDialog.

lib/widgets · high confidence

New service layer for book import, database sync, and haptic feedback

This change introduces a new service layer in lib/service that centralizes several core capabilities. Book import now uses MD5 checksums to detect duplicates and prevent redundant storage, with a progress dialog shown during calculation. Database synchronization is handled by a new DatabaseSyncManager that ensures safe downloads, integrity validation, and automatic recovery from backups. A new VibrationService unifies haptic and vibration feedback across platforms, and supporting services for font management, reading statistics, and initialization checks are also added.

lib/service · high confidence

New settings subpages for AI chat, font management, chapter rules, and logs

The settings area now includes four new dedicated subpages. Users can access an AI chat interface (AiChatPage) for conversational assistance. A new Fonts page allows browsing, previewing, and downloading remote fonts with progress tracking. The Chapter Split Rules page enables users to view, select, add, edit, and delete custom text chaptering rules. Additionally, a Logs page provides visibility into application logs, with options to refresh, clear, export, and copy individual log entries.

_lib/page/settings\page/subpage · high confidence

New statistics dashboard tiles for reading insights

The statistics dashboard now includes a comprehensive set of new tiles providing detailed reading insights. Users can view their total books read, total notes, and total reading days via summary tiles, or see these combined in a Library Totals overview. A new 'Continue Reading' tile allows resuming the last read book with a progress bar and hero animation. Reading habits are visualized through Reading Streak, Completion Progress (with an average ring), and Reading Duration Trend charts for the last 7 and 30 days. Additional tiles display the Top Book (with a daily reading chart), Period Summary (showing time spent in the current period), Random Highlights, and Total Time since the beginning date.

_lib/widgets/statistic/dashboard\tiles/tiles · high confidence

New statistics dashboard tiles with interactive detail views

The statistics dashboard now features a modular tile system with a new base class and registry, introducing several new data tiles including reading days, books total, notes total, reading streak, random highlights, reading duration trends (last 7 and 30 days), completion progress, top book, and a 'Continue Reading' tile to resume the last read book. Users can now interact with these tiles via a draggable, animated detail view that provides a closer look at the statistics, enhancing the overall readability and interactivity of the dashboard.

_lib/widgets/statistic/dashboard\tiles · high confidence

New statistics dashboard with customizable tiles and reading visualizations

The statistics section now features a customizable dashboard where users can add, remove, and rearrange tiles to track their reading habits. This update introduces a new \StatisticsDashboard\ widget that supports drag-and-drop reordering of tiles, including a new heatmap visualization for daily reading activity and a line chart for cumulative reading trends. Users can switch between weekly, monthly, and yearly views using a segmented button, and the dashboard integrates with Riverpod for state management, allowing for dynamic updates and localized tooltips.

lib/widgets/statistic · high confidence

New translation providers and AI integration

The translation service now supports DeepL, Google Cloud API, and Microsoft Azure API alongside existing web-based options, with configuration fields for API keys and URLs exposed in settings. Additionally, a new AI-based translation provider has been added, allowing users to translate text using an AI model with support for context text and full-text translation modes.

lib/service/translate · high confidence

New utility library for app initialization, platform detection, and AI reasoning

This change introduces a comprehensive set of new utility files in lib/utils to support core application features. It adds platform detection logic (AnxPlatform) and environment variable handling (EnvVar) to manage store-specific builds (App Store, Play Store, F-Droid, Ohos) and feature flags. For desktop users, it implements window position validation (WindowPositionValidator) to ensure the app window remains visible across display changes, and an update checker (check\_update) that compares versions and displays changelogs via StyledMarkdown. The AI chat experience is enhanced with a new reasoning parser (ai\_reasoning\_parser) that splits and structures model reasoning content. Additional utilities include color scheme generation (color\_scheme), font parsing and loading, language code detection, file saving and sharing helpers, and connection testing for sync protocols.

lib/utils · high confidence

Support for importing TXT files as EPUBs

Users can now import plain text (.txt) files, which are automatically converted into EPUB format. The converter handles multiple encodings (UTF-8, GBK, Latin1, UTF-16, UTF-32) with garbled-text detection to ensure correct reading, and splits content into chapters using configurable regex rules or a fallback chunking method for files without clear headings.

_lib/service/convert\_to\epub/txt · high confidence

Support for receiving shared files via system intent

The application now handles incoming file shares from other apps. A new service listens for system share intents and processes attached media files, automatically importing them into the book library upon receipt.

_lib/service/receive\file · high confidence

Unified TTS architecture with new online providers (Aliyun, Azure, OpenAI)

The TTS service has been refactored into a unified provider-based architecture, introducing a generic \ServiceProvider\ and \ConfigItem\ system to standardize configuration UI across all text-to-speech engines. This change adds support for three new online TTS providers: Aliyun (with access key authentication and voice list), Azure (with API key and region configuration), and OpenAI-compatible TTS (with model, voice, and instruction settings). The existing System TTS and Edge TTS capabilities are retained within this new framework, allowing users to switch between local and online engines seamlessly while benefiting from consistent settings management and voice selection across all providers.

lib/service/tts · high confidence

Windows installer now supports Simplified and Traditional Chinese languages

The Windows build pipeline now includes full localization support for Simplified and Traditional Chinese. New Inno Setup language files (ChineseSimplified.isl and ChineseTraditional.isl) have been added to the scripts directory, and the compilation script (compile\_windows\_setup-inno.iss) has been updated to register these languages alongside the existing English option. The build workflow (build\_windows\_exe.ps1) now automatically copies these translation files to the Inno Setup directory before generating the installer, ensuring that users installing the application on Windows can see the setup wizard in their preferred Chinese variant.

scripts · high confidence

iOS app localization, privacy permissions, and file sharing support

The iOS app now supports localization with new language resource files for Arabic, German, Spanish, French, Italian, Japanese, Korean, Portuguese (Brazil), Russian, Turkish, and Chinese (Simplified and Traditional). To comply with App Store requirements, usage descriptions for the photo library, microphone, camera, and location have been added to the Info.plist, clarifying that these are referenced by embedded web content rather than the app itself. The app now enables file sharing in the Files app and supports importing books via the system share sheet. Additionally, the app icon has been updated to include dark and tinted variants, and the entitlements have been configured for application group access.

ios/Runner · high confidence

iOS share extension and localization support added

The iOS project now includes a share extension (shareExtension.appex) that allows users to share content from other apps directly into the app, handling text, URLs, images, videos, and files. The project configuration has been updated to include the necessary frameworks (StoreKit, Pods\_shareExtension) and embed the extension. Additionally, localization strings have been added for multiple languages (Russian, Spanish, French, Italian, Japanese, Korean, Portuguese, Chinese Simplified, Chinese Traditional, Arabic, German, Turkish) for the main interface, launch screen, and the share extension interface.

ios/Runner.xcodeproj · high confidence

macOS app menu localized for multiple languages

The macOS app's main menu is now available in Arabic, German, Spanish, French, Italian, Japanese, Korean, and Brazilian Portuguese, allowing users to see standard menu items (such as Edit, View, Window, and Help) in their preferred language.

macos/Runner · high confidence

Behavioural changes

App startup, error handling, and window state management overhaul

The application's initialization process has been significantly restructured to improve stability and user experience. A new global error handler (AnxError) is now active, capturing both Flutter framework errors and platform-level errors to log them via the new logging utility. Desktop window behavior is enhanced with intelligent position validation and persistence, ensuring the app remembers its last size, position, and maximized state across restarts on Windows and macOS. Additionally, the app now supports macOS data migration from older paths, initializes background audio services for TTS earlier in the startup sequence, and automatically triggers WebDAV sync when the app is paused or hidden, while also fixing an iOS blank screen issue by restarting the local server upon resume.

lib · high confidence

Automated removal of in-app purchase references for F-Droid builds

A new prebuild script (fdroid\_prebuild.sh) is introduced to automatically strip in-app purchase dependencies and code from the project before building for F-Droid. The script removes the in\_app\_purchase entry from pubspec.yaml and pubspec.lock, and deletes related imports and conditional logic blocks from Dart source files (home\_page/settings\_page.dart, home\_page.dart, book.dart, sync.dart) to ensure compliance with F-Droid's policies regarding proprietary payment integrations.

scripts/scripts · high confidence

The AI chat interface now uses a custom StyledMarkdown widget powered by the gpt\_markdown library, replacing the previous flutter\_markdown implementation. This change improves readability in both light and dark modes, particularly for blockquotes and code blocks. Users can now select and copy text from markdown responses using native platform-specific selection controls (Cupertino on iOS/macOS, Material on Android/Windows/ohos). Additionally, clicking links within markdown content will now open them in the external browser application rather than attempting to launch them internally.

lib/widgets/markdown · high confidence

Gradle wrapper updated to version 8.14

The Android build system now uses Gradle 8.14 instead of 7.6.3. This upgrade ensures compatibility with newer Android tooling and may require a fresh download of the Gradle distribution on first build.

android/gradle · high confidence

Introduce Babel configuration for legacy browser support

Added a .babelrc file to configure Babel for transpiling JavaScript to support older browsers, targeting Android 7, Chrome 70, Safari 12, and iOS 12. This ensures compatibility with legacy WebView versions and older mobile browsers by enabling features like core-js 3 polyfills and ES module transformation.

assets/foliate-js · high confidence

New input models for AI tools using Freezed

The \lib/service/ai/tools/input\ directory now contains a comprehensive set of immutable data classes generated by the Freezed package to handle inputs for various AI tools. These include models for book tag management (\ApplyBookTagsInput\, \CreateTagRequest\, \UpdateTagRequest\), bookshelf organization (\BookshelfOrganizeInput\, \BookshelfOrganizeGroupSpec\), content search (\BookContentSearchInput\), and reading features like chapter content (\ChapterContentByHrefInput\), mindmaps (\MindmapInput\), and reading history (\ReadingHistoryInput\). Additional inputs cover calculator operations, current time retrieval, and notes search. These classes replace previous internal input structures to improve type safety and maintainability, with some classes including helper methods for resolving default limits and validating data.

lib/service/ai/tools/input · high confidence

Reading page UI restructured into modular drawer widgets

The reading page interface has been refactored to use a set of dedicated, reusable widgets for its drawer sections. New components include \TocWidget\ (displaying the Table of Contents and Bookmarks via a tabbed view), \StyleWidget\ (managing reading preferences like fonts, themes, and page-turn animations), \ProgressWidget\ (showing chapter navigation and reading progress), \TtsWidget\ (providing text-to-speech controls for volume, pitch, and rate), \TtsFab\ (a floating action button for quick TTS playback control), \NotesWidget\ (listing book notes), and \WidgetTitle\ (a shared header component). This change improves code organization and maintainability by isolating the logic for each reading page feature into its own file.

_lib/widgets/reading\page · high confidence

Redesigned bookshelf with folder grouping, sync status, and replacement features

The bookshelf interface has been rebuilt to support organized book management and clearer synchronization visibility. Users can now group books into folders with drag-and-drop reordering, view sync status icons on individual book items, and access a detailed sync status bottom sheet showing progress and distribution. The new bottom sheet also allows replacing book files (including TXT to EPUB conversion) and releasing local space. Default covers now display the book title and author with responsive scaling, and the layout supports stacked and grid preview styles for folders.

lib/widgets/bookshelf · high confidence

Redesigned settings interface with new UI components and features

The settings area has been rebuilt using a new set of internal UI components (SettingsSection, SettingsTile, SettingsAppBar) to provide a consistent Material Design 3 appearance. This update introduces several new capabilities: users can now access a Developer Options page by tapping the app version in the About dialog seven times, toggle WebDAV synchronization directly from the settings list, and change the app's theme mode (Light, Dark, or System) via a segmented button. The About dialog has been expanded to include direct links to the Privacy Policy, Terms of Use, Help Documentation, and a Donate button, while also displaying the current app version and offering a 'Check for Updates' option. Additionally, a generic ServiceConfigForm widget was added to standardize how service configuration fields are rendered across the app.

lib/widgets/settings · high confidence

Refactored container widgets with animation and layout enhancements

The common container widgets have been consolidated into a new BaseRoundedContainer class, which introduces configurable animation duration and curve properties for smoother transitions. The layout structure has been adjusted to move padding into the child container and apply a consistent 1px margin offset. Additionally, border styling now uses strokeAlignOutside for more accurate rendering, and the FilledContainer conditionally switches to OutlinedContainer behavior when eInk mode is active and fill is disabled.

lib/widgets/common/container · high confidence

Refactored reader engine to support granular styling and new reading features

The reading experience is now driven by a new URL-based configuration system that passes detailed style and preference data to the underlying WebView. This enables several new user-facing capabilities: customizable text indentation, adjustable heading font sizes with proportional scaling, and a toggle to preserve original book styles. The background image system has been enhanced with controls for blur, opacity, and fit modes, along with automatic day/night switching. Additionally, the reader now supports Bionic Reading, Chinese character conversion (simplified/traditional), and code syntax highlighting via Prism.js. The underlying WebView implementation has also been refactored to include a headless mode with an overlay fallback for better platform compatibility.

lib/utils/webView · high confidence

Restructured in-app purchase service with platform-specific receipt and install date handling

The in-app purchase (IAP) logic has been reorganized into a unified service layer that delegates to platform-specific implementations for iOS (App Store) and Android (Play Store). On iOS, the service now actively refreshes and parses the local receipt to determine purchase status, including a fallback mechanism if the receipt refresh fails. On Android, the service retrieves the app's install date via a native method channel to establish the trial start date and queries past purchases to verify active subscriptions. A new base service interface and snapshot model standardize how purchase state, reliability, and dates are reported across platforms.

lib/service/iap · high confidence

Settings page reorganized into modular sub-pages with new AI and advanced features

The Settings interface has been refactored from a single monolithic page into a structured hub (MoreSettings) that navigates to distinct sub-pages for Appearance, Reading, Sync, Narrate (TTS), Translate, AI, Storage, and Advanced settings. This change introduces dedicated configuration screens for AI services (provider management, prompt editing, tool toggles) and Advanced options (MD5 statistics, JavaScript for EPUB, HTTP proxy, chapter splitting, and log management). Users will now find these capabilities in their own focused views rather than a long scrollable list, and the AI section is conditionally shown based on the enableAIFeature flag.

_lib/page/settings\page · high confidence

Updated iOS deployment target and CocoaPods configuration

The minimum supported iOS version for the app has been raised from 12.0 to 13.0, as reflected in the AppFrameworkInfo.plist. Additionally, the build configuration files (Debug.xcconfig and Release.xcconfig) have been updated to conditionally include the corresponding CocoaPods support files, ensuring that dependencies managed by CocoaPods are correctly integrated into the build process.

ios/Flutter · high confidence

Updated macOS build scheme to enable GPU validation and rename app bundle

The Xcode build scheme for the macOS Runner has been updated to rename the buildable application from 'anx\_reader.app' to 'Anx Reader.app'. Additionally, GPU validation mode has been enabled for debugging sessions, which will help developers detect graphics-related issues during development.

macos/Runner.xcodeproj/xcshareddata · high confidence

Windows window state restoration and build configuration updates

The Windows runner now correctly restores the application's maximized state on startup by linking against the Windows App SDK (windowsapp) and utilizing isMaximized window info. Additionally, the window display behavior has been adjusted to use SW\_SHOW instead of SW\_SHOWNORMAL, and resource metadata (company name and copyright) has been updated to reflect the 'anxcye' branding. A minor type correction in UTF-8 conversion utilities ensures robust handling of string length calculations.

windows/runner · high confidence

iOS workspace updated to include Pods and reset build settings

The iOS workspace configuration has been updated to explicitly reference the Pods project, ensuring CocoaPods dependencies are correctly integrated into the build environment. Additionally, the workspace settings have been reset to defaults by removing the explicit disabling of Previews, which may affect how Xcode handles preview rendering during development.

ios/Runner.xcworkspace · high confidence

macOS app renamed to Anx Reader with StoreKit and localization support

The macOS application bundle has been renamed from 'anx\_reader.app' to 'Anx Reader.app'. The project now integrates the StoreKit framework to enable in-app purchases and adds support for multiple languages (including Chinese, Russian, Spanish, French, Italian, Japanese, Korean, Portuguese, Arabic, Turkish, and German) via new localization files. Additionally, CocoaPods infrastructure has been added to manage dependencies, including test frameworks and build configurations.

macos/Runner.xcodeproj · high confidence

macOS workspace now includes CocoaPods project

The macOS workspace configuration has been updated to include the Pods project (Pods.xcodeproj) alongside the main Runner project. This change enables the integration of third-party dependencies managed by CocoaPods within the macOS build environment.

macos/Runner.xcworkspace · high confidence

Fixes

Enhanced Xcode debug configuration for Flutter

The Xcode scheme for the iOS runner has been updated to include a custom LLDB initialization file and to enable GPU validation mode during debugging. These changes improve the debugging experience by providing specific LLDB commands for Flutter and enabling additional GPU driver validation checks, which can help identify graphics-related issues during development.

ios/Runner.xcodeproj/xcshareddata · high confidence

Updated FoliateJS reader engine bundle

The distributed FoliateJS bundle (assets/foliate-js/dist/bundle.js) has been rebuilt to include numerous fixes and features for the e-book reader. Key updates include improved text selection and context menu handling on Android and iOS devices, enhanced image touch event handling (preventing unintended previews on iOS), and fixes for PDF import and TOC navigation issues. The build also incorporates performance optimizations for page turning and scrolling, support for custom background images, and various CSS and layout adjustments for better compatibility across different devices and WebView versions.

assets/foliate-js/dist · high confidence

Test coverage

Added WebDAV connection testing and sync trigger UI; Added tests for chapter split regex matching; Removed default Flutter widget smoke test.

Dependencies

Add Foliate-js and Fastlane dependencies for book rendering and CI/CD

The project now includes the Foliate-js library (with its Babel and Webpack build tooling) to handle EPUB rendering, and adds Fastlane (v2.228.0) via new Gemfiles and lockfiles for Android, iOS, and macOS to streamline build and release automation. Additionally, the Android build configuration has been updated to target SDK 35, use Android Gradle Plugin 8.11.1, and apply release signing via key.properties.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 52 → 47 (-4.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 87 (-8.5)
  • Architecture 96 → 95 (-1.2)
  • Maturity 56 → 62 (+5.2)
  • Readiness 43 → 52 (+8.3)
  • Security 55 → 54 (-0.6)
  • Accessibility 51 → 34 (-16.7)

Resolved (67)

  • Boundary-crossing change coupling: statistics_page.dart ↔ statistic_chart.dart (lib/page/home_page/statistics_page.dart)
  • Boundary-crossing change coupling: translate.dart ↔ ai.dart (lib/page/settings_page/translate.dart)
  • Change coupling: library_totals_tile.dart ↔ total_time_tile.dart (lib/widgets/statistic/dashboard_tiles/tiles/library_totals_tile.dart)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (assets/foliate-js/package-lock.json)
  • High CVE: [GHSA redacted] (android/Gemfile.lock)
  • High CVE: [GHSA redacted] (android/Gemfile.lock)
  • High CVE: [GHSA redacted] (assets/foliate-js/package-lock.json)
  • High CVE: [GHSA redacted] (android/Gemfile.lock)
  • High vulnerability: [GHSA redacted] (assets/foliate-js/package-lock.json)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 47 more

New (255)

  • AiChatStreamState.build (cognitive 25) (lib/widgets/ai/ai_chat_stream.dart)
  • AiChatStreamState.build (cyclomatic 23) (lib/widgets/ai/ai_chat_stream.dart)
  • AndroidSettingsTile.build (cognitive 41) (lib/widgets/settings/settings_tile.dart)
  • AndroidSettingsTile.build (cyclomatic 20) (lib/widgets/settings/settings_tile.dart)
  • AnxButton.build (cognitive 20) (lib/widgets/common/anx_button.dart)
  • AnxButton.build (cyclomatic 19) (lib/widgets/common/anx_button.dart)
  • AppStoreIAPService._parseReceiptLocally (cognitive 41) (lib/service/iap/app_store_iap_service.dart)
  • AppStoreIAPService._parseReceiptLocally (cyclomatic 36) (lib/service/iap/app_store_iap_service.dart)
  • ApplyBookTagsTool.run (cognitive 24) (lib/service/ai/tools/apply_book_tags_tool.dart)
  • BookBottomSheet.build (cognitive 27) (lib/widgets/bookshelf/book_bottom_sheet.dart)
  • BookBottomSheet.build (cyclomatic 17) (lib/widgets/bookshelf/book_bottom_sheet.dart)
  • BookNotesList._header (cognitive 25) (lib/widgets/book_notes/book_notes_list.dart)
  • BookStyle.fromJson (cognitive 22) (lib/models/book_style.dart)
  • BookStyle.fromJson (cyclomatic 23) (lib/models/book_style.dart)
  • BookshelfOrganizeService.applyPlan (cognitive 18) (lib/service/bookshelf/bookshelf_organize_service.dart)
  • BookshelfOrganizeTool.run (cognitive 20) (lib/service/ai/tools/bookshelf_organize_tool.dart)
  • BookshelfOrganizeTool.run (cyclomatic 16) (lib/service/ai/tools/bookshelf_organize_tool.dart)
  • BookshelfPageState.build (cognitive 35) (lib/page/home_page/bookshelf_page.dart)
  • BookshelfPageState.build (cyclomatic 26) (lib/page/home_page/bookshelf_page.dart)
  • Boundary-crossing change coupling: epub_player.dart ↔ style_settings.dart (lib/page/book_player/epub_player.dart)
  • …and 235 more

Changes since last survey

  • 45 commits — 29 feature/other, 16 fixes

By area

  • (root) — 18 commits
  • (repo) — 11 commits
  • ios/Runner — 3 commits
  • lib/widgets — 3 commits
  • assets/foliate-js — 2 commits
  • lib/providers — 2 commits
  • .github/workflows — 1 commit
  • assets/CHANGELOG.md — 1 commit
  • lib/page — 1 commit
  • lib/service — 1 commit
  • third_party/googleai_dart — 1 commit
  • windows/CMakeLists.txt — 1 commit

Notable commits

  • fix: Merge branch 'fix/issues-batch-2'
  • fix: Merge branch 'fix/issues-batch-3'
  • fix: Merge branch 'fix/issues-simple-batch'
  • fix: Revert "Merge branch 'ci/commit-codegen-skip-build-runner'"
  • fix: fix(ai): avoid native WebView2 crash in book_content_search on Windows
  • fix: fix(ci): pin forui 0.25 so build_runner works again
  • fix: fix(ios): add mic/camera/location usage descriptions
  • fix: fix(ios): drop unused camera/mic webview permissions
  • fix: fix(ios): restore privacy usage descriptions for App Store
  • fix: fix(settings): add Scaffold to search engines page
  • fix: fix(windows): silence STL1011 on VS 2026
  • fix: fix: address #867 #877 and noisy lock-closed-issues CI
  • fix: fix: address #977 #966 #868 #969
  • fix: fix: address easy issues for alpha batch
  • fix: revert(deps): drop langchain_google git override from #967
  • fix: revert: drop forui UI; restore alpha.20 issue-fix tree
  • change: Merge branch 'ci/build-timeouts'
  • change: Merge branch 'ci/commit-codegen-skip-build-runner'
  • change: Merge branch 'ci/forui-025-build-runner'
  • change: Merge branch 'staging' into develop
  • …and 25 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

Anxcye/anx-reader 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 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2b2df997839ebf3fc6f90f76783b83485d6840d7 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-821afab8930d.