-
released this
2026-09-12 20:17:21 -04:00 | 272 commits to main since this releaseFeatures
- (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
- (scanner) Extract EPUB metadata from the embedded OPF directly (
-
released this
2026-09-12 14:29:01 -04:00 | 278 commits to main since this releaseBug 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
Downloads
- (scanner) Render the PDF CropBox, not the MediaBox, in the cover fallback (
-
released this
2026-09-11 23:12:06 -04:00 | 284 commits to main since this releaseFeatures
Downloads
-
released this
2026-09-11 21:50:27 -04:00 | 287 commits to main since this releaseBug Fixes
- (reader) Save progress on real position change, not on detected intent (
6aa958c)
Downloads
- (reader) Save progress on real position change, not on detected intent (
-
released this
2026-09-10 08:29:58 -04:00 | 288 commits to main since this releaseBug 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
- (reader) Make device-synced highlights editable on the web (
-
released this
2026-09-09 09:09:03 -04:00 | 296 commits to main since this releaseFeatures
- (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
- (bookmarks) Location identity, origin provenance, KOReader-style labels (
-
released this
2026-09-08 22:42:25 -04:00 | 299 commits to main since this releaseBug 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
- (media) Gate file serving by library visibility; proper download URL (
-
released this
2026-08-22 13:59:19 -04:00 | 310 commits to main since this releaseDocumentation
- (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
- (koreader) Rewrite setup guide for plugin + server-side approval flow (
-
released this
2026-08-20 09:31:39 -04:00 | 331 commits to main since this releaseBug 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
- (sync) Web annotations never reached KOReader — bind 400s + unresolvable locators (
-
released this
2026-08-18 09:58:44 -04:00 | 342 commits to main since this releaseBug 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
- (reader) Stabilize chrome panels, bookmarks end-to-end, dead UI removal (