From 31092149002eb69111f4b94a16f875e101c61432 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:57:48 -0600 Subject: feat(desktop): auto-accept edits toggle --- packages/app/src/pages/directory-layout.tsx | 21 ++++++++++++--------- packages/app/src/pages/session.tsx | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'packages/app/src/pages') diff --git a/packages/app/src/pages/directory-layout.tsx b/packages/app/src/pages/directory-layout.tsx index 04f90bdcb..473dcd8e1 100644 --- a/packages/app/src/pages/directory-layout.tsx +++ b/packages/app/src/pages/directory-layout.tsx @@ -3,6 +3,7 @@ import { useParams } from "@solidjs/router" import { SDKProvider, useSDK } from "@/context/sdk" import { SyncProvider, useSync } from "@/context/sync" import { LocalProvider } from "@/context/local" +import { PermissionProvider } from "@/context/permission" import { base64Decode } from "@opencode-ai/util/encode" import { DataProvider } from "@opencode-ai/ui/context" import { iife } from "@opencode-ai/util/iife" @@ -19,16 +20,18 @@ export default function Layout(props: ParentProps) { {iife(() => { const sync = useSync() const sdk = useSDK() + const respond = (input: { + sessionID: string + permissionID: string + response: "once" | "always" | "reject" + }) => sdk.client.permission.respond(input) + return ( - { - sdk.client.permission.respond(input) - }} - > - {props.children} - + + + {props.children} + + ) })} diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 6bc39daca..7be5552de 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -60,6 +60,8 @@ import { ConstrainDragYAxis, getDraggableId } from "@/utils/solid-dnd" import { StatusBar } from "@/components/status-bar" import { SessionMcpIndicator } from "@/components/session-mcp-indicator" import { SessionLspIndicator } from "@/components/session-lsp-indicator" +import { usePermission } from "@/context/permission" +import { showToast } from "@opencode-ai/ui/toast" export default function Page() { const layout = useLayout() @@ -74,6 +76,7 @@ export default function Page() { const sdk = useSDK() const prompt = usePrompt() + const permission = usePermission() const sessionKey = createMemo(() => `${params.dir}${params.id ? "/" + params.id : ""}`) const tabs = createMemo(() => layout.tabs(sessionKey())) const info = createMemo(() => (params.id ? sync.session.get(params.id) : undefined)) @@ -312,6 +315,22 @@ export default function Page() { keybind: "shift+mod+.", onSelect: () => local.agent.move(-1), }, + { + id: "permissions.autoaccept", + title: params.id && permission.isAutoAccepting(params.id) ? "Stop auto-accepting edits" : "Auto-accept edits", + category: "Permissions", + disabled: !params.id, + onSelect: () => { + if (!params.id) return + permission.toggleAutoAccept(params.id) + showToast({ + title: permission.isAutoAccepting(params.id) ? "Auto-accepting edits" : "Stopped auto-accepting edits", + description: permission.isAutoAccepting(params.id) + ? "Edit and write permissions will be automatically approved" + : "Edit and write permissions will require approval", + }) + }, + }, { id: "session.undo", title: "Undo", -- cgit v1.2.3