From 3ce7c8ea4fa54e8bbb7ee09b7d3b5067f90cbc62 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Fri, 15 May 2026 22:45:10 +0200 Subject: [PATCH] docs(09-02): complete etape management plan --- .planning/phases/09-etapes/09-02-SUMMARY.md | 76 +++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .planning/phases/09-etapes/09-02-SUMMARY.md diff --git a/.planning/phases/09-etapes/09-02-SUMMARY.md b/.planning/phases/09-etapes/09-02-SUMMARY.md new file mode 100644 index 0000000..d7b803f --- /dev/null +++ b/.planning/phases/09-etapes/09-02-SUMMARY.md @@ -0,0 +1,76 @@ +--- +phase: 09-etapes +plan: 02 +subsystem: tasks +tags: [go, htmx, templ, etapes] +requires: + - phase: 09-etapes + plan: 01 + provides: etape schema, queries, strip, and task filtering +provides: + - etape edit, delete, and reorder handlers + - delete confirmation explaining tasks move to Unassigned + - compact chip management controls +affects: [09-etapes, tasks] +tech-stack: + added: [] + patterns: [full tasks-tab refresh after management mutations, explicit reorder forms] +key-files: + created: [] + modified: + - backend/internal/web/handlers_etapes.go + - backend/internal/web/router.go + - backend/templates/etapes.templ + - backend/templates/etapes_forms.go +key-decisions: + - "Use explicit Up/Down reorder forms instead of adding a second Sortable.js group in this minimal UI." + - "Return the full #tasks-tab fragment after edit, delete, and reorder so counts, chips, and kanban stay consistent." +patterns-established: + - "Etape management routes bind both tablo id and etape id before mutation." + - "Delete relies on the database foreign key's ON DELETE SET NULL behavior for task unassignment." +requirements-completed: [] +completed: 2026-05-15 +--- + +# Plan 09-02 Summary + +**Etape edit, delete-unassign, and reorder management from the Tasks tab strip** + +## Accomplishments + +- Added etape edit, update, delete confirmation, delete, and reorder routes under protected tablo routes. +- Added compact edit/delete/up/down controls beside etape chips. +- Added the required delete confirmation copy: `Tasks in this etape will stay in the tablo and move to Unassigned.` +- Added tests for update, delete-unassign, reorder, and non-owner 404 behavior. + +## Task Commits + +1. **Task 1: Add RED coverage for etape management** - `9b89282` +2. **Task 2: Implement edit, delete-unassign, and reorder** - `4af623a` + +## Verification + +- `cd backend && just generate` +- `cd backend && go test ./internal/web -run 'TestEtapeUpdateChangesTitleAndDescription|TestEtapeDeleteUnassignsTasks|TestEtapeReorderPersistsPosition|TestEtapeOwnershipReturns404' -count=1 -v` +- `cd backend && go test ./... -count=1` +- `git diff --check` + +Note: the DB-backed integration tests compile but are skipped locally because `TEST_DATABASE_URL`/`DATABASE_URL` is unset. + +## Deviations from Plan + +Used explicit Up/Down forms for reorder rather than Sortable.js. This keeps the first management UI minimal and avoids introducing a second drag/drop group. + +## Issues Encountered + +None. + +## User Setup Required + +None. + +## Next Phase Readiness + +Plan 09-03 can focus on richer task assignment selectors and filter behavior using the existing etape list, ownership validation, and full-tab refresh helpers. + +## Self-Check: PASSED