Workspace
Isolate projects, clients, or research topics with multiple workspaces — FileTree + WorkbenchTabBar + shared AI context.
What a workspace is
Workspace is the outermost organization unit in VizChat. A workspace contains:
- A FileTree holding PDFs, images, bookmarks, and canvas documents
- A set of canvases / documents, each an independent 2D workspace
- A shared AI context — agents can read sibling documents for cross-file reasoning within the same workspace
You can create multiple workspaces along "project / client / research topic / quarter" axes, and they stay isolated — files and conversations in one workspace do not appear in another's AI context.
Interface layout
After login the default view is a three-pane structure:
| Pane | Contents |
|---|---|
| Left | WorkspaceSwitcher (change workspace) + FileTree |
| Center | AI chat panel |
| Right | WorkbenchTabBar + the currently open document (canvas / PDF / rich text) |
FileTree supports:
- Drag-drop file upload → auto-parsed by
document_parser - Add bookmark → paste a URL in the dialog → create a bookmark preview
- New folder → organize many files
- Rename, move, delete
WorkbenchTabBar
A row of tabs sits atop the center pane. Each open document is a tab, similar to VS Code or a browser. Clicking a document in the FileTree opens it as a tab. The openWorkbenchItems and activeWorkbenchItemKey fields are managed by the workspace-slice zustand store.
Tabs support:
- Right-click menu: close, close others, close all, reveal in file tree
- Automatic disambiguation — when same-named files from different folders are open at once, each tab appends a folder segment next to the filename: the shortest run that tells them apart (not necessarily the last one), with elided parts marked by
…, as in…/inline/…. The full path stays in the tab's tooltip - Persistent state on close — reopening the workspace restores the tab list
Renderers per document type
Different renderers mount based on each document's type field. The type-to-renderer mapping is listed one line per type in the frontend workbench registry (src/lib/workbench/registry.ts); adding a document type means creating a renderer directory and adding a line there:
storyboard/dashboard— canvases, host-embedded cross-origin canvas-iframestext/parsable_document— text and parsable documents (Markdown editor, PDF / Office preview)image/media/bookmark— images, audio / video, URL embeds
Typical multi-workspace layouts
Scenario 1: consulting firm, one workspace per client
📁 Workspace: Acme Corp
📁 Quarterly reports
📄 Q1-dashboard.dsb
📄 Q2-storyboard.stb
📄 competitor-analysis.pdf
📁 Workspace: Beta Inc
📄 user-interview-notes.docx
📄 retention-model.stbThe two clients' AI conversations never cross-contaminate — asking "our sales last quarter" only sees the active workspace.
Scenario 2: grad student, one workspace per course
📁 Workspace: Machine Learning
📄 paper-notes/
📄 homework canvases
📁 Workspace: Thesis
📄 literature-review.stb
📄 experiment-data/Scenario 3: personal knowledge base
A single default workspace holds everything — works well for lightweight users who don't want to manage multiple spaces.
Workspace sharing (planned)
Today VizChat is primarily single-player. Workspace-level sharing and multiplayer collaboration are on the roadmap. Document-level sharing is designed but not yet shipped — see Sharing for the intended model and today's workarounds.