From 238ce304a907a388296a0c6eabbbef4952e33e18 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Mon, 17 Aug 2026 12:33:18 -0400 Subject: [PATCH] fix(tui): expose queued prompt shortcut (#43083) --- packages/tui/src/component/prompt/index.tsx | 1 - packages/tui/src/config/keybind.ts | 2 +- packages/tui/src/config/v1/keybind.ts | 2 +- packages/tui/src/mini/footer.prompt.tsx | 1 + packages/tui/src/mini/footer.view.tsx | 2 +- packages/tui/src/routes/session/index.tsx | 2 +- packages/tui/test/config-v2.test.tsx | 1 + packages/tui/test/mini/footer.view.test.tsx | 6 ++++-- packages/tui/test/mini/runtime.boot.test.ts | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx index e1481ab74c6..233ccb0e17c 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -452,7 +452,6 @@ export function Prompt(props: PromptProps) { title: "Queue prompt", name: "prompt.queue", category: "Prompt", - palette: undefined, run: async (_input: string | undefined, event?: KeyEvent) => { event?.preventDefault() event?.stopPropagation() diff --git a/packages/tui/src/config/keybind.ts b/packages/tui/src/config/keybind.ts index 2864ef0b21e..e7cc4547737 100644 --- a/packages/tui/src/config/keybind.ts +++ b/packages/tui/src/config/keybind.ts @@ -178,7 +178,7 @@ export const Definitions = { "session.toggle.thinking": keybind("none", "Toggle thinking blocks visibility"), "prompt.submit": keybind("none", "Submit prompt"), - "prompt.queue": keybind("alt+return", "Queue prompt"), + "prompt.queue": keybind("return", "Queue prompt"), "prompt.editor_context.clear": keybind("none", "Clear editor context"), "prompt.images.view": keybind("i", "View image attachments"), "prompt.skills": keybind("none", "Open skill selector"), diff --git a/packages/tui/src/config/v1/keybind.ts b/packages/tui/src/config/v1/keybind.ts index 94560876877..cec2467e6c2 100644 --- a/packages/tui/src/config/v1/keybind.ts +++ b/packages/tui/src/config/v1/keybind.ts @@ -163,7 +163,7 @@ export const Definitions = { display_thinking: keybind("none", "Toggle thinking blocks visibility"), prompt_submit: keybind("none", "Submit prompt"), - prompt_queue: keybind("alt+return", "Queue prompt"), + prompt_queue: keybind("return", "Queue prompt"), prompt_editor_context_clear: keybind("none", "Clear editor context"), prompt_images_view: keybind("i", "View image attachments"), prompt_skills: keybind("none", "Open skill selector"), diff --git a/packages/tui/src/mini/footer.prompt.tsx b/packages/tui/src/mini/footer.prompt.tsx index c37d74382c6..488cbf68597 100644 --- a/packages/tui/src/mini/footer.prompt.tsx +++ b/packages/tui/src/mini/footer.prompt.tsx @@ -1050,6 +1050,7 @@ export function createPromptState(input: PromptInput): PromptState { id: "prompt.queue", title: "Queue prompt", group: "Prompt", + palette: true, run() { syncDraft() submitPrompt(promptCopy(draft), "queue") diff --git a/packages/tui/src/mini/footer.view.tsx b/packages/tui/src/mini/footer.view.tsx index 025f52b432a..efb333e6b17 100644 --- a/packages/tui/src/mini/footer.view.tsx +++ b/packages/tui/src/mini/footer.view.tsx @@ -595,7 +595,7 @@ export function RunFooterView(props: RunFooterViewProps) { { id: "session.queued_prompts", title: "View queued prompts", - group: "Session", + group: "Prompt", run: openQueuedMenu, }, ], diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index 1454749dcd1..ed2fb307b2d 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -1062,7 +1062,7 @@ export function Session(props: { verticalTabsWidth: number }) { { title: "View queued prompts", id: "session.queued_prompts", - group: "Session", + group: "Prompt", enabled: queuedPrompts().length > 0, run: openQueuedPrompts, }, diff --git a/packages/tui/test/config-v2.test.tsx b/packages/tui/test/config-v2.test.tsx index a0d5f15ee29..bea94cb14b5 100644 --- a/packages/tui/test/config-v2.test.tsx +++ b/packages/tui/test/config-v2.test.tsx @@ -107,6 +107,7 @@ test("preserves migrated v1 keybind defaults", () => { const pairs = [ ["app.exit", "app_exit"], ["prompt.paste", "input_paste"], + ["prompt.queue", "prompt_queue"], ["session.delete", "session_delete"], ["session.list", "session_list"], ["agent.list", "agent_list"], diff --git a/packages/tui/test/mini/footer.view.test.tsx b/packages/tui/test/mini/footer.view.test.tsx index f37aa07b331..acef1c999cb 100644 --- a/packages/tui/test/mini/footer.view.test.tsx +++ b/packages/tui/test/mini/footer.view.test.tsx @@ -981,7 +981,8 @@ test("direct footer steers the oldest queued prompt from an empty composer", asy try { await app.renderOnce() - app.mockInput.pressEnter({ meta: true }) + app.mockInput.pressKey("x", { ctrl: true }) + app.mockInput.pressEnter() await Bun.sleep(0) expect(steered).toEqual([]) app.mockInput.pressEnter() @@ -1034,7 +1035,8 @@ test("direct footer rejects local commands submitted with the queue shortcut", a try { await app.renderOnce() await app.mockInput.typeText("/settings ") - app.mockInput.pressEnter({ meta: true }) + app.mockInput.pressKey("x", { ctrl: true }) + app.mockInput.pressEnter() await Bun.sleep(0) expect(submitted).toEqual([]) expect(statuses).toContain("this prompt cannot be queued") diff --git a/packages/tui/test/mini/runtime.boot.test.ts b/packages/tui/test/mini/runtime.boot.test.ts index 5a08ce02bf3..8f5c37794d0 100644 --- a/packages/tui/test/mini/runtime.boot.test.ts +++ b/packages/tui/test/mini/runtime.boot.test.ts @@ -22,7 +22,7 @@ describe("run runtime boot", () => { expect(result.keybinds.get("prompt.clear")?.[0]?.key).toBe("ctrl+c") expect(result.keybinds.get("input.submit")?.[0]?.key).toBe("return") expect(result.keybinds.get("input.newline")?.[0]?.key).toBe("shift+return,ctrl+return,ctrl+j") - expect(result.keybinds.get("prompt.queue")?.[0]?.key).toBe("alt+return") + expect(result.keybinds.get("prompt.queue")?.[0]?.key).toBe("return") }) test("preserves shared config while resolving independent Mini defaults", async () => {