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:
100
docs/handoff/features/home-and-sidebar/HANDOFF.md
Normal file
100
docs/handoff/features/home-and-sidebar/HANDOFF.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Home & sidebar — handoff
|
||||
|
||||
## Summary
|
||||
|
||||
The **Home** panel lists joined rooms (with sub-room nesting), and the **sidebar** switches between Home, DMs, Explore, Inbox, Search, Create, and Settings tabs. Room ordering, categories, and unread badges are rendered here.
|
||||
|
||||
## User-facing behavior
|
||||
|
||||
- Home: hierarchical room list with categories, drag reorder, unread/highlight states
|
||||
- Sidebar tabs with Paarrot logo states (normal/unread/highlight) on Home
|
||||
- Space tabs when inside a space context
|
||||
- Threads category on home (`HomeThreadsCategory`)
|
||||
- Sync status in client chrome
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
SidebarNav → tab routes (HomeTab, DirectTab, ExploreTab, ...)
|
||||
Home.tsx
|
||||
→ useHomeRooms.ts (room list + sub-room flattening)
|
||||
→ RoomNavItem / RoomNavCategoryButton / UnjoinedSubRoomItem
|
||||
DirectTab.tsx → useDirectRooms.ts
|
||||
```
|
||||
|
||||
## Key files
|
||||
|
||||
| Path | Role |
|
||||
|------|------|
|
||||
| `cinny/src/app/pages/client/home/Home.tsx` | Home room list UI |
|
||||
| `cinny/src/app/pages/client/home/useHomeRooms.ts` | Room list logic + Paarrot room kind |
|
||||
| `cinny/src/app/pages/client/SidebarNav.tsx` | Sidebar tab bar |
|
||||
| `cinny/src/app/pages/client/sidebar/HomeTab.tsx` | Home tab |
|
||||
| `cinny/src/app/pages/client/sidebar/DirectTab.tsx` | DMs tab + favicon logos |
|
||||
| `cinny/src/app/pages/client/sidebar/InboxTab.tsx` | Inbox tab |
|
||||
| `cinny/src/app/pages/client/sidebar/ExploreTab.tsx` | Explore tab |
|
||||
| `cinny/src/app/pages/client/sidebar/SearchTab.tsx` | Search tab |
|
||||
| `cinny/src/app/pages/client/sidebar/SettingsTab.tsx` | Settings tab |
|
||||
| `cinny/src/app/pages/client/sidebar/SpaceTabs.tsx` | Space context tabs |
|
||||
| `cinny/src/app/pages/client/home/HomeThreadsCategory.tsx` | Threads grouping |
|
||||
| `cinny/src/app/hooks/useRoomListReorder.ts` | DnD reorder |
|
||||
| `cinny/src/app/hooks/useSidebarItems.ts` | Sidebar item model |
|
||||
|
||||
## Data model
|
||||
|
||||
| Source | Data |
|
||||
|--------|------|
|
||||
| `allRoomsAtom` | Joined rooms |
|
||||
| `roomToUnreadAtom` | Badge state |
|
||||
| `mDirectAtom` | DM room mapping |
|
||||
| `im.paarrot.sub_rooms` | Nested children (see sub-rooms) |
|
||||
| `im.paarrot.room.kind` | Room classification |
|
||||
| localStorage | Category collapse, room order |
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Jotai room list atoms
|
||||
- `matrix-js-sdk` room summaries
|
||||
|
||||
## Integration points
|
||||
|
||||
- **sub-rooms**: tree flattening in Home.tsx
|
||||
- **room-nav**: nav item components
|
||||
- **routing-and-navigation**: tab routes
|
||||
- **background-notifications**: unread → favicon in DirectTab
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual
|
||||
|
||||
1. Verify room order drag persists.
|
||||
2. Sub-room nesting indent and unjoined state.
|
||||
3. Unread badge on sidebar tab.
|
||||
4. Category collapse/expand.
|
||||
5. Switch tabs; active state correct.
|
||||
|
||||
### Automated
|
||||
|
||||
- None
|
||||
|
||||
## Known issues & gotchas
|
||||
|
||||
- `useHomeRooms` filters top-level vs sub-room IDs — easy to break tree
|
||||
- DirectTab uses custom Paarrot SVGs for badge states
|
||||
- Mobile hides sidebar in favor of bottom/full-page nav
|
||||
|
||||
## Future work
|
||||
|
||||
- Unified sidebar component between home and space contexts
|
||||
- Virtualize long room lists
|
||||
|
||||
## Related docs
|
||||
|
||||
- [sub-rooms HANDOFF](../sub-rooms/HANDOFF.md)
|
||||
- [room-nav HANDOFF](../room-nav/HANDOFF.md)
|
||||
- [routing-and-navigation HANDOFF](../routing-and-navigation/HANDOFF.md)
|
||||
|
||||
## Add your extra things here
|
||||
|
||||
- `RoomNavCategoryButton` for collapsible sections
|
||||
- `useClosedNavCategoriesAtom` for collapsed state
|
||||
Reference in New Issue
Block a user