Skip to content
CAI
Software that uses CAICheck a score

ComicSparks/jasmine

55.1

Adequate · 23 September 2026

17.8k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a cross-platform comic reading and management application built with Flutter, supporting Android, iOS, Windows, macOS, Linux, and HarmonyOS. It provides features for browsing, searching, and reading comics, along with local content filtering, download management, and user preference settings. The system integrates native platform capabilities, including biometric authentication, file system access, and Rust-based FFI plugins for desktop environments.

How it got here

2021 — Cross-platform desktop expansion and modernization

18 changes.

This period focused on extending the application to full desktop support across Linux, macOS, and Windows, while modernizing the Android and iOS build configurations. The work involved integrating native plugins, updating build systems to newer versions, and adding new user-facing features such as comic filtering and desktop-specific interactions.

2022–2025 — Multi-platform expansion and UI overhaul

6 changes.

This period focused on expanding the application's reach to new platforms, specifically introducing build configurations and test infrastructure for HarmonyOS and Linux, alongside new build scripts for Android and iOS. Simultaneously, the codebase underwent a significant UI and feature update, introducing comprehensive user configuration management and a suite of new components for comic browsing and interaction.

Features

Add Linux platform support with native plugin integration

This change introduces the Linux platform implementation for the application, enabling Flutter to run on Linux. It adds the core C++ plugin implementation (methods\_plugin.cc/h) which handles method calls from Flutter, including an asynchronous FFI call to a Rust library. The Linux application entry point (main.cc) is updated to initialize the FFI layer and set up a data directory at $XDG\_DATA\_HOME/jasmine (or \~/.local/share/jasmine if the environment variable is missing). The CMake build file is modified to compile the new plugin source and link against the Rust library, pthread, and dl. The application registration is updated to register the new plugin.

linux · high confidence

Add comic content filtering and platform utilities

The app now supports filtering comics based on category titles and title keywords, allowing users to hide specific content. This is implemented via new logic in lib/basic/comic\_seal.dart that marks comics as 'sealed' (hidden) based on configurable rules. Additionally, the update introduces several new utility functions and models in lib/basic, including desktop window management, WebDAV sync capabilities, logging helpers, and expanded entity definitions for sorting and pagination.

lib/basic · high confidence

Added Windows native plugin for invoking Rust FFI calls

A new Windows runner plugin (methods\_plugin) has been added to enable communication between the Flutter/Dart layer and Rust code via FFI. This change registers a method channel named 'methods' that forwards an 'invoke' call to a detached thread that calls the Rust FFI function, allowing the application to execute Rust logic from the Windows desktop environment.

windows/runner · high confidence

Added build and signing scripts for Ohos and Android/iOS platforms

New shell scripts have been added to the build pipeline to support Ohos, Android, and iOS platforms. The 'ohos-native.sh' script automates the Ohos native build and asset synchronization, while 'sign-apk-github-actions.sh' handles Android APK signing using a base64-encoded keystore. For iOS, 'thin-payload.sh' is introduced to optimize the app bundle by stripping unnecessary architectures and bitcode. Additionally, 'ohos-pubspec.yaml' adds a Git dependency for a Flutter package, and 'ohos.images.bak' provides custom image providers for loading local comic and page images.

scripts · high confidence

Adds comprehensive app configuration and user preference management

The app now supports a wide range of user-customizable settings, including app authentication (password/fingerprint), desktop password protection, Android display mode, app orientation, auto-cleanup of cache, category sorting, comic seal (content filtering), daily sign-in status, disabling recommendations, and more. These configurations are stored locally and allow users to tailor the app's behavior, security, and interface to their preferences.

lib/configs · high confidence

Initial HarmonyOS (ohos) build configuration and project structure

Added the foundational build configuration files for the HarmonyOS (ohos) module, including \app.json5\ (setting version 1.7.6), \build-profile.json5\ (targeting HarmonyOS SDK 5.0.0), and \hvigorfile.ts\ (configuring the Hvigor build system with signing config loading). Also included \.gitignore\ files, package manifests (\oh-package.json5\), and resource strings to establish the project's build environment.

ohos · high confidence

New UI components for comic browsing and comments

Added a suite of new UI components in lib/screens/components to support the comic reader and list views. This includes a floating search bar with history and tag support, a comic list that adapts to different view modes (cover, info, title-in-cover), and a pager that supports both stream and pager controller modes. Additionally, the update introduces a comments list component, a continue-read button, and various utility widgets like badges, avatars, and error/loading states, enabling the new browsing and interaction features.

lib/screens/components · high confidence

New screens for app info, downloads, and user comments

