Archived and finished buckets, userscript nav chips #4

Merged
sulthan merged 10 commits from feat/status-buckets into main 2026-07-27 16:58:06 +07:00

10 Commits

Author SHA1 Message Date
sulthan aaf5c3990a chore: ignore the go build artifact, mark two accepted limitations
`go build ./...` in backend/ emits `backend/backend` (the module is
`mangabm/backend`), but .gitignore only listed `backend/server` — the name
the Dockerfile uses for its container-internal build. The real artifact was
untracked and unignored, and came close to being committed twice. Keeps the
`server` entry, since a local `go build -o server` still matches the
Dockerfile's naming.

Also records two deliberate limitations as `ponytail:` comments so they are
greppable rather than living only in prose:

- latest.go: the poller's Store.Get + Store.Upsert is not wrapped in a
  transaction, so a client PUT committing between the two is lost to the
  stale re-read. Already documented in CLAUDE.md; the marker names the
  upgrade path (wrap in a tx) and the trigger (more than one user). Note
  this now costs a status change, not just read progress.
- web.go: a swapped card stays on screen when its new status no longer
  matches the active tab. The alternative is a full list round trip per
  toggle; the card showing its new state is the feedback that matters.

Comments only — no logic change. Tests pass, CGO_ENABLED=0 builds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 13:55:45 +07:00
sulthan 7a16abd6a3 fix: omit status on non-archive writes, skip finished in refresh and scan 2026-07-27 13:35:46 +07:00
sulthan 896792d504 docs: record status buckets and userscript nav chips 2026-07-27 13:25:25 +07:00
sulthan 0a70d35da2 feat(userscript): archived tab, archive button, and site nav chips 2026-07-27 13:13:51 +07:00
sulthan 4d396a3582 feat(web): archived and finished tabs with per-card status controls 2026-07-27 13:06:11 +07:00
sulthan 8579f5a0ed feat(web): add status endpoint for archive, finish, and restore
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 13:00:21 +07:00
sulthan 5aae678668 feat(web): filter tabs and recent strip by status bucket
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 12:56:12 +07:00
sulthan f783b72a81 feat(api): validate status on PUT, refuse finished from clients 2026-07-27 12:53:02 +07:00
sulthan d320016ceb feat(poller): skip finished series, keep polling archived ones 2026-07-27 12:49:52 +07:00
sulthan 051c429b24 feat(store): add status column with keep-on-empty upsert rule 2026-07-27 12:46:27 +07:00