Repository navigation
Note-taker pad: honest chrome + walkable session history (center drill-down) #247
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
The note-taker surface presents three honesty/navigation defects:
- Dead nav chrome. The left rail renders Notes / Summary / Search as
disabledbuttons whose only disclosure is a tooltip ("view not built yet"). Multi-view routing does not exist, so these are affordances with no live handler — the standing interaction-honesty policy treats a rendered affordance with no live handler as a failing state. A disabled Home button has the same problem. - Machine label over content. The right column header is a hard-coded "Enrichments" string rendered unconditionally, regardless of whether any block renders beneath it — a machine word painted over possibly-empty content (violates the human-voice display rule).
- History is a dead end. The session-history list renders past sessions as deliberately unclickable rows because there is no session-detail view to navigate to. The query DSL already accepts an explicit
sessionId(session-scoped sources otherwise bindsession: "current"), but no UI can set one, so recorded history cannot be walked.
Change
- Remove the dead Notes / Summary / Search nav buttons and the dead Home button until their views exist; the Search view remains tracked separately by User-facing search over the corpus (sessions / moments / distillates / summaries) — the disabled Search tab #230 (no removal needed there — this references it so the trail holds). Session history becomes the navigation.
- Remove the hard-coded machine header from the right column; let the column's own self-labeling blocks carry it (symmetric with the left column). Never a bold header over nothing.
- Session drill-down (headline). Make history rows clickable: selecting a past session shows that session's record in the CENTER column (its session-level summary and its moments, read-only), with an always-visible calm "back to live" affordance returning to the current-session view. Implementation: a client-side selection state re-queries the center session-scoped blocks with the selected session id (the DSL already honors an explicit
sessionIdovercurrent); a generic query-remap seam on the surface controller applies it. Row selection is read-only navigation — it never starts/stops capture or touches session lifecycle (consent boundary: sessions never auto-start). Honest states: a past session with no summary/moments says so plainly, never a blank; a failed detail query surfaces as honest text, never a blank.
Guardrails
- New nav/decoration classes are non-selectable in the stylesheet (selection-hygiene stays stylesheet-derived); values stay selectable.
- Seeded surface document unchanged (the selected-session binding is applied at query time, not baked into the document) — no migration needed.
- Driven served proof: a test that clicks a past-session row, asserts the center shows THAT session's summary/moments (not the live one's), clicks back-to-live, and asserts the live view returns.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
Ambisphaeric commentedon Jul 18, 2026
Closing evidence — landed via PR #250, merge
3ac9258, main CI greenPer acceptance criterion (relative paths,
file:line+ test names):AC1 — remove the dead nav chrome (Notes / Summary / Search + Home).
apps/client/src/surfaces/hud/notetaker-layout.ts— the disabled Notes/Summary/Search tabs and the disabled Home button are removed (interaction-bar policy: a rendered affordance with no live handler is a failing state). The Search view stays tracked separately by User-facing search over the corpus (sessions / moments / distillates / summaries) — the disabled Search tab #230.AC2 — remove the hard-coded machine header from the right column.
apps/client/src/surfaces/hud/notetaker-layout.ts:199— the hard-coded "Enrichments" header is gone; the column's own self-labeling blocks carry it (symmetric with the left column; never a bold header over possibly-empty content).apps/client/src/surfaces/hud/notetaker-layout.test.ts:170–:172assert the right column renders no "Enrichments" string.AC3 (headline) — session drill-down: clickable history rows show a past session's record read-only in the center, with an always-visible back-to-live.
apps/client/src/surfaces/blocks/sessions.ts:55(nav control, non-selectable, live verb — never a dead affordance); the empty / "N more" notes stay plain (no fake click target).NotetakerViewstate (apps/client/src/surfaces/hud/notetaker-view.ts) threaded through a generic query-remap seam (apps/client/src/surfaces/block-renderer/mount.ts,apps/client/src/surfaces/hud/hud.ts); the engine honors an explicitsessionIdover thecurrentsentinel atapps/engine/src/surfaces/query.ts:88–:92.apps/client/src/surfaces/hud/notetaker-layout.test.ts:242selecting a past session shows its read-only record with a back-to-live control;:261a past session that captured nothing says so plainly, never a blank;:274with no selection the center is the live current-session pad. Driven:apps/client/src/surfaces/hud/notetaker-history.test.ts:161clicking a past-session row shows THAT session then back-to-live returns;:195a failed detail query surfaces honest text, never a blank. Engine contract:apps/engine/src/surfaces/query.test.ts:144an explicit past session id is honored overcurrent(the Note-taker pad: honest chrome + walkable session history (center drill-down) #247 drill-down contract), with:61/:88covering the honestcurrentbinding (Honest display-scope resolution: never fall back to whole-workspace when a session is not live #210).Guardrails.
Rig-QA item (system): a full Electron served proof exists at
apps/client/scripts/notetaker-history-e2e.mjsbut is GUI-gated out of headless CI per repo precedent; the DOM-level driven proofs above cover the seam in CI.Gates at merge head: client 636 · engine 1142; main CI green.