# User settings — handoff ## Summary Global user settings modal: general preferences, account profile, notifications, audio devices, sessions/devices, emojis, plugins, developer tools, and about. Accessed from sidebar Settings tab. ## User-facing behavior - **General**: theme, language, page zoom, emoji style, message spacing - **Account**: display name, avatar (with Paarrot metadata), matrix id - **Notifications**: push rules, keywords, system permission - **Audio**: input/output device selection for calls - **Devices**: verify sessions, key backup, cross-signing - **Plugins**: see plugins handoff - **About**: version info ## Architecture ``` Settings.tsx — tabbed modal → general/, account/, notifications/, audio/, devices/, emojis-stickers/, plugins/, developer-tools/, about/ SettingsPages enum ``` ## Key files | Path | Role | |------|------| | `cinny/src/app/features/settings/Settings.tsx` | Settings modal shell | | `cinny/src/app/features/settings/general/General.tsx` | General prefs | | `cinny/src/app/features/settings/account/Profile.tsx` | Profile + avatar metadata | | `cinny/src/app/features/settings/notifications/` | Notification rules | | `cinny/src/app/features/settings/audio/Audio.tsx` | Call audio devices | | `cinny/src/app/features/settings/devices/` | Sessions & verification | | `cinny/src/app/features/settings/about/About.tsx` | About page | | `cinny/src/app/state/settings.ts` | Settings atom | | `cinny/src/app/pages/client/sidebar/SettingsTab.tsx` | Entry point | ## Data model | Key | Storage | |-----|---------| | `settingsAtom` | localStorage (theme, zoom, emoji style, etc.) | | Profile | Matrix account data + avatar MXC | | Push rules | Homeserver account data | ## Dependencies - `folds` modal/page components - Notification API, MediaDevices API ## Integration points - **avatar-metadata**: profile color in avatar upload - **emoji-stickers**: emojis tab - **plugins**: plugins tab - **e2e-and-devices**: devices tab overlaps - **background-notifications**: notification settings - **voice-calls**: audio device prefs ## Testing ### Manual 1. Change theme; persists reload. 2. Page zoom 125%; UI scales. 3. Notification keyword add; trigger match. 4. Audio device switch during call. ### Automated - None ## Known issues & gotchas - Settings modal vs mobile full-page — `useScreenSizeContext` - Logout dialog from settings clears session ## Future work - Settings search - Export/import settings JSON ## Related docs - [avatar-metadata HANDOFF](../avatar-metadata/HANDOFF.md) - [emoji-stickers HANDOFF](../emoji-stickers/HANDOFF.md) - [plugins HANDOFF](../plugins/HANDOFF.md) - [e2e-and-devices HANDOFF](../e2e-and-devices/HANDOFF.md) - [themes-and-appearance HANDOFF](../themes-and-appearance/HANDOFF.md) ## Add your extra things here - `SettingsPages` enum lists all tabs — add new pages here + menu item