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.
83 lines
2.3 KiB
Markdown
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`
|