This website requires JavaScript.
b1eda696f1
Revert "fix(bookmarks): upsert on title conflict so position upgrades don't 500"
main
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
7274b5196c
docs(user): update appearance/profile instructions for sidebar UI
john-okeefe
2026-08-20 14:30:00 -04:00
868003331c
docs(user): update device and sync navigation for sidebar UI
john-okeefe
2026-08-20 14:29:54 -04:00
e310fa6a9d
docs(index): update device guidance and fix broken links
john-okeefe
2026-08-20 14:14:55 -04:00
e35d394736
docs(readme): update device support matrix to current state
john-okeefe
2026-08-20 14:14:52 -04:00
2a7ac881fd
docs(user): align sync and user guides with current device support
john-okeefe
2026-08-20 14:14:49 -04:00
26f1f98736
docs(kobo): mark native Kobo sync as coming soon
john-okeefe
2026-08-20 14:14:43 -04:00
54d0550dec
docs(koreader): rewrite setup guide for plugin + server-side approval flow
john-okeefe
2026-08-20 14:14:39 -04:00
995ccb50bb
Merge branch 'test-fixture-cleanup': book-agnostic CFI converter tests
v1.0.0
john-okeefe
2026-08-20 09:22:10 -04:00
4ab947f7db
test(sync): replace book-specific CFI converter fixtures with a synthetic EPUB
john-okeefe
2026-08-20 09:22:10 -04:00
f07c93e582
Merge branch 'sync-annotations-fix': bidirectional annotation sync for KOReader
john-okeefe
2026-08-20 09:13:24 -04:00
178fb2eb37
feat(sync): serve web highlight colors to KOReader (mapped to its palette)
john-okeefe
2026-08-20 08:43:21 -04:00
dafcadd211
fix(sync): echo dedup + color semantics + classification for KOReader round-trips
john-okeefe
2026-08-19 19:41:39 -04:00
50ec2bebf2
fix(reader): render device-synced highlights — synthesize range CFIs
john-okeefe
2026-08-19 14:08:03 -04:00
6e9b3528d8
fix(sync): synced highlights painted nowhere — degenerate range ends + color model mismatch
john-okeefe
2026-08-19 14:08:03 -04:00
97e546b2a4
feat(reader): send end-anchor CFI for EPUB highlights
john-okeefe
2026-08-18 19:13:51 -04:00
1585aa1073
perf(sync): share parsed EPUBs across conversions, make converters concurrency-safe
john-okeefe
2026-08-18 19:13:51 -04:00
f6e257e497
fix(sync): web annotations never reached KOReader — bind 400s + unresolvable locators
john-okeefe
2026-08-18 19:13:38 -04:00
0670d904a0
feat(db): locator columns for tombstoned annotations
john-okeefe
2026-08-18 19:13:23 -04:00
922336c064
Merge branch 'reader-redesign': reader v2 — immersive chrome, annotations, search, touch, webtoon
v0.9.0
john-okeefe
2026-08-18 09:53:10 -04:00
243d369d21
fix(reader): pin foliate-js e448d36 — webtoon pages now load
john-okeefe
2026-08-18 08:34:44 -04:00
e500039d1b
feat(reader): webtoon reading mode + brightness/contrast/night filters
john-okeefe
2026-08-18 08:25:00 -04:00
94be6edceb
feat(reader): shortcuts help modal + desktop edge page-turn zones
john-okeefe
2026-08-18 07:59:26 -04:00
1a07635605
feat(reader): confirm bookmark creation with a success toast
john-okeefe
2026-08-17 14:28:09 -04:00
206db93587
fix(reader): PDF contents drawer rendered nothing — duplicate x-for keys
john-okeefe
2026-08-17 14:14:33 -04:00
fd4c357d39
feat(reader): page thumbnails tab + reliable PDF contents
john-okeefe
2026-08-17 13:55:21 -04:00
dc68d03360
fix(reader): both toolbars showed below 768px — cascade-layer conflict
john-okeefe
2026-08-17 13:42:02 -04:00
6cd0fb226a
feat(reader): mobile-pattern toolbar — compact row + ⋯ overflow menu under 768px
john-okeefe
2026-08-17 13:35:14 -04:00
f283903e2b
feat(reader): relocate back-to-location, add recenter control, wrap bottom bar on small windows
john-okeefe
2026-08-17 13:23:59 -04:00
34a27a5951
fix(reader): PDF highlights offset from the words — wrong fraction denominator
john-okeefe
2026-08-17 08:33:11 -04:00
1905feceea
fix(reader): PDF search returned nothing — reactive proxy broke pdf.js; add back-to-location
john-okeefe
2026-08-17 08:23:57 -04:00
6fc4107e3c
feat(reader): in-book search for PDFs
john-okeefe
2026-08-17 08:04:30 -04:00
5e73b0a4f6
feat(reader): in-book search for reflowable formats
john-okeefe
2026-08-17 07:58:03 -04:00
eb09a5d939
fix(reader): PDF highlights never appeared — isPDF read too early + overlay shrunk by pdf.js transform
john-okeefe
2026-08-17 07:47:03 -04:00
a05b0167ad
feat(reader): PDF text highlights via fraction-rect annotations
john-okeefe
2026-08-16 12:48:09 -04:00
40d70513da
feat(reader): EPUB highlights & notes — selection popover, overlayer rendering, annotations drawer
john-okeefe
2026-08-16 12:33:55 -04:00
bd7d71a284
build(vite): remove stale hashed chunks after each build
john-okeefe
2026-08-14 16:06:27 -04:00
24ea9d8a38
feat(reader): touch & mobile — tap zones, gesture engine, mobile sheets
john-okeefe
2026-08-14 16:00:19 -04:00
a962342ee0
fix(sync): resurrect tombstoned annotations when a newer save re-creates them
john-okeefe
2026-08-14 15:42:18 -04:00
14d1a158a0
feat(reader): glass chrome — translucent bars, custom slider, slide-away hide
john-okeefe
2026-08-14 15:16:05 -04:00
612f888683
feat(reader): immersive chrome, slide-over drawers, tri-state PDF pointer mode
john-okeefe
2026-08-14 14:59:51 -04:00
ba95cc3e8b
fix(reader): stabilize chrome panels, bookmarks end-to-end, dead UI removal
john-okeefe
2026-08-14 09:05:33 -04:00
03cb4c7869
feat(admin): startup hash backfill and hash-conflict resolution API
v0.8.5
john-okeefe
2026-08-14 08:53:01 -04:00
8004cb81a5
feat(ui): admin Hash Conflicts page and nav entry
john-okeefe
2026-08-14 08:52:33 -04:00
77990d0dc0
feat(scanner): recompute hashes on rescan and flag content duplicates
john-okeefe
2026-08-14 08:52:18 -04:00
0c39e04e4a
feat(db): hash_conflicts table and backfill/conflict queries
john-okeefe
2026-08-14 08:52:05 -04:00
8599e5c250
docs(sync): document SHA-256 fields and format-aware matching in koreader protocol
john-okeefe
2026-08-14 08:26:47 -04:00
830741cd65
feat(sidecar): key book map by per-format hashes
john-okeefe
2026-08-14 08:26:32 -04:00
48af5d3e14
feat(opds): always send X-Bookhoard-SHA256 on native EPUB downloads
john-okeefe
2026-08-14 08:26:14 -04:00
5584bdefb5
feat(koreader): resolve pushes by SHA via BookResolver and return SHA on pull
john-okeefe
2026-08-14 08:25:46 -04:00
60a94df8e1
feat(sync): add shared BookResolver with format-aware SHA-256 matching
john-okeefe
2026-08-14 08:25:23 -04:00
9b171a0060
fix(scanner): prevent duplicate media item imports
john-okeefe
2026-08-14 08:18:36 -04:00
b7a9b470a7
chore(deps): pin foliate-js to d4d87a9 via canonical https URL
john-okeefe
2026-08-14 08:17:43 -04:00
f5d9578375
feat(reader): wire double-page spread setting into web reader
john-okeefe
2026-08-14 08:17:25 -04:00
04e2a069d6
fix(dashboard): stop duplicating items after scan completion
v0.8.0
john-okeefe
2026-08-10 14:46:13 -04:00
05c7431d86
feat(ui): accordion sidebar panels + wood texture preview swatches
john-okeefe
2026-08-10 14:22:46 -04:00
9a62c10803
Merge branch 'new-ui'
v0.7.5
john-okeefe
2026-08-10 13:48:06 -04:00
8d65e03555
fix(ui): move theme checkmark when theme changes in Appearance menu
new-ui
john-okeefe
2026-08-10 13:43:32 -04:00
ab465d8e0e
feat(ui): adopt book-open brand icon and add SVG favicon
john-okeefe
2026-08-10 13:43:13 -04:00
1461273162
fix(sync): wire dead token cleanup queries into daily maintenance runner
john-okeefe
2026-08-10 10:43:05 -04:00
598d70f735
feat(admin): editable tunable settings UI with grouped sub-sections
john-okeefe
2026-08-10 08:03:02 -04:00
537330e7e0
feat(app): wire settings registry into startup and admin routes
john-okeefe
2026-08-10 08:02:41 -04:00
885f6d8187
feat(api): unified tunable settings endpoints with typed validation
john-okeefe
2026-08-10 08:02:22 -04:00
936a48405b
refactor(background): parameterize sync queue and worker pool constructors
john-okeefe
2026-08-10 08:02:02 -04:00
757398bf15
feat(sync): make annotation tombstone TTL configurable
john-okeefe
2026-08-10 08:01:45 -04:00
d12911d3c8
feat(api): make device rate limits, OPDS page size, and conversion cache configurable
john-okeefe
2026-08-10 08:01:28 -04:00
457a38306d
feat(auth): make session duration and password rules configurable
john-okeefe
2026-08-10 08:01:11 -04:00
bc47450653
feat(db): typed tunable system settings + SettingsRegistry
john-okeefe
2026-08-10 08:00:52 -04:00
89ea310414
Merge remote-tracking branch 'origin/main'
john-okeefe
2026-08-08 15:43:16 -04:00
4b152bbe4e
fix(templates): use expression attributes and fix indentation
john-okeefe
2026-08-08 15:40:15 -04:00
64ad10b3f2
feat(admin): add scan settings + system information to settings page
john-okeefe
2026-08-07 23:37:14 -04:00
a42232e67a
fix(admin): expandable sidebar section + library manage toggle
john-okeefe
2026-08-07 23:29:01 -04:00
006cc0c2c9
chore(frontend): slim admin.ts, remove dead library.ts
john-okeefe
2026-08-07 09:35:47 -04:00
706be09dec
feat(admin): redesign library management with HTMX expandable rows + stats dashboard
john-okeefe
2026-08-07 09:35:39 -04:00
a87c8afc22
refactor(admin): remove separate sidebar, integrate admin nav into main sidebar
john-okeefe
2026-08-07 09:35:30 -04:00
2976dad4e5
Merge branch 'new-ui' into main
v0.6.0
john-okeefe
2026-08-06 15:24:48 -04:00
acc9d08c60
fix: embed time/tzdata so time.LoadLocation works in Alpine container
john-okeefe
2026-08-06 15:18:22 -04:00