diff options
| author | Dax Raad <[email protected]> | 2025-11-27 13:42:26 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-11-27 13:42:36 -0500 |
| commit | a0b689c1404542c574abeda60cc05b985a7861ba (patch) | |
| tree | 3729de216419934da3359e8029a1c4d927c2e29a | |
| parent | ea52ed41beccc7f516de5d562663f17ccd9a2e01 (diff) | |
| download | opencode-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.tsx | 5 | ||||
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx | 4 |
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 }}> |
