tag-lifecycle: owner close (status closed, gating + page) + move (copy details to new tag, close source) + legacy ?productid= redirect — verified with real tags 6 & 17

This commit is contained in:
2026-08-10 11:36:11 +10:00
parent 77a9f803f2
commit 97cf0974a3
8 changed files with 123 additions and 10 deletions

View File

@@ -1,20 +1,20 @@
## 1. Schema
- [ ] 1.1 `db/schema.sql`: status CHECK gains `closed` (update CREATE + idempotent drop/re-add ALTER); `make db-up`
- [x] 1.1 `db/schema.sql`: status CHECK gains `closed` (update CREATE + idempotent drop/re-add ALTER); `make db-up`
## 2. Go
- [ ] 2.1 `shouldAlert`: return false when status `closed` or `suspended`
- [ ] 2.2 `tags.go`: `CloseTag` + `MoveTag` handlers (owner-only, HTMX panel responses)
- [ ] 2.3 `Home` compat redirect: `productid` query → `/t/{productid}`
- [ ] 2.4 Templates: tag-list Close + Move actions; tag-public closed state; routes in main.go
- [x] 2.1 `shouldAlert`: return false when status `closed` or `suspended`
- [x] 2.2 `tags.go`: `CloseTag` + `MoveTag` handlers (owner-only, HTMX panel responses)
- [x] 2.3 `Home` compat redirect: `productid` query → `/t/{productid}`
- [x] 2.4 Templates: tag-list Close + Move actions; tag-public closed state; routes in main.go
## 3. Admin
- [ ] 3.1 TagResource status options + badge include `closed`
- [x] 3.1 TagResource status options + badge include `closed`
## 4. Verification
- [ ] 4.1 New suite: close → page unavailable + no alert; move → target bound w/ copied details + source closed; move errors (owned/unset-missing/same); `/?x=5&productid=CODE` → 302 `/t/CODE`
- [ ] 4.2 Regressions (72) green; deploy
- [ ] 4.3 `openspec validate tag-lifecycle`; commit
- [x] 4.1 New suite: close → page unavailable + no alert; move → target bound w/ copied details + source closed; move errors (owned/unset-missing/same); `/?x=5&productid=CODE` → 302 `/t/CODE`
- [x] 4.2 Regressions (72) green; deploy
- [x] 4.3 `openspec validate tag-lifecycle`; commit