|
|
@@ -0,0 +1,33 @@
|
|
|
+# Todo 53.2: Console Interaction State
|
|
|
+
|
|
|
+## Problem
|
|
|
+
|
|
|
+Commit `fd9c31e` introduced the professional console shell, but the new collapsed Agent Config/Snapshot sections and Hide Debug button have no JavaScript handlers. The intermediate UI therefore makes controls unreachable and cannot close the drawer.
|
|
|
+
|
|
|
+## Scope
|
|
|
+
|
|
|
+- Bind all `.control-section-toggle` buttons and update `aria-expanded` plus target `hidden` state.
|
|
|
+- Bind `#toggle-debug-drawer`, update `#console-layout.debug-drawer-closed`, drawer `hidden`, button text, and ARIA state.
|
|
|
+- Persist section and drawer preferences in a dedicated browser-only localStorage record.
|
|
|
+- Treat storage parse/write failures as non-fatal presentation failures.
|
|
|
+- Update `#current-session-label` and `#current-mode-label` from existing runtime state.
|
|
|
+- Keep presentation state out of workspace snapshots and WebSocket requests.
|
|
|
+- Preserve EventPrompt, active-turn, stale-socket, session, and backend contracts.
|
|
|
+
|
|
|
+## TDD Steps
|
|
|
+
|
|
|
+1. Add failing tests in `tests/test_websocket_api.py` that execute the interaction helpers with lightweight DOM/localStorage fakes, not only source substring checks.
|
|
|
+2. Confirm RED for unreachable sections/drawer and missing topbar synchronization.
|
|
|
+3. Add the smallest interaction state implementation to `src/agent_lab/presentation/static/app.js`.
|
|
|
+4. Verify bootstrap, mode refresh, session create/load/start, and session reset paths update topbar status.
|
|
|
+5. Run focused/full WebSocket tests, Node syntax, and diff checks.
|
|
|
+6. Commit and repeat specification plus code-quality review.
|
|
|
+
|
|
|
+## Acceptance
|
|
|
+
|
|
|
+- Agent Config and Snapshot can be expanded from their default collapsed state.
|
|
|
+- Drawer open/closed state changes layout and visibility consistently on desktop and narrow layouts.
|
|
|
+- Reload restores the last section/drawer preferences when storage is valid.
|
|
|
+- Invalid or unavailable storage does not block the runtime.
|
|
|
+- Topbar mode and abbreviated session labels stay current.
|
|
|
+- No console UI preference appears in request or snapshot payloads.
|