Architecture: How should Vitto's chat be made persistently available besid...
Documentation for Sessions
🏗️ Architecture: How should Vitto's chat be made persistently available besid...
Date: 2026-03-04
Time: 16:31:53 UTC
Session: gspace1-175.5
Agent: angular
Confidence: 93%
Status: ✅ Documented
📋 Decision Context
Question:
How should Vitto's chat be made persistently available beside content across all /vitto/* routes, replacing the broken separate-page pattern?
Task: Session 175: Super Vitto Context Plan — Phase B: Chat-Beside-Hub
🎯 Decision Made
Chosen:
Added persistent chat panel to VittoUnifiedShellComponent (Option A from plan: shell-level split pane). Panel uses UnifiedChatShellComponent from @libs-ai/vitto-chat with createStandardPluginSet. Toggle via Cmd+Shift+V keyboard shortcut. Panel width and open/closed state persisted via autoFlashState. Content-push layout with margin-right computed signal. Then separately added the same AiPanelTabsComponent sidebar to gograb-ai's AppComponent (matching the existing gograb-dev and gograb-space pattern).
Options Considered:
- Shell-level split pane in VittoUnifiedShell with persistent chat panel (chosen — Option A)
- Floating drawer overlay from the right (Option B — worse UX, blocks content)
- Keep /vitto/chat as separate page (Option C — worst, separates chat from context)
- Create vitto-chat as a standalone NX app with iframe embedding
💭 Reasoning
Option A (shell-level split pane) gives Vitto permanent presence across every /vitto/* page — the Cursor/Windsurf pattern. Direct Angular component import (no iframe) means form signals are readable directly with zero serialization overhead. autoFlashState handles persistence. The user specifically asked about making vitto-chat a standalone app — I pushed back explaining that libraries are more embeddable than apps for Angular consumers. The chat is already a library (@libs-ai/vitto-chat), and all 5 apps (gograb-space, gograb-dev, gograb-admin, gograb-ai, vitto-unified-shell) import it directly. Creating an app would force iframe communication, adding latency and complexity. User accepted this reasoning.
📁 Files Involved
libs/libs-ai/vitto-hub/src/lib/components/vitto-unified-shell/vitto-unified-shell.component.tslibs/libs-ai/vitto-hub/src/lib/components/vitto-unified-shell/vitto-unified-shell.component.htmllibs/libs-ai/vitto-hub/src/lib/components/vitto-unified-shell/vitto-unified-shell.component.scssapps/gograb-ai/src/app/app.component.tsapps/gograb-ai/src/app/app.component.htmlapps/gograb-ai/src/app/app.component.scss
🔗 Related
- Decision ID:
dev_1772641913096_hdy5fa6 - Session: 175
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation