From 0b4eb2a2ff7dd5f795c44e7a31d5765ddc377588 Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Sat, 23 May 2026 14:09:49 +1000 Subject: [PATCH] refactor(app): split shared changes from desktop v2 --- .../app/src/components/dialog-select-mcp.tsx | 5 +- packages/app/src/components/prompt-input.tsx | 10 +- .../src/components/status-popover-body.tsx | 8 +- packages/app/src/context/global-sync.tsx | 18 +- .../context/global-sync/child-store.test.ts | 2 - .../src/context/global-sync/child-store.ts | 7 - .../src/context/global-sync/event-reducer.ts | 6 - packages/app/src/context/layout.tsx | 34 ++- packages/app/src/i18n/en.ts | 1 - packages/app/src/pages/home.tsx | 19 +- packages/opencode/src/cli/cmd/mcp.ts | 3 - packages/opencode/src/mcp/index.ts | 195 +++++------------- packages/opencode/test/mcp/lifecycle.test.ts | 119 +---------- packages/sdk/js/src/v2/gen/types.gen.ts | 74 +++---- 14 files changed, 136 insertions(+), 365 deletions(-) diff --git a/packages/app/src/components/dialog-select-mcp.tsx b/packages/app/src/components/dialog-select-mcp.tsx index f6046fb625..5a28173ead 100644 --- a/packages/app/src/components/dialog-select-mcp.tsx +++ b/packages/app/src/components/dialog-select-mcp.tsx @@ -11,7 +11,6 @@ import { pathKey } from "@/utils/path-key" const statusLabels = { connected: "mcp.status.connected", - connecting: "mcp.status.connecting", failed: "mcp.status.failed", needs_auth: "mcp.status.needs_auth", needs_client_registration: "mcp.status.needs_client_registration", @@ -80,7 +79,6 @@ export const DialogSelectMcp: Component = () => { if (s?.status === "failed" || s?.status === "needs_client_registration") return s.error } const enabled = () => status() === "connected" - const connecting = () => status() === "connecting" return (
@@ -97,9 +95,8 @@ export const DialogSelectMcp: Component = () => {
e.stopPropagation()}> { - if (connecting()) return if (toggle.isPending) return toggle.mutate(i.name) }} diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 8b43def99e..4804a6073f 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -77,6 +77,8 @@ import { pathKey } from "@/utils/path-key" import { getFilename } from "@opencode-ai/core/util/path" import { displayName } from "@/pages/layout/helpers" +const USE_V2_INPUT = import.meta.env.VITE_OPENCODE_CHANNEL !== "prod" + interface PromptInputProps { class?: string variant?: "dock" | "new-session" @@ -1129,9 +1131,9 @@ export const PromptInput: Component = (props) => { }, setMode: (mode) => setStore("mode", mode), setPopover: (popover) => setStore("popover", popover), - newSessionProjectDirectory, - newSessionWorktree, - newSessionWorktreeBranch: () => picker.worktreeName, + newSessionProjectDirectory: USE_V2_INPUT ? newSessionProjectDirectory : undefined, + newSessionWorktree: USE_V2_INPUT ? newSessionWorktree : () => props.newSessionWorktree, + newSessionWorktreeBranch: USE_V2_INPUT ? () => picker.worktreeName : undefined, onNewSessionWorktreeReset: props.onNewSessionWorktreeReset, shouldQueue: props.shouldQueue, onQueue: props.onQueue, @@ -1588,8 +1590,6 @@ export const PromptInput: Component = (props) => { onPress: () => command.trigger("project.open"), })) - const USE_V2_INPUT = import.meta.env.VITE_OPENCODE_CHANNEL !== "prod" - return (
{(promptReady(), null)} diff --git a/packages/app/src/components/status-popover-body.tsx b/packages/app/src/components/status-popover-body.tsx index f5a47608c3..209c0a1088 100644 --- a/packages/app/src/components/status-popover-body.tsx +++ b/packages/app/src/components/status-popover-body.tsx @@ -451,17 +451,15 @@ export function StatusPopoverBody(props: { shown: Accessor }) { {(name) => { const status = () => mcpStatus(name) const enabled = () => status() === "connected" - const connecting = () => status() === "connecting" return (