Skip to content

Releases

Ferrous v1.4.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 22:07

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.4.0-alpha.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.4.0-alpha.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.4.0-alpha.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.4.0-alpha.1-arm64-v8a.apk 275fb24612222d7732f10c7d0083166bdb6094ecb12407541b67ec09bef34c05
ferrous-v1.4.0-alpha.1-armeabi-v7a.apk 430b00294de792d30dd4efb851060c91a68c0e1307481c21a3141f82c876e64a
ferrous-v1.4.0-alpha.1-x86_64.apk a2e7c2bae8f2a29d41afdd332ad8bc0a40b68e0800d9808d5d9fc530d36d4a8c

Changelog

Screen-Fitted Paging & Safe Screen Paginator

  • SafeScreenPaginator Engine: Introduced SafeScreenPaginator to accurately partition reflowable EPUB and MOBI/AZW chapters into screen-fitted PageSlice units using paragraph budgeting, DOM hierarchy traversal, and TextPainter text layout measurement.
  • Bounded Typography & Layout Cache: Built an LRU page slice cache keyed on viewport dimensions, typography settings (font size, family, line height, paragraph indentation/spacing), hyphenation, and active annotations for instant pagination lookups.
  • True Screen-Fitted PageView: Overhauled EpubPagedViewer and MobiPagedViewer to use pure screen-sized PageView.builder widgets for both horizontal page-turn and vertical paged reading modes, replacing monolithic scroll containers.
  • Seamless Chapter Boundary Swapping: Added adjacent chapter edge slots (leading and trailing chapter previews) allowing continuous swiping across chapter boundaries with automatic chapter transition handling.
  • Binary Word-Boundary Page Splitting: Replaced sentence-based paragraph splitting with binary-search over word boundaries for precise text fitting, with sentence-boundary preference heuristics for clean page breaks.
  • TextScaler-Aware Pagination: Integrated MediaQuery.textScalerOf into paginator and paged viewers so system-level font scaling is correctly reflected in page layout and cache keys.
  • Safe-Area-Aware Viewport Dimensions: Switched paged viewers from raw MediaQuery.sizeOf to inner constraints subtracting safe area padding, preventing content from rendering behind system UI on notched and edge-to-edge displays.
  • Reduced Safety Ceiling: Tightened the per-page safety margin from 2 lines to 0.5 lines after normalizing whitespace and locking block margins, maximizing usable reading area per page.

Hyphenation Simplification

  • Soft-Hyphen Strip-Only Mode: Simplified HyphenationHelper.smartHyphenateText to unconditionally strip \u00AD and ­ characters, resolving Android SkParagraph rendering artifacts where words broke across lines without visible hyphen glyphs.
  • Removed Dead Hyphenation Codepaths: Eliminated the conditional applyHyphenation branching and _wordRegex-based insertion logic from DOM text traversal, consolidating all text nodes through the uniform strip path.

Paged Reader Margin & Layout Fixes

  • Zero-Top-Margin Block Rendering: Applied Margins.only(top: 0.0) to p, div, h1–h6, and blockquote elements in paged mode to prevent double spacing between paginator-measured and flutter_html-rendered block heights.
  • Symmetric Horizontal Margins: Corrected available width calculation to apply horizontal margin on both sides (horizontalMargin * 2) instead of only one, and distinguished margin-on (32px) from margin-off (16px) padding.

Rust Direct JPEG Decoding & Archive Reliability

  • Direct JPEG Decoder Bypass: Added jpeg-decoder in the Rust backend (rust/src/api/cbz.rs) to decode JPEG comic pages directly, eliminating zune-jpeg decoding errors and reducing allocation overhead.
  • Broad Color Space Support: Implemented direct conversion to 32-bit RGBA for RGB24, L8 grayscale, L16, and CMYK32 JPEG streams before transferring pixel buffers over FFI to Flutter.
  • Zero-Cost Pixel Conversion: Optimized JPEG decoding loops using const-generic as_chunks with pattern destructuring, eliminating slice indexing and bounds checks.
  • Dependency Clean Up: Removed unused mobi dependency from rust/Cargo.toml to streamline Rust compilation.

