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