• v1.4 bf2c2825ac

    v1.4
    Release / build-and-push (push) Successful in 2m33s
    Stable

    john-okeefe released this 2026-09-12 20:17:21 -04:00 | 272 commits to main since this release

    Features

    • (scanner) Extract EPUB metadata from the embedded OPF directly (61681aa)
    • (scanner) Read Audiobookshelf metadata.json sidecars (44b98f3)
    • (db) Archive lifecycle schema and queries for missing media (e6aceae)
    • (scanner) Archive-at-two-scans lifecycle for files missing from disk (14445a7)
    • (admin) Purge-archived endpoint with an archived-items banner (cd119a7)

    Miscellaneous Tasks

    • (deploy) Document ARCHIVE_RETENTION_DAYS in compose and .env.example (bf2c282)
    Downloads
  • v1.3 7a9a66fcc5

    v1.3
    Release / build-and-push (push) Successful in 2m24s
    Stable

    john-okeefe released this 2026-09-12 14:29:01 -04:00 | 278 commits to main since this release

    Bug Fixes

    • (scanner) Render the PDF CropBox, not the MediaBox, in the cover fallback (9c8337d)
    • (db) Skip SQL comment lines when parsing schema table names (b964575)
    • (ui) Remove the broken Generate Cover button from the metadata editor (2df3ecb)

    Features

    • (metadata) Per-field user overrides that survive library rescans (7f64b92)
    • (ui) Admin-only file location and metadata editing on book detail (9da193e)
    • (ui) Show file path and Reset to Scanned in the metadata editor (7a9a66f)
    Downloads
  • v1.2 da1f689263

    v1.2
    Release / build-and-push (push) Successful in 2m50s
    Stable

    john-okeefe released this 2026-09-11 23:12:06 -04:00 | 284 commits to main since this release

    Features

    • (scanner) Render PDF first page as cover fallback via pdftoppm (0614795)
    • (api) Add POST /api/media-items/:id/rescan endpoint (298330a)
    • (ui) Add Rescan button to Edit Metadata dialog (da1f689)
    Downloads
  • v1.1.1 6aa958c78f

    v1.1.1
    Release / build-and-push (push) Successful in 2m27s
    Stable

    john-okeefe released this 2026-09-11 21:50:27 -04:00 | 287 commits to main since this release

    Bug Fixes

    • (reader) Save progress on real position change, not on detected intent (6aa958c)
    Downloads
  • v1.1 3514b4dc1c

    v1.1
    Release / build-and-push (push) Successful in 2m24s
    Stable

    john-okeefe released this 2026-09-10 08:29:58 -04:00 | 288 commits to main since this release

    Bug Fixes

    • (reader) Make device-synced highlights editable on the web (2366fac)
    • (reader) Stop page-turn and zoom shortcuts while typing in form fields (94dad5e)
    • (reader) Stop tap zones from paging during long-press text selection (905218d)
    • (highlights) Web edits update the targeted row instead of minting duplicates (75c1d9b)
    • (reader) Read position from the API at open; never write a restored position (ce3ae31)
    • (sync) Understand cross-block text; never store a guessed locator (b6f507b)
    • (sync) Let content-equal echoes refresh drifted locators (ae87c0c)
    • (reader) Close the highlight popover on outside clicks in the book (3514b4d)
    Downloads
  • v1.0.3 e40530824e

    v1.0.3
    Release / build-and-push (push) Successful in 2m14s
    Stable

    john-okeefe released this 2026-09-09 09:09:03 -04:00 | 296 commits to main since this release

    Features

    • (bookmarks) Location identity, origin provenance, KOReader-style labels (7b1c809)
    • (koreader) One conversion route for every feature; bookmarks get web CFIs (e405308)

    Performance

    • (sync) Share the bounded converter cache for section percentages (5a6c361)
    Downloads
  • v1.0.2 f7c4dfe2e8

    v1.0.2
    Release / build-and-push (push) Successful in 2m31s
    Stable

    john-okeefe released this 2026-09-08 22:42:25 -04:00 | 299 commits to main since this release

    Bug Fixes

    • (media) Gate file serving by library visibility; proper download URL (5c55936)
    • (bookmarks) Upsert on title conflict so position upgrades don't 500 (27b3dcb)
    • (sync) Resolve CRE positions structurally with text as verification (f7c4dfe)

    Documentation

    • (android) Add native Android client design doc (b927ed9)
    • (readme) Link Android app doc and adopt app favicon as title icon (7ddcdd0)
    • (api) Align auth/devices/libraries/media-items docs with handlers (f65db5a)
    • (android) Add QR pairing sign-in to roadmap, update auth design (3110493)
    • (api) Document the real book download route (4473555)
    • (android) Require reader settings parity with the web reader (9e516b9)

    Miscellaneous Tasks

    • (license) Relicense project from GPL-3.0 to AGPL-3.0 (e2953c4)

    Other

    • Revert "fix(bookmarks): upsert on title conflict so position upgrades don't 500"

    This reverts commit 27b3dcb69f. (b1eda69)

    Downloads
  • v1.0.1 d429534b12

    v1.0.1
    Release / build-and-push (push) Successful in 2m24s
    Stable

    john-okeefe released this 2026-08-22 13:59:19 -04:00 | 310 commits to main since this release

    Documentation

    • (koreader) Rewrite setup guide for plugin + server-side approval flow (54d0550)
    • (kobo) Mark native Kobo sync as coming soon (26f1f98)
    • (user) Align sync and user guides with current device support (2a7ac88)
    • (readme) Update device support matrix to current state (e35d394)
    • (index) Update device guidance and fix broken links (e310fa6)
    • (user) Update device and sync navigation for sidebar UI (8680033)
    • (user) Update appearance/profile instructions for sidebar UI (7274b51)
    • (user) Update dashboard and bookshelf instructions for sidebar UI (9a60196)
    • (user) Update admin and collections instructions for sidebar UI (8ca95db)
    • (api) Document unified tunable system settings endpoints (44a0f8c)
    • (api) Document hash-conflict resolution endpoints (ffcdab3)
    • (api) Document device sidecar endpoints; fix registration docs (df90938)
    • (api) Rewrite KOReader bookmark sync for current protocol (c49a960)
    • (api) Add system/hash-conflict sections to API references (078c4b1)
    • (api) Document the KOReader resolve endpoint (91c8be8)
    • (api) Deleted-annotation history + KOReader deletion propagation (d429534)

    Features

    • (sync) Add read-only KOReader book resolve endpoint (6859f81)
    • (db) Queries for the deleted-annotation history (acbb6c7)
    • (sync) Restore/purge service methods + bookmark tombstone by dedup key (d4c52e9)
    • (sync) Propagate KOReader annotation deletions + history API (1f5c5a2)
    • (ui) Deleted-annotation history on the book page (f70579b)
    Downloads
  • v1.0.0 995ccb50bb

    v1.0.0
    Release / build-and-push (push) Successful in 2m36s
    Stable

    john-okeefe released this 2026-08-20 09:31:39 -04:00 | 331 commits to main since this release

    Bug Fixes

    • (sync) Web annotations never reached KOReader — bind 400s + unresolvable locators (f6e257e)
    • (sync) Synced highlights painted nowhere — degenerate range ends + color model mismatch (6e9b352)
    • (reader) Render device-synced highlights — synthesize range CFIs (50ec2be)
    • (sync) Echo dedup + color semantics + classification for KOReader round-trips (dafcadd)

    Features

    • (db) Locator columns for tombstoned annotations (0670d90)
    • (reader) Send end-anchor CFI for EPUB highlights (97e546b)
    • (sync) Serve web highlight colors to KOReader (mapped to its palette) (178fb2e)

    Other

    • Merge branch 'sync-annotations-fix': bidirectional annotation sync for KOReader

    Server-side (8 commits): web annotations finally reach KOReader and
    vice versa. Fixed the 400 bind failures on every annotation-carrying
    push (loose client types), resolved device-native pos0 locators for
    every source (device xpointers pass through round-trip identical,
    web CFIs convert to CRE xpointers with text-search anchoring, PDF
    anchors map to pages), derived degenerate range ends from selection
    length, echo-deduplication via served dedup keys (pull→push cycles
    converge instead of minting duplicates), web↔device color mapping at
    both boundaries with echo suppression (web colors flow to devices,
    round-trips never drift them, device edits win), drawer-based
    annotation classification, and tombstone propagation that can't
    cross-delete. Perf: parsed-EPUB converter cache (bounded, locked).

    Plugin-side (bookhoard.koplugin @ 4ea3966): dual-model annotation
    store (KOReader 2024.07+ v2 ui.annotation + legacy v1), thin-client
    collection (no per-annotation CRE lookups), dedup-key identity
    matching, device-default coloring for applied highlights with
    datetime_updated-based echo suppression, and native-shaped
    AnnotationsModified dispatches (fixes a ReaderThumbnail crash and
    paints immediately instead of after restart). (f07c93e)

    • Merge branch 'test-fixture-cleanup': book-agnostic CFI converter tests (995ccb5)

    Performance

    • (sync) Share parsed EPUBs across conversions, make converters concurrency-safe (1585aa1)

    Tests

    • (sync) Replace book-specific CFI converter fixtures with a synthetic EPUB (4ab947f)
    Downloads
  • v0.9.0 922336c064

    v0.9.0
    Release / build-and-push (push) Successful in 3m0s
    Stable

    john-okeefe released this 2026-08-18 09:58:44 -04:00 | 342 commits to main since this release

    Bug Fixes

    • (reader) Stabilize chrome panels, bookmarks end-to-end, dead UI removal (ba95cc3)
    • (sync) Resurrect tombstoned annotations when a newer save re-creates them (a962342)
    • (reader) PDF highlights never appeared — isPDF read too early + overlay shrunk by pdf.js transform (eb09a5d)
    • (reader) PDF search returned nothing — reactive proxy broke pdf.js; add back-to-location (1905fec)
    • (reader) PDF highlights offset from the words — wrong fraction denominator (34a27a5)
    • (reader) Both toolbars showed below 768px — cascade-layer conflict (dc68d03)
    • (reader) PDF contents drawer rendered nothing — duplicate x-for keys (206db93)
    • (reader) Pin foliate-js e448d36 — webtoon pages now load (243d369)

    Features

    • (reader) Immersive chrome, slide-over drawers, tri-state PDF pointer mode (612f888)
    • (reader) Glass chrome — translucent bars, custom slider, slide-away hide (14d1a15)
    • (reader) Touch & mobile — tap zones, gesture engine, mobile sheets (24ea9d8)
    • (reader) EPUB highlights & notes — selection popover, overlayer rendering, annotations drawer (40d7051)
    • (reader) PDF text highlights via fraction-rect annotations (a05b016)
    • (reader) In-book search for reflowable formats (5e73b0a)
    • (reader) In-book search for PDFs (6fc4107)
    • (reader) Relocate back-to-location, add recenter control, wrap bottom bar on small windows (f283903)
    • (reader) Mobile-pattern toolbar — compact row + ⋯ overflow menu under 768px (6cd0fb2)
    • (reader) Page thumbnails tab + reliable PDF contents (fd4c357)
    • (reader) Confirm bookmark creation with a success toast (1a07635)
    • (reader) Shortcuts help modal + desktop edge page-turn zones (94be6ed)
    • (reader) Webtoon reading mode + brightness/contrast/night filters (e500039)

    Other

    • (vite) Remove stale hashed chunks after each build (bd7d71a)
    • Merge branch 'reader-redesign': reader v2 — immersive chrome, annotations, search, touch, webtoon

    Full reader redesign across 22 commits (with the foliate-js fork's
    zoom-control engine work pinned per release):

    • Phase 0: panel/chrome stabilization, bookmarks end-to-end (REST CRUD
      via AnnotationService), dead UI removal, tombstone resurrection fix
    • Phase 1: edge-to-edge glass chrome with auto-hide, slide-over drawers,
      tri-state PDF pointer mode (Smart/Pan/Text), Kindle-style theme swatches
    • Phase 2: touch gesture engine (pinch/pan/swipe/double-tap), tap zones,
      mobile sheets + compact toolbar with overflow menu
    • Phase 3: EPUB highlights & notes (selection popover, overlayer
      rendering, annotations drawer), PDF text highlights (fraction-rect
      overlays), in-book search for both EPUB and PDF, back-to-location
      stack, page thumbnails, shortcuts help modal, desktop edge zones
    • Phase 4: webtoon (vertical-scroll) mode for comics, brightness/
      contrast/night filters, bookmark toast feedback
    • Build hygiene: vite stale-chunk cleanup, browser-verified fixes for
      Alpine proxy/dpr/duplicate-key classes of bugs along the way (922336c)
    Downloads