The app introduces several new screens to enhance user experience. The About screen displays the current and latest app versions, with a link to the download page. The Access Key Replace screen allows users to verify and bind a PAT key to their account. The Browser screen provides a categorized browsing experience with search and sorting options. The Calculator screen offers a functional calculator tool. The Comic Download screen enables users to select and download specific chapters of a comic. The Comic Info screen provides detailed information about a comic, including chapters, comments, and recommendations. The Comic Reader screen allows users to read comics with various reading modes and settings. The Comic Search screen enables users to search for comics with history and sorting options. The Comments screen displays all comments and allows users to view their own comments. The Download Album screen shows details of a downloaded album, including tags and chapters. The Download Import screen allows users to import downloaded comics from files or directories. The Downloads Exporting screen enables users to export their downloaded comics. These new screens provide a more comprehensive and user-friendly experience for browsing, reading, downloading, and managing comics and app information.

lib/screens · high confidence

Windows platform adds support for new Flutter plugins

The Windows build configuration and plugin registrant have been updated to include six new plugins: file\_selector\_windows, flutter\_inappwebview\_windows, permission\_handler\_windows, screen\_retriever, url\_launcher\_windows, and window\_manager. These plugins are now registered and linked in the generated CMake and C++ files, enabling their functionality on Windows.

windows/flutter · high confidence

Behavioural changes

Add Linux AppImage desktop entry

A new desktop entry file (AppRun.desktop) is added for the Linux AppImage build, configuring the application's name, execution command, and icon for the desktop environment.

linux/appimage · high confidence

Added support for Linux plugins via generated plugin registrant and CMake configuration

The Linux build system now automatically registers and links four specific plugins: file\_selector\_linux, screen\_retriever, url\_launcher\_linux, and window\_manager. This is achieved by updating the generated plugin registrant to include their respective registration calls and by adding these plugins to the CMake configuration, ensuring they are properly built and linked into the Linux application.

linux/flutter · medium confidence

App renamed and restructured with new package and launcher

The Android app has been renamed from 'jasmine' to 'jmtt2mic', with the Java/Kotlin package namespace updated from 'niuhuan.jasmine' to 'opensource.jmtt2mic'. The app icon has been updated to use adaptive icons (ic\_launcher.xml), and the main activity class has been moved to the new package. Additionally, the app now requests biometric authentication permissions and handles volume button events, while also adding a queries block for HTTPS deep links.

android/app · high confidence

Desktop escape key and cross-platform scroll behavior

The app now supports pressing the Escape key to navigate back on desktop platforms (Windows, macOS, Linux), and uses a custom scroll behavior for mouse and touch input. Additionally, the application name has changed from 'Jasmine' to 'Jenny', and the theme is now dynamically applied via a theme event system.

lib · high confidence

Updated macOS project configuration and build settings

The macOS project configuration has been updated to support newer build tooling and dependencies. The Xcode project file version was upgraded from 51 to 54, and the last upgrade check was updated to 1510. The minimum macOS deployment target was raised from 10.12 to 10.14. Additionally, the build process now includes scripts to check and embed CocoaPods frameworks, and references to SystemConfiguration, Foundation, and the Pods\_Runner framework were added to the project's framework and build phases.

macos/Runner.xcodeproj · medium confidence

Updated project configuration and documentation

The project now specifies Flutter version 3.29.3 via a new .fvmrc file, replacing the previous .metadata file. The .gitignore has been updated to exclude additional build artifacts and platform-specific files for Linux and Windows, and the README files have been significantly expanded with feature lists, screenshots, and usage rules.

(repo-wide) · high confidence

Upgraded Gradle build tool to version 8.10.2

The Android build system has been updated to use Gradle 8.10.2, replacing the previous version 6.7. This change updates the Gradle wrapper configuration, which may affect build performance, compatibility with Android Studio, and the behavior of existing Gradle scripts.

android/gradle · high confidence

iOS app now supports Face ID authentication and modern scene lifecycle

The iOS build now includes a new SceneDelegate to manage the app's window lifecycle, enabling support for modern iOS scene management. Additionally, the app requests access to Face ID for biometric authentication, as indicated by the new NSFaceIDUsageDescription key. The Info.plist has been updated with various permissions and settings, including photo library access descriptions, file sharing capabilities, and scene manifest configurations, while the storyboard has been updated to reflect newer Xcode tooling and screen sizes.

ios/Runner · medium confidence

iOS build configuration updated to Xcode 15.10 with CocoaPods integration

