The workspace uses the existing Corbits UI components and the src/styles.css semantic aliases, with a single theme.
- Palette and surfaces:
--wb-backgroundfor reading surfaces,--wb-mutedfor selected controls,--wb-foregroundfor primary text,--wb-muted-foregroundfor supporting text,--wb-borderfor structural dividers, and--wb-ringfor keyboard focus. Inherit light/dark palettes from the shell. No workspace-specific hex colors or extra elevation. - Typography: inherit
--wb-font-ui; use--wb-font-monoonly for version metadata. Body inherits the shell scale; controls/supporting text use 0.8125rem, section headings 1rem, document titles 1.125rem. - Spacing: existing
--space-*4px grid; 16–24px reading insets, 8–12px control gaps, existing radius tokens. Interactive controls have a 44px minimum height. - Layout: desktop always presents conversation left and outputs right, including before the first artifact. Each region scrolls independently. Document review is never modal, and the composer stays usable. Below 760px use explicit pane buttons; preserve both mounted panes and draft state.
- Artifacts: documents open as vendored
PanelTabs/PanelTab(one tab, one title; no second heading and no select). The pane follows the document under approval, or the newest one filed, until the reader picks a tab or version; that choice holds until a newer version is filed (tab-follow.ts). Render retained real content through the shared Markdown/JSON/sandboxed HTML renderers. HTML stays in a desktop or phone device frame around that sandbox; the frame is a size cue, not a running app. A version menu lists retained versions and reads another only on request. Comparison marks changes inline like tracked changes (src/revisions.ts), and only when an earlier body is retained. Clicking a passage adds it to the prompt. Pending and error states show the real state of the read. Approval wording comes fromwording.approvalinsrc/config.ts. - States and motion: preserve global visible focus; native select interaction is keyboard-accessible. Use the existing Corbits ThinkingIndicator only for an in-session generation (a send still in flight, or a reply this session is still waiting on). Opening an existing project does not raise the bottom busy strip and does not show a thinking mark; the chat-left/artifact-right split mounts immediately and persisted messages render in place. Pane selection is instant, without decorative entrance animation or a blocking setup card. Conversation and read errors, and empty panes after a finished read, are short status lines in the pane that already owns them — never a bordered setup card or a second full-screen wait.
- Voice: plain, concise descriptions of actual state. Empty output space explains where documents will appear; previews and workflow progress appear only when the hub reports them.