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.
This commit is contained in:
94
docs/handoff/features/user-settings/HANDOFF.md
Normal file
94
docs/handoff/features/user-settings/HANDOFF.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user