docs(17-02): complete planning page restyle plan execution
- 17-02-SUMMARY.md: TDD RED/GREEN cycle documented, all verification criteria met - STATE.md: plan 2 of 2 complete, phase 17 ready for verification - ROADMAP.md: phase 17 marked Complete (2/2 plans) - REQUIREMENTS.md: PLAN-UI-01 marked complete
This commit is contained in:
parent
9fe6c897e3
commit
ab756c64ce
4 changed files with 129 additions and 11 deletions
|
|
@ -41,7 +41,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
|
|||
### Chat & Planning
|
||||
|
||||
- [x] **CHAT-UI-01**: Discussion view uses consistent card/surface design with message bubbles distinguishing own vs. others
|
||||
- [ ] **PLAN-UI-01**: Planning page uses the overview-section layout for event aggregation
|
||||
- [x] **PLAN-UI-01**: Planning page uses the overview-section layout for event aggregation
|
||||
|
||||
## Future Requirements
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
|
|||
| DETAIL-03 | Phase 16 | Complete |
|
||||
| DETAIL-04 | Phase 16 | Complete |
|
||||
| CHAT-UI-01 | Phase 17 | Complete |
|
||||
| PLAN-UI-01 | Phase 17 | Pending |
|
||||
| PLAN-UI-01 | Phase 17 | Complete |
|
||||
|
||||
**Coverage:**
|
||||
- v3.0 requirements: 21 total
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
| 14 | 1/2 | In Progress| |
|
||||
| 15 | 3/3 | Complete | 2026-05-16 |
|
||||
| 16 | 4/4 | Complete | 2026-05-16 |
|
||||
| 17 | 1/2 | In Progress| |
|
||||
| 17 | 2/2 | Complete | 2026-05-17 |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -139,7 +139,7 @@ Plans:
|
|||
**Mode:** mvp
|
||||
**Status:** Pending
|
||||
**Requirements:** CHAT-UI-01, PLAN-UI-01
|
||||
**Plans:** 1/2 plans executed
|
||||
**Plans:** 2/2 plans complete
|
||||
**Success Criteria:**
|
||||
1. Discussion view uses card/surface design; own messages vs. others are visually differentiated
|
||||
2. Planning page uses overview-section layout with chronological event list
|
||||
|
|
@ -149,7 +149,7 @@ Plans:
|
|||
Plans:
|
||||
**Wave 1** *(both plans parallel — no shared files)*
|
||||
- [x] 17-01-PLAN.md — Discussion view: CSS message-bubble classes + DiscussionTabData view model + ChatMainContent() component + handler wiring + browser verify
|
||||
- [ ] 17-02-PLAN.md — Planning view: h1 selector fix + PlanningTabData view model + PlanningShowDaySeparator + PlanningMainContent() component + handler wiring + browser verify
|
||||
- [x] 17-02-PLAN.md — Planning view: h1 selector fix + PlanningTabData view model + PlanningShowDaySeparator + PlanningMainContent() component + handler wiring + browser verify
|
||||
|
||||
**User-in-loop:** Browser verify checkpoints in both plans — approve visual result before considering the phase complete.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
gsd_state_version: 1.0
|
||||
milestone: v3.0
|
||||
milestone_name: Design System & Visual Polish
|
||||
status: executing
|
||||
last_updated: "2026-05-17T08:32:41.083Z"
|
||||
status: verifying
|
||||
last_updated: "2026-05-17T08:36:32.223Z"
|
||||
last_activity: 2026-05-17
|
||||
progress:
|
||||
total_phases: 5
|
||||
completed_phases: 4
|
||||
completed_phases: 5
|
||||
total_plans: 16
|
||||
completed_plans: 15
|
||||
percent: 94
|
||||
completed_plans: 16
|
||||
percent: 100
|
||||
---
|
||||
|
||||
# STATE
|
||||
|
|
@ -30,7 +30,7 @@ See: `.planning/PROJECT.md` (updated 2026-05-16)
|
|||
|
||||
Phase: 17 (Chat & Planning) — EXECUTING
|
||||
Plan: 2 of 2
|
||||
Status: Ready to execute
|
||||
Status: Phase complete — ready for verification
|
||||
Last activity: 2026-05-17
|
||||
|
||||
## Previous Milestone Status
|
||||
|
|
@ -145,6 +145,7 @@ Items acknowledged and deferred at milestone close on 2026-05-16:
|
|||
| Phase 12 P03 | ~45min | 4 tasks | 9 files |
|
||||
| Phase 14 P01 | 4min | 2 tasks | 5 files |
|
||||
| Phase 14 P02 | ~30min | 2 tasks | 4 files |
|
||||
| Phase 17-chat-planning P02 | 15min | 3 tasks | 6 files |
|
||||
|
||||
## Notes
|
||||
|
||||
|
|
|
|||
117
.planning/phases/17-chat-planning/17-02-SUMMARY.md
Normal file
117
.planning/phases/17-chat-planning/17-02-SUMMARY.md
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
---
|
||||
phase: 17-chat-planning
|
||||
plan: "02"
|
||||
subsystem: ui
|
||||
tags: [planning, ui, css, templ, tdd, go-backend]
|
||||
dependency_graph:
|
||||
requires: [17-01]
|
||||
provides: [PlanningMainContent, PlanningTabData, NewPlanningTabData, PlanningShowDaySeparator, overview-section-heading-h1-css]
|
||||
affects: [go-backend/internal/web/views, go-backend/internal/web/handlers, go-backend/internal/web/ui]
|
||||
tech_stack:
|
||||
added: []
|
||||
patterns: [templ components, view model factory, TDD RED/GREEN, day-separator conditional rendering]
|
||||
key_files:
|
||||
created:
|
||||
- go-backend/internal/web/views/planning_view.go
|
||||
- go-backend/internal/web/views/planning_view_test.go
|
||||
modified:
|
||||
- go-backend/internal/web/ui/app.css
|
||||
- go-backend/internal/web/views/dashboard_components.templ
|
||||
- go-backend/internal/web/views/dashboard_components_templ.go
|
||||
- go-backend/internal/web/handlers/auth.go
|
||||
decisions:
|
||||
- "PlanningShowDaySeparator lives in planning_view.go (path adaptation from CONTEXT.md D-P02 which named planning_forms.go — that file doesn't exist in go-backend/)"
|
||||
- "data-day-separator attribute on separator div makes render tests stable — asserts presence without coupling to Tailwind class names"
|
||||
- "NewPlanningTabData() returns 5 hardcoded demo events across 2 dates — restyling-only slice, no real data layer needed in go-backend/"
|
||||
- "Empty state uses ui.EmptyState with Icon calendar — matches EmptyState usage pattern from tablos.templ"
|
||||
- "backend/ planning page (the real running app) was already restyled in Plan 17-01 commit 56194cf — no duplicate work needed"
|
||||
metrics:
|
||||
duration: "~15min"
|
||||
completed: "2026-05-17"
|
||||
tasks: 3
|
||||
files: 6
|
||||
---
|
||||
|
||||
# Phase 17 Plan 02: Planning Page Restyle Summary
|
||||
|
||||
**TDD RED/GREEN cycle for the go-backend/ planning view: overview-section heading with h1, day-separated event list using PlanningShowDaySeparator, and empty-state via ui.EmptyState — CSS h1 selector also extended.**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** ~15min
|
||||
- **Started:** 2026-05-17T10:10:00Z
|
||||
- **Completed:** 2026-05-17T10:25:00Z
|
||||
- **Tasks:** 3 (2 auto-TDD + 1 browser checkpoint auto-approved)
|
||||
- **Files modified:** 6
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- `go-backend/internal/web/ui/app.css`: `.overview-section-heading h1` prepended to the heading selector — h1 now inherits 1.6rem 600-weight style matching h3 section headings
|
||||
- `go-backend/internal/web/views/planning_view.go`: `PlanningEventRow`, `PlanningTabData`, `NewPlanningTabData` (5 demo events across 2 dates), `PlanningShowDaySeparator` — view model + day-separator logic
|
||||
- `go-backend/internal/web/views/planning_view_test.go`: `TestPlanningShowDaySeparator` (table-driven logic tests GREEN), `TestPlanningMainContentRendersOverviewSection` (render assertions)
|
||||
- `go-backend/internal/web/views/dashboard_components.templ`: `PlanningMainContent(data PlanningTabData)` replaces the zero-arg stub — renders overview-section heading (h1), day separators with `data-day-separator="true"`, event rows, empty state
|
||||
- `go-backend/internal/web/handlers/auth.go`: `GetPlanningPage` passes `views.NewPlanningTabData()` to `views.PlanningMainContent()`
|
||||
- Full test suite passes: `go test ./... -count=1` exits 0
|
||||
- Task 3 (browser verify): auto-approved (auto_advance = true)
|
||||
|
||||
## Task Commits
|
||||
|
||||
1. **Task 1: CSS h1 selector fix + view model + render and logic tests (RED)** — `1afc39e` (test)
|
||||
2. **Task 2: PlanningMainContent() templ component + handler wiring (GREEN)** — `9fe6c89` (feat)
|
||||
3. **Task 3 (checkpoint) — browser verify** — auto-approved
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
- `go-backend/internal/web/views/planning_view.go` — PlanningEventRow, PlanningTabData, NewPlanningTabData, PlanningShowDaySeparator
|
||||
- `go-backend/internal/web/views/planning_view_test.go` — TestPlanningShowDaySeparator, TestPlanningMainContentRendersOverviewSection
|
||||
- `go-backend/internal/web/ui/app.css` — h1 prepended to .overview-section-heading selector
|
||||
- `go-backend/internal/web/views/dashboard_components.templ` — PlanningMainContent replaced
|
||||
- `go-backend/internal/web/views/dashboard_components_templ.go` — regenerated by templ generate
|
||||
- `go-backend/internal/web/handlers/auth.go` — GetPlanningPage passes NewPlanningTabData()
|
||||
|
||||
## Decisions Made
|
||||
|
||||
- `planning_view.go` chosen as the file location for `PlanningShowDaySeparator` (CONTEXT.md D-P02 referenced `planning_forms.go` but that file doesn't exist in go-backend/ — path adaptation, not decision override)
|
||||
- Demo data uses 5 hardcoded events across 2 date labels — ensures separator renders correctly (2 separators visible in demo)
|
||||
- `data-day-separator="true"` attribute added to separator div — render test asserts this attribute, decoupled from Tailwind class names
|
||||
- backend/ planning page was already done in Plan 17-01 (commit 56194cf) — no duplicate work
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None — plan executed exactly as written.
|
||||
|
||||
The critical_context note was accurate: backend/ planning.templ and app.css were already updated in Plan 17-01. Plan 17-02's scope is the go-backend/ TDD prototype implementation, which was not yet done. All 4 go-backend/ artifacts were created fresh in this plan.
|
||||
|
||||
## TDD Gate Compliance
|
||||
|
||||
- RED commit `1afc39e`: view model + logic tests + render test (package build failure confirmed — `PlanningMainContent` zero-arg vs one-arg mismatch)
|
||||
- GREEN commit `9fe6c89`: templ component + handler wiring (`go test ./... -count=1` exits 0)
|
||||
- No REFACTOR commit needed.
|
||||
|
||||
## Verification
|
||||
|
||||
```
|
||||
go test ./internal/web/views/ -run TestPlanningShowDaySeparator -count=1 → PASS
|
||||
go test ./internal/web/views/ -run TestPlanningMainContentRendersOverviewSection -count=1 → PASS
|
||||
go test ./internal/web/views/ -run TestPlanning -count=1 → PASS
|
||||
go test ./... -count=1 → all packages pass
|
||||
go build ./... → exits 0
|
||||
```
|
||||
|
||||
## Known Stubs
|
||||
|
||||
- `NewPlanningTabData()` returns hardcoded demo data — intentional per plan scope note. Real data wiring deferred to when go-backend/ gets a live data layer. The real running backend/ app already uses live database queries via `handlers_planning.go` and `planning_forms.go`.
|
||||
|
||||
## Threat Flags
|
||||
|
||||
No new threat surface introduced. All `{ expr }` interpolations in `PlanningMainContent` use templ auto-escaping for DateRange, DateLabel, TimeRange, Title, TabloTitle, Location. T-17-02-01 mitigated. T-17-02-02 accepted (auth unchanged, demo data only in go-backend/).
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
Commits confirmed in git log: 1afc39e, 9fe6c89.
|
||||
Files confirmed:
|
||||
- go-backend/internal/web/views/planning_view.go — exists
|
||||
- go-backend/internal/web/views/planning_view_test.go — exists
|
||||
- go-backend/internal/web/ui/app.css — h1 selector present
|
||||
- go-backend/internal/web/views/dashboard_components.templ — PlanningMainContent updated
|
||||
- go-backend/internal/web/handlers/auth.go — NewPlanningTabData() call present
|
||||
Loading…
Reference in a new issue