Make default settings apply (#15354)

This commit is contained in:
Dev Randalpura
2026-01-05 15:00:20 -05:00
committed by GitHub
parent dc6dda5c37
commit 3c92666ec2
7 changed files with 135 additions and 53 deletions
+25 -5
View File
@@ -424,6 +424,24 @@ export function migrateSettingsToV1(
return v1Settings;
}
export function getDefaultsFromSchema(
schema: SettingsSchema = getSettingsSchema(),
): Settings {
const defaults: Record<string, unknown> = {};
for (const key in schema) {
const definition = schema[key];
if (definition.properties) {
const childDefaults = getDefaultsFromSchema(definition.properties);
if (Object.keys(childDefaults).length > 0) {
defaults[key] = childDefaults;
}
} else if (definition.default !== undefined) {
defaults[key] = definition.default;
}
}
return defaults as Settings;
}
function mergeSettings(
system: Settings,
systemDefaults: Settings,
@@ -432,16 +450,18 @@ function mergeSettings(
isTrusted: boolean,
): Settings {
const safeWorkspace = isTrusted ? workspace : ({} as Settings);
const schemaDefaults = getDefaultsFromSchema();
// Settings are merged with the following precedence (last one wins for
// single values):
// 1. System Defaults
// 2. User Settings
// 3. Workspace Settings
// 4. System Settings (as overrides)
// 1. Schema Defaults (Built-in)
// 2. System Defaults
// 3. User Settings
// 4. Workspace Settings
// 5. System Settings (as overrides)
return customDeepMerge(
getMergeStrategyForPath,
{}, // Start with an empty object
schemaDefaults,
systemDefaults,
user,
safeWorkspace,