Files
cinny/docs/handoff/features/room-nav/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

83 lines
2.3 KiB
Markdown

# Room nav — handoff
## Summary
Room nav components render individual channel rows in sidebars and space channel lists: room items, category buttons, call participant indicators, sub-room actions, and unjoined sub-room join prompts.
## User-facing behavior
- Room row: name, avatar, unread badge, active highlight
- Context menu: add sub-room, room actions
- Call participants indicator when call active in room
- Unjoined sub-room row with join button
- Category headers with collapse
## Architecture
```
features/room-nav/
RoomNavItem → per-room row + menus
RoomNavCategoryButton → section headers
UnjoinedSubRoomItem → join flow
CallParticipantsIndicator → active call badge
Used by Home.tsx, space sidebars, forum sidebars
```
## Key files
| Path | Role |
|------|------|
| `cinny/src/app/features/room-nav/RoomNavItem.tsx` | Main room row |
| `cinny/src/app/features/room-nav/RoomNavCategoryButton.tsx` | Category header |
| `cinny/src/app/features/room-nav/UnjoinedSubRoomItem.tsx` | Unjoined sub-room |
| `cinny/src/app/features/room-nav/CallParticipantsIndicator.tsx` | In-call indicator |
| `cinny/src/app/features/room-nav/styles.css.ts` | Nav styles |
## Data model
Uses room state, unread atoms, `im.paarrot.sub_rooms` permissions — no own persistence.
## Dependencies
- `usePermission` for sub-room create
- `useOpenCreateSubRoomModal` from state hooks
## Integration points
- **sub-rooms**: Add Sub-Room menu action
- **voice-calls**: participant indicator
- **create-flows**: opens create room modal with parent id
- **home-and-sidebar**: primary consumer
## Testing
### Manual
1. Right-click/context menu on room row.
2. Add sub-room when permitted / disabled when not.
3. Active call shows participant indicator.
4. Unjoined sub-room join navigates correctly.
### Automated
- None
## Known issues & gotchas
- Depth indentation for sub-rooms passed as prop — styling in CSS
- `canAddSubRoom` checks `StateEvent.PaarrotSubRooms` power level
## Future work
- Consolidate with forum sidebar items if duplicated
## Related docs
- [sub-rooms HANDOFF](../sub-rooms/HANDOFF.md)
- [home-and-sidebar HANDOFF](../home-and-sidebar/HANDOFF.md)
- [voice-calls HANDOFF](../voice-calls/HANDOFF.md)
## Add your extra things here
- Export barrel: `features/room-nav/index.ts`