Skip to content

feat(tui): one-line queue strip and /queue management panel - #71

Merged
jkyberneees merged 1 commit into
mainfrom
feat/queue-panel
Sep 3, 2026
Merged

feat(tui): one-line queue strip and /queue management panel#71
jkyberneees merged 1 commit into
mainfrom
feat/queue-panel

Conversation

@jkyberneees

Copy link
Copy Markdown
Contributor

What

Two changes to the prompt-queue UX:

  1. One-line truncation (the fix). Queued prompts collapse to a single strip row regardless of embedded newlines — collapse() now runs before truncate() in both the strip rows and the overflow tail preview, so rendered rows always match queueStripHeight()'s layout/mouse-math budget. (RED-first: a 3-line queued prompt previously rendered 4 rows against a budget of 2.)
  2. /queue management panel. A dedicated full-area window over the same queue state:
    • ↑↓/jk select · ←→/hl change priority (head sends first)
    • dy two-step gated delete (confirmQueueDelete)
    • sends the selected prompt ahead of the queue when idle; refuses mid-turn and while disconnected with a note naming the alternative
    • The ^Q strip stands down while the panel owns the queue (no double surface)

The turn-end / post-reconnect drain (sendQueued) now clamps the panel selection like every other queue mutation. F1 help card, README, and /new's drain-gate note teach the new surface.

Release gate

Tests

  • 10 new tests: strip one-line rule (rows + tail preview), panel open/close, empty state, reorder, gated delete, send-now (idle/busy/disconnected), drain-vs-panel clamp, panel-row one-line rule.
  • Full gates: gofmt, go vet, golangci-lint 0 issues, make test (-race) all packages green, including the TestE2EAllCommands contract case for /queue.

Queued prompts now collapse to a single strip row regardless of how
many lines they span — collapse() before truncate() in both the strip
rows and the overflow tail preview keeps the rendered rows in sync with
queueStripHeight's layout and mouse-math budget.

/queue opens a dedicated full-area manager over the same queue state:
jk/updown select, hl/leftright reorder (priority — head sends first),
d→y gated delete, and enter sends the selected prompt ahead of the
queue when idle (refused mid-turn and while disconnected). The strip
stands down while the panel owns the queue, and the turn-end /
post-reconnect drain now clamps the panel selection like every other
queue mutation. F1, README, and the /new drain-gate note teach the new
surface.
@jkyberneees
jkyberneees merged commit fa7f04b into main Sep 3, 2026
7 checks passed
@jkyberneees
jkyberneees deleted the feat/queue-panel branch September 3, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant