This website requires JavaScript.
217f411f74
fix(auth): GetProfile reads the user row — the JWT context stub has no theme
main
John O'Keefe
2026-09-28 08:45:01 -04:00
4fde2a6d83
feat(auth): GetProfile returns the account theme
John O'Keefe
2026-09-28 08:34:11 -04:00
3d88f0b960
feat(search): publisher_filter for the media search endpoint
John O'Keefe
2026-09-27 19:55:58 -04:00
6aea6a4e2c
fix(sync): countTextCharsBefore multiplied the document by node depth
v1.9.3
John O'Keefe
2026-09-26 22:01:35 -04:00
b10bf3e8c7
docs(api): real progress endpoint contract; remove nonexistent-endpoint docs
John O'Keefe
2026-09-26 21:27:44 -04:00
8c3273a0fc
fix(sync): normalize character offsets to UTF-16 at the wire; refresh book offset on every verified save
John O'Keefe
2026-09-26 20:18:48 -04:00
aec226af1a
feat(sync): server-side position authority — verify/heal progress anchors
John O'Keefe
2026-09-26 14:43:34 -04:00
1c1f5cf1bb
feat(version): bake release tag into binary; About card and /health field
v1.9.2
John O'Keefe
2026-09-21 20:21:43 -04:00
9e4cc4efd0
chore(templates): regenerate templ outputs and rebuilt static assets
v1.9.1
v1.9
John O'Keefe
2026-09-21 18:10:47 -04:00
7b0b2793a6
test(infra): self-healing admin password; cross-library move/merge suite
John O'Keefe
2026-09-21 18:10:37 -04:00
077afaca56
chore(docker): bake Go module cache into the test-runner image
John O'Keefe
2026-09-21 18:10:17 -04:00
388b62b277
fix(admin): delete-library warning names what is lost; modal now closes
John O'Keefe
2026-09-21 18:09:52 -04:00
5da97b2e5d
feat(opds): library folder navigation and library-scoped search
John O'Keefe
2026-09-21 18:09:30 -04:00
45e3a256e2
feat(collections): merge archived duplicates into their active copy
John O'Keefe
2026-09-21 18:09:05 -04:00
64ef691d64
feat(scanner): repoint rows on cross-library moves of identical content
John O'Keefe
2026-09-21 18:08:43 -04:00
a4dbe79d0b
feat(data): duplicate-content queries — archive filters, cross-library moves, archived-twin matching
John O'Keefe
2026-09-21 18:08:18 -04:00
1002cbca93
fix(schema): refresh library_type_name on library change; make trigger block re-runnable
John O'Keefe
2026-09-21 18:07:51 -04:00
65f6bdf075
chore: complete go.sum with test-graph dependency sums
John O'Keefe
2026-09-18 18:09:20 -04:00
4faa217822
test: repair integration harness — wire SettingsRegistry, reuse preserved dev admin
John O'Keefe
2026-09-18 16:06:14 -04:00
5cdfe5a8dd
fix(devices): release pendingMu on the pending-status path of CheckRegistrationStatus
John O'Keefe
2026-09-18 16:06:03 -04:00
1cd8557b58
fix(devices): re-approving a known device rotates its token instead of 500
John O'Keefe
2026-09-17 23:09:02 -04:00
b4c956aed4
docs(user): web reader guide — navigation, touch selection, highlights
John O'Keefe
2026-09-17 20:13:45 -04:00
7caa46c2da
fix(build): exclude local package-lock.json from Docker build context
John O'Keefe
2026-09-17 15:37:58 -04:00
5329bf35a9
fix: pin foliate-js e16530a — desktop double-click zoom toggle
v1.8.1
john-okeefe
2026-09-17 14:37:05 -04:00
80e5d5b0d1
feat(reader): comic treatment for fixed-layout items in comics/manga libraries
john-okeefe
2026-09-17 14:36:58 -04:00
b3a429d7e1
fix(reader): Save/Cancel in the note editor closes the whole popover
v1.8
John O'Keefe
2026-09-17 11:47:25 -04:00
d8179bb066
fix(reader): popover dismiss on PDF taps; notes save on create; colors don't close editor
John O'Keefe
2026-09-17 10:55:21 -04:00
960305dfa9
fix(reader): PDF selection popover shows reliably on touch, below selection
John O'Keefe
2026-09-17 10:40:12 -04:00
16bbeec5a3
fix: fresh npm cache mount id to evict stale foliate-js tarball
John O'Keefe
2026-09-17 10:17:34 -04:00
39f9c39360
fix: pin foliate-js 1305a52 via linuxhg mirror
John O'Keefe
2026-09-17 10:13:33 -04:00
011b6d14e4
fix: pin foliate-js 1305a52 — fx renderer ignores toolbar resizes during selection
John O'Keefe
2026-09-16 17:30:00 -04:00
d4661e7f04
fix: pin foliate-js 94bb384 — PDF selection drags no longer blank the page
John O'Keefe
2026-09-16 17:13:24 -04:00
27a93ba2ea
fix(reader): hide the chrome when a touch selection starts
v1.7
John O'Keefe
2026-09-15 20:20:34 -04:00
7afad5dcde
chore: point foliate-js at linuxhg mirror main (8a20399)
John O'Keefe
2026-09-15 20:13:07 -04:00
929a862e74
feat(reader): touch selection handles, copy fallback, highlight tap editing
John O'Keefe
2026-09-15 19:33:45 -04:00
0e55dafb1e
fix(reader): mobile touch reading overhaul
John O'Keefe
2026-09-15 08:50:17 -04:00
cc8084a713
fix(reader): pin foliate-js 9cfe266
John O'Keefe
2026-09-15 08:50:06 -04:00
3ab294bf81
feat(scanner): store EPUB reading direction at scan time
v1.6
John O'Keefe
2026-09-13 13:13:25 -04:00
e944f11415
feat(scanner): fill sparse sidecars from the PDF Info dictionary
John O'Keefe
2026-09-13 13:06:48 -04:00
708598687e
feat(scanner): fill sparse sidecars from embedded EPUB metadata
John O'Keefe
2026-09-13 13:05:37 -04:00
aac7c72900
feat(admin): archived-items page with purge dates, restore, and purge
John O'Keefe
2026-09-13 12:01:05 -04:00
fe5ab9e5f8
feat(ui): hide missing books immediately and mark offline libraries
John O'Keefe
2026-09-13 12:00:49 -04:00
249b1dfe93
feat(scanner): treat reappeared content as a move, not a duplicate
John O'Keefe
2026-09-13 12:00:19 -04:00
17216e9cc7
feat(db): archive lifecycle queries, immediate-hide filters, move support
John O'Keefe
2026-09-13 11:59:41 -04:00
841db91a29
fix(scanner): extract embedded covers for sidecar-managed books
John O'Keefe
2026-09-13 11:59:24 -04:00
1eb9c92d6a
fix(scanner): nil metadata_overrides crashed Reset to Scanned with SQLSTATE 23502
v1.5.1
John O'Keefe
2026-09-13 00:12:56 -04:00
1fa8ee3a59
feat(scanner): Calibre-aligned OPF metadata extraction
v1.5
John O'Keefe
2026-09-12 23:45:18 -04:00
72d167005f
fix(scanner): resolve EPUB covers via structured OPF parsing, Calibre chain
John O'Keefe
2026-09-12 23:45:01 -04:00
bf2c2825ac
chore(deploy): document ARCHIVE_RETENTION_DAYS in compose and .env.example
v1.4
John O'Keefe
2026-09-12 17:50:31 -04:00
cd119a74da
feat(admin): purge-archived endpoint with an archived-items banner
John O'Keefe
2026-09-12 17:50:24 -04:00
14445a7c3f
feat(scanner): archive-at-two-scans lifecycle for files missing from disk
John O'Keefe
2026-09-12 17:50:08 -04:00
e6aceae0da
feat(db): archive lifecycle schema and queries for missing media
John O'Keefe
2026-09-12 17:49:53 -04:00
44b98f3fc3
feat(scanner): read Audiobookshelf metadata.json sidecars
John O'Keefe
2026-09-12 17:49:46 -04:00
61681aac23
feat(scanner): extract EPUB metadata from the embedded OPF directly
John O'Keefe
2026-09-12 17:49:30 -04:00
7a9a66fcc5
feat(ui): show file path and Reset to Scanned in the metadata editor
v1.3
John O'Keefe
2026-09-12 14:22:38 -04:00
2df3ecbf36
fix(ui): remove the broken Generate Cover button from the metadata editor
John O'Keefe
2026-09-12 14:22:29 -04:00
9da193e718
feat(ui): admin-only file location and metadata editing on book detail
John O'Keefe
2026-09-12 14:21:42 -04:00
7f64b92b9d
feat(metadata): per-field user overrides that survive library rescans
John O'Keefe
2026-09-12 14:21:35 -04:00
b9645752f5
fix(db): skip SQL comment lines when parsing schema table names
John O'Keefe
2026-09-12 14:21:28 -04:00
9c8337d0a8
fix(scanner): render the PDF CropBox, not the MediaBox, in the cover fallback
John O'Keefe
2026-09-12 14:21:24 -04:00
da1f689263
feat(ui): add Rescan button to Edit Metadata dialog
v1.2
john-okeefe
2026-09-11 23:08:11 -04:00
298330a3a8
feat(api): add POST /api/media-items/:id/rescan endpoint
john-okeefe
2026-09-11 23:08:08 -04:00
0614795ca2
feat(scanner): render PDF first page as cover fallback via pdftoppm
john-okeefe
2026-09-11 23:08:04 -04:00
6aa958c78f
fix(reader): save progress on real position change, not on detected intent
v1.1.1
john-okeefe
2026-09-11 21:50:03 -04:00
3514b4dc1c
fix(reader): close the highlight popover on outside clicks in the book
v1.1
john-okeefe
2026-09-10 08:27:16 -04:00
ae87c0cd6a
fix(sync): let content-equal echoes refresh drifted locators
john-okeefe
2026-09-10 08:10:42 -04:00
b6f507b9e5
fix(sync): understand cross-block text; never store a guessed locator
john-okeefe
2026-09-09 20:15:12 -04:00
ce3ae31ced
fix(reader): read position from the API at open; never write a restored position
john-okeefe
2026-09-09 14:52:30 -04:00
75c1d9bb95
fix(highlights): web edits update the targeted row instead of minting duplicates
john-okeefe
2026-09-09 14:12:18 -04:00
905218dd4b
fix(reader): stop tap zones from paging during long-press text selection
john-okeefe
2026-09-09 13:00:39 -04:00
94dad5e089
fix(reader): stop page-turn and zoom shortcuts while typing in form fields
john-okeefe
2026-09-09 12:59:37 -04:00
2366faccce
fix(reader): make device-synced highlights editable on the web
john-okeefe
2026-09-09 12:38:24 -04:00
e40530824e
feat(koreader): one conversion route for every feature; bookmarks get web CFIs
v1.0.3
john-okeefe
2026-09-09 09:04:23 -04:00
5a6c361c11
perf(sync): share the bounded converter cache for section percentages
john-okeefe
2026-09-09 09:04:10 -04:00
7b1c809ae3
feat(bookmarks): location identity, origin provenance, KOReader-style labels
john-okeefe
2026-08-31 14:04:00 -04:00
f7c4dfe2e8
fix(sync): resolve CRE positions structurally with text as verification
v1.0.2
john-okeefe
2026-09-08 22:32:51 -04:00
b1eda696f1
Revert "fix(bookmarks): upsert on title conflict so position upgrades don't 500"
john-okeefe
2026-08-30 21:01:59 -04:00
27b3dcb69f
fix(bookmarks): upsert on title conflict so position upgrades don't 500
john-okeefe
2026-08-30 20:57:15 -04:00
5c5593644d
fix(media): gate file serving by library visibility; proper download URL
john-okeefe
2026-08-30 11:44:36 -04:00
9e516b96cc
docs(android): require reader settings parity with the web reader
john-okeefe
2026-08-29 15:25:52 -04:00
44735554f7
docs(api): document the real book download route
john-okeefe
2026-08-29 10:25:59 -04:00
311049379d
docs(android): add QR pairing sign-in to roadmap, update auth design
john-okeefe
2026-08-28 22:45:29 -04:00
f65db5ab4f
docs(api): align auth/devices/libraries/media-items docs with handlers
john-okeefe
2026-08-28 22:15:42 -04:00
7ddcdd0756
docs(readme): link Android app doc and adopt app favicon as title icon
john-okeefe
2026-08-28 20:59:31 -04:00
b927ed9988
docs(android): add native Android client design doc
john-okeefe
2026-08-28 20:59:31 -04:00
e2953c4a01
chore(license): relicense project from GPL-3.0 to AGPL-3.0
john-okeefe
2026-08-28 20:12:15 -04:00
d429534b12
docs(api): deleted-annotation history + KOReader deletion propagation
v1.0.1
john-okeefe
2026-08-22 13:16:54 -04:00
f70579b4fc
feat(ui): deleted-annotation history on the book page
john-okeefe
2026-08-22 13:16:48 -04:00
1f5c5a28bd
feat(sync): propagate KOReader annotation deletions + history API
john-okeefe
2026-08-22 13:16:43 -04:00
d4c52e9a6a
feat(sync): restore/purge service methods + bookmark tombstone by dedup key
john-okeefe
2026-08-22 13:16:36 -04:00
acbb6c7981
feat(db): queries for the deleted-annotation history
john-okeefe
2026-08-22 13:16:31 -04:00
91c8be8562
docs(api): document the KOReader resolve endpoint
john-okeefe
2026-08-22 09:57:44 -04:00
6859f81144
feat(sync): add read-only KOReader book resolve endpoint
john-okeefe
2026-08-22 09:57:35 -04:00
078c4b1f3f
docs(api): add system/hash-conflict sections to API references
john-okeefe
2026-08-20 14:41:05 -04:00
c49a9605ff
docs(api): rewrite KOReader bookmark sync for current protocol
john-okeefe
2026-08-20 14:40:59 -04:00
df90938c5c
docs(api): document device sidecar endpoints; fix registration docs
john-okeefe
2026-08-20 14:40:54 -04:00
ffcdab36a0
docs(api): document hash-conflict resolution endpoints
john-okeefe
2026-08-20 14:40:50 -04:00
44a0f8c7a4
docs(api): document unified tunable system settings endpoints
john-okeefe
2026-08-20 14:40:45 -04:00
8ca95db08a
docs(user): update admin and collections instructions for sidebar UI
john-okeefe
2026-08-20 14:30:10 -04:00
9a60196f1d
docs(user): update dashboard and bookshelf instructions for sidebar UI
john-okeefe
2026-08-20 14:30:05 -04:00