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/__tests__/readSettings.test.ts. After confirming the diff is just your new field, regenerate them with npm test -- -u.If the setting adds a built-in default, update the inline snapshots in
src/__tests__/readSettings.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.