From 193d171acbccc89ab5ef770af7b7ac2b27bb6426 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Mon, 16 Mar 2026 08:07:00 -0500 Subject: [PATCH] =?UTF-8?q?fix(cli):=20slash=20command=20UX=20=E2=80=94=20?= =?UTF-8?q?ignore=20bare=20/,=20fix=20gateway=20connection=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Submitting bare "/" no longer shows "Unknown command format: /" — input is ignored silently so autocomplete can guide discovery instead - Gateway command handler no longer requires a conversationId before emitting — the socket connection check alone is sufficient; missing conversationId caused false "Not connected" errors on fresh sessions Co-Authored-By: Claude Sonnet 4.6 --- packages/cli/src/tui/app.tsx | 4 ++-- packages/cli/src/tui/components/input-bar.tsx | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/tui/app.tsx b/packages/cli/src/tui/app.tsx index 66e3d73..21c0803 100644 --- a/packages/cli/src/tui/app.tsx +++ b/packages/cli/src/tui/app.tsx @@ -117,12 +117,12 @@ export function TuiApp({ const handleGatewayCommand = useCallback( (parsed: ParsedCommand) => { - if (!socket.socketRef.current?.connected || !socket.conversationId) { + if (!socket.socketRef.current?.connected) { socket.addSystemMessage('Not connected to gateway. Command cannot be executed.'); return; } socket.socketRef.current.emit('command:execute', { - conversationId: socket.conversationId, + conversationId: socket.conversationId ?? '', command: parsed.command, args: parsed.args ?? undefined, }); diff --git a/packages/cli/src/tui/components/input-bar.tsx b/packages/cli/src/tui/components/input-bar.tsx index 15e72ba..1190f2a 100644 --- a/packages/cli/src/tui/components/input-bar.tsx +++ b/packages/cli/src/tui/components/input-bar.tsx @@ -59,8 +59,7 @@ export function InputBar({ if (trimmed.startsWith('/')) { const parsed = parseSlashCommand(trimmed); if (!parsed) { - onSystemMessage?.(`Unknown command format: ${trimmed}`); - setInput(''); + // Bare "/" or malformed — ignore silently (autocomplete handles discovery) return; } const def = commandRegistry.find(parsed.command);