docs(17-01): complete plan execution — chat bubble restyle summary

- Create 17-01-SUMMARY.md with TDD gate compliance docs
- Advance plan counter to 2/2
- Mark CHAT-UI-01 complete in REQUIREMENTS.md
- Update ROADMAP.md phase 17 progress (1/2 plans complete)
This commit is contained in:
Arthur Belleville 2026-05-17 09:39:37 +02:00
parent 81ccaeb107
commit e3596ff753
No known key found for this signature in database
4 changed files with 91 additions and 13 deletions

View file

@ -40,7 +40,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
### Chat & Planning
- [ ] **CHAT-UI-01**: Discussion view uses consistent card/surface design with message bubbles distinguishing own vs. others
- [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
## Future Requirements
@ -88,7 +88,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
| DETAIL-02 | Phase 16 | Complete |
| DETAIL-03 | Phase 16 | Complete |
| DETAIL-04 | Phase 16 | Complete |
| CHAT-UI-01 | Phase 17 | Pending |
| CHAT-UI-01 | Phase 17 | Complete |
| PLAN-UI-01 | Phase 17 | Pending |
**Coverage:**

View file

@ -22,7 +22,7 @@
| 14 | 1/2 | In Progress| |
| 15 | 3/3 | Complete | 2026-05-16 |
| 16 | 4/4 | Complete | 2026-05-16 |
| 17 | Chat & Planning | Restyle discussion and planning pages | CHAT-UI-01, PLAN-UI-01 |
| 17 | 1/2 | In Progress| |
---
@ -139,7 +139,7 @@ Plans:
**Mode:** mvp
**Status:** Pending
**Requirements:** CHAT-UI-01, PLAN-UI-01
**Plans:** 2 plans
**Plans:** 1/2 plans executed
**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
@ -148,7 +148,7 @@ Plans:
Plans:
**Wave 1** *(both plans parallel — no shared files)*
- [ ] 17-01-PLAN.md — Discussion view: CSS message-bubble classes + DiscussionTabData view model + ChatMainContent() component + handler wiring + browser verify
- [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
**User-in-loop:** Browser verify checkpoints in both plans — approve visual result before considering the phase complete.

View file

@ -3,14 +3,14 @@ gsd_state_version: 1.0
milestone: v3.0
milestone_name: Design System & Visual Polish
status: executing
last_updated: "2026-05-17T07:36:29.889Z"
last_activity: 2026-05-17 -- Phase 17 planning complete
last_updated: "2026-05-17T07:39:23.008Z"
last_activity: 2026-05-17
progress:
total_phases: 5
completed_phases: 4
total_plans: 16
completed_plans: 14
percent: 88
completed_plans: 15
percent: 94
---
# STATE
@ -24,14 +24,14 @@ progress:
See: `.planning/PROJECT.md` (updated 2026-05-16)
**Core value:** A user can sign in and run the Tablos workflow — organize work, attach files, discuss, and plan scheduled events — without a JS framework or managed chat provider.
**Current focus:** Phase 16 — tablo-detail
**Current focus:** Phase 17 — Chat & Planning
## Current Position
Phase: 17
Plan: Not started
Phase: 17 (Chat & Planning) — EXECUTING
Plan: 2 of 2
Status: Ready to execute
Last activity: 2026-05-17 -- Phase 17 planning complete
Last activity: 2026-05-17
## Previous Milestone Status

View file

@ -0,0 +1,78 @@
---
phase: 17-chat-planning
plan: "01"
subsystem: go-backend/web
tags: [chat, ui, css, templ, tdd]
dependency_graph:
requires: []
provides: [DiscussionTabData, DiscussionMessageView, NewDiscussionTabData, ChatMainContent]
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]
key_files:
created:
- go-backend/internal/web/views/discussion_view.go
- go-backend/internal/web/views/discussion_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:
- "NewDiscussionTabData() returns hardcoded demo data with 4 alternating IsOwn messages — no real data layer needed for this restyle-only phase"
- "ChatMainContent uses .ui-card class matching Phase 16 tab panel surfaces"
- "rgba(128, 78, 236, 0.10) spelled out for own bubble tint — single-use value, no token indirection needed"
metrics:
duration: "~15min"
completed: "2026-05-17"
tasks: 2
files: 6
---
# Phase 17 Plan 01: Chat Discussion View — Message Bubble Restyle Summary
**One-liner:** Own-vs-others chat bubbles with brand-tint right-alignment using .ui-card surface and new .message-* CSS classes driven by a static view model.
## What Was Built
- **CSS message classes** appended to `app.css` after line 1897: `.message-row`, `.message-own`, `.message-other`, `.message-bubble`, `.message-own .message-bubble` (brand tint rgba), `.message-other .message-bubble`, `.message-meta`, `.message-own .message-meta`, `.message-meta .message-author` — all using `var(--...)` design tokens only (exception: rgba tint value spelled out intentionally per plan)
- **discussion_view.go**: `DiscussionMessageView` struct (Author, Timestamp, Body, IsOwn bool), `DiscussionTabData` struct, `NewDiscussionTabData()` factory returning 4 alternating demo messages
- **discussion_view_test.go**: `TestChatMainContentRendersBubbleClasses` — asserts `.ui-card`, `message-own`, `message-other`, `message-bubble` classes present in rendered HTML
- **dashboard_components.templ**: `ChatMainContent()` stub replaced with `ChatMainContent(data DiscussionTabData)` — renders `.ui-card` container, empty state via `@ui.EmptyState`, message rows with `.message-row message-own/other`, `.message-meta`, `.message-bubble`
- **auth.go**: `GetChatPage` updated to pass `views.NewDiscussionTabData()` to `views.ChatMainContent()`
## TDD Gate Compliance
- RED commit `dd1133d`: test + view model + CSS (compile error confirmed — ChatMainContent zero-arg)
- GREEN commit `81ccaeb`: templ component + handler wiring (TestChat passes, full suite passes)
## Verification
```
go test ./internal/web/views/ -run TestChat -count=1 → PASS
go test ./... -count=1 → all 6 test packages pass
go build ./... → exits 0
```
## Deviations from Plan
None — plan executed exactly as written.
## Deferred
- D-D01 through D-D04 deferred per `<scope_note>` in plan: no `DiscussionMessagesFromRows`, no `currentUserID` threading, no SSE/HTMX IsOwn mutation — all require real backend infrastructure not present in this phase.
## Known Stubs
- `NewDiscussionTabData()` returns hardcoded demo messages — intentional per plan. Real data wiring deferred to the phase when the discussion backend is built. Demo data is sufficient for visual verification of CSS bubble classes.
## Threat Flags
No new threat surface introduced. All `{ expr }` interpolations in `ChatMainContent` use templ auto-escaping (Author, Timestamp, Body). T-17-01-01 mitigated. T-17-01-02 accepted (demo data only, auth unchanged).
## Self-Check
Files created/modified exist on disk — verified by successful `go test ./... -count=1`. Commits dd1133d and 81ccaeb confirmed in git log.
## Self-Check: PASSED