Commit Graph

  • ff029f1ad5 fix(annotations): note LWW re-save 500'd — UserID missing from the sync update params John O'Keefe 2026-10-17 15:38:47 -04:00
  • b2b89ba789 feat(cards): stamp active conflicts on collections, series, and preview JSON John O'Keefe 2026-10-17 14:08:45 -04:00
  • a13b268adc refactor(cards): SSR collection detail ladder through the builder John O'Keefe 2026-10-17 14:06:39 -04:00
  • bdad40e211 refactor(cards): bookshelf SSR through the builder — badges return to the bookshelf John O'Keefe 2026-10-17 14:05:35 -04:00
  • 8c56c9da55 refactor(cards): SSR series and tag pages through the builder John O'Keefe 2026-10-17 14:05:05 -04:00
  • 0971e7debb refactor(cards): template search grid through the builder John O'Keefe 2026-10-17 14:04:36 -04:00
  • 5adfb459d7 refactor(cards): BuildSections through the builder John O'Keefe 2026-10-17 14:04:14 -04:00
  • 2f9d5b8e45 refactor(cards): series books JSON through the builder John O'Keefe 2026-10-17 14:02:58 -04:00
  • c07dba4eff refactor(cards): smart-collection preview through the builder John O'Keefe 2026-10-17 14:02:43 -04:00
  • 23765934ef refactor(cards): collections JSON detail + preview-adjacent ladder through the builder John O'Keefe 2026-10-17 14:02:16 -04:00
  • 1ce1b79489 refactor(cards): H2 foundation — cards.go, the one BookInfo construction site John O'Keefe 2026-10-17 14:00:34 -04:00
  • de9e66636a docs(agents): test-failure triage discipline — suspect the test first, but test edits stay asymmetric John O'Keefe 2026-10-17 12:39:59 -04:00
  • 14cdbe70eb test(contracts): CFI/context winner must land intact through conflict resolution John O'Keefe 2026-10-17 12:22:36 -04:00
  • 09b6693505 fix(bruno): convert drifted body keys to body.data — CLI scenario runs now carry bodies John O'Keefe 2026-10-17 12:22:35 -04:00
  • 63a20dcc95 chore(db): sqlc regen — querier interface comment for the flush-enumerator fix John O'Keefe 2026-10-17 11:49:28 -04:00
  • a85bc8af9b test(bruno): sweep the collection against the actual route table John O'Keefe 2026-10-17 11:49:28 -04:00
  • 6808c1babb fix(sync): the offline queue flush never processed anything — fix the enumerator + the dropped payload John O'Keefe 2026-10-17 11:45:05 -04:00
  • d16ca4acbe fix(tests): scope the sync_queue cleanup wipe to the test devices John O'Keefe 2026-10-17 10:32:00 -04:00
  • 721139dc16 chore: delete dead progress handlers, no-op scar, split fused helper line John O'Keefe 2026-10-17 10:29:00 -04:00
  • 8fc74c908a fix(conflicts): resolution writes funnel through SaveProgress — audio position survives John O'Keefe 2026-10-17 10:26:22 -04:00
  • e83c00f869 refactor(progress): ProgressService required at construction; delete the 9 unreachable erase-fallbacks John O'Keefe 2026-10-16 17:28:06 -04:00
  • 28bd323505 refactor(progress): SaveProgressRequest becomes the canonical PUT payload; GET serializes from the row John O'Keefe 2026-10-16 17:22:32 -04:00
  • a2ea34232c test(contracts): pin wire shapes before the canonical-types migrations John O'Keefe 2026-10-16 16:02:14 -04:00
  • b4ae42326a fix(stats): unambiguous chart x-labels + unit-carrying tooltips John O'Keefe 2026-10-16 11:53:56 -04:00
  • ce366b1604 feat(stats): Library tab — per-library inventory stats + audio-aware Reading tab John O'Keefe 2026-10-16 10:14:27 -04:00
  • a222ef5c27 fix(media-items): normalize NOT NULL narrators on every write path John O'Keefe 2026-10-16 10:14:12 -04:00
  • 73ae1789c5 feat(reader): fullscreen mode; revert stacked volume; fix manga badges + ghost sidebar John O'Keefe 2026-10-15 20:27:37 -04:00
  • 89665fb2bc feat(annotations + player): bookmark rows in the banner, stacked volume panel, badge parity for comics/manga John O'Keefe 2026-10-15 19:33:18 -04:00
  • 2c714dcb60 fix(audio player + dashboard): markdown bookmark notes, horizontal volume, transport glyphs, client-side badges John O'Keefe 2026-10-15 18:49:42 -04:00
  • 5cf34102d6 feat(audio player): canonical audiobook transports + dropdown settings + volume panel John O'Keefe 2026-10-15 18:35:39 -04:00
  • 86f0af632e feat(audiobooks): A2 — narrator metadata, audio-aware UX, player polish, bookmarks John O'Keefe 2026-10-15 18:03:35 -04:00
  • 902cbe5915 feat(audiobooks): Batch A — foundation, m4b ingest, playback sync, web player John O'Keefe 2026-10-15 16:14:34 -04:00
  • a093529b80 chore(deps): pin foliate-js f622841 — manual touch scrolling in scrolled layouts v1.14.0 John O'Keefe 2026-10-15 14:33:30 -04:00
  • f2fd4db81c feat(web): reader chrome UX — intent-based reveal, reading actions dismiss (handoff item 7) John O'Keefe 2026-10-15 13:44:19 -04:00
  • 2517baedea feat(koreader): device bridge for ratings, reviews and reading-time stats v1.13.0 John O'Keefe 2026-10-15 11:26:47 -04:00
  • 2117ec6181 feat(web): book reviews — markdown, sibling of ratings, full API + page surface John O'Keefe 2026-10-15 10:53:53 -04:00
  • fd6f0e3353 fix(web): scan progress — correct percentages, no layout shift, refresh-survivable John O'Keefe 2026-10-15 08:29:04 -04:00
  • 9bc149f3d9 style(dashboard): tighten the gap between the week widget and the first shelf (4rem → ~1.25rem) v1.12.0 John O'Keefe 2026-10-14 14:12:53 -04:00
  • f981e72ff8 fix(dashboard): week widget left the wiped container — it now survives library switches John O'Keefe 2026-10-14 14:00:44 -04:00
  • 199d82c613 fix(tests): sync-integration cleanup wiped the shared reading_history table John O'Keefe 2026-10-14 13:53:51 -04:00
  • 0914c935d9 feat(dashboard): collapsible This Week widget, library-scoped + switch-surviving; title into the subbar John O'Keefe 2026-10-14 13:46:18 -04:00
  • 5a2c1585ae refactor(stats): 'Web / unsynced' bucket label → 'Web'; analytics tests isolated from the live reader John O'Keefe 2026-10-14 13:23:55 -04:00
  • 7a604c2fec feat(stats): per-device reading breakdown + device attribution on progress syncs John O'Keefe 2026-10-14 13:04:34 -04:00
  • be10adc24b docs(agents): stats-build gotchas — end-of-day anchoring (2nd occurrence), dev-DB probe pollution, DeviceID is not always a device John O'Keefe 2026-10-14 12:46:54 -04:00
  • 6457fbaf72 feat(stats): reading statistics — session capture wired + /stats page + widget + per-book card John O'Keefe 2026-10-14 12:46:38 -04:00
  • 8de8883acf docs(agents): templ attribute-interpolation, settings-cache, collection-routing gotchas v1.11.0 John O'Keefe 2026-10-14 12:00:33 -04:00
  • 0a7fbd6f48 feat(collections): smart (dynamic) collections — rules evaluated live at render John O'Keefe 2026-10-14 11:59:38 -04:00
  • df556d8208 feat(auth): data-driven password requirement checkers v1.10.1 John O'Keefe 2026-10-14 11:08:12 -04:00
  • d95814ded3 fix(make): restore .PHONY declaration dropped by the guidelines cleanup v1.10.0 John O'Keefe 2026-10-14 09:48:40 -04:00
  • 17274bb868 fix(nas): refuse deletes while library storage is unreachable; real file removal; stat cache John O'Keefe 2026-10-14 09:00:08 -04:00
  • f42720ac64 docs: retire PROJECT_GUIDELINES.md — library-visibility rule now in AGENTS.md + dev docs John O'Keefe 2026-10-13 20:18:42 -04:00
  • 320f31086d fix(web): field-mapping + fragile-hx-vals sweep across profile and library surfaces John O'Keefe 2026-10-13 18:25:56 -04:00
  • dc353b0f3f fix(web): profile modal always displayed UTC — Timezone never mapped John O'Keefe 2026-10-13 15:05:40 -04:00
  • 2a6e4b9ae5 fix(web): admin users cards redesigned for mobile readability John O'Keefe 2026-10-13 15:00:59 -04:00
  • 505fc48b23 fix(web): profile save silently died under htmx 2 — invalid-JSON hx-headers John O'Keefe 2026-10-13 14:52:19 -04:00
  • 57d83fd9af fix(web): profile save gives visible feedback (HX-Refresh) John O'Keefe 2026-10-13 14:19:06 -04:00
  • 0772f06d25 fix(tz): JWT context stub carries the user's timezone John O'Keefe 2026-10-13 14:03:44 -04:00
  • 1601548e6c fix(tz): server-side timezone conversion for all user-facing time displays John O'Keefe 2026-10-13 13:59:49 -04:00
  • 740213f0a4 fix(auth): new users inherit the system-wide default timezone John O'Keefe 2026-10-13 13:17:12 -04:00
  • bc6ce41762 fix(web): password requirement indicators on registration and admin create-user John O'Keefe 2026-10-13 12:38:26 -04:00
  • f3c9d4b4e8 fix(web): admin users list reworked to the library-management card pattern John O'Keefe 2026-10-13 12:29:43 -04:00
  • 300866ca67 fix(web): viewport meta on all admin/profile pages; admin users page reworked for mobile John O'Keefe 2026-10-13 12:24:12 -04:00
  • 431fec05ad feat(security): library visibility enforced at the source; per-library series; annotation ownership; admin user creation John O'Keefe 2026-10-13 12:03:01 -04:00
  • 97fbdf19fb pin foliate-js 7796b05 — pdf text-layer dedupe on re-render (v0.5.3) John O'Keefe 2026-10-13 10:39:51 -04:00
  • a36cee4f85 chore: ignore local export directory v1.9.9 John O'Keefe 2026-10-12 20:47:05 -04:00
  • 14947608be chore(scripts): add synthetic torture EPUB generator John O'Keefe 2026-10-12 20:46:40 -04:00
  • 03a6040360 test(sync): add manual repro harness for CRE-to-CFI highlight conversion John O'Keefe 2026-10-12 20:46:08 -04:00
  • 93a468b435 fix(reader): emit two-subpath range CFIs for multi-node highlights John O'Keefe 2026-10-12 20:45:41 -04:00
  • bb3aef517c fix(sync): anchor device highlight ranges to selection text John O'Keefe 2026-10-12 20:45:10 -04:00
  • cbdddc095e fix(web): PDF adjust — remove the leftover line-band filter from the endpoint drag v1.9.8 John O'Keefe 2026-10-11 20:44:32 -04:00
  • 5a0d9e0e17 feat(web): endpoint handles drag vertically — full 2D tip-aimed targeting John O'Keefe 2026-10-11 18:15:34 -04:00
  • 19619ef817 fix(web): raise the adjust teardrops — tips rest above the glyph tops John O'Keefe 2026-10-11 17:57:03 -04:00
  • a28ae5c88d feat(web): adjust handles float above the text with tips marking the boundary John O'Keefe 2026-10-11 17:25:58 -04:00
  • 1c209408cc fix(web): PDF adjust — three compounding coordinate/table bugs, found by instrumented drag John O'Keefe 2026-10-11 13:01:16 -04:00
  • 93f020f2b5 fix(web): PDF adjust handles — create once, reposition only John O'Keefe 2026-10-11 11:21:51 -04:00
  • a3ecac3507 fix(server): Cache-Control no-cache on /static — heuristic caching served stale bundles John O'Keefe 2026-10-11 09:50:42 -04:00
  • db3b5b3d62 fix(web): endpoint handles verified end-to-end — multi-line extent saved (5 rects, clean text); note: footnote markers between lines are geometrically included by design John O'Keefe 2026-10-10 23:19:35 -04:00
  • f69e659d94 feat(web): PDF adjust v2 — re-selection replaces the extent; vertical grip clamp John O'Keefe 2026-10-10 18:25:29 -04:00
  • dbeefb395c fix(web): PDF adjust text recompute — overlap-based glyph dedupe John O'Keefe 2026-10-10 14:25:48 -04:00
  • 8acaeddda5 fix(web): detail banner — a failed annotation fetch must not wipe its rows John O'Keefe 2026-10-10 13:56:32 -04:00
  • 361fdaab39 fix(web): PDF rect-edge adjust — a start-edge drag pins the far edge John O'Keefe 2026-10-10 11:47:41 -04:00
  • 4d1fb05e49 feat(web): PDF highlight extent adjustment — rect-edge grips with word-token snap John O'Keefe 2026-10-10 11:22:09 -04:00
  • 679e0f9116 fix(server): ghost 401 must abort the chain — c.JSON's nil error let the request continue v1.9.7 John O'Keefe 2026-10-09 22:41:21 -04:00
  • 9cd6356892 feat(server): ghost-session guard — JWTs for deleted users stop authenticating John O'Keefe 2026-10-09 22:33:30 -04:00
  • 4f05a232fe chore(server): delete dead unrouted UpdateUniversalProgress handler John O'Keefe 2026-10-09 18:22:23 -04:00
  • 69516ae165 feat(server): progress locator coherence — percentage-only writes clear stale anchors John O'Keefe 2026-10-09 18:22:15 -04:00
  • f24a2d6c22 test(server): fixture collisions fixed, stale contract asserts re-anchored, gofmt — suite now fully green John O'Keefe 2026-10-09 17:11:12 -04:00
  • da13898046 feat(server): POST /api/media-items answers honestly on a duplicate file_path John O'Keefe 2026-10-09 17:10:56 -04:00
  • 1a2d42a244 chore(server): delete dead ParseEbook 501 placeholder John O'Keefe 2026-10-09 15:05:44 -04:00
  • 208fc2c4d6 fix(server): kobo markup panic — wire LibraryService into the test harness, guard typed-nil resolver John O'Keefe 2026-10-09 14:53:48 -04:00
  • 18969a0f01 test(server): comic negative-case assertions target display values, not admin-modal labels John O'Keefe 2026-10-09 11:04:39 -04:00
  • 843f35bbfc test(server): runs leave no residue — auto-cleanup for every resource the suite creates John O'Keefe 2026-10-09 11:04:34 -04:00
  • 7ce73213ae feat(server): system collections become permanent — soft-delete + in-place restore + query_type-keyed provisioning John O'Keefe 2026-10-09 11:04:24 -04:00
  • 31f939002f feat(web): 'a' keyboard shortcut toggles the annotations drawer John O'Keefe 2026-10-08 15:12:27 -04:00
  • f83b36167e style(web): location-note rows lose the color bar — only highlights carry a color (user review) John O'Keefe 2026-10-08 14:57:41 -04:00
  • d5d8e3e173 style(web): drop the NOTE label from the expanded boundary — divider reads on its own (user review) John O'Keefe 2026-10-08 13:42:25 -04:00
  • 44c0e5640f fix(web): banner highlight-note dialog prefilled; explicit note boundary; pencil on every note row John O'Keefe 2026-10-08 09:11:47 -04:00
  • e7ccd7b222 test(dashboard): align test seed naming with the canonical Title-case set + fix stale expectations John O'Keefe 2026-10-07 20:32:36 -04:00
  • b1de0da512 feat(web): dashboard All Libraries view saves the global scope John O'Keefe 2026-10-07 19:51:59 -04:00
  • 25d44452c0 feat(dashboard): global (All Libraries) preferences scope John O'Keefe 2026-10-07 19:46:17 -04:00