@@ -8,7 +8,9 @@ import { TextField } from "@opencode-ai/ui/text-field"
88import { Tooltip } from "@opencode-ai/ui/tooltip"
99import { useTheme , type ColorScheme } from "@opencode-ai/ui/theme/context"
1010import { showToast } from "@opencode-ai/ui/toast"
11+ import { useParams } from "@solidjs/router"
1112import { useLanguage } from "@/context/language"
13+ import { usePermission } from "@/context/permission"
1214import { usePlatform } from "@/context/platform"
1315import {
1416 monoDefault ,
@@ -19,6 +21,7 @@ import {
1921 sansInput ,
2022 useSettings ,
2123} from "@/context/settings"
24+ import { decode64 } from "@/utils/base64"
2225import { playSoundById , SOUND_OPTIONS } from "@/utils/sound"
2326import { Link } from "./link"
2427import { SettingsList } from "./settings-list"
@@ -64,7 +67,9 @@ const playDemoSound = (id: string | undefined) => {
6467export const SettingsGeneral : Component = ( ) => {
6568 const theme = useTheme ( )
6669 const language = useLanguage ( )
70+ const permission = usePermission ( )
6771 const platform = usePlatform ( )
72+ const params = useParams ( )
6873 const settings = useSettings ( )
6974
7075 onMount ( ( ) => {
@@ -76,6 +81,31 @@ export const SettingsGeneral: Component = () => {
7681 } )
7782
7883 const linux = createMemo ( ( ) => platform . platform === "desktop" && platform . os === "linux" )
84+ const dir = createMemo ( ( ) => decode64 ( params . dir ) )
85+ const accepting = createMemo ( ( ) => {
86+ const value = dir ( )
87+ if ( ! value ) return false
88+ if ( ! params . id ) return permission . isAutoAcceptingDirectory ( value )
89+ return permission . isAutoAccepting ( params . id , value )
90+ } )
91+
92+ const toggleAccept = ( checked : boolean ) => {
93+ const value = dir ( )
94+ if ( ! value ) return
95+
96+ if ( ! params . id ) {
97+ if ( permission . isAutoAcceptingDirectory ( value ) === checked ) return
98+ permission . toggleAutoAcceptDirectory ( value )
99+ return
100+ }
101+
102+ if ( checked ) {
103+ permission . enableAutoAccept ( params . id , value )
104+ return
105+ }
106+
107+ permission . disableAutoAccept ( params . id , value )
108+ }
79109
80110 const check = ( ) => {
81111 if ( ! platform . checkUpdate ) return
@@ -201,6 +231,15 @@ export const SettingsGeneral: Component = () => {
201231 />
202232 </ SettingsRow >
203233
234+ < SettingsRow
235+ title = { language . t ( "command.permissions.autoaccept.enable" ) }
236+ description = { language . t ( "toast.permissions.autoaccept.on.description" ) }
237+ >
238+ < div data-action = "settings-auto-accept-permissions" >
239+ < Switch checked = { accepting ( ) } disabled = { ! dir ( ) } onChange = { toggleAccept } />
240+ </ div >
241+ </ SettingsRow >
242+
204243 < SettingsRow
205244 title = { language . t ( "settings.general.row.reasoningSummaries.title" ) }
206245 description = { language . t ( "settings.general.row.reasoningSummaries.description" ) }
0 commit comments