feat(frontend): phase progress dots (B) + compact sidebar redesign (C)
B — WorkflowBar renders F1..F8 as colored ring-dots (no phase-name text): green=done, amber=running (subtle pulse), red=error, gray=pending; green connectors lead the active dot, each dot carries data-state. Lightweight error signal: sessionStore gains `phaseError`, set when an info event has level=error during the active phase, cleared on the next ui_request. C — denser single-line session rows (inline status dot + name, py-1), a 3-level type hierarchy (L1 SESSIONS / L2 section+group headers / L3 names), and the "No group" label removed (ungrouped render after the last group, guarded so the empty-state still teaches when there are zero groups). Live-verified with Playwright (all four dot states, sidebar hierarchy, and E's deferred activity-panel check). Frontend 93/93, tsc -b clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+18
-9
@@ -81,7 +81,8 @@ Opens frontend at http://localhost:5173 → backend :8787.
|
||||
## UI/UX redesign + Resume — IN PROGRESS (2026-06-30, evening)
|
||||
|
||||
Approved multi-workstream plan: **`~/.claude/plans/foamy-forging-dahl.md`** (read it to resume).
|
||||
Memory: `thothii-ui-redesign-inprogress.md`. **D + E are merged to `main` @ `0eeb3f7` and pushed.**
|
||||
Memory: `thothii-ui-redesign-inprogress.md`. **D + E merged @ `0eeb3f7` (pushed); B + C
|
||||
implemented + live-verified (not yet committed as of this update).**
|
||||
|
||||
- **D — DONE** (`c12bdcd`): session display `name` = 3-5 Italian keywords via **YAKE** (no LLM),
|
||||
derived in `tht session new` (CLI layer); `create_session` core unchanged (`name=None` default).
|
||||
@@ -89,20 +90,28 @@ Memory: `thothii-ui-redesign-inprogress.md`. **D + E are merged to `main` @ `0ee
|
||||
- **E — DONE** (`0eeb3f7`): rotating activity icon replaces the red dot in `CentralStatus`
|
||||
(inline, clickable → opens the panel); `ModelActivityPanel` is a **5-line expandable
|
||||
model-stream tail**; `WorkingSpinner` extracted to its own module; the separate spinner button
|
||||
+ orphaned `Transcript.tsx` removed. Frontend 87/87, tsc clean. **Live visual check PENDING**
|
||||
(needs a *working* session — do it in the B/C pass).
|
||||
- **B (pending):** `WorkflowBar` → colored **dots** F1..F8, no text (amber-translucent=running,
|
||||
green=done, red=error, gray=pending); error is lightweight (store `phaseError` set on an `info`
|
||||
`level=error` during the phase, cleared on the next `ui_request`).
|
||||
- **C (pending):** right sidebar — tighter rows, 3-level type hierarchy via **`/impeccable`**,
|
||||
remove the "No group" label (ungrouped after the last group accordion); add **Resume** to `SessionMenu`.
|
||||
+ orphaned `Transcript.tsx` removed. Frontend 87/87, tsc clean. **Live visual check DONE
|
||||
(2026-06-30):** inline spinner opens the panel; 5-line collapsed tail; expand → full transcript.
|
||||
- **B — DONE** (uncommitted): `WorkflowBar` is now colored **dots** F1..F8, no phase-name text
|
||||
(amber-translucent=running, green=done, red=error, gray=pending; green connectors lead the active
|
||||
dot). Each dot carries `data-state`. Error is lightweight: store `phaseError` set when an `info`
|
||||
`level=error` arrives during the phase, cleared on the next `ui_request` (`sessionStore.ts`).
|
||||
**All four states live-verified** via Playwright.
|
||||
- **C — DONE** (uncommitted): right sidebar — single-line denser rows (inline status dot + name,
|
||||
`py-1`), a 3-level type hierarchy via **`/impeccable`** (L1 `SESSIONS` red/bold/wide-tracking ·
|
||||
L2 section + group headers muted uppercase · L3 names normal-case), and the **"No group" label
|
||||
removed** (ungrouped sessions render after the last group; guarded so the empty-state still
|
||||
teaches when there are no groups). **Live-verified.** (Resume in `SessionMenu` stays with A1.)
|
||||
- **Tests:** frontend **93/93** (was 87; +3 store `phaseError`, +2 `WorkflowBar` dot-state, +1
|
||||
AppShell no-"No group"), `tsc -b` clean.
|
||||
- **F (pending):** single-select answers **auto-confirm** — `reviewer_select` persists the
|
||||
decision directly on a concrete choice (no redundant `reviewer_decide` gate); contract change
|
||||
(update its tool desc + `SKILL.md` + the `CLAUDE.md` note). back/exit/Other stay non-persisting.
|
||||
- **A (pending, riskiest):** Resume command + **FIX the resume cold-start stall** (open item #1).
|
||||
- **G (later):** cross-model behavior matrix (Qwen3.6 / GLM 5.2 / Deepseek V4 / others).
|
||||
|
||||
**Next chunk:** the **B/C visual pass** (`/impeccable` + a live verification, incl. E's deferred check).
|
||||
**Next chunk:** **F** (single-select auto-confirm — harness gate/SKILL contract change), then **A**
|
||||
(Resume in the kebab + the resume cold-start stall fix, diagnosis-first). **G** (cross-model) later.
|
||||
|
||||
## Live verification + reviewer_select fix (2026-06-30, afternoon)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user