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:
parent
81ccaeb107
commit
e3596ff753
4 changed files with 91 additions and 13 deletions
|
|
@ -40,7 +40,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
|
||||||
|
|
||||||
### Chat & Planning
|
### 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
|
- [ ] **PLAN-UI-01**: Planning page uses the overview-section layout for event aggregation
|
||||||
|
|
||||||
## Future Requirements
|
## Future Requirements
|
||||||
|
|
@ -88,7 +88,7 @@ Requirements for milestone v3.0. Each maps to exactly one roadmap phase.
|
||||||
| DETAIL-02 | Phase 16 | Complete |
|
| DETAIL-02 | Phase 16 | Complete |
|
||||||
| DETAIL-03 | Phase 16 | Complete |
|
| DETAIL-03 | Phase 16 | Complete |
|
||||||
| DETAIL-04 | 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 |
|
| PLAN-UI-01 | Phase 17 | Pending |
|
||||||
|
|
||||||
**Coverage:**
|
**Coverage:**
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
| 14 | 1/2 | In Progress| |
|
| 14 | 1/2 | In Progress| |
|
||||||
| 15 | 3/3 | Complete | 2026-05-16 |
|
| 15 | 3/3 | Complete | 2026-05-16 |
|
||||||
| 16 | 4/4 | 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
|
**Mode:** mvp
|
||||||
**Status:** Pending
|
**Status:** Pending
|
||||||
**Requirements:** CHAT-UI-01, PLAN-UI-01
|
**Requirements:** CHAT-UI-01, PLAN-UI-01
|
||||||
**Plans:** 2 plans
|
**Plans:** 1/2 plans executed
|
||||||
**Success Criteria:**
|
**Success Criteria:**
|
||||||
1. Discussion view uses card/surface design; own messages vs. others are visually differentiated
|
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
|
2. Planning page uses overview-section layout with chronological event list
|
||||||
|
|
@ -148,7 +148,7 @@ Plans:
|
||||||
|
|
||||||
Plans:
|
Plans:
|
||||||
**Wave 1** *(both plans parallel — no shared files)*
|
**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
|
- [ ] 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.
|
**User-in-loop:** Browser verify checkpoints in both plans — approve visual result before considering the phase complete.
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@ gsd_state_version: 1.0
|
||||||
milestone: v3.0
|
milestone: v3.0
|
||||||
milestone_name: Design System & Visual Polish
|
milestone_name: Design System & Visual Polish
|
||||||
status: executing
|
status: executing
|
||||||
last_updated: "2026-05-17T07:36:29.889Z"
|
last_updated: "2026-05-17T07:39:23.008Z"
|
||||||
last_activity: 2026-05-17 -- Phase 17 planning complete
|
last_activity: 2026-05-17
|
||||||
progress:
|
progress:
|
||||||
total_phases: 5
|
total_phases: 5
|
||||||
completed_phases: 4
|
completed_phases: 4
|
||||||
total_plans: 16
|
total_plans: 16
|
||||||
completed_plans: 14
|
completed_plans: 15
|
||||||
percent: 88
|
percent: 94
|
||||||
---
|
---
|
||||||
|
|
||||||
# STATE
|
# STATE
|
||||||
|
|
@ -24,14 +24,14 @@ progress:
|
||||||
See: `.planning/PROJECT.md` (updated 2026-05-16)
|
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.
|
**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
|
## Current Position
|
||||||
|
|
||||||
Phase: 17
|
Phase: 17 (Chat & Planning) — EXECUTING
|
||||||
Plan: Not started
|
Plan: 2 of 2
|
||||||
Status: Ready to execute
|
Status: Ready to execute
|
||||||
Last activity: 2026-05-17 -- Phase 17 planning complete
|
Last activity: 2026-05-17
|
||||||
|
|
||||||
## Previous Milestone Status
|
## Previous Milestone Status
|
||||||
|
|
||||||
|
|
|
||||||
78
.planning/phases/17-chat-planning/17-01-SUMMARY.md
Normal file
78
.planning/phases/17-chat-planning/17-01-SUMMARY.md
Normal 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
|
||||||
Loading…
Reference in a new issue