• 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 | 10 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 | 31 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 | 42 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
  • v0.8.5 03cb4c7869

    v0.8.5
    Release / build-and-push (push) Successful in 2m48s
    Stable

    john-okeefe released this 2026-08-14 08:54:18 -04:00 | 65 commits to main since this release

    Bug Fixes

    • (scanner) Prevent duplicate media item imports (9b171a0)

    Documentation

    • (sync) Document SHA-256 fields and format-aware matching in koreader protocol (8599e5c)

    Features

    • (reader) Wire double-page spread setting into web reader (f5d9578)
    • (sync) Add shared BookResolver with format-aware SHA-256 matching (60a94df)
    • (koreader) Resolve pushes by SHA via BookResolver and return SHA on pull (5584bde)
    • (opds) Always send X-Bookhoard-SHA256 on native EPUB downloads (48af5d3)
    • (sidecar) Key book map by per-format hashes (830741c)
    • (db) Hash_conflicts table and backfill/conflict queries (0c39e04)
    • (scanner) Recompute hashes on rescan and flag content duplicates (77990d0)
    • (ui) Admin Hash Conflicts page and nav entry (8004cb8)
    • (admin) Startup hash backfill and hash-conflict resolution API (03cb4c7)

    Miscellaneous Tasks

    • (deps) Pin foliate-js to d4d87a9 via canonical https URL (b7a9b47)
    Downloads
  • v0.8.0 04e2a069d6

    v0.8.0
    Release / build-and-push (push) Successful in 5m9s
    Stable

    john-okeefe released this 2026-08-10 14:47:27 -04:00 | 77 commits to main since this release

    Bug Fixes

    • (dashboard) Stop duplicating items after scan completion (04e2a06)

    Features

    • (ui) Accordion sidebar panels + wood texture preview swatches (05c7431)
    Downloads
  • v0.7.5 9a62c10803

    v0.7.5
    Release / build-and-push (push) Successful in 2m44s
    Stable

    john-okeefe released this 2026-08-10 13:59:29 -04:00 | 79 commits to main since this release

    Bug Fixes

    • (templates) Use expression attributes and fix indentation (4b152bb)
    • (admin) Expandable sidebar section + library manage toggle (a42232e)
    • (sync) Wire dead token cleanup queries into daily maintenance runner (1461273)
    • (ui) Move theme checkmark when theme changes in Appearance menu (8d65e03)

    Features

    • (admin) Redesign library management with HTMX expandable rows + stats dashboard (706be09)
    • (admin) Add scan settings + system information to settings page (64ad10b)
    • (db) Typed tunable system settings + SettingsRegistry (bc47450)
    • (auth) Make session duration and password rules configurable (457a383)
    • (api) Make device rate limits, OPDS page size, and conversion cache configurable (d12911d)
    • (sync) Make annotation tombstone TTL configurable (757398b)
    • (api) Unified tunable settings endpoints with typed validation (885f6d8)
    • (app) Wire settings registry into startup and admin routes (537330e)
    • (admin) Editable tunable settings UI with grouped sub-sections (598d70f)
    • (ui) Adopt book-open brand icon and add SVG favicon (ab465d8)

    Miscellaneous Tasks

    • (frontend) Slim admin.ts, remove dead library.ts (006cc0c)

    Other

    • Merge remote-tracking branch 'origin/main'

    Conflicts:

    templates/book_detail.templ

    templates/collection_rules.templ

    templates/conflicts.templ

    templates/header.templ

    templates/progress.templ (89ea310)

    • Merge branch 'new-ui'

    Conflicts:

    templates/admin_library.templ

    templates/admin_library_templ.go

    templates/conflicts_templ.go

    templates/unlinked_books_templ.go (9a62c10)

    Refactor

    • (admin) Remove separate sidebar, integrate admin nav into main sidebar (a87c8af)
    • (background) Parameterize sync queue and worker pool constructors (936a484)
    Downloads
  • v0.6.0 2976dad4e5

    v0.6.0
    Release / build-and-push (push) Successful in 2m45s
    Stable

    john-okeefe released this 2026-08-06 15:26:02 -04:00 | 98 commits to main since this release

    Bug Fixes

    • (reader) Keep footer compact on mobile and clear text under chrome (987ece3)
    • (ui) Use a grid icon for Customize Dashboard (7b465ac)
    • (ui) Show read action on JS-rendered dashboard cards (f67232a)
    • (reader) Back button remembers the page you came from (73a2852)
    • (ui) Wire up collection detail page interactions (816ee0e)
    • (ui) Custom confirm dialog, picker visibility, remove wiring (ef3c057)
    • (ui) Keep search filter visible on system collections (4a870a7)
    • (ui) Make icon and color selection work in collection modal (8e2c1a4)
    • OPDS base_url placeholder bug + setup gate requires base_url (4716790)
    • (ui) Round progress percentage to 2 decimals on progress page (0a0caa9)
    • (ui) Populate Last Updated and Synced From fields on progress page (6f1c139)
    • Embed time/tzdata so time.LoadLocation works in Alpine container (acc9d08)

    Features

    • (ui) Design system foundation (f3f908e)
    • (ui) Sidebar app shell and bold design system (f402a3e)
    • (ui) Redesign dashboard, bookshelf, book detail, and auth pages (07578e0)
    • (ui) Migrate remaining pages to the new shell (8ea70ea)
    • (ui) Split book-card play action into reader/detail routing (9ef6c5b)
    • (ui) Use a book-open icon for the card read action (9165c4e)
    • (ui) Group sidebar footer menus into distinct panels (033a012)
    • (ui) Hide management controls for system collections (40dabfd)
    • (devices) Reform Add Device modal with KOReader plugin instructions (e09c55c)

    Other

    • Regenerate stylesheet for sidebar app shell (b23f6b0)
    • Merge branch 'new-ui' into main

    UI/UX redesign with modern look (Kavita/Komga/Audiobookshelf vibe):

    • Dashboard read-action JS fix with conflict routing
    • Reader back button with sessionStorage referrer
    • Collection detail page interactions (selection, bulk remove, book picker)
    • Custom confirm dialog replacing native confirm()
    • System collections read-only
    • Collection modal icon/color selection
    • OPDS base_url fix + setup gate requires base_url
    • Progress page fixes (percentage formatting, blank fields)
    • Devices page reform (KOReader plugin instructions, gear icon)
    • Embed time/tzdata for Alpine container compatibility

    Conflicts:

    templates/reader_templ.go

    web/static/style.css (2976dad)

    Bug Fixes

    • (reader) Keep footer compact on mobile and clear text under chrome (c5c2270)
    Downloads
  • v0.5.2-tighten
    Release / build-and-push (push) Successful in 2m34s
    Pre-Release

    john-okeefe released this 2026-08-05 22:02:15 -04:00 | 118 commits to main since this release

    Bug Fixes

    • (reader) Keep footer compact on mobile and clear text under chrome (86bcdf8)

    Features

    • (ui) Design system foundation (6f271d6)
    • (ui) Rebuild shared chrome and core browse/read pages (28e40e3)
    • (ui) Refresh auth, entry, admin, and secondary pages (a075a50)
    Downloads
  • v0.5.1 c5c2270007

    v0.5.1
    Release / build-and-push (push) Successful in 2m39s
    Stable

    john-okeefe released this 2026-08-05 21:49:01 -04:00 | 121 commits to main since this release

    Bug Fixes

    • (reader) Keep footer compact on mobile and clear text under chrome (c5c2270)
    Downloads
  • v0.5.0 94a4facc6c

    v0.5.0
    Release / build-and-push (push) Successful in 3m2s
    Stable

    john-okeefe released this 2026-08-05 15:35:00 -04:00 | 122 commits to main since this release

    Bug Fixes

    • (reader) Tighten mobile header/footer and add safe-area margins (11617c1)

    Miscellaneous Tasks

    • (deps) Promote golang.org/x/net to direct dependency (94a4fac)
    Downloads