@@ -197,17 +197,13 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
197197 setCachedState ( ( prevCachedState ) => ( { ...prevCachedState , ...extensionState } ) )
198198 prevApiConfigName . current = currentApiConfigName
199199 setChangeDetected ( false )
200- // Reset user modified fields when loading new configuration
201- setUserModifiedFields ( new Set ( ) )
202200 } , [ currentApiConfigName , extensionState , isChangeDetected ] )
203201
204202 // Bust the cache when settings are imported.
205203 useEffect ( ( ) => {
206204 if ( settingsImportedAt ) {
207205 setCachedState ( ( prevCachedState ) => ( { ...prevCachedState , ...extensionState } ) )
208206 setChangeDetected ( false )
209- // Reset user modified fields when importing settings
210- setUserModifiedFields ( new Set ( ) )
211207 }
212208 } , [ settingsImportedAt , extensionState ] )
213209
@@ -222,35 +218,26 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
222218 } )
223219 } , [ ] )
224220
225- // Track which fields have been explicitly set by user interaction
226- const [ userModifiedFields , setUserModifiedFields ] = useState < Set < keyof ProviderSettings > > ( new Set ( ) )
227-
228221 const setApiConfigurationField = useCallback (
229- < K extends keyof ProviderSettings > ( field : K , value : ProviderSettings [ K ] , isUserAction : boolean = true ) => {
222+ < K extends keyof ProviderSettings > ( field : K , value : ProviderSettings [ K ] ) => {
230223 setCachedState ( ( prevState ) => {
231224 if ( prevState . apiConfiguration ?. [ field ] === value ) {
232225 return prevState
233226 }
234227
235228 const previousValue = prevState . apiConfiguration ?. [ field ]
236229
237- // Track if this field has been modified by the user
238- if ( isUserAction ) {
239- setUserModifiedFields ( ( prev ) => new Set ( prev ) . add ( field ) )
240- }
241-
242230 // Don't treat initial sync from undefined to a defined value as a user change
243- // unless this field has been explicitly modified by the user before
244- const isInitialSync =
245- previousValue === undefined && value !== undefined && ! userModifiedFields . has ( field )
231+ // This prevents the dirty state when the component initializes and auto-syncs the model ID
232+ const isInitialSync = previousValue === undefined && value !== undefined
246233
247234 if ( ! isInitialSync ) {
248235 setChangeDetected ( true )
249236 }
250237 return { ...prevState , apiConfiguration : { ...prevState . apiConfiguration , [ field ] : value } }
251238 } )
252239 } ,
253- [ userModifiedFields ] ,
240+ [ ] ,
254241 )
255242
256243 const setExperimentEnabled : SetExperimentEnabled = useCallback ( ( id : ExperimentId , enabled : boolean ) => {
@@ -359,8 +346,6 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
359346 vscode . postMessage ( { type : "telemetrySetting" , text : telemetrySetting } )
360347 vscode . postMessage ( { type : "profileThresholds" , values : profileThresholds } )
361348 setChangeDetected ( false )
362- // Reset user modified fields after saving
363- setUserModifiedFields ( new Set ( ) )
364349 }
365350 }
366351
@@ -384,7 +369,6 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
384369 // Discard changes: Reset state and flag
385370 setCachedState ( extensionState ) // Revert to original state
386371 setChangeDetected ( false ) // Reset change flag
387- setUserModifiedFields ( new Set ( ) ) // Reset user modified fields
388372 confirmDialogHandler . current ?.( ) // Execute the pending action (e.g., tab switch)
389373 }
390374 // If confirm is false (Cancel), do nothing, dialog closes automatically
0 commit comments