summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-11-27 13:42:26 -0500
committerDax Raad <[email protected]>2025-11-27 13:42:36 -0500
commita0b689c1404542c574abeda60cc05b985a7861ba (patch)
tree3729de216419934da3359e8029a1c4d927c2e29a
parentea52ed41beccc7f516de5d562663f17ccd9a2e01 (diff)
downloadopencode-a0b689c1404542c574abeda60cc05b985a7861ba.tar.gz
opencode-a0b689c1404542c574abeda60cc05b985a7861ba.zip
tui: hide favorite keybind in model dialog when disconnected to prevent errors
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx5
-rw-r--r--packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx4
2 files changed, 6 insertions, 3 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
index ba1dc70b2..bfb27d0ca 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
@@ -21,7 +21,7 @@ export function DialogModel() {
const options = createMemo(() => {
const query = ref()?.filter
- const favorites = local.model.favorite()
+ const favorites = connected() ? local.model.favorite() : []
const recents = local.model.recent()
const currentModel = local.model.current()
@@ -67,7 +67,7 @@ export function DialogModel() {
modelID: model.id,
},
title: model.name ?? item.modelID,
- description: `${provider.name} ★`,
+ description: provider.name,
category: "Favorites",
disabled: provider.id === "opencode" && model.id.includes("-nano"),
footer: model.cost?.input === 0 && provider.id === "opencode" ? "Free" : undefined,
@@ -204,6 +204,7 @@ export function DialogModel() {
{
keybind: Keybind.parse("ctrl+f")[0],
title: "Favorite",
+ disabled: !connected(),
onTrigger: (option) => {
local.model.toggleFavorite(option.value as { providerID: string; modelID: string })
},
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 b8d2a5b14..ca86a1986 100644
--- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
+++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
@@ -21,6 +21,7 @@ export interface DialogSelectProps<T> {
keybind?: {
keybind: Keybind.Info
title: string
+ disabled?: boolean
onTrigger: (option: DialogSelectOption<T>) => void
}[]
current?: T
@@ -150,6 +151,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
}
for (const item of props.keybind ?? []) {
+ if (item.disabled) continue
if (Keybind.match(item.keybind, keybind.parse(evt))) {
const s = selected()
if (s) {
@@ -254,7 +256,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
</For>
</scrollbox>
<box paddingRight={2} paddingLeft={4} flexDirection="row" paddingBottom={1} gap={2}>
- <For each={props.keybind ?? []}>
+ <For each={(props.keybind ?? []).filter((x) => !x.disabled)}>
{(item) => (
<text>
<span style={{ fg: theme.text }}>