Polish document workspace and shared design system #423MergedMaggieAppletonmerged 21 commits intomainfromrefs/pull/423/headConversationFiles changed159 files changed+3222-14343StackedSplit.github/workflows/ci.yml+4 −5.github/workflows/pr-ci-fix.lock.yml+0 −1818.github/workflows/pr-ci-fix.md+0 −152.github/workflows/pr-readiness-worker.lock.yml+0 −1773.github/workflows/pr-readiness-worker.md+0 −291.github/workflows/pr-readiness.yml+0 −108.github/workflows/pr-rebase.yml+0 −39apps/web/DESIGN.md+26 −10apps/web/package.json+2 −0apps/web/src/chat/transcript.tsx+26 −19apps/web/src/decision-view-control.tsx+5 −1apps/web/src/decision-view.test.ts+1 −3apps/web/src/design-audit/controls.css+4 −0apps/web/src/design-audit/icons.tsx+2 −0apps/web/src/document-actions-menu.tsx+47 −23apps/web/src/document-rename.tsx+2 −2apps/web/src/empty-workspace.tsx+2 −2apps/web/src/hosted.test.ts+2 −0apps/web/src/icon-assets.test.ts+3 −29apps/web/src/icon-button.tsx+58 −0apps/web/src/icon-tooltip.css+1 −1apps/web/src/main.tsx+18 −8apps/web/src/menu-item.tsx+66 −0apps/web/src/navigation-chrome.test.ts+10 −18apps/web/src/navigation-drawer.tsx+45 −0apps/web/src/navigation-error.tsx+22 −0apps/web/src/navigation-shell.tsx+88 −158apps/web/src/navigation.css+177 −160apps/web/src/project-sidebar-chrome.tsx+7 −5apps/web/src/project-sidebar.tsx+52 −46apps/web/src/room-workspace.tsx+61 −56apps/web/src/shortcuts.test.ts+39 −5apps/web/src/shortcuts.ts+20 −9apps/web/src/sidebar-decision-counts.test.ts+1 −1apps/web/src/sidebar-resize-handle.tsx+40 −0apps/web/src/theme.css+44 −48apps/web/src/title-edit.ts+1 −1apps/web/src/tokens.test.ts+41 −8apps/web/src/workspace-feedback.test.ts+3 −5apps/web/src/workspace.tsx+101 −112bun.lock+7 −0docs/architecture.md+11 −11docs/design-contract.md+25 −21docs/pr-readiness-design.md+0 −179e2e/code.e2e.ts+6 −4e2e/conversation-plan-layout.e2e.ts+21 −16e2e/decision-marker.e2e.ts+1 −1e2e/decisions-empty.e2e.ts+3 −3e2e/diagram-gallery/gallery.e2e.ts+0 −3e2e/document-creation.e2e.ts+43 −0e2e/document-navigation.e2e.ts+50 −36e2e/interface-quality.e2e.ts+1 −1e2e/keyboard-shortcuts.e2e.ts+19 −8e2e/navigation-focus-recovery.e2e.ts+17 −0e2e/research-child-recovery.e2e.ts+93 −2e2e/research-workspace.e2e.ts+72 −45e2e/seecode.e2e.ts+54 −6e2e/shell.e2e.ts+35 −16e2e/source/decision-reader-native.ts+11 −4e2e/source/decision-reader.native.ts+52 −0packages/diagrams/src/core/render/graph/graph.mjs+25 −7packages/diagrams/src/core/render/lanes/gantt.mjs+7 −1packages/diagrams/src/core/render/lanes/journey.mjs+12 −2packages/diagrams/src/core/render/lanes/timeline.mjs+2 −1packages/diagrams/src/core/render/shared/edges.mjs+13 −3packages/diagrams/src/core/render/shared/nodes.mjs+116 −51packages/diagrams/src/core/tokens.d.mts+12 −0packages/diagrams/src/core/tokens.mjs+90 −2packages/diagrams/src/diagram.tsx+111 −42packages/diagrams/src/render.ts+21 −2packages/diagrams/src/viewer/chrome.css+13 −23packages/diagrams/src/viewer/drawing.css+32 −26packages/diagrams/src/viewport.test.ts+37 −0packages/diagrams/src/viewport.ts+39 −0packages/diagrams/test/typography.test.ts+70 −0packages/editor/package.json+1 −0packages/editor/src/comment-layer.tsx+1 −1packages/editor/src/comments.tsx+10 −2packages/editor/src/count.css+12 −0packages/editor/src/count.tsx+37 −11packages/editor/src/decisions.tsx+27 −29packages/editor/src/face.tsx+10 −3packages/editor/src/resolved-layer.tsx+83 −50packages/editor/src/resolved.test.ts+20 −7packages/editor/src/resolved.ts+1 −2packages/editor/src/status.tsx+1 −1packages/editor/src/styles.css+80 −88packages/editor/src/toolbar/placement.test.ts+1 −89packages/editor/src/toolbar/placement.ts+0 −85packages/editor/src/toolbar/research.tsx+70 −157packages/editor/src/widgets/callout.tsx+2 −1packages/editor/src/widgets/render-blocks.tsx+5 −3packages/icons/src/icon.test.tsx+1 −0packages/icons/src/icon.tsx+4 −1packages/icons/src/index.ts+4 −2packages/icons/src/line.tsx+9 −14packages/icons/src/warning.tsx+17 −0packages/visuals/package.json+4 −0packages/visuals/src/index.ts+4 −0packages/visuals/src/styles.css+2 −0packages/visuals/src/ui/badge.css+11 −1packages/visuals/src/ui/badge.tsx+4 −1packages/visuals/src/ui/empty-state.css+70 −0packages/visuals/src/ui/empty-state.tsx+41 −0packages/visuals/src/ui/inline-notice.css+28 −0packages/visuals/src/ui/inline-notice.tsx+19 −0packages/visuals/theme.css+76 −3scripts/check-design-record.test.ts+41 −3scripts/check-tokens.ts+11 −0scripts/design-contract/adversarial.test.ts+27 −0scripts/design-contract/diagram-typography.test.ts+88 −0scripts/design-contract/diagram-typography.ts+59 −0scripts/design-contract/exceptions/dynamic-editor.json+4 −25scripts/design-contract/exceptions/dynamic-packages.json+25 −11scripts/design-contract/exceptions/dynamic-web.json+23 −16scripts/design-contract/exceptions/preserved-values.json+1 −41scripts/design-contract/exceptions/seecode-diagram.json+0 −70scripts/design-contract/javascript.ts+69 −1scripts/design-contract/policy.ts+21 −16scripts/design-contract/record.ts+11 −1scripts/design-contract/scan.ts+38 −7scripts/design-contract/source.ts+7 −2scripts/pr-maintenance/actions.mjs+0 −137scripts/pr-maintenance/actions.test.ts+0 −104scripts/pr-maintenance/application.mjs+0 −204scripts/pr-maintenance/application.test.ts+0 −580scripts/pr-maintenance/artifact.mjs+0 −77scripts/pr-maintenance/artifact.test.ts+0 −97scripts/pr-maintenance/coordinator-run.mjs+0 −352scripts/pr-maintenance/coordinator-run.test.ts+0 −582scripts/pr-maintenance/coordinator.mjs+0 −181scripts/pr-maintenance/coordinator.test.ts+0 −381scripts/pr-maintenance/failures.mjs+0 −54scripts/pr-maintenance/failures.test.ts+0 −56scripts/pr-maintenance/inventory-read.mjs+0 −78scripts/pr-maintenance/inventory-read.test.ts+0 −164scripts/pr-maintenance/inventory.mjs+0 −249scripts/pr-maintenance/inventory.test.ts+0 −368scripts/pr-maintenance/isolated-git.test-fixtures.ts+0 −4scripts/pr-maintenance/maintenance.mjs+0 −111scripts/pr-maintenance/maintenance.test.ts+0 −246scripts/pr-maintenance/presentation.mjs+0 −166scripts/pr-maintenance/presentation.test.ts+0 −170scripts/pr-maintenance/proposal-policy.mjs+0 −143scripts/pr-maintenance/proposal-policy.test.ts+0 −175scripts/pr-maintenance/proposal.mjs+0 −349scripts/pr-maintenance/proposal.test.ts+0 −773scripts/pr-maintenance/provision.mjs+0 −58scripts/pr-maintenance/provision.test.ts+0 −71scripts/pr-maintenance/readiness.mjs+0 −187scripts/pr-maintenance/readiness.test.ts+0 −326scripts/pr-maintenance/run.mjs+0 −48scripts/pr-maintenance/state-store.mjs+0 −204scripts/pr-maintenance/state-store.test.ts+0 −213scripts/pr-maintenance/state.mjs+0 −420scripts/pr-maintenance/state.test.ts+0 −388scripts/pr-maintenance/test-databases.sh+0 −32scripts/pr-maintenance/worker-run.mjs+0 −155scripts/pr-maintenance/worker-run.test.ts+0 −264