summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-10-31 19:47:08 -0400
committerDax Raad <[email protected]>2025-10-31 19:47:08 -0400
commit9beb0f851281a2a5740b4c2b59602504ed892bd9 (patch)
tree7942a6fe3980ceb6ea9d3a2c0d26b1b216fb9fea
parentd4cb47eadc515646f9f42679100a075ff9c9d458 (diff)
downloadopencode-9beb0f851281a2a5740b4c2b59602504ed892bd9.tar.gz
opencode-9beb0f851281a2a5740b4c2b59602504ed892bd9.zip
tui: improve keyboard navigation and MCP server status display
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx4
3 files changed, 4 insertions, 4 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
index 0dfefe422..ce9bcde42 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
@@ -78,7 +78,7 @@ export function CommandProvider(props: ParentProps) {
const keybind = useKeybind()
useKeyboard((evt) => {
- if (keybind.match("command_list", evt)) {
+ if (keybind.match("command_list", evt) && dialog.stack.length === 0) {
evt.preventDefault()
dialog.replace(() => <DialogCommand options={value.options} />)
return
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx
index 732aa4573..c2faddafa 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx
@@ -15,7 +15,7 @@ export function DialogStatus() {
<text attributes={TextAttributes.BOLD}>Status</text>
<text fg={theme.textMuted}>esc</text>
</box>
- <Show when={Object.keys(sync.data.mcp).length > 0}>
+ <Show when={Object.keys(sync.data.mcp).length > 0} fallback={<text>No MCP Servers</text>}>
<box>
<text>{Object.keys(sync.data.mcp).length} MCP Servers</text>
<For each={Object.entries(sync.data.mcp)}>
diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
index 3c25c4a87..ee4888106 100644
--- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
+++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
@@ -123,8 +123,8 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
const keybind = useKeybind()
useKeyboard((evt) => {
- if (evt.name === "up") move(-1)
- if (evt.name === "down") move(1)
+ if (evt.name === "up" || (evt.ctrl && evt.name === "p")) move(-1)
+ if (evt.name === "down" || (evt.ctrl && evt.name === "n")) move(1)
if (evt.name === "pageup") move(-10)
if (evt.name === "pagedown") move(10)
if (evt.name === "return") {