From e2a162db441f47e5cc55d2cbc3b98671fd3999e2 Mon Sep 17 00:00:00 2001 From: Jay <53023+jayair@users.noreply.github.com> Date: Sat, 4 Jul 2026 18:29:56 +0000 Subject: [PATCH 1/3] fix(app): avoid shortcut settings flash --- packages/app/src/components/settings-keybinds.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/app/src/components/settings-keybinds.tsx b/packages/app/src/components/settings-keybinds.tsx index 98f6c9ffa04c..3e3db45bcf5f 100644 --- a/packages/app/src/components/settings-keybinds.tsx +++ b/packages/app/src/components/settings-keybinds.tsx @@ -5,24 +5,18 @@ import { Button } from "@opencode-ai/ui/button" import { Icon } from "@opencode-ai/ui/icon" import { IconButton } from "@opencode-ai/ui/icon-button" import { TextField } from "@opencode-ai/ui/text-field" +import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" +import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { showToast } from "@/utils/toast" import fuzzysort from "fuzzysort" import { formatKeybind, parseKeybind, useCommand } from "@/context/command" import { useLanguage } from "@/context/language" import { useSettings } from "@/context/settings" import { SettingsList } from "./settings-list" +import { SettingsListV2 } from "./settings-v2/parts/list" -const ButtonV2 = lazy(() => import("@opencode-ai/ui/v2/button-v2").then((module) => ({ default: module.ButtonV2 }))) const IconV2 = lazy(() => import("@opencode-ai/ui/v2/icon").then((module) => ({ default: module.Icon }))) -const IconButtonV2 = lazy(() => - import("@opencode-ai/ui/v2/icon-button-v2").then((module) => ({ default: module.IconButtonV2 })), -) -const TextInputV2 = lazy(() => - import("@opencode-ai/ui/v2/text-input-v2").then((module) => ({ default: module.TextInputV2 })), -) -const SettingsListV2 = lazy(() => - import("./settings-v2/parts/list").then((module) => ({ default: module.SettingsListV2 })), -) const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) const PALETTE_ID = "command.palette" From 86e4358319e10097124ce704d4c70c409d23f167 Mon Sep 17 00:00:00 2001 From: Jay <53023+jayair@users.noreply.github.com> Date: Mon, 6 Jul 2026 02:13:11 +0000 Subject: [PATCH 2/3] fix(app): transition settings tabs --- packages/app/src/components/dialog-settings.tsx | 11 +++++++++-- packages/app/src/components/settings-keybinds.tsx | 14 ++++++++++---- .../components/settings-v2/dialog-settings-v2.tsx | 11 +++++++++-- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/app/src/components/dialog-settings.tsx b/packages/app/src/components/dialog-settings.tsx index 20d71f4bfd44..f00c2226f58e 100644 --- a/packages/app/src/components/dialog-settings.tsx +++ b/packages/app/src/components/dialog-settings.tsx @@ -1,4 +1,4 @@ -import { Component } from "solid-js" +import { Component, createSignal, startTransition } from "solid-js" import { Dialog } from "@opencode-ai/ui/dialog" import { Tabs } from "@opencode-ai/ui/tabs" import { Icon } from "@opencode-ai/ui/icon" @@ -13,10 +13,17 @@ import { SettingsServers } from "./settings-servers" export const DialogSettings: Component = () => { const language = useLanguage() const platform = usePlatform() + const [tab, setTab] = createSignal("general") return ( - + void startTransition(() => setTab(value))} + class="h-full settings-dialog" + >
diff --git a/packages/app/src/components/settings-keybinds.tsx b/packages/app/src/components/settings-keybinds.tsx index 3e3db45bcf5f..98f6c9ffa04c 100644 --- a/packages/app/src/components/settings-keybinds.tsx +++ b/packages/app/src/components/settings-keybinds.tsx @@ -5,18 +5,24 @@ import { Button } from "@opencode-ai/ui/button" import { Icon } from "@opencode-ai/ui/icon" import { IconButton } from "@opencode-ai/ui/icon-button" import { TextField } from "@opencode-ai/ui/text-field" -import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" -import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" -import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { showToast } from "@/utils/toast" import fuzzysort from "fuzzysort" import { formatKeybind, parseKeybind, useCommand } from "@/context/command" import { useLanguage } from "@/context/language" import { useSettings } from "@/context/settings" import { SettingsList } from "./settings-list" -import { SettingsListV2 } from "./settings-v2/parts/list" +const ButtonV2 = lazy(() => import("@opencode-ai/ui/v2/button-v2").then((module) => ({ default: module.ButtonV2 }))) const IconV2 = lazy(() => import("@opencode-ai/ui/v2/icon").then((module) => ({ default: module.Icon }))) +const IconButtonV2 = lazy(() => + import("@opencode-ai/ui/v2/icon-button-v2").then((module) => ({ default: module.IconButtonV2 })), +) +const TextInputV2 = lazy(() => + import("@opencode-ai/ui/v2/text-input-v2").then((module) => ({ default: module.TextInputV2 })), +) +const SettingsListV2 = lazy(() => + import("./settings-v2/parts/list").then((module) => ({ default: module.SettingsListV2 })), +) const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) const PALETTE_ID = "command.palette" diff --git a/packages/app/src/components/settings-v2/dialog-settings-v2.tsx b/packages/app/src/components/settings-v2/dialog-settings-v2.tsx index a93a10dcb2f6..c43e4503cc0b 100644 --- a/packages/app/src/components/settings-v2/dialog-settings-v2.tsx +++ b/packages/app/src/components/settings-v2/dialog-settings-v2.tsx @@ -1,4 +1,4 @@ -import { Component } from "solid-js" +import { Component, createSignal, startTransition } from "solid-js" import { Dialog } from "@opencode-ai/ui/v2/dialog-v2" import { TabsV2 } from "@opencode-ai/ui/v2/tabs-v2" import { Icon } from "@opencode-ai/ui/icon" @@ -16,10 +16,17 @@ export const DialogSettings: Component<{ }> = (props) => { const language = useLanguage() const platform = usePlatform() + const [tab, setTab] = createSignal("general") return ( - + void startTransition(() => setTab(value))} + class="settings-v2" + >
From c6874cfb1d57137421b651fc3c9bf04981e9ffd0 Mon Sep 17 00:00:00 2001 From: Jay <53023+jayair@users.noreply.github.com> Date: Mon, 6 Jul 2026 07:31:33 +0000 Subject: [PATCH 3/3] fix(app): eagerly load shortcut controls --- packages/app/src/components/settings-keybinds.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/app/src/components/settings-keybinds.tsx b/packages/app/src/components/settings-keybinds.tsx index 98f6c9ffa04c..3e3db45bcf5f 100644 --- a/packages/app/src/components/settings-keybinds.tsx +++ b/packages/app/src/components/settings-keybinds.tsx @@ -5,24 +5,18 @@ import { Button } from "@opencode-ai/ui/button" import { Icon } from "@opencode-ai/ui/icon" import { IconButton } from "@opencode-ai/ui/icon-button" import { TextField } from "@opencode-ai/ui/text-field" +import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" +import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { showToast } from "@/utils/toast" import fuzzysort from "fuzzysort" import { formatKeybind, parseKeybind, useCommand } from "@/context/command" import { useLanguage } from "@/context/language" import { useSettings } from "@/context/settings" import { SettingsList } from "./settings-list" +import { SettingsListV2 } from "./settings-v2/parts/list" -const ButtonV2 = lazy(() => import("@opencode-ai/ui/v2/button-v2").then((module) => ({ default: module.ButtonV2 }))) const IconV2 = lazy(() => import("@opencode-ai/ui/v2/icon").then((module) => ({ default: module.Icon }))) -const IconButtonV2 = lazy(() => - import("@opencode-ai/ui/v2/icon-button-v2").then((module) => ({ default: module.IconButtonV2 })), -) -const TextInputV2 = lazy(() => - import("@opencode-ai/ui/v2/text-input-v2").then((module) => ({ default: module.TextInputV2 })), -) -const SettingsListV2 = lazy(() => - import("./settings-v2/parts/list").then((module) => ({ default: module.SettingsListV2 })), -) const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) const PALETTE_ID = "command.palette"