Goal
Create the infinite canvas foundation and operator chrome family for replacing a traditional SaaS dashboard with a calm spatial workspace.
Minimum serious v0 ownership
TopBar
LeftRail
CanvasView
RightDock
WorkspaceSwitcher
CanvasShell
InfinitePlane
MiniMapPanel
ZoomHUD
ViewportBookmarks
WorldBreadcrumbs
Why
This is the shell that makes the product feel like a spatial operating surface instead of a dashboard made of cards and tabs.
Design direction
This family should make the UI feel like:
- a calm operating surface
- a spatial workspace for real AI objects
- a minimal control plane for tasks, runs, and outputs
It must not feel like:
- a bloated dashboard
- a pure whiteboard
- a chatbot wrapper
Explicit non-duplicates
This family must not duplicate or merely re-skin existing components:
FlowDiagram — graph primitive, not the full workspace shell
NavbarSaas — marketing/app navbar, not operator chrome
Sidebar / SidebarToggle — existing nav/sidebar primitives, not the left rail + right dock canvas shell contract
ViewSwitcher — existing switcher pattern; WorkspaceSwitcher should compose with or extend it rather than duplicate it
SearchBar / SearchDialog — existing search UI, not viewport/world navigation
TableOfContentsPanel — document navigation, not spatial world navigation
- maps family issues (
#28, #29, #30, #31, #60, #61, #62, #68) — geographic surfaces, not product canvas surfaces
AI Artifact / Canvas issue #56 — artifact display, not the base infinite-canvas runtime
Command / Spotlight issue #8 and existing Command component — command palette already exists; this family should integrate it, not recreate it
BottomActivityStrip belongs to runtime activity family #136; this shell family should host it, not own its internal behavior
Acceptance criteria
- define operator chrome: top bar, left rail, right dock, and workspace switch behavior
- define viewport model, panning/zoom, saved views, and minimap behavior
- define keyboard + pointer interaction rules for canvas movement
- define how command palette access fits into the shell without adding more visible clutter
- define how this family hosts runtime/activity surfaces from adjacent families without absorbing them
- define how this family composes with object, inspector, collaboration, and runtime families
- stay product-canvas oriented, not diagram-editor generic
Goal
Create the infinite canvas foundation and operator chrome family for replacing a traditional SaaS dashboard with a calm spatial workspace.
Minimum serious v0 ownership
TopBarLeftRailCanvasViewRightDockWorkspaceSwitcherCanvasShellInfinitePlaneMiniMapPanelZoomHUDViewportBookmarksWorldBreadcrumbsWhy
This is the shell that makes the product feel like a spatial operating surface instead of a dashboard made of cards and tabs.
Design direction
This family should make the UI feel like:
It must not feel like:
Explicit non-duplicates
This family must not duplicate or merely re-skin existing components:
FlowDiagram— graph primitive, not the full workspace shellNavbarSaas— marketing/app navbar, not operator chromeSidebar/SidebarToggle— existing nav/sidebar primitives, not the left rail + right dock canvas shell contractViewSwitcher— existing switcher pattern;WorkspaceSwitchershould compose with or extend it rather than duplicate itSearchBar/SearchDialog— existing search UI, not viewport/world navigationTableOfContentsPanel— document navigation, not spatial world navigation#28,#29,#30,#31,#60,#61,#62,#68) — geographic surfaces, not product canvas surfacesAI Artifact / Canvasissue#56— artifact display, not the base infinite-canvas runtimeCommand / Spotlightissue#8and existingCommandcomponent — command palette already exists; this family should integrate it, not recreate itBottomActivityStripbelongs to runtime activity family#136; this shell family should host it, not own its internal behaviorAcceptance criteria