docs: ADR-0046 UI sidebar nav-mode + responsive input/hint (#20/#21/#23)

Accepted; implementation pending, phased A→B→C. Treats the three
coupled UI issues as one decision (shared width/height budget):

- #20 hint jumpiness: hint height becomes a function of terminal
  geometry, fixed between resizes, so it no longer shoves the
  input/output panels.
- #21 left column: kept but width-optional (hidden by default ≤90),
  with a new relationships sibling panel and a Ctrl-O navigation/focus
  mode (peek-reveal, expand-on-focus overlay, scroll).
- #23 long input: single-logical-line horizontal scroll plus a 2-row
  display when tall, preserving the ADR-0027 indicator reserve.

A pre-build /runda DA pass drove key corrections: Ctrl-B→Ctrl-O (Ctrl-B
is the tmux prefix), an additive SchemaCache.relationship_details field
(retyping would break completion), full nav-mode key disposition +
modal gate, and Tier-2 snapshot coverage. Reconciles requirements
S1 (evolved), S2 (overridden — separate relationships panel), and
S4 (corrected — the stale "keyboard-toggleable" hint claim is struck;
no toggle added).

Updates docs/adr/README.md index and docs/requirements.md S1/S2/S4.
This commit is contained in:
claude@clouddev1
2026-06-10 16:57:46 +00:00
parent f88018b4be
commit 93266b99c9
3 changed files with 546 additions and 5 deletions
+19 -5
View File
@@ -73,24 +73,38 @@ since ADR-0027.)
panel (right), input field (bottom).
*(Verified 2026-06-07: `ui.rs:26-58` lays out a horizontal
split — items panel left, right column subdivided into output
panel / input field / hint panel; rendered every frame.)*
panel / input field / hint panel; rendered every frame.
**ADR-0046 evolves this:** the left items region becomes
width-optional — hidden by default at ≤ 90 columns, peek-revealed
via `Ctrl-O` navigation mode — so the three-region layout is the
wide-terminal default, not an invariant.)*
- [x] **S2** Items list shows tables and per-table indexes;
designed to extend to additional element kinds (relations,
views, etc.) without restructuring.
*(ADR-0025: the items panel renders a nested list — each
table with its index names indented beneath it. The nested
model is the extension point for future element kinds.)*
model is the extension point for future element kinds.
**ADR-0046 overrides the nesting approach for relationships:**
because relationships are cross-table rather than per-table, they
get their own sibling panel stacked below the tables list, not
nested items within it — user-confirmed 2026-06-10.)*
- [/] **S3** Output panel renders a visualization of the
currently selected item and supports multiple tabs.
*(Partial, verified 2026-06-07: single-element structure
visualisation renders (`output_render.rs:82-180`); **multiple
tabs are not implemented** — the output is one line buffer, no
tab abstraction. Same multi-tab gap as V2.)*
- [x] **S4** Hint area below the input field; keyboard-toggleable
for inspecting hints about the current input or last error.
- [x] **S4** Hint area below the input field, showing hints about
the current input or last error.
*(Verified 2026-06-07: `ui.rs:1088-1110` `render_hint_panel` /
`resolve_hint_lines` — a dynamic 1`MAX_HINT_ROWS` panel below
the input showing ambient hints, candidates, or the last error.)*
the input showing ambient hints, candidates, or the last error.
**Correction (2026-06-10, ADR-0046):** the original wording said
the area was "keyboard-toggleable"; that was never implemented and
is deliberately dropped — the panel became indispensable once
completion moved into it (ADR-0022), so it is always on. ADR-0046
replaces its content-driven height with a geometry-driven one to
stop the resize jump (#20); no toggle is added.)*
- [x] **S5** Mode label and distinct border style on the input
field communicate the current input mode at all times.
*(Verified 2026-06-07: `ui.rs:896-934` `render_input_panel` —