fix(coding-agent): reload global settings fixes #1241

This commit is contained in:
Mario Zechner 2026-02-04 14:14:40 +01:00
parent 52638e1c4e
commit fcfbc82ec2
5 changed files with 83 additions and 0 deletions

View file

@ -1982,6 +1982,7 @@ export class AgentSession {
async reload(): Promise<void> {
const previousFlagValues = this._extensionRunner?.getFlagValues();
await this._extensionRunner?.emit({ type: "session_shutdown" });
this.settingsManager.reload();
resetApiProviders();
await this._resourceLoader.reload();
this._buildRuntime({

View file

@ -240,6 +240,29 @@ export class SettingsManager {
return this.loadProjectSettings();
}
reload(): void {
let nextGlobalSettings: Settings | null = null;
if (this.persist && this.settingsPath) {
try {
nextGlobalSettings = SettingsManager.loadFromFile(this.settingsPath);
this.globalSettingsLoadError = null;
} catch (error) {
this.globalSettingsLoadError = error as Error;
}
}
if (nextGlobalSettings) {
this.globalSettings = nextGlobalSettings;
}
this.modifiedFields.clear();
this.modifiedNestedFields.clear();
const projectSettings = this.loadProjectSettings();
this.settings = deepMergeSettings(this.globalSettings, projectSettings);
}
/** Apply additional overrides on top of current settings */
applyOverrides(overrides: Partial<Settings>): void {
this.settings = deepMergeSettings(this.settings, overrides);

View file

@ -3710,6 +3710,22 @@ export class InteractiveMode {
try {
await this.session.reload();
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
const themeName = this.settingsManager.getTheme();
const themeResult = themeName ? setTheme(themeName, true) : { success: true };
if (!themeResult.success) {
this.showError(`Failed to load theme "${themeName}": ${themeResult.error}\nFell back to dark theme.`);
}
const editorPaddingX = this.settingsManager.getEditorPaddingX();
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
this.defaultEditor.setPaddingX(editorPaddingX);
this.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);
if (this.editor !== this.defaultEditor) {
this.editor.setPaddingX?.(editorPaddingX);
this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
}
this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
this.rebuildAutocomplete();
const runner = this.session.extensionRunner;
if (runner) {