Reading Position & State Synchronization

  • Slice-Granular Position Tracking: Implemented savePagedReadingPosition in EpubChapterController and MobiChapterController to synchronize book progress to exact sentence spans and character offsets per page slice.
  • Streamlined Paged Position Restoration: Optimized mode switching between continuous scroll and paged reading, instantly resolving reading location via slice offsets without post-frame scroll client retries.

Ferrous v1.3.4-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 15:48

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.4-alpha.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.4-alpha.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.4-alpha.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.4-alpha.1-arm64-v8a.apk 51d75131751235fb774248c13a292f64749db255f74c932ec3623ebe54e4adfe
ferrous-v1.3.4-alpha.1-armeabi-v7a.apk 6598d15a751809544646426be92587ca1c5d8a4f7c0b730a5643e0d8d86f048b
ferrous-v1.3.4-alpha.1-x86_64.apk 5cb11df89e51910248158cde33cb465dcd636c834dac2b3ffedadcfb100b4264

Changelog

DOM Chunking & Reader View Performance

  • DOM Chunking Pipeline: Introduced DomChunker to decompose monolithic HTML chapters (>15,000 characters) into ~18-paragraph standalone DOM chunks, unwrapping oversized containers while preserving ancestor classes, CSS hierarchy, and anchor jump targets.
  • Chunk-Level Rendering & LRU Cache: Overhauled EpubContentViewer and MobiContentViewer with a chunk-level static LRU cache (_chunkCache), rendering individual DOM fragments to eliminate rendering lag, reflow bottlenecks, and memory spikes on long chapters.
  • Offset-Mapped TTS Highlights: Integrated dynamic chapter-to-chunk offset translation into EpubContentViewer and MobiContentViewer, enabling accurate word/sentence highlighting across arbitrary DOM chunks.

Continuous Scroll & Typography Invalidation

  • Continuous Scroll Bounds Tracking: Converted EpubContinuousViewer and MobiContinuousViewer to stateful observers that automatically detect typography changes (font size, line height, margins, spacing) and viewport resizing, clearing cached chapter heights and bounds to prevent scroll position drift.
  • Dynamic Scroll Boundary Invalidation: Added invalidateScrollBounds() and clearRecordedChapterHeights() in chapter controllers to ensure immediate chapter index snapping when switching reading configurations.

Smart Hyphenation & Text Selection Polish

  • Proper Noun Preservation in Hyphenation: Refined smartHyphenateText in HyphenationHelper to bypass capitalized proper nouns, enforce a minimum word length threshold (>=7 characters), and ignore symbols/numeric words.
  • Clean Text Copy & Annotation Export: Stripped invisible formatting artifacts (\u00AD, \u200B, ­) from user selections during text copy and annotation creation in EPUB and MOBI reader screens.
  • TTS Zero-Width Space Normalization: Updated sentence boundary tokenization in TTS controllers to safely ignore \u200B alongside soft hyphens.

Rust RAR Decompression & SIMD Codegen

  • Pre-Allocated RAR Decompression: Enhanced cbz and covers Rust modules to query unpacked entry sizes prior to extraction, pre-allocating buffer memory to prevent iterative reallocation overhead.
  • Decompression Integrity Checks: Added size validation and FNV-1a 64-bit diagnostic logging to ensure verified, intact image extraction from CBR archives.
  • Targeted SIMD Optimization: Configured release profile with lto = "thin" and isolated opt-level = 3 for unrar-rs, image, zune-jpeg, and jpeg-decoder crates to guarantee optimal NEON SIMD codegen on AArch64.

Ferrous v1.3.3

Choose a tag to compare

@github-actions github-actions released this 11 Nov 15:27

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.3-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.3-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.3-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.3-arm64-v8a.apk 001e797147c0a5ae5bdc01cfa4c4b1b8c62a98562a3dca2f5a9aa219198cfcee
ferrous-v1.3.3-armeabi-v7a.apk d594c7d4105bca3b1e349f4716abc9ef968c89cc2a150dc360c6bf5428f71aab
ferrous-v1.3.3-x86_64.apk 6077f8972c4a791920a01c2392bb0fda6fbfb3dba7a1844d9228cd3ba49ff4e7