The iOS project has been upgraded to Xcode 15.10 (objectVersion 54), enabling GPU validation mode in the build scheme. The configuration now includes a 'Check Pods Manifest.lock' build phase to ensure the CocoaPods sandbox is in sync, and adds the 'Embed Pods Frameworks' and 'Copy Pods Resources' phases. Additionally, the workspace now references the Pods project, and the 'Embed Frameworks' phase has been removed in favor of the new CocoaPods integration.

ios/Runner.xcodeproj · high confidence

iOS minimum deployment version increased to 12.0

The iOS minimum deployment version has been raised from 9.0 to 12.0, meaning the app will no longer support iOS versions below 12. Additionally, the Xcode build configuration files (Debug.xcconfig and Release.xcconfig) have been updated to include the Pods configuration files, ensuring proper integration with CocoaPods dependencies.

ios/Flutter · high confidence

macOS app updates for state restoration and file access

The macOS application now supports secure restorable state, allowing the app to remember and restore window states upon relaunch. Additionally, both debug and release builds have been granted user-selected file read-write permissions, enabling the app to access files chosen by the user. The native method channel has also been renamed from 'native' to 'methods' to align with the plugin implementation.

macos/Runner · high confidence

macOS build configuration updated to include CocoaPods and new plugins

The macOS build configuration now includes CocoaPods support by adding the Pods-Runner xcconfig includes for both Debug and Release modes. Additionally, the GeneratedPluginRegistrant.swift file has been updated to register six new plugins: FilePicker, FileSelector, InAppWebView, ScreenRetriever, UrlLauncher, and WindowManager. The Xcode workspace has also been updated to reference the Pods project.

macos/Flutter · medium confidence

Test coverage

Added OpenHarmony unit test infrastructure for the entry module; Updated widget test to use MaterialApp.

Dependencies

Migrated Android build system to Gradle Kotlin DSL and updated Flutter/Dart dependencies

The Android build configuration has been migrated from Groovy to Kotlin DSL (\.gradle.kts\), replacing the legacy \build.gradle\ and \settings.gradle\ files with modern Gradle plugin management. Concurrently, the project's Dart dependencies in \pubspec.yaml\ have been updated, introducing packages such as \flutter\_svg\, \photo\_view\, \file\_picker\, and \permission\_handler\, while removing older dependencies like \cupertino\_icons\ and \flutter\_lints\ (upgraded to \^1.0.0\). The \pubspec.lock\ file has been removed, and the minimum Dart SDK requirement has been raised to \2.17.0\. On iOS and macOS, the \Podfile\ and \Podfile.lock\ have been regenerated to reflect the new CocoaPods dependencies, including \SDWebImage\, \DKImagePickerController\, and various Flutter plugins.

(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 → 55 (+2.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 95 → 94 (-1.2)
  • Architecture 99 → 99 (+0.6)
  • Maturity 47 → 59 (+12.0)
  • Readiness 52 → 47 (-4.8)
  • Security 42 → 45 (+3.6)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (40)

  • Boundary-crossing change coupling: methods.dart ↔ app_screen.dart (lib/basic/methods.dart)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • 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)
  • 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 20 more

New (123)

  • AppDelegate.setupMethodChannel (cognitive 17) (ios/Runner/AppDelegate.swift)
  • ClassTooLong: ContentBodyState (lib/screens/calculator_screen.dart)
  • ClassTooLong: _ComicReaderState (lib/screens/comic_reader_screen.dart)
  • ContentBodyState.numClick (cognitive 19) (lib/screens/calculator_screen.dart)
  • ContentBodyState.sumClac (cognitive 20) (lib/screens/calculator_screen.dart)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (lib/screens/comic_reader_screen.dart)
  • Duplicated block (10 lines × 2) (lib/screens/downloads_exports_screen.dart)
  • Duplicated block (11–12 lines × 2) (lib/basic/methods.dart)
  • Duplicated block (12 lines × 2) (lib/screens/access_key_replace_screen.dart)
  • Duplicated block (14 lines × 2) (lib/configs/network_api_host.dart)
  • Duplicated block (14 lines × 2) (lib/screens/components/comic_pager.dart)
  • Duplicated block (14 lines × 2) (lib/screens/downloads_exports_screen.dart)
  • Duplicated block (14 lines × 3) (lib/screens/calculator_screen.dart)
  • Duplicated block (14–15 lines × 2) (lib/screens/comic_reader_screen.dart)
  • Duplicated block (15 lines × 2) (lib/screens/calculator_screen.dart)
  • Duplicated block (15 lines × 2) (lib/screens/comic_reader_screen.dart)
  • …and 103 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

ComicSparks/jasmine 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 23 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 e514be163ec39a6f9e0d2799580d132324e23470 — 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-955b9cee9818.