Files
cinny/docs/handoff/features/user-settings/HANDOFF.md
Max Litruv Boonzaayer e058165830 feat: upgrade toolchain and soften sync recovery after network blips
Bump Vite 8, matrix-js-sdk, and related deps; fix immer/vanilla-extract imports for new majors. Replace blocking sync error dialog with background recovery on wake/offline, and disable Vite auto-open in dev. Add feature handoff documentation index.
2026-07-09 01:55:09 +10:00

2.8 KiB

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

Add your extra things here

  • SettingsPages enum lists all tabs — add new pages here + menu item