Changelog

CBR / RAR Comic Extraction & Robustness

  • 3-Tier RAR Member Resolution: Replaced fragile name lookups with 3-tier index-based matching (find_member_sanitized, find_member, and path-normalized fallback with pre-computed targets) in Rust cbz and covers modules.
  • Index-Based Archive Decompression: Transitioned entry access from by_name to by_index for CBR files, eliminating decompression failures on non-standard entry paths and separator encodings.
  • Archive Extraction Error Pipeline: Introduced ArchiveExtractionException and granular error tracking in CbzCacheController to surface specific failure causes (corrupted data, password protection, unsupported compression) in CbzPageImage.
  • Fault-Tolerant Pre-Warming: Protected comic reader initialization by catching individual neighbor pre-warm failures without crashing the entire viewer.

Reading Progress & Library Filters

  • Accurate Section-Based Progress: Updated Book.progress calculation to distinguish section-based reflowable formats (EPUB, MOBI, AZW, AZW3) from fixed-page documents, resolving reading progress discrepancies on early chapters.
  • In-Progress Filter Precision: Added isInProgress helper to accurately identify books that have been started but not finished, refining the "Continue Reading" shelf logic.

Typography & Paragraph Defragmentation

  • Contextual Mojibake & Replacement Character Healing: Implemented healReplacementCharacters in HtmlDefragmenter to intelligently heal Unicode replacement characters (\uFFFD), substitute control chars (\u001A), and raw mojibake (�) into authentic curly apostrophes, smart quotation marks, and em-dashes across contractions, possessives, elisions, and speech boundaries.
  • Cross-Tag Element Boundary Healing: Added _healElementBoundaryNodes to repair replacement characters and smart punctuation split across inline markup boundaries (e.g., <em> and <strong> tags).
  • Harmonized Search & TTS Normalization: Integrated typographic replacement healing into normalizePlainText to preserve character offset alignment for search and clean TTS pronunciation.
  • Rust MOBI CP-1252 Decoder Refinement: Updated decode_mobi_text to route undefined CP-1252 bytes (0x81, 0x8D, 0x8F, 0x90, 0x9D) as \u{FFFD} instead of literal ?, enabling downstream contextual typographic healing in Dart.
  • Advanced Defragmentation Regex: Expanded HtmlDefragmenter with specialized heuristics for parenthetical citations, capitalized continuation phrases, attribution em-dashes, and trailing punctuation (ellipses, colons, em-dashes, commas).
  • Proactive Soft-Hyphen Cleanup: Unconditionally stripped soft-hyphens (\u00AD, &shy;) during text tree traversal in HyphenationHelper to prevent rendering artifacts and broken hyphenation line breaks in Flutter's text engine.
  • Experimental Hyphenation Setting: Tagged the reader hyphenation toggle with an experimental notice in the layout settings sheet.

Ferrous v1.3.3-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 11:09

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.3-alpha.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.3-alpha.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.3-alpha.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.3-alpha.1-arm64-v8a.apk b7c9188a85e6e288a2f1c89f3889bfc0013ba1bfbebf733ce7b5d187aaa0249b
ferrous-v1.3.3-alpha.1-armeabi-v7a.apk 91e7515bcf116531161d6a93bd04b20ded3de0539d35ad3838997cef652d38fc
ferrous-v1.3.3-alpha.1-x86_64.apk dc6847114c1c42b3d4d1fc5d5309f9666b556e198786831443b0e281e5caae6c

Changelog

