diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index af79876..63bb841 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -108,7 +108,7 @@ Plans: - [x] 04-01-PLAN.md — Wave 0: migration 0004_tasks + sqlc queries + handlers_tasks_test.go RED scaffold + soft-danger button CSS + Sortable.js bootstrap - [x] 04-02-PLAN.md — Vertical slice 1: kanban board render + task create + task delete (TASK-01, TASK-02, TASK-06) - [x] 04-03-PLAN.md — Vertical slice 2: task inline edit + Sortable.js drag reorder/move (TASK-03, TASK-04, TASK-05, TASK-07) -- [ ] 04-04-PLAN.md — Human-verify checkpoint: full kanban board browser verification +- [x] 04-04-PLAN.md — Human-verify checkpoint: full kanban board browser verification ### Phase 5: Files **Goal:** A user can attach files to a tablo, list them, download them via signed URLs, and delete them — backed by S3-compatible storage. diff --git a/.planning/phases/04-tasks-kanban/04-04-SUMMARY.md b/.planning/phases/04-tasks-kanban/04-04-SUMMARY.md new file mode 100644 index 0000000..bfbe502 --- /dev/null +++ b/.planning/phases/04-tasks-kanban/04-04-SUMMARY.md @@ -0,0 +1,42 @@ +--- +plan: 04-04 +phase: 04-tasks-kanban +status: complete +type: checkpoint +completed: 2026-05-15 +--- + +## Summary + +Human verification checkpoint for Phase 4 kanban board. Automated suite gate passed (5 packages, all ok). Two bugs surfaced during browser testing and fixed before approval. + +## What was verified + +All 7 TASK requirements confirmed working in a live browser session: +- TASK-01: 4 kanban columns render with correct labels and count badges +- TASK-02: Task creation via inline form (no page reload), card appears in correct column +- TASK-03: Inline task editing — click card, edit form pre-filled, save updates title +- TASK-04: Cross-column drag-and-drop via ⠿ handle, persists after reload +- TASK-05: Within-column reorder via drag, persists after reload +- TASK-06: Delete with confirmation step, card removed on confirm +- TASK-07: Order survives full page reload (covered by TASK-04/05 reload checks) + +## Bugs found and fixed + +### Bug 1 — Badge count not updating on task create/delete +Badge count was rendered server-side at page load only. Added `id="task-count-badge-{status}"` wrapper to each column header badge and a `updateBadges()` function triggered on `htmx:afterSettle` to recount `.task-card` elements. Commit: `68f2ccd`. + +### Bug 2 — Drag-and-drop not working +`draggable: ".task-card"` was incorrect — `.task-card` is a grandchild of `.sortable-column` (nested inside `.task-card-zone`), so Sortable was detaching the inner card from its wrapper during drag, breaking HTMX OOB swap targets. Changed to `draggable: ".task-card-zone"` so Sortable moves the full wrapper. Also replaced `htmx.onLoad()` (requires htmx defined at parse time) with native `document.addEventListener('DOMContentLoaded')` + `htmx:afterSettle`. Commits: `68f2ccd`, `131c9fd`. + +## Automated gate + +``` +ok backend/internal/auth 0.400s +ok backend/internal/db 0.459s +ok backend/internal/web 0.699s +ok backend/internal/web/ui 0.690s +ok backend/templates 0.856s +``` + +## Self-Check: PASSED