@@ -16,6 +16,7 @@ import {
1616import chalk from 'chalk' ;
1717import {
1818 permissionModeTitle ,
19+ permissionModeShortTitle ,
1920 permissionModeFromString ,
2021 toExternalPermissionMode ,
2122 isExternalPermissionMode ,
@@ -153,7 +154,7 @@ export function Config({
153154 const initialLanguage = React . useRef ( currentLanguage ) ;
154155 const [ selectedIndex , setSelectedIndex ] = useState ( 0 ) ;
155156 const [ scrollOffset , setScrollOffset ] = useState ( 0 ) ;
156- const [ isSearchMode , setIsSearchMode ] = useState ( true ) ;
157+ const [ isSearchMode , setIsSearchMode ] = useState ( false ) ;
157158 const isTerminalFocused = useTerminalFocus ( ) ;
158159 const { rows } = useTerminalSize ( ) ;
159160 // contentHeight is set by Settings.tsx (same value passed to Tabs to fix
@@ -167,6 +168,9 @@ export function Config({
167168 const thinkingEnabled = useAppState ( s => s . thinkingEnabled ) ;
168169 const isFastMode = useAppState ( s => ( isFastModeEnabled ( ) ? s . fastMode : false ) ) ;
169170 const promptSuggestionEnabled = useAppState ( s => s . promptSuggestionEnabled ) ;
171+ const currentDefaultPermissionMode = permissionModeFromString (
172+ settingsData ?. permissions ?. defaultMode ?? 'default' ,
173+ ) ;
170174 // Show auto in the default-mode dropdown when the user has opted in OR the
171175 // config is fully 'enabled' — even if currently circuit-broken ('disabled'),
172176 // an opted-in user should still see it in settings (it's a temporary state).
@@ -558,27 +562,23 @@ export function Config({
558562 {
559563 id : 'defaultPermissionMode' ,
560564 label : 'Default permission mode' ,
561- value : settingsData ?. permissions ?. defaultMode || 'default' ,
565+ value : currentDefaultPermissionMode ,
562566 options : ( ( ) => {
563567 const priorityOrder : PermissionMode [ ] = [ 'default' , 'plan' ] ;
564- const allModes : readonly PermissionMode [ ] = feature ( 'TRANSCRIPT_CLASSIFIER' )
565- ? PERMISSION_MODES
566- : EXTERNAL_PERMISSION_MODES ;
567- const excluded : PermissionMode [ ] = [ 'bypassPermissions' ] ;
568- if ( feature ( 'TRANSCRIPT_CLASSIFIER' ) && ! showAutoInDefaultModePicker ) {
569- excluded . push ( 'auto' ) ;
570- }
571- return [ ...priorityOrder , ...allModes . filter ( m => ! priorityOrder . includes ( m ) && ! excluded . includes ( m ) ) ] ;
568+ return [ ...priorityOrder , ...PERMISSION_MODES . filter ( m => ! priorityOrder . includes ( m ) ) ] ;
572569 } ) ( ) ,
573570 type : 'enum' as const ,
574571 onChange ( mode : string ) {
575572 const parsedMode = permissionModeFromString ( mode ) ;
576- // Internal modes (e.g. auto) are stored directly
577- const validatedMode = isExternalPermissionMode ( parsedMode ) ? toExternalPermissionMode ( parsedMode ) : parsedMode ;
573+ // auto is an internal-only mode — store it directly, don't convert
574+ // to its external mapping ('default') which would make it invisible.
575+ const validatedMode = parsedMode === 'auto'
576+ ? parsedMode
577+ : ( isExternalPermissionMode ( parsedMode ) ? toExternalPermissionMode ( parsedMode ) : parsedMode ) ;
578578 const result = updateSettingsForSource ( 'userSettings' , {
579579 permissions : {
580580 ...settingsData ?. permissions ,
581- defaultMode : validatedMode as ExternalPermissionMode ,
581+ defaultMode : validatedMode as ( typeof PERMISSION_MODES ) [ number ] ,
582582 } ,
583583 } ) ;
584584
@@ -1548,6 +1548,8 @@ export function Config({
15481548 'scroll:lineUp' : ( ) => moveSelection ( - 1 ) ,
15491549 'scroll:lineDown' : ( ) => moveSelection ( 1 ) ,
15501550 'select:accept' : toggleSetting ,
1551+ 'select:previousValue' : ( ) => toggleSetting ( ) ,
1552+ 'select:nextValue' : ( ) => toggleSetting ( ) ,
15511553 'settings:search' : ( ) => {
15521554 setIsSearchMode ( true ) ;
15531555 setSearchQuery ( '' ) ;
@@ -1936,13 +1938,13 @@ export function Config({
19361938
19371939 return (
19381940 < React . Fragment key = { setting . id } >
1939- < Box >
1941+ < Box width = "100%" >
19401942 < Box width = { 44 } >
19411943 < Text color = { isSelected ? 'suggestion' : undefined } >
19421944 { isSelected ? figures . pointer : ' ' } { setting . label }
19431945 </ Text >
19441946 </ Box >
1945- < Box key = { isSelected ? 'selected' : 'unselected' } >
1947+ < Box flexGrow = { 1 } >
19461948 { setting . type === 'boolean' ? (
19471949 < >
19481950 < Text color = { isSelected ? 'suggestion' : undefined } > { setting . value . toString ( ) } </ Text >
@@ -1963,7 +1965,7 @@ export function Config({
19631965 </ Text >
19641966 ) : setting . id === 'defaultPermissionMode' ? (
19651967 < Text color = { isSelected ? 'suggestion' : undefined } >
1966- { permissionModeTitle ( setting . value as PermissionMode ) }
1968+ { permissionModeShortTitle ( setting . value as PermissionMode ) }
19671969 </ Text >
19681970 ) : setting . id === 'autoUpdatesChannel' && autoUpdaterDisabledReason ? (
19691971 < Box flexDirection = "column" >
0 commit comments