CBR / RAR Comic Extraction & Robustness

  • 3-Tier RAR Member Resolution: Replaced fragile name lookups with 3-tier index-based matching (find_member_sanitized, find_member, and path-normalized fallback with pre-computed targets) in Rust cbz and covers modules.
  • Index-Based Archive Decompression: Transitioned entry access from by_name to by_index for CBR files, eliminating decompression failures on non-standard entry paths and separator encodings.
  • Archive Extraction Error Pipeline: Introduced ArchiveExtractionException and granular error tracking in CbzCacheController to surface specific failure causes (corrupted data, password protection, unsupported compression) in CbzPageImage.
  • Fault-Tolerant Pre-Warming: Protected comic reader initialization by catching individual neighbor pre-warm failures without crashing the entire viewer.

Reading Progress & Library Filters

  • Accurate Section-Based Progress: Updated Book.progress calculation to distinguish section-based reflowable formats (EPUB, MOBI, AZW, AZW3) from fixed-page documents, resolving reading progress discrepancies on early chapters.
  • In-Progress Filter Precision: Added isInProgress helper to accurately identify books that have been started but not finished, refining the "Continue Reading" shelf logic.

Typography & Paragraph Defragmentation

  • Advanced Defragmentation Regex: Expanded HtmlDefragmenter with specialized heuristics for parenthetical citations, capitalized continuation phrases, attribution em-dashes, and trailing punctuation (ellipses, colons, em-dashes, commas).
  • Proactive Soft-Hyphen Cleanup: Unconditionally stripped soft-hyphens (\u00AD, &shy;) during text tree traversal in HyphenationHelper to prevent rendering artifacts and broken hyphenation line breaks in Flutter's text engine.
  • Experimental Hyphenation Setting: Tagged the reader hyphenation toggle with an experimental notice in the layout settings sheet.

Ferrous v1.3.2

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:42

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.2-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.2-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.2-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.2-arm64-v8a.apk 5f4364061b51e9a144fa71d922748ac03379bc3bdb761ba97842fce0f105f96a
ferrous-v1.3.2-armeabi-v7a.apk be6d930be347fdb9c3f3d3335d4c788e4084e8665227a3e81af7985c4d78f80a
ferrous-v1.3.2-x86_64.apk 58f9e8e2b7973f240f4ac2b482e29a414e997e4c3dd3bf42d0c3e129219074b4

Changelog

HTML Paragraph Defragmentation & Reader Typography

  • HTML Paragraph Defragmenter: Implemented HtmlDefragmenter to scan and stitch together artificially split paragraphs in converted EPUB and MOBI files while preserving formatting, styling, and navigation anchors.
  • Soft-Hyphen Stripping & Whitespace Normalization: Stripped rogue soft-hyphens (\u00AD) and condensed redundant whitespace and tabs across text nodes when hyphenation is disabled.
  • Hyphenation Default Update: Switched default hyphenation setting in ReaderThemeConfig from true to false for cleaner baseline typography across reflowable reader views.
  • Chapter Controller Integration: Integrated DOM defragmentation into EpubChapterController, MobiChapterController, and HyphenationHelper pipeline prior to sentence tokenization and indentation tagging.

CBZ & Comic Reader Adaptive Canvas

  • Multi-Stop Edge Color Profiles: Extracted 8-stop horizontal and vertical edge gradients (topProfile, bottomProfile) from raw RGBA buffers to support split-tone, dual-colored, and graphic border pages without letterbox banding.
  • Manga White-Paper Detection: Added heuristic monochrome paper classification to preserve clean off-white margins and eliminate harsh dark letterboxing during manga reading.
  • 3-Depth Band Sampling & Clustering: Implemented 3-depth sampling bands (3px, 7px, 12px) with exact-sum clustering to eliminate scanner crop borders, panel margins, and screentone noise while accurately sampling full-bleed artwork.
  • Dynamic Gutter Separator Bridge: Added intelligent canvas bridging in continuous and webtoon reading modes, matching background colors across page boundaries and preventing dark gutter flashing between light pages.
  • Nearby Page Color Pre-warming: Expanded notifyCornerColorsAvailable notification radius to ±3 adjacent pages, pre-warming background gradients ahead of user scroll gestures.

