TUI command bar: OpenCommandBar action, overlay, session results #153

Closed
opened 2026-09-03 13:26:51 +01:00 by naps62-yolo · 1 comment
Collaborator

Build the TUI command bar: a new action, a new overlay, and the session half of
the results.

  • Add OpenCommandBar to the Action enum with its parse arm, Display
    arm, help_label, and dispatcher arm.
  • Bind ctrl-k in both DEFAULT_NORMAL and DEFAULT_INSERT, so it opens
    from the sidebar and from inside a pane. Because it is an ordinary keymap
    entry it stays rebindable, and the help overlay — which builds its lines from
    the live keymap — picks it up for free.
  • Add an OverlayKind variant and route its input in handle_overlay_input,
    alongside Spawn, KillConfirm, Rename and Help.
  • Empty query lists sessions most-recently-focused first, from the daemon's
    last-focused field (#145). Typing fuzzy-matches through the matcher from #147,
    with matched ranges highlighted. Enter attaches the highlighted session.
  • Escape closes; up/down and ctrl-p/ctrl-n move the highlight.

Put the module somewhere other than palette.rs — that name is taken by the
colour palette.

Follow docs/COMMAND-BAR.md for the key model and ordering.

Non-goals: no sigils (#K), no session action page (#L), no literal-Ctrl-K
escape hatch (#M).

Depends on: #145, #147

Build the TUI command bar: a new action, a new overlay, and the session half of the results. - Add `OpenCommandBar` to the `Action` enum with its `parse` arm, `Display` arm, `help_label`, and dispatcher arm. - Bind `ctrl-k` in **both** `DEFAULT_NORMAL` and `DEFAULT_INSERT`, so it opens from the sidebar and from inside a pane. Because it is an ordinary keymap entry it stays rebindable, and the help overlay — which builds its lines from the live keymap — picks it up for free. - Add an `OverlayKind` variant and route its input in `handle_overlay_input`, alongside Spawn, KillConfirm, Rename and Help. - Empty query lists sessions most-recently-focused first, from the daemon's last-focused field (#145). Typing fuzzy-matches through the matcher from #147, with matched ranges highlighted. Enter attaches the highlighted session. - Escape closes; up/down and `ctrl-p`/`ctrl-n` move the highlight. Put the module somewhere other than `palette.rs` — that name is taken by the colour palette. Follow `docs/COMMAND-BAR.md` for the key model and ordering. Non-goals: no sigils (#K), no session action page (#L), no literal-Ctrl-K escape hatch (#M). Depends on: #145, #147
naps62-yolo added this to the Command bar milestone 2026-09-03 13:26:51 +01:00
naps62-yolo added the area/tuidifficulty/hardtype/feat labels 2026-09-03 13:26:51 +01:00
naps62-yolo added a new dependency 2026-09-03 13:26:52 +01:00
naps62-yolo added a new dependency 2026-09-03 13:26:52 +01:00
naps62-yolo added a new dependency 2026-09-03 13:26:52 +01:00
naps62-yolo added a new dependency 2026-09-03 13:26:52 +01:00
Author
Collaborator

Merged into blitz/command-bar. Rust suite re-run on the integration branch:
778 passed, 0 failed.

ctrl-k is in both default keymaps, OpenCommandBar round-trips, and the
overlay is routed alongside the existing four. Enter going through the same
AttachHighlighted path the sidebar uses is the right call — one open path,
so the bar cannot produce a state a keypress could not.

Two notes:

TASK.md — the blitz worker prompt — was committed with the change. Removed on
the integration branch; it is scaffolding, not repo content.

Pulling the tool-id mapping into maestro-protocol::display to mirror the
web's BY_PROGRAM is a good call rather than a scope violation: the matcher's
tool field has to mean the same thing in both clients, and a second private
copy in the TUI is exactly the drift docs/COMMAND-BAR.md exists to stop.

Merged into `blitz/command-bar`. Rust suite re-run on the integration branch: 778 passed, 0 failed. `ctrl-k` is in both default keymaps, `OpenCommandBar` round-trips, and the overlay is routed alongside the existing four. Enter going through the same `AttachHighlighted` path the sidebar uses is the right call — one open path, so the bar cannot produce a state a keypress could not. Two notes: `TASK.md` — the blitz worker prompt — was committed with the change. Removed on the integration branch; it is scaffolding, not repo content. Pulling the tool-id mapping into `maestro-protocol::display` to mirror the web's `BY_PROGRAM` is a good call rather than a scope violation: the matcher's `tool` field has to mean the same thing in both clients, and a second private copy in the TUI is exactly the drift `docs/COMMAND-BAR.md` exists to stop.
This repo is archived. You cannot comment on issues.
1 Participants
Due Date
No due date set.
Reference: naps62/maestro#153