Files
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

82 lines
2.2 KiB
Markdown

# Room settings — handoff
## Summary
Per-room settings overlay: general info, permissions, members (via common-settings), sub-rooms (Paarrot), and developer tools. Opened from room header/menu without leaving the room.
## User-facing behavior
- Edit room name, topic, avatar, address, join rules, encryption
- Permissions and power levels
- Sub-rooms management (Paarrot)
- Member list and moderation actions
## Architecture
```
RoomSettingsRenderer (Router overlay)
→ RoomSettings.tsx — page nav
→ room-settings/general/, permissions/, sub-rooms/
→ delegates to common-settings/ for shared pages
roomSettings.ts atom — which page open
```
## Key files
| Path | Role |
|------|------|
| `cinny/src/app/features/room-settings/RoomSettings.tsx` | Settings shell |
| `cinny/src/app/features/room-settings/general/` | General tab |
| `cinny/src/app/features/room-settings/permissions/` | Permissions |
| `cinny/src/app/features/room-settings/sub-rooms/SubRooms.tsx` | Sub-rooms (Paarrot) |
| `cinny/src/app/state/roomSettings.ts` | Modal/page state |
| `cinny/src/app/state/hooks/roomSettings.ts` | Open/close hooks |
| `cinny/src/app/features/common-settings/` | Shared setting pages |
## Data model
Standard Matrix room state events (`m.room.name`, `m.room.power_levels`, etc.) plus `im.paarrot.sub_rooms`.
## Dependencies
- `useRoomPermissions`, `usePowerLevels`
- common-settings components
## Integration points
- **sub-rooms**: Paarrot-specific tab
- **common-settings**: members, emojis, developer tools reuse
- **embed-filters**: `EmbedFilters.tsx` in common-settings general
## Testing
### Manual
1. Open room settings from ⋮ menu.
2. Change topic; verify state event.
3. Sub-rooms tab: reorder children.
4. Permissions: change power level.
### Automated
- None
## Known issues & gotchas
- Overlay vs full page on mobile — check ScreenSize branches
- `RoomSettingsRenderer` must stay mounted in Router for deep links
## Future work
- Room settings deep link URL
## Related docs
- [sub-rooms HANDOFF](../sub-rooms/HANDOFF.md)
- [common-settings HANDOFF](../common-settings/HANDOFF.md)
- [embed-filters HANDOFF](../embed-filters/HANDOFF.md)
## Add your extra things here
- `SubRoomsPage` enum in `roomSettings.ts`