# 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
