Readwide

com.readwide.manager
by Zapstore _@zapstore.dev

Republished from GitHub / F-Droid by the Zapstore main account.

First release: Jul 31, 2026, 4 total releases.

Most recent release: Sep 20, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 20, 2026 1.0.19
    ### Home and settings - The EPUB font selector in Settings uses the shared rounded dialog and current theme colors. - Added tap-to-expand pinned folders while keeping horizontal scrolling. Reduced the space used by Home headings and aligned the disclosure arrow with translated titles. - Fixed repeated flashing and unexpected section closure when switching themes. - Reset and backup restore now replace stale control values and color drafts. Canceling button-order edits preserves the saved order. Delayed dropdown callbacks no longer overwrite imported settings after rotation. - Theme drafts and PIN setup survive rotation. The PIN screen scrolls in short windows, and canceled setup restores the lock switch. - Theme save/delete failures remain open for retry. Opening View settings from a TXT reader preserves its file-specific settings. ### EPUB and document reading
    More…
    - Markdown read-aloud locates its starting passage with less repeated scanning. - Document search creates fewer temporary objects. Markdown scrolling combines pending position updates and ignores results from an earlier page load. - Reduced repeated scanning when searching document text containing many ampersands. - Preserved reading positions through rotation, font/theme changes, spacing adjustments, and search cleanup. - Fixed missing opening characters in vertical Japanese bookmark previews and brought search matches in later columns into view. Rapid searches across chapters keep the result counter and displayed passage in sync. - Read-aloud follows vertical text and highlights the spoken occurrence of repeated sentences, including across chapter changes. - Corrected links and double-tap zoom reset in two-page EPUB view. A delayed error from a previous document no longer closes the current book. - Read-aloud media buttons no longer act twice per press. Play and Pause keep their requested state, and pausing cancels a pending restart. ### PDF and image reading - PDF search highlights look up the current page without scanning every result in the document. - Kept unrestricted rapid PDF taps at fit size. Zoomed double taps reset the page, and outward edge swipes turn pages without interrupting normal panning. Page labels keep the selected target while the slider is held. - Prioritized visible and nearby PDF pages, reused pending renders, and discarded obsolete work. Lower-resolution cached images retain the intended page size and zoom range. - Continuous PDF bookmarks and reading positions retain the visible page and gaps. Search updates no longer recenter a manually panned page. - Image double-tap reset no longer turns a page, and loading preserves an active page-slider drag. - Document, PDF, and image viewers apply Keep screen on. TXT brightness refreshes after settings reset or import. ### TXT, backups, and files - Selecting many files scans the list once. Sorting reuses the file details already loaded in the background. - Fixed TXT search count/navigation differences, previous-result wrapping, and dense-result handling. - TXT reloads use the current reading position instead of an old bookmark. Imported display rules refresh correctly, invalid replacements no longer block loading, and large files reuse prepared rules. Opening another TXT file no longer jumps to the previous file's position, and unfinished loads preserve saved positions. - TXT rule editing preserves per-file targets, validates expressions, and shows the existing 50-rule limit. - Backup import rejects settings with incorrect data types before replacement and reports save failures. Background backup operations retain confirmation and results across rotation; saved JSON can recover from its backup copy. - Copy, move, and delete handle cancellation and progress consistently without following symbolic-link targets. Natural sorting handles digits from different languages. ### Archives - Archive filtering sorts only the matching entries while keeping the existing folder and image order. Long archive paths require less copying when preparing previews and image order. - Improved plain RAR4 extraction and image browsing for independent stored files alongside supported compressed runs, including empty folders. - Added 7z ARM64/RISC-V filters and reduced unnecessary dictionary allocation for small LZMA/LZMA2 streams. - Read concatenated GZIP, BZip2, XZ, and framed-LZ4 members, including TAR data spanning compressed members. - Strengthened size/checksum and temporary-file checks across RAR, 7z, ZIP/ZIPX, ALZ, EGG, and TAR. Failed writes protect the current output, and failed folder restoration retains the original backup and reports its path. - Existing limits remain: encrypted/split mixed RAR, stored files used as solid history, custom RAR VM programs, unsupported 7z filter combinations, and EGG LEA/encrypted-solid archives. ### Maintenance - Updated AppCompat, ConstraintLayout, SwipeRefreshLayout, the HWP library, and the test-only Zstandard library. - Version metadata: `1.0.19` / `10019`.
  • Sep 11, 2026 1.0.18
    ### Archive reader state and comic order - The numeric background-timeout field has slightly rounded corners and inset text instead of placing the number against a square edge. - Replaced the fixed ten-minute archive-viewer background expiry with a numeric Settings value from `0` to `10080` minutes. The default `0` disables automatic closing; a nonzero value saves the current page and closes after the selected background interval. - Background memory cleanup releases decoded bitmaps without discarding the current archive entry. Returning to the app reloads the retained page instead of exposing the Recent list. - Timeout accounting starts when the viewer stops being visible and uses elapsed time from the same device boot. Clock changes, reboots, empty input, and settings reset/import no longer restore an incorrect deadline or stale value. - Direct comic opening uses full internal-path natural order, keeping repeated page names within their chapters: `Part1/1.jpg`, `Part1/2.jpg`, then `Part2/1.jpg`. Opening an image inside the archive browser retains the selected folder's visible order and scope. ### Archive image browsing
    More…
    - Reused ZIP/ZIPX routing metadata, ALZ and non-solid EGG indexes, and ordinary plain-TAR member offsets to avoid repeated scans. Metadata-cache budgets limit retention, not the size of archives that can be opened. - Added scoped forward reading for RAR3/RAR4 PPMd, RAR5-container archives, and plain solid EGG, retaining decoder history where supported and verifying requested output before publishing it. - Supported special 7z/CB7 folders reuse verified temporary output. Standard split special-forward reading accesses the volume set directly instead of creating another joined archive copy. - Two-page turns retain directional prefetch, while direct jumps reset it. Shared sequence snapshots and bounded, generation-aware requests avoid duplicate image warm-ups and stale completions. - Bulk fallback reuses extracted image files by rename where possible, and closing archive readers no longer waits on the UI thread. Large solid folders can still delay the first image. - RAR and standard split-7z preparation checks the resolved volume set before viewer handoff. This does not yet provide complete all-volume preview-cache invalidation. ### RAR compatibility - Converted first-party RAR3/RAR4 PPMd and classic-LZ output to streaming paths. PPMd preserves rolling history and supports scoped standard E8/E8E9/Itanium/Delta/RGB/Audio filters; classic-LZ retains match and table state across admitted solid entries. - Added mixed LZ/PPMd decoding and a CRC/boundary-checked fallback for plain single-volume compressed solid runs with valid starting entries. PPMd-only encrypted/split support remains a separate path. Encrypted/split mixed payloads, stored-member solid runs in the new fallback, custom VM programs, and unsupported filter scheduling remain excluded. - Removed the RAR5 compressed decoder's former 64 MiB packed / 256 MiB unpacked per-file caps using streaming input/output, including its supported AES, split, and solid variants. - Removed the first-party RAR5/RAR7 64 MiB retained-history ceiling. A bounded RAM cache spills older dictionary pages into encrypted temporary storage; real long-distance matches no longer fail solely because they exceed that RAM cache. Large dictionaries can require more storage and take longer to decode. - Added streaming BLAKE2sp and key-dependent encrypted RAR5 CRC32/HashMAC checks. Supported split paths verify intermediate packed parts separately from final decoded-file checks, including covered AES ciphertext paths. - Corrected split final-size/checksum selection, continuation planning, mixed-case volume discovery, high-precision timestamps, and bounded encryption/extra-record parsing. Cancellation and failed integrity checks reject uncommitted output. ### 7z, ALZ, EGG, and extraction limits - Streamed the special 7z Copy/LZMA/LZMA2/AES/BCJ2 and PPMd paths instead of buffering entire packed or decoded folders. Added bundled Deflate, Deflate64, BZip2, Delta, and six BCJ filters to supported special graphs, with property and integrity checks. - Corrected 7z header, packed-stream, folder, and substream CRC handling. Supported split special-forward paths share segmented input and retain whole-folder verification before publication. - Improved EGG numbered-volume discovery for case and zero-padding variants, rejected missing or ambiguous parts, and checked both directions of volume links. ALZ/EGG indexed extraction revalidates source identity and protects an existing target on failure. - Removed EGG's blanket 512 MiB checks from Store/Deflate/BZip2/LZMA streaming paths. Retained AZO's per-block memory guard and added metadata-range, decoded-length, and overflow checks; EGG LEA/encrypted-solid combinations remain unsupported. - Removed the fixed 128 GiB extraction ceiling and the viewer-only 2 GiB ceiling. Shared free-space accounting, the 64 MiB reserve, guarded native writes, and overflow checks remain. Decoder/model/metadata guards and the separate 2 GB inbound copy limit for files opened from other apps are unchanged. ### File browser, thumbnails, and search - Thumbnail requests follow attached rows: off-screen queued work is removed, reattached rows retry, and cached PNGs use a separate bounded lookup queue instead of waiting behind cold archive/PDF cover generation. - Completed covers update only matching visible icons. Queue-pressure retries are coalesced, and stale results retain safe bitmap cleanup. - File and folder replacements are staged before overwrite, with rollback and recovery backups for failed replacement. Unsafe ancestor-folder pastes and conflicting case-only renames are rejected. - Document search counts match non-overlapping selectable highlights, with corrected regex line anchors, HTML comment/attribute handling, and Unicode offsets. - TXT highlight preparation and document recounting run off the drawing thread. Cached page counts support navigation, and large-TXT exact indexes spill to private storage above 200,000 matches with scanning fallback when storage is unavailable. ### EPUB and PDF reading - EPUB resource, SMIL, and CFI references avoid double percent decoding; chapter base URLs preserve special characters in folder names. - EPUB media overlays follow foreground/audio-focus state, preserve pause through preparation and seeking, and ignore stale player callbacks. Cached audio uses collision-resistant identities and size/CRC checks; container/OPF parsing retains its text-memory guard. - PDF bookmarks retain the active viewport point and zoom, including source-page coordinates in two-page spreads. Saved activity state takes precedence over old launch bookmarks, and background bitmap cleanup retains the within-page anchor. - PDF search immediately clears outdated results on query changes or dismissal, coalesces pending scans, and preserves original text offsets and inferred word/line separators for highlights. - PDF read-aloud preserves inferred spaces and avoids guessed highlight coordinates when glyph mapping is ambiguous. Older text checkpoints resume from their saved page; valid current-format checkpoints retain their exact offset. ### Localization - Refined archive help and error messages across all 22 locales, removing untranslated developer jargon and correcting outdated EGG/RAR/7z support descriptions. - Read-aloud help now describes the shared TXT, PDF and document feature rather than calling it TXT-only. Improved bookmark navigation hints and Korean backup, resume and voice-setting wording.
  • Aug 14, 2026 1.0.17
    ### File browser display - Added a persistent **File display** choice to the fixed upper-right overflow beside the current location title (`Readwide`, `Download`, and folders). - File and Recent views can switch between the existing compact list and a two-column tile grid. The grid keeps cover thumbnails, file-type icons, reading progress, selection, search paths, and existing open/long-hold behavior. - Switching modes preserves the visible list position instead of jumping back to the beginning. - The display choice is not added to per-file or long-hold action menus. ### TXT and Markdown annotations - Selected TXT or Markdown text can now be saved as a note or persistent highlight without changing the original document.
    More…
    - Notes and highlights are stored in Readwide's separate app-private annotation file, follow file/folder moves made in the browser, and are included in JSON backup export/import. - A dedicated reader-toolbar shortcut opens **Notes & highlights** without going through More. The themed list updates immediately after edits or deletion. - Saving the same highlight range again is rejected, and exact duplicate highlights left by an earlier build are cleaned when annotation data is loaded. - The list can reopen a saved position and edit or delete its separately stored note. ### EPUB layout on large screens - In landscape on Android large-screen devices (`sw600dp` or wider), ordinary EPUBs now use the existing side-by-side two-page layout instead of stretching one text pane across the tablet. - Image-page EPUBs keep their existing landscape spread on phones and tablets. Portrait mode and ordinary EPUB behavior on smaller phones are unchanged. - PDF landscape spread behavior is unchanged. ### Archive reader return and localization - Switching to another app no longer closes an active archive/image reader when Android reports background memory pressure. Decoded image memory is released when requested, then the same archive page is decoded again on return. - ZIPX support is now explicit and tested: WinZip-AES entries using Deflate64, BZip2, LZMA, or XZ extract through the authenticated Java supplement. The Android backend is upgraded from the Maven AAR carrying libarchive 3.8.1 to source-built libarchive 3.8.9, adding encrypted ZIPX PPMd and Zstandard fallback plus upstream ZIPX streaming and archive-parser hardening. AES ZIPX using JPEG or WavPack now extracts through a separate source-built FOSS native module (XADMaster WinZip JPEG under LGPL-2.1-or-later and WavPack 5.9.0 under BSD-3-Clause), with bounded streaming, authentication-before-commit, and in-APK license texts. - CAB and LHA/LZH are now exposed as read-only archive types using the already-bundled libarchive decoders, including listing, image browsing, and extraction. Creation, password handling, and broad multi-volume compatibility are not claimed. libarchive 3.8.9 also tightens RAR/RAR5 seek and declared-size handling without changing Readwide's conservative RAR support boundary. - The independent RAR3/RAR4 classic-LZ fallback now implements standard VM-program slot selection/reset, program reuse, prior block-length reuse, usage registers, user-global-data consumption, and correct per-file filter offsets. This improves common standard E8/E8E9/Itanium/Delta/RGB/Audio filtered archives without adding Junrar or RARLAB UnRAR-license code; custom VM bytecode remains unsupported. - The first-party RAR5-container decoder now keeps the existing algorithm-v0 path used by RAR 5/6 and adds bounded RAR 7 algorithm-v1 handling: 80 distance codes, the extended fractional dictionary field, non-power-of-two wrapping, long distance values, and the v0-solid compatibility marker. Declared dictionaries up to the 1 TB format limit are parsed, but Android retains at most 64 MB of history and rejects a stream only when it actually needs older data. Synthetic public-grammar tests exercise the extended distance table and a slot-64 long-distance match; complete RAR 7 compatibility is not claimed. - Archive extraction now enforces one operation-wide runtime byte budget across dedicated Java decoders, fallback engines, and libarchive. Unknown-size entries can no longer reset the counter per file, and native libarchive output is copied in bounded blocks instead of writing unchecked directly to a file descriptor. The decoded-output ceiling is raised from 32 GB to 128 GB; the effective runtime budget is the smaller of that ceiling and the starting usable space minus the existing 64 MB reserve. - Refined annotation wording across translations and standardized Korean reader/theme terminology and several Indonesian file-browser labels. - Removed the remaining English-only PIN, reader-menu, bookmark, and font-picker text. PIN setup/change errors, bookmark metadata, font selection/import/removal, and related accessibility labels now use the complete English plus 21 localized resource sets; the former English/Korean-only font-label branch was removed. ### Release boundary - No permission was added. The existing libarchive Android backend is now built from pinned vendored 3.8.9 source with Android NDK 29 instead of resolving its 3.8.1 native AAR from Maven Central.
  • Jul 31, 2026 1.0.16