Commit Graph
8 Commits
Author SHA1 Message Date
Lucas WintherandClaude Opus 5.5 4166ecb8f5 fix(web): keep cached library rows when a refresh fails
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:16:06 +01:00
Lucas WintherandClaude Opus 5.5 4608c977b7 fix(web): keep review text on a failed save; review round 2
- Review draft sync is a pure helper (format.ts): incoming values are
  ignored while a save is in flight, and a failed save restores the
  previous synced value, so the typed text is kept whichever of the
  rollback and the error callback lands first. Tests cover both orders.
- A failed background refetch keeps showing the cached entry instead of
  the error screen (it unmounted the review box mid-outage).
- History restore joins the entry-patch mutation scope.
- updatePreferences: read-modify-write in a transaction, row locked on
  Postgres.
- Invalidate auth-status after register; out-of-range rating errors speak
  in the user's scale.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:14:02 +01:00
Lucas WintherandClaude Opus 5.5 5fa59310f3 fix(web): review round 1: optimistic edits, friendly errors, preferences, Gelasio
- Tags and custom fields update the cached entry optimistically and build
  from the latest cache; one entry's PATCHes run in order (mutation scope).
- The review textarea follows server changes (Restore) unless edited.
- friendlyError() maps validation reasons and 413 to plain copy everywhere.
- Rating scale from me/preferences; /login and /register use auth/status;
  Attachments lists from the API.
- Gelasio vendored (official OFL variable TTFs); minors from the review.
- Docs: DESIGN (AA on orange, faint labels), DECISIONS, TODO, ARCHITECTURE.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:03:51 +01:00
Lucas WintherandClaude Opus 5.5 439d138967 feat(web): app shell, library, entry detail
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:37:56 +01:00
Lucas WintherandClaude Opus 5.5 70bc6c36d3 feat(web): theme tokens, self-hosted Inter, HTML entry
DESIGN.md tokens as CSS custom properties. Inter (OFL) is vendored so the
app makes no third-party font requests.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:37:56 +01:00
Lucas WintherandClaude Opus 5.5 0bb871cd19 feat(web): api client and display formatters
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:25:41 +01:00
Lucas WintherandClaude Opus 5.5 02b7eed5ec feat(server): boot: migrate, load plugins, worker, scheduler, daily backup, web placeholder
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:16:15 +01:00
Lucas WintherandClaude Opus 5.5 6c5a9fbad9 chore: workspace package stubs with approved dependencies
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 15:30:49 +01:00