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:
+19
-5
@@ -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` —
|
||||
|
||||
Reference in New Issue
Block a user