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:

  1. Shell-level split pane in VittoUnifiedShell with persistent chat panel (chosen — Option A)
  2. Floating drawer overlay from the right (Option B — worse UX, blocks content)
  3. Keep /vitto/chat as separate page (Option C — worst, separates chat from context)
  4. 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


🔗 Related


Auto-generated by MCP Smart Consolidation