Spec: 2026-04-13-unified-thread-layout-design.md | Click tabs to view each state
Full-width chat thread, centered at max 800px. All content flows as messages + Living Cards.
Chat stays on left (~45%), workspace editor on right (~55%). Resizable divider between them.
| Workspace | Trigger | Status |
|---|---|---|
| Image Inspector | Click Edit on image card | WIRED |
| Canvas Editor | Click AI Canvas on image card | WIRED |
| Carousel Builder | Click Edit in Builder on carousel card | WIRED |
| Before/After Builder | Click Edit in Builder on B/A card | WIRED |
| Text Only Mode | Click Edit Variations on copy card | WIRED |
AI Canvas in fullscreen for pixel-precise editing. Back button returns to split-screen.
Full-screen canvas with brush, eraser, selection tools. SAM2 mask overlay for precise editing.
Each card type renders inline in the chat thread. All share the same lifecycle state machine.
Every card goes through these states. Click each to see the visual.
Single entry point for all interactions. Sticky at bottom.
| Feature | Spec Says | Status |
|---|---|---|
| Auto-grow textarea | Up to 160px | DONE |
| Enter to send | Enter sends, Shift+Enter newline | DONE |
| Product tray | Thumbnails + X to remove + [+] to add. Max 6. | DONE but no max-6 enforcement |
| Product picker | Popover desktop, full-screen mobile | DONE |
| Platform selector | 5 platforms, persists across messages | DONE but platform NOT sent to agent |
| Voice input | ๐ค button, Web Speech API | DONE |
| File attach | ๐ button, analyze image | UI works, files NOT sent to agent |
| Send button | Primary color, disabled when empty | DONE |
| Stop button | Red square during streaming | DONE |
| Placeholder text | "Type a message or describe what to create..." | Shows "Type your message..." instead |
| Smart routing | No mode toggle, agent decides | DONE |
| IdeaBank suggestion chips | Agent sends suggestions when products selected | Auto-trigger removed (was too aggressive). No manual trigger. |
Full-width cards, compact input bar, bottom sheet for workspace.
Every feature from the spec, with honest status.
| Feature | Status | Notes |
|---|---|---|
| Thread state (default) | DONE | Full-width, 800px centered |
| Split-screen state | DONE | Resizable divider, 5 workspace types wired |
| Fullscreen state | DONE | AI Canvas, back button |
| Mobile bottom sheet | DONE | <768px, drag to dismiss |
| Tablet 50/50 | DONE | 768-1023px |
| Feature | Status | Notes |
|---|---|---|
| Auto-grow textarea | DONE | |
| Product tray + picker | DONE | No max-6 enforcement |
| Platform selector | BROKEN | UI works but platform NOT sent to agent |
| Voice input | DONE | Web Speech API |
| File attach | BROKEN | Files analyzed but NOT sent to agent |
| Send / Stop | DONE | |
| IdeaBank suggestions | PARTIAL | Auto-trigger removed. No replacement. |
| Feature | Status | Notes |
|---|---|---|
| Image card renders in chat | PARTIAL | PR #314 (Living Cards SSE) still open |
| Carousel card | DONE | Component built, needs SSE wiring too |
| Before/After card | DONE | Component built |
| Copy card | PARTIAL | Agent killed headline, caption, hookScore |
| Video card | DONE | Component built |
| Lifecycle state machine | DONE | All 5 states |
| Version dots | DONE | |
| Save to catalog | NOT WIRED | Button disabled "(coming soon)" |
| Regenerate | NOT WIRED | Button disabled "(coming soon)" |
| Schedule from approved | NOT BUILT | Not in any card |
| Feature | Status | Notes |
|---|---|---|
| Send message โ agent responds | DONE | |
| Products in agent context | DONE | |
| Platform in agent context | BROKEN | Not sent |
| Attachments in agent context | BROKEN | Not sent |
| Brand voice / campaign / audience | NOT BUILT | Hardcoded null |
| IdeaBank via agent | PARTIAL | Auto-trigger removed, no replacement |
| Content Planner deep-link | DONE | Prompt/platform/aspectRatio pre-filled |
| Feature | Status | Notes |
|---|---|---|
| Session history drawer | DONE | |
| Load old session | DONE | |
| New chat | DONE | |
| Session persistence | DONE | Messages + cards saved to DB |
| Issue | Status | Notes |
|---|---|---|
| Build broken (@reduxjs/toolkit) | BROKEN | Next deploy will fail |
| 4 test failures | BROKEN | LinkedIn tool count + tone tests |
| Redis not connected | PRE-EXISTING | Sessions in memory only |
| StudioContext 12 generation fields | CLEANUP NEEDED | Dead fields not removed |