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:
96
docs/handoff/features/routing-and-navigation/HANDOFF.md
Normal file
96
docs/handoff/features/routing-and-navigation/HANDOFF.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Routing & navigation — handoff
|
||||
|
||||
## Summary
|
||||
|
||||
React Router drives all app navigation: auth routes, client shell, home/direct/space/inbox/explore paths, room views, lobby/forum feeds, and modal overlays (settings, search, create). Supports hash router mode via client config.
|
||||
|
||||
## User-facing behavior
|
||||
|
||||
- URL reflects current room, space, inbox tab, explore server
|
||||
- Mobile vs desktop route layouts (`MobileFriendly` wrappers)
|
||||
- Deep links and `matrix.to` style joins via join route
|
||||
- After-login redirect preserves intended destination
|
||||
- View transitions on supported platforms
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
App.tsx → createRouter(clientConfig, screenSize)
|
||||
→ Auth routes | ClientLayout + SidebarNav + Outlet
|
||||
paths.ts — route constants
|
||||
pathUtils.ts — path builders (getHomeRoomPath, getSpaceDefaultPath, ...)
|
||||
Router.tsx — route tree + loaders/guards
|
||||
```
|
||||
|
||||
## Key files
|
||||
|
||||
| Path | Role |
|
||||
|------|------|
|
||||
| `cinny/src/app/pages/Router.tsx` | Full route tree |
|
||||
| `cinny/src/app/pages/paths.ts` | Path constants |
|
||||
| `cinny/src/app/pages/pathUtils.ts` | Path builder utilities |
|
||||
| `cinny/src/app/pages/App.tsx` | RouterProvider setup |
|
||||
| `cinny/src/app/pages/client/ClientLayout.tsx` | Authenticated layout shell |
|
||||
| `cinny/src/app/pages/client/SidebarNav.tsx` | Left sidebar tabs |
|
||||
| `cinny/src/app/pages/MobileFriendly.tsx` | Mobile nav adapters |
|
||||
| `cinny/src/app/hooks/useRoomNavigate.ts` | Imperative room navigation |
|
||||
| `cinny/src/app/hooks/useNavToActivePathMapper.ts` | Restore last path |
|
||||
| `cinny/src/app/pages/afterLoginRedirectPath.ts` | Login redirect |
|
||||
| `cinny/src/app/components/AnimatedOutlet.tsx` | Route transitions |
|
||||
|
||||
## Data model
|
||||
|
||||
| Key | Purpose |
|
||||
|-----|---------|
|
||||
| `navToActivePath` atom | Per-context last URL |
|
||||
| URL path params | roomId, spaceId, eventId |
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `react-router-dom` v6
|
||||
- `clientConfig.hashRouter` for Electron/file protocol
|
||||
|
||||
## Integration points
|
||||
|
||||
- **forum**: `ForumAwareSpaceLayout`, `ForumFeedPage` routes
|
||||
- **lobby-forums**: `_LOBBY_PATH`, `Lobby` component
|
||||
- **join-before-navigate**: `_JOIN_PATH` route
|
||||
- **local-api**: `setPaarrotNavigate` uses same path utils
|
||||
- **settings/room-settings**: overlay renderers on client routes
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual
|
||||
|
||||
1. Navigate home → room → back; URL updates correctly.
|
||||
2. Open space; forum vs lobby path per room type.
|
||||
3. Hash router mode (if enabled in config).
|
||||
4. Mobile breakpoints: sidebar vs full-page nav.
|
||||
5. Refresh on deep room URL — lands in same room.
|
||||
|
||||
### Automated
|
||||
|
||||
- None
|
||||
|
||||
## Known issues & gotchas
|
||||
|
||||
- `getSpaceDefaultPath` branches forum vs lobby — must stay in sync with forum handoff
|
||||
- Hash router needed for some Electron `file://` deployments
|
||||
- Many path helpers — prefer using `pathUtils` over string concat
|
||||
|
||||
## Future work
|
||||
|
||||
- Route-level code splitting audit
|
||||
- Unified join/link handler
|
||||
|
||||
## Related docs
|
||||
|
||||
- [forum HANDOFF](../forum/HANDOFF.md)
|
||||
- [lobby-forums HANDOFF](../lobby-forums/HANDOFF.md)
|
||||
- [join-before-navigate HANDOFF](../join-before-navigate/HANDOFF.md)
|
||||
- [home-and-sidebar HANDOFF](../home-and-sidebar/HANDOFF.md)
|
||||
|
||||
## Add your extra things here
|
||||
|
||||
- Key paths: `HOME_PATH`, `DIRECT_PATH`, `SPACE_PATH`, `INBOX_PATH`, `EXPLORE_PATH`, `_FEED_PATH`, `_LOBBY_PATH`
|
||||
- `getAppPathFromHref` for parsing external links
|
||||
Reference in New Issue
Block a user