rules/adding-settings.md
When adding a new toggle/setting to the Settings page:
UserSettingsSchema in src/lib/schemas.tsDEFAULT_SETTINGS in src/main/settings.tsSETTING_IDS entry and search index entry in src/lib/settingsSearchIndex.tssrc/components/MySwitch.tsx) - follow AutoApproveSwitch.tsx as a templatesrc/pages/settings.tsxDEFAULT_SETTINGS breaks the inline snapshots in src/main/settings.test.ts. The snapshot helper sorts keys alphabetically, so place a manually added field in alphabetical order or, after confirming the diff is limited to the new default, regenerate with npm test -- src/main/settings.test.ts -u.If the setting adds a built-in default, update the inline snapshots in
src/main/settings.test.ts; otherwise npm test will fail with
default settings snapshot mismatches.
For settings whose default can be overridden remotely:
stored value ?? remote default ?? built-in fallback. Do not persist remote-applied defaults into user-settings.json.For schema-validated settings:
UserSettings and other parsed schema types have already normalized field types. Prefer idiomatic boolean checks like settings?.flag && !settings.hidden over defensive literal comparisons like settings?.flag === true && settings.hidden !== true, unless you are intentionally handling raw unvalidated persisted data before schema parsing.