MOBI Reader Architecture & Metadata

  • Byte-Exact Chapter Slicing via NCX Targets: Refactored Rust MOBI engine to slice raw document bytes directly using NCX table of contents byte offsets (filepos) with safe UTF-8 boundary snapping and target deduplication.
  • Front Matter & Title Page Extraction: Added automatic front matter boundary detection to extract cover and title pages located prior to the first chapter target.
  • Dynamic Image Path Normalization: Converted MOBI recindex image references directly to local filesystem URIs (file://) with automatic format fallback detection (.jpg / .png).
  • Metadata Extraction in Library Scanner: Integrated getMobiTitle and getMobiAuthor FFI bindings into storage scanning to automatically extract real MOBI and AZW titles and authors.

Reader Navigation & Anchor Resolution

  • In-Book Footnote & Anchor Navigation: Implemented anchor target mapping (#anchor and file-prefixed fragments) across EPUB and MOBI chapter controllers.
  • Interactive Link Tapping: Wired link handlers across paged and continuous reader modes to smoothly jump to anchor positions, chapters, and footnotes without corrupting reading state.
  • EPUB Fallback Parser Anchors: Added anchor collection and source file tracking to the EPUB fallback parser.

Ferrous v1.3.2-alpha.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 21:12

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.2-alpha.2-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.2-alpha.2-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.2-alpha.2-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.2-alpha.2-arm64-v8a.apk ea329e38f6e918cb553357bf7c9006b9bea72340feec6b898cf574ccd709f31a
ferrous-v1.3.2-alpha.2-armeabi-v7a.apk 6d58f848e89c827f7c628a9708a6e5459c19cf69b64e08bc38554b6a53b4d4b7
ferrous-v1.3.2-alpha.2-x86_64.apk 5c4f5a7129bd5d76840a88a0bafd08110f0f424218ec28a715c39feea6153c16

Changelog

HTML Paragraph Defragmentation & Reader Typography

  • HTML Paragraph Defragmenter: Implemented HtmlDefragmenter to scan and stitch together artificially split paragraphs in converted EPUB and MOBI files while preserving formatting, styling, and navigation anchors.
  • Soft-Hyphen Stripping & Whitespace Normalization: Stripped rogue soft-hyphens (\u00AD) and condensed redundant whitespace and tabs across text nodes when hyphenation is disabled.
  • Hyphenation Default Update: Switched default hyphenation setting in ReaderThemeConfig from true to false for cleaner baseline typography across reflowable reader views.
  • Chapter Controller Integration: Integrated DOM defragmentation into EpubChapterController, MobiChapterController, and HyphenationHelper pipeline prior to sentence tokenization and indentation tagging.

CBZ & Comic Reader Adaptive Canvas

  • Multi-Stop Edge Color Profiles: Extracted 8-stop horizontal and vertical edge gradients (topProfile, bottomProfile) from raw RGBA buffers to support split-tone, dual-colored, and graphic border pages without letterbox banding.
  • Manga White-Paper Detection: Added heuristic monochrome paper classification to preserve clean off-white margins and eliminate harsh dark letterboxing during manga reading.
  • 3-Depth Band Sampling & Clustering: Implemented 3-depth sampling bands (3px, 7px, 12px) with exact-sum clustering to eliminate scanner crop borders, panel margins, and screentone noise while accurately sampling full-bleed artwork.
  • Dynamic Gutter Separator Bridge: Added intelligent canvas bridging in continuous and webtoon reading modes, matching background colors across page boundaries and preventing dark gutter flashing between light pages.
  • Nearby Page Color Pre-warming: Expanded notifyCornerColorsAvailable notification radius to ±3 adjacent pages, pre-warming background gradients ahead of user scroll gestures.

Ferrous v1.3.2-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 19:30

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.2-alpha.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.2-alpha.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.2-alpha.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.2-alpha.1-arm64-v8a.apk 660906eb348d60061acd93bcdc604aac4aa8e218327e90c4a83e24d4ef782cfe
ferrous-v1.3.2-alpha.1-armeabi-v7a.apk d67a3b7717a74947154d09e85e8319c7ff9ad28d9d49e5965b7f85bcab89b738
ferrous-v1.3.2-alpha.1-x86_64.apk faf0223ecadc47a4025b5665576e4f839d627c71de7cc6f908a8f0195b85ab46

Changelog

MOBI Reader Architecture & Metadata

  • Byte-Exact Chapter Slicing via NCX Targets: Refactored Rust MOBI engine to slice raw document bytes directly using NCX table of contents byte offsets (filepos) with safe UTF-8 boundary snapping and target deduplication.
  • Front Matter & Title Page Extraction: Added automatic front matter boundary detection to extract cover and title pages located prior to the first chapter target.
  • Dynamic Image Path Normalization: Converted MOBI recindex image references directly to local filesystem URIs (file://) with automatic format fallback detection (.jpg / .png).
  • Metadata Extraction in Library Scanner: Integrated getMobiTitle and getMobiAuthor FFI bindings into storage scanning to automatically extract real MOBI and AZW titles and authors.

Reader Navigation & Anchor Resolution

  • In-Book Footnote & Anchor Navigation: Implemented anchor target mapping (#anchor and file-prefixed fragments) across EPUB and MOBI chapter controllers.
  • Interactive Link Tapping: Wired link handlers across paged and continuous reader modes to smoothly jump to anchor positions, chapters, and footnotes without corrupting reading state.
  • EPUB Fallback Parser Anchors: Added anchor collection and source file tracking to the EPUB fallback parser.

Ferrous v1.3.1

Choose a tag to compare

@github-actions github-actions released this 09 Nov 23:59

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.1-arm64-v8a.apk d9d686153157cacdb94a1a3be2d0c4bc479e82fbeddee9e4e455dd25ade9e577
ferrous-v1.3.1-armeabi-v7a.apk 3686beba87c2cfd4f0645da4dcbdbf1bd2de2b78f677fa51995ada3e91cf7615
ferrous-v1.3.1-x86_64.apk 947c3c643c436038aa1db213583e0a8d7f2e1ca31d17ed4b6d0204153ce097f8

Changelog

Performance & GPU Optimization

  • O(1) GPU Halftone Scrim Shader: Replaced 25,000+ per-frame Canvas.drawCircle calls with a GPU-cached repeating ImageShader tile, eliminating GPU command buffer exhaustion, frame drops, and driver crashes on low-end devices.
  • RepaintBoundary & Zero-Latency E-Ink Modal: Isolated halftone scrim rendering behind a RepaintBoundary and set modal transition duration to Duration.zero for true instant e-paper responsiveness.
  • Compositor & Blur Optimization: Replaced heavy BackdropFilter real-time blurs in navigation bars and floating islands with high-performance opaque surface styling, cutting GPU overdraw and eliminating scroll stutter.
  • Async Cover Decode & UI Thread I/O Removal: Removed synchronous File.existsSync() blocking calls on the UI thread and added dynamic device-pixel-ratio-aware image decode sizing (cacheWidth/cacheHeight) for book covers.
  • RepaintBoundary Isolation: Isolated EInkPaperNoiseOverlay and E-Ink book cover color filters behind RepaintBoundary widgets to prevent unneeded ancestor repaints.
  • Font Instantiation Caching: Replaced repetitive per-widget GoogleFonts lookups across library views and cards with cached styles and theme typography.

Reader & TTS Enhancements

  • Static DOM Tree Caching: Optimized HTML reader viewers (EPUB, MOBI, TXT) with ListenableBuilder static child caching to bypass full HTML re-parsing and re-rendering when TTS is inactive or unchanged.
  • Transient TTS Stop Event Guards: Added _isStartingSpeech flags across all TTS controllers to prevent highlight flicker and premature stops during speech engine initialization.
  • Instant Highlight Pre-seeding: Added startPlayback() to pre-seed the initial word highlight immediately before the speech engine's first progress callback.

UI & Material 3 Refinement

  • Material 3 Library Action Sheet: Migrated the library book long-press modal from CupertinoActionSheet to an adaptive Material 3 showModalBottomSheet with drag handles, themed typography, and proper action styling.

Ferrous v1.3.1-alpha.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 23:09

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.1-alpha.2-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.1-alpha.2-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.1-alpha.2-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.1-alpha.2-arm64-v8a.apk 5822e997078c4dd3d6decf3668aae578afede22cb835f67d65045ace99ee542a
ferrous-v1.3.1-alpha.2-armeabi-v7a.apk fa992e51783ca6d3ab0816e390b6271d087b4601abf7658d3f62a91541274bfc
ferrous-v1.3.1-alpha.2-x86_64.apk 5b1fdce52b4d8b11f431ad236c11f3a801174c12b77c090d739412f4e740fd36

Changelog

Performance & GPU Optimization

  • Compositor & Blur Optimization: Replaced heavy BackdropFilter real-time blurs in navigation bars and floating islands with high-performance opaque surface styling, cutting GPU overdraw and eliminating scroll stutter.
  • Async Cover Decode & UI Thread I/O Removal: Removed synchronous File.existsSync() blocking calls on the UI thread and added dynamic device-pixel-ratio-aware image decode sizing (cacheWidth/cacheHeight) for book covers.
  • RepaintBoundary Isolation: Isolated EInkPaperNoiseOverlay and E-Ink book cover color filters behind RepaintBoundary widgets to prevent unneeded ancestor repaints.
  • Font Instantiation Caching: Replaced repetitive per-widget GoogleFonts lookups across library views and cards with cached styles and theme typography.

Reader & TTS Enhancements

  • Static DOM Tree Caching: Optimized HTML reader viewers (EPUB, MOBI, TXT) with ListenableBuilder static child caching to bypass full HTML re-parsing and re-rendering when TTS is inactive or unchanged.
  • Transient TTS Stop Event Guards: Added _isStartingSpeech flags across all TTS controllers to prevent highlight flicker and premature stops during speech engine initialization.
  • Instant Highlight Pre-seeding: Added startPlayback() to pre-seed the initial word highlight immediately before the speech engine's first progress callback.

Ferrous v1.3.1-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 21:54

Which APK should I install?

File Architecture Target Devices Notes
ferrous-v1.3.1-alpha.1-arm64-v8a.apk arm64-v8a Modern phones and tablets Recommended (most devices)
ferrous-v1.3.1-alpha.1-armeabi-v7a.apk armeabi-v7a Older 32-bit Android phones Devices from 2016 or earlier / 32-bit
ferrous-v1.3.1-alpha.1-x86_64.apk x86_64 Emulators and ChromeOS PC emulators (BlueStacks, LDPlayer)

Note: If you are unsure which build your device requires, choose arm64-v8a.


Verify Checksums (SHA-256)

Verify your download against SHA256SUMS.txt using sha256sum -c SHA256SUMS.txt:

File SHA-256 Hash
ferrous-v1.3.1-alpha.1-arm64-v8a.apk dd418e8dfc60d3d02a364b38cb19720cfd686608d92f2aba6f87da0762a4d173
ferrous-v1.3.1-alpha.1-armeabi-v7a.apk 8f3ba8d283a42286c3bec68156fb2fad83c3bac10dd00bab2c311845f1771528
ferrous-v1.3.1-alpha.1-x86_64.apk e6c166dae53abb8033c2746b7490800e7a750cb740592b34f42226f89a417186

Changelog

Performance & GPU Optimization

  • O(1) GPU Halftone Scrim Shader: Replaced 25,000+ per-frame Canvas.drawCircle calls with a GPU-cached repeating ImageShader tile, eliminating GPU command buffer exhaustion, frame drops, and driver crashes on low-end devices.
  • RepaintBoundary & Zero-Latency E-Ink Modal: Isolated halftone scrim rendering behind a RepaintBoundary and set modal transition duration to Duration.zero for true instant e-paper responsiveness.

UI & Material 3 Refinement

  • Material 3 Library Action Sheet: Migrated the library book long-press modal from CupertinoActionSheet to an adaptive Material 3 showModalBottomSheet with drag handles, themed typography, and proper action styling.