ff029f1ad5
fix(annotations): note LWW re-save 500'd — UserID missing from the sync update params
John O'Keefe2026-10-17 15:38:47 -04:00
b2b89ba789
feat(cards): stamp active conflicts on collections, series, and preview JSON
John O'Keefe2026-10-17 14:08:45 -04:00
a13b268adc
refactor(cards): SSR collection detail ladder through the builder
John O'Keefe2026-10-17 14:06:39 -04:00
bdad40e211
refactor(cards): bookshelf SSR through the builder — badges return to the bookshelf
John O'Keefe2026-10-17 14:05:35 -04:00
8c56c9da55
refactor(cards): SSR series and tag pages through the builder
John O'Keefe2026-10-17 14:05:05 -04:00
0971e7debb
refactor(cards): template search grid through the builder
John O'Keefe2026-10-17 14:04:36 -04:00
5adfb459d7
refactor(cards): BuildSections through the builder
John O'Keefe2026-10-17 14:04:14 -04:00
2f9d5b8e45
refactor(cards): series books JSON through the builder
John O'Keefe2026-10-17 14:02:58 -04:00
c07dba4eff
refactor(cards): smart-collection preview through the builder
John O'Keefe2026-10-17 14:02:43 -04:00
23765934ef
refactor(cards): collections JSON detail + preview-adjacent ladder through the builder
John O'Keefe2026-10-17 14:02:16 -04:00
1ce1b79489
refactor(cards): H2 foundation — cards.go, the one BookInfo construction site
John O'Keefe2026-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'Keefe2026-10-17 12:39:59 -04:00
14cdbe70eb
test(contracts): CFI/context winner must land intact through conflict resolution
John O'Keefe2026-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'Keefe2026-10-17 12:22:35 -04:00
63a20dcc95
chore(db): sqlc regen — querier interface comment for the flush-enumerator fix
John O'Keefe2026-10-17 11:49:28 -04:00
a85bc8af9b
test(bruno): sweep the collection against the actual route table
John O'Keefe2026-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'Keefe2026-10-17 11:45:05 -04:00
d16ca4acbe
fix(tests): scope the sync_queue cleanup wipe to the test devices
John O'Keefe2026-10-17 10:32:00 -04:00
721139dc16
chore: delete dead progress handlers, no-op scar, split fused helper line
John O'Keefe2026-10-17 10:29:00 -04:00
8fc74c908a
fix(conflicts): resolution writes funnel through SaveProgress — audio position survives
John O'Keefe2026-10-17 10:26:22 -04:00
e83c00f869
refactor(progress): ProgressService required at construction; delete the 9 unreachable erase-fallbacks
John O'Keefe2026-10-16 17:28:06 -04:00
28bd323505
refactor(progress): SaveProgressRequest becomes the canonical PUT payload; GET serializes from the row
John O'Keefe2026-10-16 17:22:32 -04:00
a2ea34232c
test(contracts): pin wire shapes before the canonical-types migrations
John O'Keefe2026-10-16 16:02:14 -04:00
a222ef5c27
fix(media-items): normalize NOT NULL narrators on every write path
John O'Keefe2026-10-16 10:14:12 -04:00
73ae1789c5
feat(reader): fullscreen mode; revert stacked volume; fix manga badges + ghost sidebar
John O'Keefe2026-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'Keefe2026-10-15 19:33:18 -04:00
2c714dcb60
fix(audio player + dashboard): markdown bookmark notes, horizontal volume, transport glyphs, client-side badges
John O'Keefe2026-10-15 18:49:42 -04:00
2517baedea
feat(koreader): device bridge for ratings, reviews and reading-time stats
v1.13.0
John O'Keefe2026-10-15 11:26:47 -04:00
2117ec6181
feat(web): book reviews — markdown, sibling of ratings, full API + page surface
John O'Keefe2026-10-15 10:53:53 -04:00
fd6f0e3353
fix(web): scan progress — correct percentages, no layout shift, refresh-survivable
John O'Keefe2026-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'Keefe2026-10-14 14:12:53 -04:00
f981e72ff8
fix(dashboard): week widget left the wiped container — it now survives library switches
John O'Keefe2026-10-14 14:00:44 -04:00
199d82c613
fix(tests): sync-integration cleanup wiped the shared reading_history table
John O'Keefe2026-10-14 13:53:51 -04:00
0914c935d9
feat(dashboard): collapsible This Week widget, library-scoped + switch-surviving; title into the subbar
John O'Keefe2026-10-14 13:46:18 -04:00
5a2c1585ae
refactor(stats): 'Web / unsynced' bucket label → 'Web'; analytics tests isolated from the live reader
John O'Keefe2026-10-14 13:23:55 -04:00
7a604c2fec
feat(stats): per-device reading breakdown + device attribution on progress syncs
John O'Keefe2026-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'Keefe2026-10-14 12:46:54 -04:00
d95814ded3
fix(make): restore .PHONY declaration dropped by the guidelines cleanup
v1.10.0
John O'Keefe2026-10-14 09:48:40 -04:00
17274bb868
fix(nas): refuse deletes while library storage is unreachable; real file removal; stat cache
John O'Keefe2026-10-14 09:00:08 -04:00
f42720ac64
docs: retire PROJECT_GUIDELINES.md — library-visibility rule now in AGENTS.md + dev docs
John O'Keefe2026-10-13 20:18:42 -04:00
320f31086d
fix(web): field-mapping + fragile-hx-vals sweep across profile and library surfaces
John O'Keefe2026-10-13 18:25:56 -04:00
dc353b0f3f
fix(web): profile modal always displayed UTC — Timezone never mapped
John O'Keefe2026-10-13 15:05:40 -04:00
2a6e4b9ae5
fix(web): admin users cards redesigned for mobile readability
John O'Keefe2026-10-13 15:00:59 -04:00
505fc48b23
fix(web): profile save silently died under htmx 2 — invalid-JSON hx-headers
John O'Keefe2026-10-13 14:52:19 -04:00
57d83fd9af
fix(web): profile save gives visible feedback (HX-Refresh)
John O'Keefe2026-10-13 14:19:06 -04:00
0772f06d25
fix(tz): JWT context stub carries the user's timezone
John O'Keefe2026-10-13 14:03:44 -04:00
1601548e6c
fix(tz): server-side timezone conversion for all user-facing time displays
John O'Keefe2026-10-13 13:59:49 -04:00
740213f0a4
fix(auth): new users inherit the system-wide default timezone
John O'Keefe2026-10-13 13:17:12 -04:00
bc6ce41762
fix(web): password requirement indicators on registration and admin create-user
John O'Keefe2026-10-13 12:38:26 -04:00
f3c9d4b4e8
fix(web): admin users list reworked to the library-management card pattern
John O'Keefe2026-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'Keefe2026-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'Keefe2026-10-13 12:03:01 -04:00
97fbdf19fb
pin foliate-js 7796b05 — pdf text-layer dedupe on re-render (v0.5.3)
John O'Keefe2026-10-13 10:39:51 -04:00
03a6040360
test(sync): add manual repro harness for CRE-to-CFI highlight conversion
John O'Keefe2026-10-12 20:46:08 -04:00
93a468b435
fix(reader): emit two-subpath range CFIs for multi-node highlights
John O'Keefe2026-10-12 20:45:41 -04:00
bb3aef517c
fix(sync): anchor device highlight ranges to selection text
John O'Keefe2026-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'Keefe2026-10-11 20:44:32 -04:00
5a0d9e0e17
feat(web): endpoint handles drag vertically — full 2D tip-aimed targeting
John O'Keefe2026-10-11 18:15:34 -04:00
19619ef817
fix(web): raise the adjust teardrops — tips rest above the glyph tops
John O'Keefe2026-10-11 17:57:03 -04:00
a28ae5c88d
feat(web): adjust handles float above the text with tips marking the boundary
John O'Keefe2026-10-11 17:25:58 -04:00
1c209408cc
fix(web): PDF adjust — three compounding coordinate/table bugs, found by instrumented drag
John O'Keefe2026-10-11 13:01:16 -04:00
93f020f2b5
fix(web): PDF adjust handles — create once, reposition only
John O'Keefe2026-10-11 11:21:51 -04:00
a3ecac3507
fix(server): Cache-Control no-cache on /static — heuristic caching served stale bundles
John O'Keefe2026-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'Keefe2026-10-10 23:19:35 -04:00
f69e659d94
feat(web): PDF adjust v2 — re-selection replaces the extent; vertical grip clamp
John O'Keefe2026-10-10 18:25:29 -04:00
dbeefb395c
fix(web): PDF adjust text recompute — overlap-based glyph dedupe
John O'Keefe2026-10-10 14:25:48 -04:00
8acaeddda5
fix(web): detail banner — a failed annotation fetch must not wipe its rows
John O'Keefe2026-10-10 13:56:32 -04:00
361fdaab39
fix(web): PDF rect-edge adjust — a start-edge drag pins the far edge
John O'Keefe2026-10-10 11:47:41 -04:00
4d1fb05e49
feat(web): PDF highlight extent adjustment — rect-edge grips with word-token snap
John O'Keefe2026-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'Keefe2026-10-09 22:41:21 -04:00
9cd6356892
feat(server): ghost-session guard — JWTs for deleted users stop authenticating
John O'Keefe2026-10-09 22:33:30 -04:00
4f05a232fe
chore(server): delete dead unrouted UpdateUniversalProgress handler
John O'Keefe2026-10-09 18:22:23 -04:00
69516ae165
feat(server): progress locator coherence — percentage-only writes clear stale anchors
John O'Keefe2026-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'Keefe2026-10-09 17:11:12 -04:00
da13898046
feat(server): POST /api/media-items answers honestly on a duplicate file_path
John O'Keefe2026-10-09 17:10:56 -04:00
1a2d42a244
chore(server): delete dead ParseEbook 501 placeholder
John O'Keefe2026-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'Keefe2026-10-09 14:53:48 -04:00
18969a0f01
test(server): comic negative-case assertions target display values, not admin-modal labels
John O'Keefe2026-10-09 11:04:39 -04:00
843f35bbfc
test(server): runs leave no residue — auto-cleanup for every resource the suite creates
John O'Keefe2026-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'Keefe2026-10-09 11:04:24 -04:00
31f939002f
feat(web): 'a' keyboard shortcut toggles the annotations drawer
John O'Keefe2026-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'Keefe2026-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'Keefe2026-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'Keefe2026-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'Keefe2026-10-07 20:32:36 -04:00
b1de0da512
feat(web): dashboard All Libraries view saves the global scope
John O'Keefe2026-10-07 19:51:59 -04:00
25d44452c0
feat(dashboard): global (All Libraries) preferences scope
John O'Keefe2026-10-07 19:46:17 -04:00