RPG-Web UI Roadmap¶
Vision¶
A polished, immersive solo TTRPG experience with: - Real-time campaign state visibility - Automatic session documentation - Searchable world knowledge base - Ambient context that "just works"
Phase 1: Foundation Polish (Quick Wins)¶
1.1 Standard Header (DONE)¶
- [x] UserMenu with avatar (dev mode / Authentik)
- [x] ThemeToggle (dark/light)
- [x] App title + campaign breadcrumb
- [x] Back to campaign list link (via header breadcrumb)
1.2 Landing Page (Partial)¶
- [x] Campaign cards with better styling
- [ ] Last played timestamp
- [ ] Session count badge
- [ ] "New Campaign" button (calls POST /campaigns)
1.3 Basic Chat Polish¶
- [ ] Better message styling (DM vs player)
- [ ] Markdown rendering for responses
- [ ] Loading states / typing indicator
Effort: 1-2 sessions
Phase 2: Session Awareness¶
2.1 PC Status Sidebar¶
- [ ] Character name + class
- [ ] HP bar (visual, color-coded)
- [ ] Current location
- [ ] Active conditions (badges)
- [ ] Gold / key resources
- [ ] Real-time updates when tools mutate state
2.2 Tool Call Display¶
- [ ] Collapsible tool call cards
- [ ] Dice roll highlighting (success/fail colors)
- [ ] Entity lookup preview
- [ ] State change indicators (HP -5, Location changed)
2.3 Action Buttons¶
- [ ] Parse 5-action options from response
- [ ] Render as clickable buttons
- [ ] Auto-send selected action
Effort: 2-3 sessions
Phase 3: Session Documentation¶
3.1 Auto-Journal¶
- [ ] End-of-session summary generation
- [ ] Key events extraction
- [ ] NPC interactions logged
- [ ] Decisions and outcomes tracked
3.2 Session Browser¶
- [ ] List past sessions
- [ ] Session recap view
- [ ] Jump to specific session in history
- [ ] Export session as markdown
3.3 Timeline View¶
- [ ] Visual campaign timeline
- [ ] Day-by-day event history
- [ ] Clickable events → context
Effort: 2-3 sessions
Phase 4: World Knowledge¶
4.1 Glossary / Codex¶
- [ ] Searchable entity list (NPCs, locations, items)
- [ ] Entity detail cards
- [ ] Relationship graph visualization
- [ ] "Discovered" vs "Unknown" status
4.2 Map View (Future)¶
- [ ] Location relationship diagram
- [ ] Current location indicator
- [ ] Travel paths / connections
4.3 NPC Tracker¶
- [ ] NPCs met vs mentioned
- [ ] Disposition indicators
- [ ] Last interaction summary
- [ ] Known secrets (revealed only)
Effort: 3-4 sessions
Phase 5: Real-time & Intelligence¶
5.1 Real-time State Sync¶
- [ ] WebSocket for state updates
- [ ] Sidebar updates without refresh
- [ ] Push notifications for time-sensitive events (clocks)
5.2 Smart Summaries¶
- [ ] "Previously on..." session opener
- [ ] Context-aware recaps
- [ ] "What do I know about X?" quick query
5.3 Proactive Suggestions¶
- [ ] Suggest relevant actions based on threads
- [ ] Remind about forgotten plot hooks
- [ ] NPC birthday / scheduled events
Effort: 3-4 sessions
Phase 6: Polish & Delight¶
6.1 Theming¶
- [ ] Campaign-specific themes (fantasy, sci-fi, horror)
- [ ] Custom color schemes per campaign
- [ ] Ambient background effects
6.2 Audio (Optional)¶
- [ ] Ambient soundscapes
- [ ] Dice roll sounds
- [ ] Combat/exploration mode music
6.3 Mobile Optimization¶
- [ ] Responsive sidebar (drawer on mobile)
- [ ] Touch-friendly action buttons
- [ ] Swipe gestures
Technical Debt / Infrastructure¶
Auth¶
- [ ] Authentik integration
- [ ] Multi-user campaign sharing (future)
Performance¶
- [ ] Message virtualization for long sessions
- [ ] Lazy load entity data
- [ ] Optimistic UI updates
Data¶
- [ ] Session export/import
- [ ] Campaign backup/restore
- [ ] Cross-device sync
Quick Wins Matrix¶
| Item | Impact | Effort | Priority | Status |
|---|---|---|---|---|
| Header + UserMenu | High | Low | P0 | DONE |
| Theme toggle | Medium | Low | P0 | DONE |
| PC Status sidebar | High | Medium | P1 | Next |
| Landing page polish | Medium | Low | P1 | Partial |
| Tool call display | Medium | Medium | P1 | |
| Action buttons | High | Medium | P2 | |
| Session browser | Medium | Medium | P2 | |
| Glossary/Codex | High | High | P3 | |
| Auto-journal | High | High | P3 | |
| Real-time sync | Medium | High | P4 |
Design Decisions¶
Resolved¶
-
Journal - Auto-generate at session end. Investigate continuous notes with Supabase realtime.
-
Glossary scope - Only show "discovered" entities. No spoilers.
-
GM Mode - Not needed now. Future: useful for troubleshooting/adjusting secrets.
-
Action buttons - TBD - need to test UX (auto-send vs populate input).
-
Real-time - Use Supabase Realtime (easy, built-in). Consider moving PC state to DB.
-
Mobile - Important. Must be playable on mobile. Responsive-first design.
Open Questions¶
-
Multi-character - Support for multiple PCs in one campaign? (Party play)
-
Branching - Save points / "what if" exploration?
-
Voice - TTS for DM responses? STT for player input?
-
PC State storage - Keep in vault files, or migrate to Supabase for realtime?
Dependencies¶
| Feature | Requires |
|---|---|
| Real-time sync | WebSocket endpoint in palimpsest |
| Auto-journal | Session closeout endpoint + LLM summary |
| Glossary | Entity list endpoint (exists) |
| Action buttons | Response format parsing (5 options) |
| PC Sidebar | PC state endpoint (exists) + polling/WS |