Repository navigation
Releases
Ferrous v1.4.0-alpha.1
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
SafeScreenPaginatorto accurately partition reflowable EPUB and MOBI/AZW chapters into screen-fittedPageSliceunits using paragraph budgeting, DOM hierarchy traversal, andTextPaintertext 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
EpubPagedViewerandMobiPagedViewerto use pure screen-sizedPageView.builderwidgets 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.textScalerOfinto 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.sizeOfto 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.smartHyphenateTextto unconditionally strip\u00ADand­characters, resolving Android SkParagraph rendering artifacts where words broke across lines without visible hyphen glyphs. - Removed Dead Hyphenation Codepaths: Eliminated the conditional
applyHyphenationbranching 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)top,div,h1–h6, andblockquoteelements 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-decoderin the Rust backend (rust/src/api/cbz.rs) to decode JPEG comic pages directly, eliminatingzune-jpegdecoding errors and reducing allocation overhead. - Broad Color Space Support: Implemented direct conversion to 32-bit RGBA for
RGB24,L8grayscale,L16, andCMYK32JPEG streams before transferring pixel buffers over FFI to Flutter. - Zero-Cost Pixel Conversion: Optimized JPEG decoding loops using const-generic
as_chunkswith pattern destructuring, eliminating slice indexing and bounds checks. - Dependency Clean Up: Removed unused
mobidependency fromrust/Cargo.tomlto streamline Rust compilation.
Reading Position & State Synchronization
- Slice-Granular Position Tracking: Implemented
savePagedReadingPositioninEpubChapterControllerandMobiChapterControllerto 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
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
DomChunkerto 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
EpubContentViewerandMobiContentViewerwith 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
EpubContentViewerandMobiContentViewer, enabling accurate word/sentence highlighting across arbitrary DOM chunks.
Continuous Scroll & Typography Invalidation
- Continuous Scroll Bounds Tracking: Converted
EpubContinuousViewerandMobiContinuousViewerto 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()andclearRecordedChapterHeights()in chapter controllers to ensure immediate chapter index snapping when switching reading configurations.
Smart Hyphenation & Text Selection Polish
- Proper Noun Preservation in Hyphenation: Refined
smartHyphenateTextinHyphenationHelperto 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
\u200Balongside soft hyphens.
Rust RAR Decompression & SIMD Codegen
- Pre-Allocated RAR Decompression: Enhanced
cbzandcoversRust 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 isolatedopt-level = 3forunrar-rs,image,zune-jpeg, andjpeg-decodercrates to guarantee optimal NEON SIMD codegen on AArch64.
Ferrous v1.3.3
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 Rustcbzandcoversmodules. - Index-Based Archive Decompression: Transitioned entry access from
by_nametoby_indexfor CBR files, eliminating decompression failures on non-standard entry paths and separator encodings. - Archive Extraction Error Pipeline: Introduced
ArchiveExtractionExceptionand granular error tracking inCbzCacheControllerto surface specific failure causes (corrupted data, password protection, unsupported compression) inCbzPageImage. - 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.progresscalculation 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
isInProgresshelper 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
healReplacementCharactersinHtmlDefragmenterto 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
_healElementBoundaryNodesto 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
normalizePlainTextto preserve character offset alignment for search and clean TTS pronunciation. - Rust MOBI CP-1252 Decoder Refinement: Updated
decode_mobi_textto 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
HtmlDefragmenterwith 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,­) during text tree traversal inHyphenationHelperto 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
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 Rustcbzandcoversmodules. - Index-Based Archive Decompression: Transitioned entry access from
by_nametoby_indexfor CBR files, eliminating decompression failures on non-standard entry paths and separator encodings. - Archive Extraction Error Pipeline: Introduced
ArchiveExtractionExceptionand granular error tracking inCbzCacheControllerto surface specific failure causes (corrupted data, password protection, unsupported compression) inCbzPageImage. - 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.progresscalculation 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
isInProgresshelper to accurately identify books that have been started but not finished, refining the "Continue Reading" shelf logic.
Typography & Paragraph Defragmentation
- Advanced Defragmentation Regex: Expanded
HtmlDefragmenterwith 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,­) during text tree traversal inHyphenationHelperto 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
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
HtmlDefragmenterto 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
hyphenationsetting inReaderThemeConfigfromtruetofalsefor cleaner baseline typography across reflowable reader views. - Chapter Controller Integration: Integrated DOM defragmentation into
EpubChapterController,MobiChapterController, andHyphenationHelperpipeline 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
notifyCornerColorsAvailablenotification 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
recindeximage references directly to local filesystem URIs (file://) with automatic format fallback detection (.jpg / .png). - Metadata Extraction in Library Scanner: Integrated
getMobiTitleandgetMobiAuthorFFI 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 (
#anchorand 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
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
HtmlDefragmenterto 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
hyphenationsetting inReaderThemeConfigfromtruetofalsefor cleaner baseline typography across reflowable reader views. - Chapter Controller Integration: Integrated DOM defragmentation into
EpubChapterController,MobiChapterController, andHyphenationHelperpipeline 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
notifyCornerColorsAvailablenotification radius to ±3 adjacent pages, pre-warming background gradients ahead of user scroll gestures.
Ferrous v1.3.2-alpha.1
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
recindeximage references directly to local filesystem URIs (file://) with automatic format fallback detection (.jpg / .png). - Metadata Extraction in Library Scanner: Integrated
getMobiTitleandgetMobiAuthorFFI 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 (
#anchorand 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
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.drawCirclecalls with a GPU-cached repeatingImageShadertile, 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
RepaintBoundaryand set modal transition duration toDuration.zerofor true instant e-paper responsiveness. - Compositor & Blur Optimization: Replaced heavy
BackdropFilterreal-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
EInkPaperNoiseOverlayand E-Ink book cover color filters behindRepaintBoundarywidgets to prevent unneeded ancestor repaints. - Font Instantiation Caching: Replaced repetitive per-widget
GoogleFontslookups 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
ListenableBuilderstatic child caching to bypass full HTML re-parsing and re-rendering when TTS is inactive or unchanged. - Transient TTS Stop Event Guards: Added
_isStartingSpeechflags 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
CupertinoActionSheetto an adaptive Material 3showModalBottomSheetwith drag handles, themed typography, and proper action styling.
Ferrous v1.3.1-alpha.2
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
BackdropFilterreal-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
EInkPaperNoiseOverlayand E-Ink book cover color filters behindRepaintBoundarywidgets to prevent unneeded ancestor repaints. - Font Instantiation Caching: Replaced repetitive per-widget
GoogleFontslookups 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
ListenableBuilderstatic child caching to bypass full HTML re-parsing and re-rendering when TTS is inactive or unchanged. - Transient TTS Stop Event Guards: Added
_isStartingSpeechflags 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
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.drawCirclecalls with a GPU-cached repeatingImageShadertile, 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
RepaintBoundaryand set modal transition duration toDuration.zerofor true instant e-paper responsiveness.
UI & Material 3 Refinement
- Material 3 Library Action Sheet: Migrated the library book long-press modal from
CupertinoActionSheetto an adaptive Material 3showModalBottomSheetwith drag handles, themed typography, and proper action styling.