@spencer-kit/coder-studio 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/esm/bin.mjs +26168 -14648
- package/dist/esm/bin.mjs.map +4 -4
- package/dist/esm/server-runner.mjs +26123 -14603
- package/dist/esm/server-runner.mjs.map +4 -4
- package/dist/web/assets/components-M2WTAw22.js +158 -0
- package/dist/web/assets/components-M2WTAw22.js.map +1 -0
- package/dist/web/assets/components-sHfo_Pqy.css +1 -0
- package/dist/web/assets/main---UQ76Db.js +2 -0
- package/dist/web/assets/main---UQ76Db.js.map +1 -0
- package/dist/web/assets/ui-preview-Jnk08_Gn.js +22 -0
- package/dist/web/assets/ui-preview-Jnk08_Gn.js.map +1 -0
- package/dist/web/index.html +3 -3
- package/dist/web/ui-preview.html +3 -3
- package/package.json +1 -1
- package/dist/web/assets/components-6O5yG1fL.css +0 -1
- package/dist/web/assets/components-SjBXPKn9.js +0 -108
- package/dist/web/assets/components-SjBXPKn9.js.map +0 -1
- package/dist/web/assets/main-BjHz157g.js +0 -2
- package/dist/web/assets/main-BjHz157g.js.map +0 -1
- package/dist/web/assets/ui-preview-tdq8QPlu.js +0 -22
- package/dist/web/assets/ui-preview-tdq8QPlu.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-preview-Jnk08_Gn.js","names":[],"sources":["../../src/features/workspace/views/shared/git-diff-viewer.tsx","../../src/ui-preview/scene-metadata.ts","../../src/ui-preview/scenes/desktop-review-scenes.tsx","../../src/ui-preview/scenes/page-scenes.tsx","../../src/features/supervisor/views/mobile/mobile-supervisor-badge.tsx","../../src/ui-preview/scenes/showcase-scenes.tsx","../../src/ui-preview/catalog.ts","../../src/ui-preview/app.tsx","../../src/ui-preview/preview-store.ts","../../src/ui-preview/main.tsx"],"sourcesContent":["import { X } from \"lucide-react\";\nimport type { FC } from \"react\";\nimport { useMemo } from \"react\";\nimport { EmptyState, IconButton, Tooltip } from \"../../../../components/ui\";\nimport { useTranslation } from \"../../../../lib/i18n\";\nimport { PanelHeader } from \"../../../shared/components/panel-header\";\nimport { useGitDiffViewerActions } from \"../../actions/use-git-actions\";\n\ninterface GitDiffViewerProps {\n workspaceId: string;\n onClose?: () => void;\n showCloseButton?: boolean;\n}\n\ntype DiffLineTone = \"meta\" | \"added\" | \"removed\" | \"context\";\n\ninterface DisplayLine {\n id: string;\n line: string;\n lineNumber: number;\n tone?: DiffLineTone;\n}\n\nfunction getDiffLineTone(line: string): DiffLineTone {\n if (\n line.startsWith(\"diff --git\") ||\n line.startsWith(\"index \") ||\n line.startsWith(\"--- \") ||\n line.startsWith(\"+++ \") ||\n line.startsWith(\"@@\")\n ) {\n return \"meta\";\n }\n\n if (line.startsWith(\"+\")) {\n return \"added\";\n }\n\n if (line.startsWith(\"-\")) {\n return \"removed\";\n }\n\n return \"context\";\n}\n\nexport const GitDiffViewer: FC<GitDiffViewerProps> = ({\n workspaceId,\n onClose,\n showCloseButton = true,\n}) => {\n const t = useTranslation();\n const { preview, closePreview } = useGitDiffViewerActions(workspaceId);\n const handleClose = onClose ?? closePreview;\n\n const diffLines = useMemo<DisplayLine[]>(\n () =>\n preview?.diff.split(\"\\n\").map((line, index) => ({\n id: `${index}:${line}`,\n line,\n tone: getDiffLineTone(line),\n lineNumber: index + 1,\n })) ?? [],\n [preview]\n );\n\n return (\n <div className=\"workspace-git-view\">\n <div className=\"code-editor workspace-git-editor\">\n <PanelHeader\n title={preview?.title ?? preview?.path ?? t(\"git.diff_select_title\")}\n actions={\n preview && showCloseButton ? (\n <div className=\"code-mode-toggle\">\n <Tooltip content={t(\"action.close\")}>\n <IconButton\n aria-label={t(\"action.close\")}\n className=\"code-mode-btn\"\n icon={<X size={12} />}\n onClick={handleClose}\n size=\"sm\"\n />\n </Tooltip>\n </div>\n ) : null\n }\n />\n\n <div className=\"code-editor-body\">\n {preview ? (\n <div className=\"code-lines git-diff-lines\">\n {diffLines.map((line) => (\n <div key={line.id} className={`code-line git-diff-line git-diff-line-${line.tone}`}>\n <span className=\"code-line-num\">{line.lineNumber}</span>\n <span className=\"git-diff-line-text\">{line.line || \" \"}</span>\n </div>\n ))}\n </div>\n ) : (\n <EmptyState\n className=\"git-diff-empty\"\n description={<p className=\"git-diff-empty-body\">{t(\"git.diff_empty_body\")}</p>}\n title={<p className=\"git-diff-empty-title\">{t(\"label.git\")}</p>}\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default GitDiffViewer;\n","import { THEME_IDS } from \"../theme\";\n\nexport type UiPreviewSceneDevice = \"desktop\" | \"mobile\";\nexport type UiPreviewSceneTheme = (typeof THEME_IDS)[number];\nexport type UiPreviewSceneLocale = \"zh\" | \"en\";\nexport type UiPreviewCategory =\n | \"page\"\n | \"modal\"\n | \"sheet\"\n | \"toast\"\n | \"empty\"\n | \"error\"\n | \"loading\";\nexport type UiPreviewSource = \"real-route\" | \"showcase\";\nexport type UiPreviewSettingsSection = \"general\" | \"appearance\" | \"providers\" | \"shortcuts\";\n\nexport interface UiPreviewSceneMetadata {\n id: string;\n title: string;\n category: UiPreviewCategory;\n source: UiPreviewSource;\n description: string;\n devices: UiPreviewSceneDevice[];\n themes: UiPreviewSceneTheme[];\n locales: UiPreviewSceneLocale[];\n capture?: {\n selector?: string;\n fullPage?: boolean;\n settingsSection?: UiPreviewSettingsSection;\n };\n}\n\nfunction allThemeIds(): UiPreviewSceneTheme[] {\n return [...THEME_IDS] as UiPreviewSceneTheme[];\n}\n\nfunction lightThemeIds(): UiPreviewSceneTheme[] {\n return THEME_IDS.filter((themeId) => themeId.endsWith(\"-light\")) as UiPreviewSceneTheme[];\n}\n\nexport const UI_PREVIEW_SCENE_METADATA: UiPreviewSceneMetadata[] = [\n {\n id: \"welcome\",\n title: \"Welcome\",\n category: \"page\",\n source: \"real-route\",\n description: \"Welcome page on the real / route under the preview harness.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".welcome-card\" },\n },\n {\n id: \"settings-general\",\n title: \"Settings / General\",\n category: \"page\",\n source: \"real-route\",\n description: \"Settings page at /settings with deterministic settings.get data.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\", settingsSection: \"general\" },\n },\n {\n id: \"settings-appearance\",\n title: \"Settings / Appearance\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Settings appearance section using route-backed production UI with deterministic appearance personalization seed data.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\", settingsSection: \"appearance\" },\n },\n {\n id: \"settings-providers\",\n title: \"Settings / Providers\",\n category: \"page\",\n source: \"real-route\",\n description: \"Settings providers section with fixed provider args.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\", settingsSection: \"providers\" },\n },\n {\n id: \"settings-shortcuts\",\n title: \"Settings / Shortcuts\",\n category: \"page\",\n source: \"real-route\",\n description: \"Settings shortcuts section with the keyboard shortcut list and category tabs.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\", settingsSection: \"shortcuts\" },\n },\n {\n id: \"settings-monitoring\",\n title: \"Settings / Monitoring\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Settings monitoring section with deterministic monitoring data for desktop and mobile review.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-monitoring-shell\" },\n },\n {\n id: \"settings-mobile-root\",\n title: \"Settings / Mobile Root\",\n category: \"page\",\n source: \"real-route\",\n description: \"Mobile settings root list before drilling into any subsection.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-mobile-root\" },\n },\n {\n id: \"app-loading-shell\",\n title: \"App Loading Shell\",\n category: \"loading\",\n source: \"real-route\",\n description: \"Top-level shell shown while auth state is still unresolved before routes render.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".app-loading-shell\" },\n },\n {\n id: \"workspace-desktop\",\n title: \"Workspace / Desktop\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Desktop workspace shell with seeded workspace, git status, file tree, and appearance personalization coverage.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-page\" },\n },\n {\n id: \"workspace-mobile\",\n title: \"Workspace / Mobile\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Mobile workspace shell with seeded workspace, no active sessions, and appearance personalization coverage.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \"[data-testid='mobile-shell']\" },\n },\n {\n id: \"workspace-draft-pane-editor-review\",\n title: \"Workspace / Draft Pane Editor Review\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Desktop workspace review scene for validating draft-pane file drop conversion, editor pane routing, and close-back-to-draft behavior.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-page\" },\n },\n {\n id: \"workspace-editor-pane-review\",\n title: \"Workspace / Editor Pane Review\",\n category: \"page\",\n source: \"real-route\",\n description:\n \"Desktop workspace scene with an active agent editor pane leaf, toolbar chrome, and neighboring draft pane for acceptance review.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-page\" },\n },\n {\n id: \"auth-preview\",\n title: \"Auth Preview\",\n category: \"page\",\n source: \"real-route\",\n description: \"Login/auth page component on the real /login route under preview harness.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".auth-card-shell\" },\n },\n {\n id: \"session-gate\",\n title: \"Session Gate\",\n category: \"error\",\n source: \"real-route\",\n description:\n \"Session gate shell shown when activation is displaced and the app requires re-entry.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".auth-card-shell\" },\n },\n {\n id: \"not-found\",\n title: \"Not Found\",\n category: \"page\",\n source: \"real-route\",\n description: \"Not found page for an unknown route path.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".welcome-card\" },\n },\n {\n id: \"workspace-load-error\",\n title: \"Workspace / Load Error\",\n category: \"error\",\n source: \"real-route\",\n description: \"Shared workspace route error shell when workspace list loading fails.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-resolving-card\" },\n },\n {\n id: \"workspace-launch-modal\",\n title: \"Workspace Launch Modal\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Workspace open modal with fixed browse/open responses.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".launch-modal, .mobile-sheet--launch\" },\n },\n {\n id: \"command-palette\",\n title: \"Command Palette\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Command palette forced open with a seeded active workspace.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".command-palette, .command-palette-sheet\" },\n },\n {\n id: \"branch-quick-pick\",\n title: \"Branch Quick Pick\",\n category: \"sheet\",\n source: \"showcase\",\n description: \"Branch picker opened via seeded branchQuickPick atom and fake git.branches data.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".mobile-select-sheet--command\" },\n },\n {\n id: \"toast-stack\",\n title: \"Toast Stack\",\n category: \"toast\",\n source: \"showcase\",\n description: \"Success and error toasts for visual review.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".toast-container\" },\n },\n {\n id: \"footer-update-rail-review\",\n title: \"Footer Update Rail Review\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"Workspace footer review with a seeded update-available rail on desktop and mobile.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".footer-update-rail-review\" },\n },\n {\n id: \"footer-update-rail-confirm-review\",\n title: \"Footer Update Rail Confirm Review\",\n category: \"modal\",\n source: \"showcase\",\n description:\n \"Workspace footer review with the confirmation dialog opened after clicking Update Now.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".modal-overlay\" },\n },\n {\n id: \"workspace-icon-review\",\n title: \"Workspace Icon Review\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"File tree, git states, terminal empty state, and mobile dock/supervisor icon surfaces for theme review.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-icon-review\" },\n },\n {\n id: \"toast-icon-review\",\n title: \"Toast Icon Review\",\n category: \"toast\",\n source: \"showcase\",\n description:\n \"Success, warning, error, and info toast icons rendered together for theme review.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".toast-container\" },\n },\n {\n id: \"supervisor-icon-review\",\n title: \"Supervisor Icon Review\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Supervisor dialog header icon and destructive callout surface review.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".supervisor-dialog, .mobile-supervisor-sheet\" },\n },\n {\n id: \"mobile-workspace-drawer\",\n title: \"Mobile Workspace Drawer\",\n category: \"sheet\",\n source: \"showcase\",\n description: \"Opened mobile workspace drawer with two example workspaces.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".mobile-workspace-drawer\" },\n },\n {\n id: \"mobile-files-sheet\",\n title: \"Mobile Files Sheet\",\n category: \"sheet\",\n source: \"showcase\",\n description: \"Static mobile files sheet chrome for screenshot comparison.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".mobile-sheet--files\" },\n },\n {\n id: \"mobile-terminal-sheet\",\n title: \"Mobile Terminal Sheet\",\n category: \"sheet\",\n source: \"showcase\",\n description:\n \"Mobile terminal fullscreen sheet with compact tool chrome and status bar for screenshot comparison.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".mobile-sheet--terminal\" },\n },\n {\n id: \"mobile-supervisor-sheet\",\n title: \"Mobile Supervisor Sheet\",\n category: \"sheet\",\n source: \"showcase\",\n description: \"Mobile supervisor sheet with a seeded supervisor state.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".mobile-supervisor-sheet\" },\n },\n {\n id: \"supervisor-dialog\",\n title: \"Supervisor Dialog\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Desktop supervisor objective dialog opened by atom seed.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".supervisor-dialog\" },\n },\n {\n id: \"readme-desktop-hero\",\n title: \"README / Desktop Hero\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"README-focused desktop workspace scene with a live agent session, supervisor summary, and shell verification terminal.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-page\" },\n },\n {\n id: \"readme-desktop-review\",\n title: \"README / Desktop Review\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"README-focused desktop scene showing git review workflow with changed files, history, and an open diff.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-page\" },\n },\n {\n id: \"readme-mobile-progress\",\n title: \"README / Mobile Progress\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"README-focused mobile scene showing an active session with supervisor continuity and branch status.\",\n devices: [\"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \"[data-testid='mobile-shell']\" },\n },\n {\n id: \"workspace-topbar-review\",\n title: \"Workspace / Topbar Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop topbar chrome review with seeded workspaces and quick actions.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--topbar\" },\n },\n {\n id: \"workspace-sidebar-files-review\",\n title: \"Workspace / Sidebar Files Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop file tree sidebar review with seeded search and file hierarchy.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--sidebar\" },\n },\n {\n id: \"workspace-sidebar-git-review\",\n title: \"Workspace / Sidebar Git Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop git sidebar review with seeded status, history, and worktrees.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--sidebar\" },\n },\n {\n id: \"workspace-editor-review\",\n title: \"Workspace / Editor Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop editor review with code chrome, dirty state, and static content density.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--editor\" },\n },\n {\n id: \"workspace-diff-review\",\n title: \"Workspace / Diff Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop diff review with populated git preview lines and editor-surface chrome.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--diff\" },\n },\n {\n id: \"workspace-terminal-empty-review\",\n title: \"Workspace / Terminal Empty Review\",\n category: \"empty\",\n source: \"showcase\",\n description: \"Desktop terminal empty state review for bottom panel density and hierarchy.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--terminal\" },\n },\n {\n id: \"settings-density-review\",\n title: \"Settings / Density Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop settings page review for spacing, grouping, and information density.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\" },\n },\n {\n id: \"settings-light-theme-review\",\n title: \"Settings / Light Theme Review\",\n category: \"page\",\n source: \"showcase\",\n description:\n \"Desktop settings review constrained to light themes for surface hierarchy checks.\",\n devices: [\"desktop\"],\n themes: lightThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page\" },\n },\n {\n id: \"desktop-overlay-review\",\n title: \"Desktop / Overlay Review\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Desktop overlay comparison for command palette, launcher, and worktree manager.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-grid\" },\n },\n {\n id: \"desktop-statusbar-review\",\n title: \"Desktop / Status Bar Review\",\n category: \"page\",\n source: \"showcase\",\n description: \"Desktop status bar review with seeded branch and file-change state.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".desktop-review-card--statusbar\" },\n },\n {\n id: \"worktree-manager\",\n title: \"Worktree Manager\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Worktree manager surface with seeded worktree list, status, diff, and tree.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".worktree-manager-surface, .mobile-sheet--worktree\" },\n },\n {\n id: \"confirm-dialog-danger\",\n title: \"Confirm Dialog / Danger\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Generic destructive confirm dialog for screenshot review.\",\n devices: [\"desktop\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".modal-card\" },\n },\n {\n id: \"provider-error-state\",\n title: \"Provider Error State\",\n category: \"error\",\n source: \"showcase\",\n description: \"Inline settings error state for provider/config failures.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".settings-page__notice\" },\n },\n {\n id: \"file-tree-delete-confirm\",\n title: \"File Tree / Delete Confirm\",\n category: \"modal\",\n source: \"showcase\",\n description: \"Shared destructive confirm dialog used by the file tree when deleting a file.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".modal-card\" },\n },\n {\n id: \"empty-state\",\n title: \"Empty State\",\n category: \"empty\",\n source: \"showcase\",\n description: \"Shared empty-state shell.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".welcome-card\" },\n },\n {\n id: \"loading-state\",\n title: \"Loading State\",\n category: \"loading\",\n source: \"showcase\",\n description: \"Workspace resolving/loading shell.\",\n devices: [\"desktop\", \"mobile\"],\n themes: allThemeIds(),\n locales: [\"zh\", \"en\"],\n capture: { selector: \".workspace-resolving-card\" },\n },\n];\n\nconst UI_PREVIEW_SCENE_METADATA_MAP = new Map(\n UI_PREVIEW_SCENE_METADATA.map((scene) => [scene.id, scene])\n);\n\nexport function getUiPreviewSceneMetadata(id: string): UiPreviewSceneMetadata | null {\n return UI_PREVIEW_SCENE_METADATA_MAP.get(id) ?? null;\n}\n","import type {\n FileNode,\n GitCommitSummary,\n GitStatus,\n Workspace,\n WorktreeInfo,\n} from \"@coder-studio/core\";\nimport { CommandPalette } from \"../../features/command-palette\";\nimport { SettingsPage } from \"../../features/settings\";\nimport { TerminalPanel } from \"../../features/terminal-panel\";\nimport { TopBar } from \"../../features/topbar\";\nimport { FileTreePanel } from \"../../features/workspace/views/shared/file-tree-panel\";\nimport { GitDiffViewer } from \"../../features/workspace/views/shared/git-diff-viewer\";\nimport { GitPanel } from \"../../features/workspace/views/shared/git-panel\";\nimport { WorkspaceLaunchModal } from \"../../features/workspace/views/shared/workspace-launch-modal\";\nimport { WorkspaceStatusBar } from \"../../features/workspace/views/shared/workspace-status-bar\";\nimport { WorktreeManagerSurface } from \"../../features/workspace/views/shared/worktree-manager-surface\";\nimport type { UiPreviewSceneDefinition } from \"../catalog\";\nimport { getUiPreviewSceneMetadata } from \"../scene-metadata\";\n\nconst workspace: Workspace = {\n id: \"ws-review\",\n name: \"coder-studio\",\n path: \"/home/spencer/workspace/coder-studio\",\n targetRuntime: \"native\",\n openedAt: 1,\n lastActiveAt: 1,\n uiState: {\n leftPanelWidth: 280,\n bottomPanelHeight: 220,\n focusMode: false,\n activeSessionId: undefined,\n paneLayout: { id: \"root\", type: \"leaf\" },\n },\n};\n\nconst gitStatus: GitStatus = {\n branch: \"main\",\n ahead: 1,\n behind: 0,\n staged: [{ path: \"packages/web/src/styles/tokens.css\", status: \"modified\" }],\n modified: [\n { path: \"packages/web/src/styles/components.css\", status: \"modified\" },\n { path: \"packages/web/src/ui-preview/scenes/desktop-review-scenes.tsx\", status: \"modified\" },\n ],\n untracked: [\n { path: \"e2e-ui/output/screenshots/page/workspace-topbar-review.png\", status: \"untracked\" },\n ],\n deleted: [],\n};\n\nconst gitHistory: GitCommitSummary[] = [\n {\n sha: \"8f5f7d54d9f8b7f08f483699f2f16c3c442f0a11\",\n shortSha: \"8f5f7d5\",\n subject: \"style: tighten workspace desktop chrome\",\n authorName: \"Spencer\",\n authoredAt: 1715731200000,\n },\n {\n sha: \"f1c44d42d2b8ef3c83bb8aeeb0898422bf94b31c\",\n shortSha: \"f1c44d4\",\n subject: \"test: add ui preview desktop review scenes\",\n authorName: \"Spencer\",\n authoredAt: 1715644800000,\n },\n];\n\nconst worktrees: WorktreeInfo[] = [\n {\n name: \"main\",\n path: \"/home/spencer/workspace/coder-studio\",\n branch: \"main\",\n commit: \"8f5f7d5\",\n status: \"clean\",\n },\n {\n name: \"feat-pc-style-polish\",\n path: \"/home/spencer/workspace/coder-studio/.worktrees/feat-pc-style-polish\",\n branch: \"feat/pc-style-polish\",\n commit: \"f1c44d4\",\n status: \"dirty\",\n },\n];\n\nconst worktreeStatusByPath: Record<string, GitStatus> = {\n [worktrees[1].path]: gitStatus,\n};\n\nconst worktreeTreeByPath: Record<string, FileNode[]> = {\n [worktrees[1].path]: [\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"docs\", path: \"docs\", kind: \"dir\" },\n { name: \"README.md\", path: \"README.md\", kind: \"file\" },\n ],\n};\n\nconst rootTree: FileNode[] = [\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"docs\", path: \"docs\", kind: \"dir\" },\n { name: \"README.md\", path: \"README.md\", kind: \"file\" },\n];\n\nconst packagesTree: FileNode[] = [\n { name: \"web\", path: \"packages/web\", kind: \"dir\" },\n { name: \"core\", path: \"packages/core\", kind: \"dir\" },\n];\n\nconst webTree: FileNode[] = [\n { name: \"src\", path: \"packages/web/src\", kind: \"dir\" },\n { name: \"package.json\", path: \"packages/web/package.json\", kind: \"file\" },\n];\n\nconst srcTree: FileNode[] = [\n { name: \"styles\", path: \"packages/web/src/styles\", kind: \"dir\" },\n { name: \"ui-preview\", path: \"packages/web/src/ui-preview\", kind: \"dir\" },\n { name: \"app.tsx\", path: \"packages/web/src/app.tsx\", kind: \"file\" },\n];\n\nconst searchResults: FileNode[] = [\n { name: \"components.css\", path: \"packages/web/src/styles/components.css\", kind: \"file\" },\n { name: \"tokens.css\", path: \"packages/web/src/styles/tokens.css\", kind: \"file\" },\n];\n\nconst editorReviewLines = [\n \"const headerTitle = isMobile\",\n ' ? t(shouldShowMobileRoot ? \"settings.title\" : activeSectionMeta.labelKey)',\n ' : t(\"settings.title\");',\n \"\",\n \"return (\",\n ' <div className={`settings-page ${isMobile ? \"settings-page--mobile\" : \"\"}`}>',\n ' <header className=\"settings-header\">',\n \" <PageHeader\",\n \" ...\",\n];\n\nfunction scene(\n id: string,\n config: Pick<UiPreviewSceneDefinition, \"router\" | \"seed\" | \"render\">\n): UiPreviewSceneDefinition {\n const metadata = getUiPreviewSceneMetadata(id);\n if (!metadata) {\n throw new Error(`Missing UI preview metadata for ${id}`);\n }\n\n return {\n ...metadata,\n ...config,\n };\n}\n\nfunction buildWorkspaceSeed(context: {\n theme: string;\n locale: \"zh\" | \"en\";\n device: \"desktop\" | \"mobile\";\n}) {\n return {\n ...context,\n workspaces: [\n workspace,\n {\n ...workspace,\n id: \"ws-review-2\",\n name: \"playground\",\n path: \"/home/spencer/workspace/playground\",\n },\n ],\n activeWorkspaceId: workspace.id,\n fileTreeByWorkspaceId: {\n [workspace.id]: new Map<string, FileNode[]>([\n [\".\", rootTree],\n [\"packages\", packagesTree],\n [\"packages/web\", webTree],\n [\"packages/web/src\", srcTree],\n ]),\n },\n gitStateByWorkspaceId: {\n [workspace.id]: gitStatus,\n },\n gitBranchListByWorkspaceId: {\n [workspace.id]: {\n current: \"main\",\n branches: [\n { name: \"main\", isCurrent: true, isRemote: false },\n { name: \"feat/pc-style-polish\", isCurrent: false, isRemote: false },\n { name: \"origin/main\", isCurrent: false, isRemote: true },\n ],\n },\n },\n worktreeListByWorkspaceId: {\n [workspace.id]: worktrees,\n },\n commands: {\n workspaceList: [workspace],\n fileTreeByWorkspaceId: {\n [workspace.id]: {\n \".\": rootTree,\n packages: packagesTree,\n \"packages/web\": webTree,\n \"packages/web/src\": srcTree,\n },\n },\n fileSearchByWorkspaceId: {\n [workspace.id]: searchResults,\n },\n gitStatusByWorkspaceId: {\n [workspace.id]: gitStatus,\n },\n gitBranchesByWorkspaceId: {\n [workspace.id]: {\n current: \"main\",\n branches: [\n { name: \"main\", isCurrent: true, isRemote: false },\n { name: \"feat/pc-style-polish\", isCurrent: false, isRemote: false },\n { name: \"origin/main\", isCurrent: false, isRemote: true },\n ],\n },\n },\n gitLogByWorkspaceId: {\n [workspace.id]: { entries: gitHistory },\n },\n gitDiffByWorkspaceId: {\n [workspace.id]: {\n diff: \"@@ preview diff\\n- background: #11181f;\\n+ background: var(--bg-elevated);\",\n renderAs: \"text\",\n status: \"modified\",\n },\n },\n gitCommitDetailByWorkspaceId: {\n [workspace.id]: {\n commit: {\n ...gitHistory[0],\n parentSha: gitHistory[1]?.sha,\n },\n files: [\n {\n path: \"packages/web/src/ui-preview/scenes/desktop-review-scenes.tsx\",\n status: \"modified\",\n renderAs: \"text\",\n },\n ],\n },\n },\n worktreeListByWorkspaceId: {\n [workspace.id]: worktrees,\n },\n worktreeStatusByPath,\n worktreeDiffByPath: {\n [worktrees[1].path]: \"@@ worktree diff\\n+ packages/web/src/styles/components.css\",\n },\n worktreeTreeByPath,\n terminalListByWorkspaceId: {\n [workspace.id]: [],\n },\n },\n };\n}\n\nfunction DesktopReviewShell({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={className ? `desktop-review-shell ${className}` : \"desktop-review-shell\"}>\n {children}\n </div>\n );\n}\n\nfunction DesktopEditorReviewSurface() {\n return (\n <div className=\"workspace-git-view\">\n <div className=\"code-editor workspace-git-editor\">\n <div className=\"code-editor-header\">\n <span className=\"code-file-path\">\n packages/web/src/features/settings/components/settings-page.tsx\n <span className=\"dirty-indicator\">*</span>\n </span>\n <div className=\"code-mode-toggle\">\n <button type=\"button\" className=\"code-mode-btn\" aria-label=\"Save file\" disabled>\n Save\n </button>\n <button\n type=\"button\"\n className=\"code-mode-btn active\"\n aria-label=\"Preview desktop header\"\n >\n Preview\n </button>\n </div>\n </div>\n <div className=\"code-editor-body\">\n <div className=\"code-lines\">\n {editorReviewLines.map((line, index) => (\n <div key={`${index}:${line}`} className=\"code-line\">\n <span className=\"code-line-num\">{index + 1}</span>\n <span className=\"git-diff-line-text\">{line || \" \"}</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function createDesktopReviewScenes(): UiPreviewSceneDefinition[] {\n return [\n scene(\"workspace-topbar-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--topbar\">\n <TopBar />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"workspace-sidebar-files-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--sidebar\">\n <FileTreePanel workspaceId={workspace.id} variant=\"desktop\" />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"workspace-sidebar-git-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--sidebar\">\n <GitPanel workspaceId={workspace.id} variant=\"desktop\" />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"workspace-editor-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--editor\">\n <DesktopEditorReviewSurface />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"workspace-diff-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...buildWorkspaceSeed(context),\n gitDiffPreviewByWorkspaceId: {\n [workspace.id]: {\n kind: \"worktree-file-diff\",\n path: \"packages/web/src/styles/components.css\",\n diff: [\n \"@@ workspace shell\",\n \"- background: var(--bg-surface);\",\n \"+ background: var(--bg-elevated);\",\n \"+ border-radius: var(--radius-xl);\",\n ].join(\"\\n\"),\n renderAs: \"text\",\n status: \"modified\",\n },\n },\n }),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--diff\">\n <GitDiffViewer workspaceId={workspace.id} showCloseButton={false} />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"workspace-terminal-empty-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--terminal\">\n <TerminalPanel />\n </div>\n </DesktopReviewShell>\n ),\n }),\n scene(\"settings-density-review\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => ({\n ...buildWorkspaceSeed(context),\n commands: {\n ...buildWorkspaceSeed(context).commands,\n settingsGet: {\n \"notifications.enabled\": true,\n \"notifications.soundEnabled\": true,\n \"supervisor.evaluationTimeoutSec\": 600,\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.terminalRenderer\": \"standard\",\n \"providers.claude.additionalArgs\": [\"--verbose\"],\n \"providers.codex.additionalArgs\": [\"--sandbox\", \"workspace-write\"],\n },\n settingsUpdate: {},\n settingsPreviewCommandByProviderId: {\n claude: \"claude --verbose\",\n codex: \"codex --sandbox workspace-write\",\n },\n },\n }),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-light-theme-review\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => ({\n ...buildWorkspaceSeed(context),\n commands: {\n ...buildWorkspaceSeed(context).commands,\n settingsGet: {\n \"notifications.enabled\": true,\n \"notifications.soundEnabled\": true,\n \"supervisor.evaluationTimeoutSec\": 600,\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.terminalRenderer\": \"standard\",\n \"providers.claude.additionalArgs\": [\"--verbose\"],\n \"providers.codex.additionalArgs\": [\"--sandbox\", \"workspace-write\"],\n },\n settingsUpdate: {},\n settingsPreviewCommandByProviderId: {\n claude: \"claude --verbose\",\n codex: \"codex --sandbox workspace-write\",\n },\n },\n }),\n render: () => <SettingsPage />,\n }),\n scene(\"desktop-overlay-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...buildWorkspaceSeed(context),\n commandPaletteOpen: true,\n commands: {\n ...buildWorkspaceSeed(context).commands,\n workspaceBrowse: {\n currentPath: \"/home/spencer/workspace\",\n parentPath: \"/home/spencer\",\n directories: [\n { name: \"coder-studio\", path: \"/home/spencer/workspace/coder-studio\", itemCount: 24 },\n { name: \"playground\", path: \"/home/spencer/workspace/playground\", itemCount: 6 },\n ],\n },\n workspaceOpen: workspace,\n },\n }),\n render: () => (\n <div className=\"desktop-review-grid\">\n <div className=\"desktop-review-card\">\n <CommandPalette />\n </div>\n <div className=\"desktop-review-card\">\n <WorkspaceLaunchModal onClose={() => {}} />\n </div>\n <div className=\"desktop-review-card desktop-review-card--worktree\">\n {/* Review-only inline preview: this remains a non-portaled inspection surface, not a product overlay. */}\n <div className=\"desktop-review-embedded-worktree\">\n <WorktreeManagerSurface\n desktopPreviewInline\n workspaceId={workspace.id}\n openView=\"list\"\n onClose={() => {}}\n />\n </div>\n </div>\n </div>\n ),\n }),\n scene(\"desktop-statusbar-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <DesktopReviewShell>\n <div className=\"desktop-review-card desktop-review-card--statusbar\">\n <WorkspaceStatusBar align=\"start\" gitState={gitStatus} workspaceId={workspace.id} />\n </div>\n </DesktopReviewShell>\n ),\n }),\n ];\n}\n","import {\n deriveMonitoringMode,\n type FileNode,\n type GitStatus,\n type MonitoringResponse,\n type ProviderListItem,\n type ProviderRuntimeStatusResponse,\n type SearchSessionStartResult,\n type Session,\n type Workspace,\n} from \"@coder-studio/core\";\nimport { LoginPage } from \"../../features/auth\";\nimport { SessionGatePage } from \"../../features/auth/session-gate\";\nimport { NotFoundPage } from \"../../features/not-found\";\nimport { SettingsPage } from \"../../features/settings\";\nimport { WelcomePage } from \"../../features/welcome\";\nimport type { OpenFile } from \"../../features/workspace/atoms\";\nimport { WorkspaceDesktopView } from \"../../features/workspace/views/desktop/workspace-desktop-view\";\nimport { WorkspaceMobileView } from \"../../features/workspace/views/mobile/workspace-mobile-view\";\nimport { WorkspaceEmptyState } from \"../../features/workspace/views/shared/workspace-empty-state\";\nimport { WorkspaceRouteGate } from \"../../features/workspace/views/shared/workspace-route-gate\";\nimport { DesktopShell } from \"../../shells/desktop-shell\";\nimport { MobileShell } from \"../../shells/mobile-shell\";\nimport type { UiPreviewSceneContext, UiPreviewSceneDefinition } from \"../catalog\";\nimport { getUiPreviewSceneMetadata } from \"../scene-metadata\";\n\nconst workspace: Workspace = {\n id: \"ws-preview\",\n name: \"coder-studio\",\n path: \"/home/spencer/workspace/coder-studio\",\n targetRuntime: \"native\",\n openedAt: 1,\n lastActiveAt: 1,\n uiState: {\n leftPanelWidth: 402,\n bottomPanelHeight: 220,\n focusMode: false,\n fileTreeExpandedDirs: [],\n paneLayout: { id: \"root\", type: \"leaf\" },\n },\n};\n\nconst gitStatus: GitStatus = {\n branch: \"feature/ai-agent\",\n ahead: 0,\n behind: 0,\n staged: [],\n modified: [{ path: \"packages/web/src/app.tsx\", status: \"modified\" }],\n untracked: [{ path: \"e2e-ui/src/index.ts\", status: \"untracked\" }],\n deleted: [],\n};\n\nconst previewProviderList: ProviderListItem[] = [\n {\n id: \"claude\",\n displayName: \"Claude Code\",\n badge: \"Claude\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"claude\"],\n },\n {\n id: \"codex\",\n displayName: \"Codex\",\n badge: \"Codex\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"codex\"],\n },\n {\n id: \"gemini\",\n displayName: \"Gemini CLI\",\n badge: \"Gemini\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"gemini\"],\n },\n {\n id: \"cursor\",\n displayName: \"Cursor Agent\",\n badge: \"Cursor\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"agent\"],\n },\n {\n id: \"opencode\",\n displayName: \"OpenCode\",\n badge: \"OpenCode\",\n kind: \"built_in\",\n stability: \"experimental\",\n capability: \"limited\",\n capabilities: [],\n requiredCommands: [\"opencode\"],\n },\n];\n\nconst previewProviderRuntimeStatus: ProviderRuntimeStatusResponse[\"providers\"] = {\n claude: {\n providerId: \"claude\",\n displayName: \"Claude Code\",\n badge: \"Claude\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"claude\"],\n available: true,\n missingCommands: [],\n missingPrerequisites: [],\n autoInstallSupported: true,\n installReadiness: \"ready\",\n manualGuideKeys: [],\n docUrls: { provider: \"\", prerequisites: {} },\n },\n codex: {\n providerId: \"codex\",\n displayName: \"Codex\",\n badge: \"Codex\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"codex\"],\n available: true,\n missingCommands: [],\n missingPrerequisites: [],\n autoInstallSupported: true,\n installReadiness: \"ready\",\n manualGuideKeys: [],\n docUrls: { provider: \"\", prerequisites: {} },\n },\n gemini: {\n providerId: \"gemini\",\n displayName: \"Gemini CLI\",\n badge: \"Gemini\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"gemini\"],\n available: true,\n missingCommands: [],\n missingPrerequisites: [],\n autoInstallSupported: false,\n installReadiness: \"ready\",\n manualGuideKeys: [],\n docUrls: { provider: \"\", prerequisites: {} },\n },\n cursor: {\n providerId: \"cursor\",\n displayName: \"Cursor Agent\",\n badge: \"Cursor\",\n kind: \"built_in\",\n stability: \"stable\",\n capability: \"full\",\n capabilities: [],\n requiredCommands: [\"agent\"],\n available: true,\n missingCommands: [],\n missingPrerequisites: [],\n autoInstallSupported: false,\n installReadiness: \"ready\",\n manualGuideKeys: [],\n docUrls: { provider: \"\", prerequisites: {} },\n },\n opencode: {\n providerId: \"opencode\",\n displayName: \"OpenCode\",\n badge: \"OpenCode\",\n kind: \"built_in\",\n stability: \"experimental\",\n capability: \"limited\",\n capabilities: [],\n requiredCommands: [\"opencode\"],\n available: false,\n missingCommands: [\"opencode\"],\n missingPrerequisites: [],\n autoInstallSupported: false,\n installReadiness: \"unsupported_platform\",\n manualGuideKeys: [],\n docUrls: { provider: \"\", prerequisites: {} },\n },\n};\n\nconst fileTreeMap = new Map<string, FileNode[]>();\nfileTreeMap.set(\".\", [\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"core\", path: \"core\", kind: \"dir\" },\n { name: \"README.md\", path: \"README.md\", kind: \"file\" },\n]);\n\nconst openPreviewFiles: Record<string, OpenFile> = {};\n\nconst editorPanePreviewFiles: Record<string, OpenFile> = {\n \"packages/web/src/app.tsx\": {\n kind: \"text\",\n path: \"packages/web/src/app.tsx\",\n content: [\n \"export function App() {\",\n \" const searchQuery = workspacePanelState.query;\",\n \"\",\n \" if (!searchQuery.trim()) {\",\n \" return null;\",\n \" }\",\n \"\",\n \" return <WorkspacePage />;\",\n \"}\",\n ].join(\"\\n\"),\n savedContent: [\n \"export function App() {\",\n \" const searchQuery = workspacePanelState.query;\",\n \"\",\n \" if (!searchQuery.trim()) {\",\n \" return null;\",\n \" }\",\n \"\",\n \" return <WorkspacePage />;\",\n \"}\",\n ].join(\"\\n\"),\n baseHash: \"preview:app-tsx\",\n isDirty: false,\n },\n};\n\nconst searchContentResults: SearchSessionStartResult = {\n sessionId: \"preview-search-session\",\n files: [\n {\n path: \"packages/web/src/app.tsx\",\n name: \"app.tsx\",\n matchCount: 4,\n hasMoreMatches: false,\n matches: [\n {\n line: 24,\n id: \"preview-match-1\",\n column: 7,\n endColumn: 18,\n preview: \"const searchQuery = workspacePanelState.query;\",\n previewColumnStart: 7,\n previewColumnEnd: 18,\n replacementPreview: \"const workspaceQuery = workspacePanelState.query;\",\n replacementPreviewColumnStart: 7,\n replacementPreviewColumnEnd: 21,\n isReplacementPreviewTruncated: false,\n },\n {\n line: 86,\n id: \"preview-match-2\",\n column: 8,\n endColumn: 19,\n preview: \"return searchQuery.trim() ? results : [];\",\n previewColumnStart: 8,\n previewColumnEnd: 19,\n replacementPreview: \"return workspaceQuery.trim() ? results : [];\",\n replacementPreviewColumnStart: 8,\n replacementPreviewColumnEnd: 22,\n isReplacementPreviewTruncated: false,\n },\n ],\n },\n {\n baseHash: \"preview:tree-tsx\",\n path: \"packages/web/src/tree.tsx\",\n name: \"tree.tsx\",\n matchCount: 2,\n hasMoreMatches: false,\n matches: [],\n },\n ],\n totalMatchCount: 12,\n totalFileCount: 2,\n hasMoreFiles: false,\n truncatedMatchFileCount: 0,\n skippedBinaryFileCount: 0,\n skippedLargeFileCount: 0,\n};\n\nconst draftPaneEditorReviewFileContents = {\n \"README.md\": {\n content: [\n \"# Coder Studio\",\n \"\",\n \"Use the draft pane to open a file directly into an editor pane.\",\n \"\",\n \"- Drop a workspace file onto the draft pane.\",\n \"- Keep later file opens routed into the focused editor pane.\",\n \"- Close the editor pane to return the leaf back to draft.\",\n \"\",\n \"This preview exists only for acceptance capture.\",\n ].join(\"\\n\"),\n baseHash: \"preview:readme\",\n },\n \"packages/web/src/app.tsx\": {\n content: [\n \"export function App() {\",\n \" const searchQuery = workspacePanelState.query;\",\n \"\",\n \" if (!searchQuery.trim()) {\",\n \" return null;\",\n \" }\",\n \"\",\n \" return <WorkspacePage />;\",\n \"}\",\n ].join(\"\\n\"),\n baseHash: \"preview:app-tsx\",\n },\n \"packages/web/src/tree.tsx\": {\n content: [\n \"export function TreePreview() {\",\n \" return searchQuery.trim() ? results : [];\",\n \"}\",\n ].join(\"\\n\"),\n baseHash: \"preview:tree-tsx\",\n },\n} as const;\n\nconst monitoringSampledAt = Date.UTC(2026, 4, 27, 14, 27, 49);\n\nfunction monitoringSeries(cpuValues: number[], memoryValues: number[]) {\n return {\n points: cpuValues.map((cpuPercent, index) => ({\n sampledAt: monitoringSampledAt - (cpuValues.length - 1 - index) * 30_000,\n cpuPercent,\n memoryBytes: memoryValues[index] ?? memoryValues[memoryValues.length - 1] ?? null,\n })),\n };\n}\n\nfunction buildSettingsSeed(context: UiPreviewSceneContext) {\n const monitoringSettings = {\n enabled: true,\n hostMetricsEnabled: true,\n runtimeSummaryEnabled: true,\n workspaceAttributionEnabled: true,\n subprocessDrilldownEnabled: true,\n sampleIntervalMs: 10000 as const,\n };\n const monitoringWorkspace = {\n id: \"workspace:observability\",\n kind: \"workspace\" as const,\n label: \"workspace/coder-studio-observability-dashboard-long-name-preview\",\n cpuPercent: 7.6,\n memoryBytes: 29.7 * 1024 ** 3,\n processCount: 4,\n uptimeSec: 139 * 60 * 60,\n trend: \"steady\" as const,\n };\n const monitoringSessions = [\n {\n id: \"session:review-agent\",\n parentId: \"workspace:observability\",\n kind: \"session\" as const,\n label: \"session/review-agent\",\n cpuPercent: 1.4,\n memoryBytes: 630 * 1024 ** 2,\n processCount: 1,\n uptimeSec: 42 * 60,\n trend: \"steady\" as const,\n },\n {\n id: \"session:build-runner\",\n parentId: \"workspace:observability\",\n kind: \"session\" as const,\n label: \"session/build-runner\",\n cpuPercent: 0.4,\n memoryBytes: 92 * 1024 ** 2,\n processCount: 1,\n uptimeSec: 17 * 60,\n trend: \"falling\" as const,\n },\n ];\n const monitoringSubprocessGroups = [\n {\n id: \"subprocess:vite-dev-server\",\n parentId: \"session:review-agent\",\n kind: \"subprocess_group\" as const,\n label: \"vite dev server\",\n cpuPercent: 0.4,\n memoryBytes: 92 * 1024 ** 2,\n processCount: 1,\n uptimeSec: 17 * 60,\n trend: \"steady\" as const,\n },\n {\n id: \"subprocess:preview-store-watcher\",\n parentId: \"session:review-agent\",\n kind: \"subprocess_group\" as const,\n label: \"preview store watcher\",\n cpuPercent: 0.2,\n memoryBytes: 54 * 1024 ** 2,\n processCount: 1,\n uptimeSec: 11 * 60,\n trend: \"steady\" as const,\n },\n {\n id: \"subprocess:drilldown-guide\",\n parentId: \"session:build-runner\",\n kind: \"subprocess_group\" as const,\n label: \"drilldown entry guide\",\n cpuPercent: 0.1,\n memoryBytes: 28 * 1024 ** 2,\n processCount: 1,\n uptimeSec: 5 * 60,\n trend: \"steady\" as const,\n },\n ];\n const monitoringResponse: MonitoringResponse = {\n settings: monitoringSettings,\n snapshot: {\n sampledAt: monitoringSampledAt,\n mode: deriveMonitoringMode(monitoringSettings),\n host: {\n cpuPercent: 7.6,\n memoryUsedBytes: 29.7 * 1024 ** 3,\n memoryTotalBytes: 63.8 * 1024 ** 3,\n memoryAvailableBytes: 34.1 * 1024 ** 3,\n loadAverage: [0.62, 0.54, 0.49],\n uptimeSec: 139 * 60 * 60,\n pressure: \"normal\",\n },\n runtime: {\n serverCpuPercent: 0.8,\n serverMemoryBytes: 182 * 1024 ** 2,\n totalManagedCpuPercent: 2.1,\n totalManagedMemoryBytes: 814 * 1024 ** 2,\n managedProcessCount: 4,\n cpuShareOfHostPercent: 0.0,\n memoryShareOfHostPercent: 0.0,\n },\n workspaces: [monitoringWorkspace],\n sessions: monitoringSessions,\n subprocessGroups: monitoringSubprocessGroups,\n backgroundGroups: [],\n },\n history: {\n host: {\n points: Array.from({ length: 30 }, (_, index) => ({\n sampledAt: monitoringSampledAt - (29 - index) * 30_000,\n cpuPercent:\n [\n 9, 6, 8, 7, 7, 6, 7, 9, 8, 7, 8, 6, 5, 12, 7, 9, 8, 16, 11, 10, 8, 7, 6, 8, 7, 6, 5,\n 9, 4, 7,\n ][index] ?? 7,\n memoryBytes: (29 + (index % 3)) * 1024 ** 3,\n })),\n },\n runtime: {\n points: Array.from({ length: 30 }, (_, index) => ({\n sampledAt: monitoringSampledAt - (29 - index) * 30_000,\n cpuPercent: [0.8, 0.5, 0.9, 1.1, 0.7, 1.4, 1.9, 1.3, 1.7, 2.1][index % 10] ?? 1.2,\n memoryBytes: (760 + (index % 5) * 14) * 1024 ** 2,\n processCount: 4,\n })),\n },\n workspaces: {\n \"workspace:observability\": monitoringSeries(\n [5.2, 4.1, 6.3, 5.4, 7.8, 6.6, 7.1, 5.5, 6.4, 7.6],\n [\n 28.4 * 1024 ** 3,\n 28.7 * 1024 ** 3,\n 28.9 * 1024 ** 3,\n 29.1 * 1024 ** 3,\n 29.3 * 1024 ** 3,\n 29.5 * 1024 ** 3,\n 29.4 * 1024 ** 3,\n 29.6 * 1024 ** 3,\n 29.7 * 1024 ** 3,\n 29.7 * 1024 ** 3,\n ]\n ),\n },\n sessions: {\n \"session:review-agent\": monitoringSeries(\n [0.9, 1.2, 1.0, 1.5, 1.3, 1.8, 1.7, 1.4, 1.6, 1.4],\n [\n 580 * 1024 ** 2,\n 590 * 1024 ** 2,\n 602 * 1024 ** 2,\n 608 * 1024 ** 2,\n 618 * 1024 ** 2,\n 624 * 1024 ** 2,\n 628 * 1024 ** 2,\n 631 * 1024 ** 2,\n 633 * 1024 ** 2,\n 630 * 1024 ** 2,\n ]\n ),\n \"session:build-runner\": monitoringSeries(\n [0.8, 0.7, 0.6, 0.6, 0.5, 0.5, 0.4, 0.4, 0.4, 0.4],\n [\n 118 * 1024 ** 2,\n 112 * 1024 ** 2,\n 107 * 1024 ** 2,\n 104 * 1024 ** 2,\n 101 * 1024 ** 2,\n 98 * 1024 ** 2,\n 96 * 1024 ** 2,\n 94 * 1024 ** 2,\n 93 * 1024 ** 2,\n 92 * 1024 ** 2,\n ]\n ),\n },\n subprocessGroups: {\n \"subprocess:vite-dev-server\": monitoringSeries(\n [0.5, 0.3, 0.4, 0.6, 0.5, 0.4, 0.6, 0.5, 0.4, 0.4],\n [\n 88 * 1024 ** 2,\n 89 * 1024 ** 2,\n 90 * 1024 ** 2,\n 92 * 1024 ** 2,\n 93 * 1024 ** 2,\n 92 * 1024 ** 2,\n 94 * 1024 ** 2,\n 93 * 1024 ** 2,\n 92 * 1024 ** 2,\n 92 * 1024 ** 2,\n ]\n ),\n \"subprocess:preview-store-watcher\": monitoringSeries(\n [0.2, 0.2, 0.1, 0.3, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2],\n [\n 50 * 1024 ** 2,\n 51 * 1024 ** 2,\n 52 * 1024 ** 2,\n 54 * 1024 ** 2,\n 54 * 1024 ** 2,\n 55 * 1024 ** 2,\n 55 * 1024 ** 2,\n 54 * 1024 ** 2,\n 54 * 1024 ** 2,\n 54 * 1024 ** 2,\n ]\n ),\n \"subprocess:drilldown-guide\": monitoringSeries(\n [0.2, 0.2, 0.1, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1],\n [\n 24 * 1024 ** 2,\n 25 * 1024 ** 2,\n 25 * 1024 ** 2,\n 26 * 1024 ** 2,\n 27 * 1024 ** 2,\n 27 * 1024 ** 2,\n 28 * 1024 ** 2,\n 28 * 1024 ** 2,\n 28 * 1024 ** 2,\n 28 * 1024 ** 2,\n ]\n ),\n },\n },\n capabilities: {\n loadAverageAvailable: true,\n processMetricsAvailable: true,\n subprocessHistoryLimited: false,\n },\n telemetry: {\n durationMs: 39,\n processRowCount: 4,\n subprocessGroupCount: 3,\n historyTrimmed: false,\n degraded: false,\n },\n };\n\n return {\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n commands: {\n settingsGet: {\n \"notifications.enabled\": true,\n \"notifications.soundEnabled\": true,\n \"supervisor.evaluationTimeoutSec\": 600,\n \"monitoring.enabled\": monitoringSettings.enabled,\n \"monitoring.hostMetricsEnabled\": monitoringSettings.hostMetricsEnabled,\n \"monitoring.runtimeSummaryEnabled\": monitoringSettings.runtimeSummaryEnabled,\n \"monitoring.workspaceAttributionEnabled\": monitoringSettings.workspaceAttributionEnabled,\n \"monitoring.subprocessDrilldownEnabled\": monitoringSettings.subprocessDrilldownEnabled,\n \"monitoring.sampleIntervalMs\": monitoringSettings.sampleIntervalMs,\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.personalization.version\": 1,\n \"appearance.personalization.common.backgroundMode\": \"image\",\n \"appearance.personalization.common.backgroundAssetId\": \"preview-background\",\n \"appearance.personalization.common.backgroundFit\": \"cover\",\n \"appearance.personalization.common.backgroundDimness\": 36,\n \"appearance.personalization.common.backgroundBlur\": 8,\n \"appearance.personalization.common.glassEnabled\": true,\n \"appearance.personalization.common.glassIntensity\": 18,\n \"appearance.personalization.common.surfaceOpacity\": 90,\n \"appearance.personalization.desktop.surfaceOpacity\": 88,\n \"appearance.personalization.mobile.surfaceOpacity\": 96,\n \"appearance.terminalRenderer\": \"standard\",\n \"providers.claude.additionalArgs\": [\"--verbose\"],\n \"providers.codex.additionalArgs\": [\"--sandbox\", \"workspace-write\"],\n },\n settingsUpdate: {},\n settingsPreviewCommandByProviderId: {\n claude: \"claude --verbose\",\n codex: \"codex --sandbox workspace-write\",\n },\n monitoringGet: monitoringResponse,\n monitoringRecheck: monitoringResponse,\n },\n };\n}\n\nfunction buildWorkspaceSeed(context: UiPreviewSceneContext, sessions: Session[] = []) {\n return {\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n sessions,\n paneLayoutByWorkspaceId: {\n [workspace.id]: { id: \"root\", type: \"leaf\" },\n },\n fileTreeByWorkspaceId: {\n [workspace.id]: fileTreeMap,\n },\n openFilesByWorkspaceId: {\n [workspace.id]: openPreviewFiles,\n },\n activeFilePathByWorkspaceId: {\n [workspace.id]: \"README.md\",\n },\n gitStateByWorkspaceId: {\n [workspace.id]: gitStatus,\n },\n gitDiffPreviewByWorkspaceId: {\n [workspace.id]: {\n path: \"packages/web/src/app.tsx\",\n diff: \"diff --git a/packages/web/src/app.tsx b/packages/web/src/app.tsx\",\n source: \"file\",\n staged: false,\n },\n },\n gitBranchListByWorkspaceId: {\n [workspace.id]: {\n current: \"feature/ai-agent\",\n branches: [\n { name: \"main\", isCurrent: false, isRemote: false },\n { name: \"feature/e2e-ui\", isCurrent: false, isRemote: false },\n { name: \"feature/ai-agent\", isCurrent: true, isRemote: false },\n ],\n },\n },\n worktreeListByWorkspaceId: {\n [workspace.id]: [],\n },\n commands: {\n settingsGet: {\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.personalization.version\": 1,\n \"appearance.personalization.common.backgroundMode\": \"image\",\n \"appearance.personalization.common.backgroundAssetId\": \"preview-background\",\n \"appearance.personalization.common.backgroundFit\": \"cover\",\n \"appearance.personalization.common.backgroundDimness\": 36,\n \"appearance.personalization.common.backgroundBlur\": 8,\n \"appearance.personalization.common.glassEnabled\": true,\n \"appearance.personalization.common.glassIntensity\": 18,\n \"appearance.personalization.common.surfaceOpacity\": 90,\n \"appearance.personalization.desktop.surfaceOpacity\": 88,\n \"appearance.personalization.mobile.surfaceOpacity\": 96,\n },\n workspaceList: [workspace],\n providerList: previewProviderList,\n providerRuntimeStatus: previewProviderRuntimeStatus,\n sessionListByWorkspaceId: { [workspace.id]: sessions },\n gitStatusByWorkspaceId: { [workspace.id]: gitStatus },\n gitLogByWorkspaceId: {\n [workspace.id]: {\n entries: [],\n },\n },\n gitBranchesByWorkspaceId: {\n [workspace.id]: {\n current: \"feature/ai-agent\",\n branches: [\n { name: \"main\", isCurrent: false, isRemote: false },\n { name: \"feature/e2e-ui\", isCurrent: false, isRemote: false },\n { name: \"feature/ai-agent\", isCurrent: true, isRemote: false },\n ],\n },\n },\n fileTreeByWorkspaceId: {\n [workspace.id]: {\n \".\": fileTreeMap.get(\".\") ?? [],\n },\n },\n fileSearchSessionByWorkspaceId: {\n [workspace.id]: searchContentResults,\n },\n worktreeListByWorkspaceId: {\n [workspace.id]: [],\n },\n terminalListByWorkspaceId: {\n [workspace.id]: [],\n },\n },\n };\n}\n\nfunction buildDraftPaneEditorReviewSeed(context: UiPreviewSceneContext) {\n const reviewWorkspace: Workspace = {\n ...workspace,\n uiState: {\n ...workspace.uiState,\n paneLayout: {\n id: \"root\",\n type: \"split\",\n direction: \"horizontal\",\n children: [\n {\n id: \"left\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n {\n id: \"right\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n ],\n },\n },\n };\n\n return {\n ...context,\n workspaces: [reviewWorkspace],\n activeWorkspaceId: reviewWorkspace.id,\n sessions: [],\n paneLayoutByWorkspaceId: {\n [reviewWorkspace.id]: {\n id: \"root\",\n type: \"split\",\n direction: \"horizontal\",\n children: [\n {\n id: \"left\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n {\n id: \"right\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n ],\n },\n },\n fileTreeByWorkspaceId: {\n [reviewWorkspace.id]: fileTreeMap,\n },\n openFilesByWorkspaceId: {\n [reviewWorkspace.id]: {},\n },\n gitStateByWorkspaceId: {\n [reviewWorkspace.id]: gitStatus,\n },\n gitBranchListByWorkspaceId: {\n [reviewWorkspace.id]: {\n current: \"feature/draft-pane-editor-integration\",\n branches: [\n { name: \"develop\", isCurrent: false, isRemote: false },\n {\n name: \"feature/draft-pane-editor-integration\",\n isCurrent: true,\n isRemote: false,\n },\n ],\n },\n },\n terminalPanelVisible: false,\n commands: {\n settingsGet: {\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.personalization.version\": 1,\n \"appearance.personalization.common.backgroundMode\": \"image\",\n \"appearance.personalization.common.backgroundAssetId\": \"preview-background\",\n \"appearance.personalization.common.backgroundFit\": \"cover\",\n \"appearance.personalization.common.backgroundDimness\": 36,\n \"appearance.personalization.common.backgroundBlur\": 8,\n \"appearance.personalization.common.glassEnabled\": true,\n \"appearance.personalization.common.glassIntensity\": 18,\n \"appearance.personalization.common.surfaceOpacity\": 90,\n \"appearance.personalization.desktop.surfaceOpacity\": 88,\n },\n workspaceList: [reviewWorkspace],\n providerList: previewProviderList,\n providerRuntimeStatus: previewProviderRuntimeStatus,\n sessionListByWorkspaceId: { [reviewWorkspace.id]: [] },\n gitStatusByWorkspaceId: { [reviewWorkspace.id]: gitStatus },\n gitLogByWorkspaceId: {\n [reviewWorkspace.id]: {\n entries: [],\n },\n },\n gitBranchesByWorkspaceId: {\n [reviewWorkspace.id]: {\n current: \"feature/draft-pane-editor-integration\",\n branches: [\n { name: \"develop\", isCurrent: false, isRemote: false },\n {\n name: \"feature/draft-pane-editor-integration\",\n isCurrent: true,\n isRemote: false,\n },\n ],\n },\n },\n fileTreeByWorkspaceId: {\n [reviewWorkspace.id]: {\n \".\": fileTreeMap.get(\".\") ?? [],\n },\n },\n fileReadByWorkspaceId: {\n [reviewWorkspace.id]: draftPaneEditorReviewFileContents,\n },\n fileSearchSessionByWorkspaceId: {\n [reviewWorkspace.id]: searchContentResults,\n },\n worktreeListByWorkspaceId: {\n [reviewWorkspace.id]: [],\n },\n terminalListByWorkspaceId: {\n [reviewWorkspace.id]: [],\n },\n },\n };\n}\n\nfunction buildEditorPaneReviewSeed(context: UiPreviewSceneContext) {\n const reviewWorkspace: Workspace = {\n ...workspace,\n uiState: {\n ...workspace.uiState,\n paneLayout: {\n id: \"root\",\n type: \"split\",\n direction: \"horizontal\",\n children: [\n {\n id: \"left\",\n type: \"leaf\",\n leafKind: \"editor\",\n },\n {\n id: \"right\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n ],\n },\n },\n };\n\n return {\n ...context,\n workspaces: [reviewWorkspace],\n activeWorkspaceId: reviewWorkspace.id,\n sessions: [],\n paneLayoutByWorkspaceId: {\n [reviewWorkspace.id]: {\n id: \"root\",\n type: \"split\",\n direction: \"horizontal\",\n children: [\n {\n id: \"left\",\n type: \"leaf\",\n leafKind: \"editor\",\n },\n {\n id: \"right\",\n type: \"leaf\",\n leafKind: \"draft\",\n },\n ],\n },\n },\n activeEditorPaneIdByWorkspaceId: {\n [reviewWorkspace.id]: \"left\",\n },\n focusedEditorPaneIdByWorkspaceId: {\n [reviewWorkspace.id]: \"left\",\n },\n fileTreeByWorkspaceId: {\n [reviewWorkspace.id]: fileTreeMap,\n },\n openFilesByWorkspaceId: {\n [reviewWorkspace.id]: editorPanePreviewFiles,\n },\n activeFilePathByWorkspaceId: {\n [reviewWorkspace.id]: \"packages/web/src/app.tsx\",\n },\n gitStateByWorkspaceId: {\n [reviewWorkspace.id]: gitStatus,\n },\n gitDiffPreviewByWorkspaceId: {\n [reviewWorkspace.id]: {\n path: \"packages/web/src/app.tsx\",\n diff: [\n \"@@ app shell\",\n \"- const query = state.query;\",\n \"+ const searchQuery = workspacePanelState.query;\",\n \"\",\n \"- return <MainLayout />;\",\n \"+ return <WorkspacePage />;\",\n ].join(\"\\n\"),\n source: \"file\",\n },\n },\n gitBranchListByWorkspaceId: {\n [reviewWorkspace.id]: {\n current: \"feature/draft-pane-editor-integration\",\n branches: [\n { name: \"develop\", isCurrent: false, isRemote: false },\n {\n name: \"feature/draft-pane-editor-integration\",\n isCurrent: true,\n isRemote: false,\n },\n ],\n },\n },\n terminalPanelVisible: false,\n commands: {\n settingsGet: {\n \"appearance.locale\": context.locale,\n \"appearance.themeId\": context.theme,\n \"appearance.personalization.version\": 1,\n \"appearance.personalization.common.backgroundMode\": \"image\",\n \"appearance.personalization.common.backgroundAssetId\": \"preview-background\",\n \"appearance.personalization.common.backgroundFit\": \"cover\",\n \"appearance.personalization.common.backgroundDimness\": 36,\n \"appearance.personalization.common.backgroundBlur\": 8,\n \"appearance.personalization.common.glassEnabled\": true,\n \"appearance.personalization.common.glassIntensity\": 18,\n \"appearance.personalization.common.surfaceOpacity\": 90,\n \"appearance.personalization.desktop.surfaceOpacity\": 88,\n },\n workspaceList: [reviewWorkspace],\n providerList: previewProviderList,\n providerRuntimeStatus: previewProviderRuntimeStatus,\n sessionListByWorkspaceId: { [reviewWorkspace.id]: [] },\n gitStatusByWorkspaceId: { [reviewWorkspace.id]: gitStatus },\n gitLogByWorkspaceId: {\n [reviewWorkspace.id]: {\n entries: [],\n },\n },\n gitBranchesByWorkspaceId: {\n [reviewWorkspace.id]: {\n current: \"feature/draft-pane-editor-integration\",\n branches: [\n { name: \"develop\", isCurrent: false, isRemote: false },\n {\n name: \"feature/draft-pane-editor-integration\",\n isCurrent: true,\n isRemote: false,\n },\n ],\n },\n },\n fileTreeByWorkspaceId: {\n [reviewWorkspace.id]: {\n \".\": fileTreeMap.get(\".\") ?? [],\n },\n },\n fileReadByWorkspaceId: {\n [reviewWorkspace.id]: draftPaneEditorReviewFileContents,\n },\n gitDiffByWorkspaceId: {\n [reviewWorkspace.id]: {\n diff: [\n \"@@ app shell\",\n \"- const query = state.query;\",\n \"+ const searchQuery = workspacePanelState.query;\",\n \"\",\n \"- return <MainLayout />;\",\n \"+ return <WorkspacePage />;\",\n ].join(\"\\n\"),\n },\n },\n fileSearchSessionByWorkspaceId: {\n [reviewWorkspace.id]: searchContentResults,\n },\n worktreeListByWorkspaceId: {\n [reviewWorkspace.id]: [],\n },\n terminalListByWorkspaceId: {\n [reviewWorkspace.id]: [],\n },\n },\n };\n}\n\nfunction scene(\n id: string,\n config: Pick<UiPreviewSceneDefinition, \"router\" | \"seed\" | \"render\">\n): UiPreviewSceneDefinition {\n const metadata = getUiPreviewSceneMetadata(id);\n if (!metadata) {\n throw new Error(`Missing UI preview metadata for ${id}`);\n }\n\n return {\n ...metadata,\n ...config,\n };\n}\n\nexport function createPageScenes(): UiPreviewSceneDefinition[] {\n return [\n scene(\"welcome\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({ ...context }),\n render: () => <WelcomePage />,\n }),\n scene(\"settings-general\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed(context),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-appearance\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed(context),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-providers\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed(context),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-shortcuts\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed(context),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-monitoring\", {\n router: () => ({ initialEntries: [\"/settings?section=monitoring\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed(context),\n render: () => <SettingsPage />,\n }),\n scene(\"settings-mobile-root\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => buildSettingsSeed({ ...context, device: \"mobile\" }),\n render: () => <SettingsPage />,\n }),\n scene(\"app-loading-shell\", {\n router: () => ({ initialEntries: [\"/\"], path: \"*\" }),\n seed: (context) => ({\n ...context,\n authEnabled: null,\n authenticated: false,\n connectionStatus: \"connecting\",\n workspaces: [],\n activeWorkspaceId: null,\n workspacesLoadState: \"idle\",\n }),\n render: (context) => (context.device === \"mobile\" ? <MobileShell /> : <DesktopShell />),\n }),\n scene(\"workspace-desktop\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <WorkspaceRouteGate>\n <WorkspaceDesktopView />\n </WorkspaceRouteGate>\n ),\n }),\n scene(\"workspace-mobile\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildWorkspaceSeed(context),\n render: () => (\n <WorkspaceRouteGate>\n <WorkspaceMobileView />\n </WorkspaceRouteGate>\n ),\n }),\n scene(\"workspace-draft-pane-editor-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildDraftPaneEditorReviewSeed(context),\n render: () => (\n <WorkspaceRouteGate>\n <WorkspaceDesktopView />\n </WorkspaceRouteGate>\n ),\n }),\n scene(\"workspace-editor-pane-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildEditorPaneReviewSeed(context),\n render: () => (\n <WorkspaceRouteGate>\n <WorkspaceDesktopView />\n </WorkspaceRouteGate>\n ),\n }),\n scene(\"auth-preview\", {\n router: () => ({ initialEntries: [\"/login\"], path: \"/login\" }),\n seed: (context) => ({\n ...context,\n authEnabled: true,\n authenticated: false,\n }),\n render: () => <LoginPage />,\n }),\n scene(\"session-gate\", {\n router: () => ({ initialEntries: [\"/session-gate\"], path: \"/session-gate\" }),\n seed: (context) => ({\n ...context,\n authEnabled: false,\n authenticated: false,\n }),\n render: () => <SessionGatePage />,\n }),\n scene(\"not-found\", {\n router: () => ({ initialEntries: [\"/preview-missing\"], path: \"*\" }),\n seed: (context) => ({ ...context }),\n render: () => <NotFoundPage />,\n }),\n scene(\"workspace-load-error\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n authEnabled: false,\n authenticated: true,\n workspaces: [],\n activeWorkspaceId: null,\n workspacesLoadState: \"error\",\n workspacesLoadError: \"Preview workspace load failure\",\n }),\n render: () => (\n <WorkspaceRouteGate>\n <WorkspaceEmptyState />\n </WorkspaceRouteGate>\n ),\n }),\n ];\n}\n","import type { SupervisorState } from \"@coder-studio/core\";\nimport { useAtomValue } from \"jotai\";\nimport { useMemo } from \"react\";\nimport { ThemedIcon } from \"../../../../components/ui\";\nimport { useTranslation } from \"../../../../lib/i18n\";\nimport { supervisorsAtom } from \"../../atoms\";\n\ninterface MobileSupervisorBadgeProps {\n sessionId: string | null;\n onOpen: () => void;\n}\n\nexport function MobileSupervisorBadge({ sessionId, onOpen }: MobileSupervisorBadgeProps) {\n const supervisors = useAtomValue(supervisorsAtom);\n const t = useTranslation();\n\n const copy = useMemo(() => {\n if (!sessionId) {\n return null;\n }\n\n const supervisor = supervisors.get(sessionId);\n if (!supervisor) {\n return {\n state: \"inactive\" as SupervisorState,\n label: t(\"supervisor.title\"),\n };\n }\n\n return {\n state: supervisor.state,\n label: t(\"supervisor.title\"),\n };\n }, [sessionId, supervisors, t]);\n\n if (!copy) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n className={`mobile-supervisor-badge mobile-supervisor-badge--${copy.state}`}\n aria-label={t(\"mobile.supervisor.open_sheet\")}\n onClick={onOpen}\n >\n <span className=\"mobile-supervisor-badge__icon\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"supervisor.entry\" size={13} />\n </span>\n <span className=\"mobile-supervisor-badge__label\">{copy.label}</span>\n </button>\n );\n}\n","import type {\n FileNode,\n GitStatus,\n SearchSessionStartResult,\n Supervisor,\n UpdateStateView,\n Workspace,\n WorkspaceHistoryEntry,\n WorktreeInfo,\n} from \"@coder-studio/core\";\nimport { type CSSProperties, type ReactNode, useState } from \"react\";\nimport { ConfirmDialog, EmptyState, Notice, Sheet, ThemedIcon } from \"../../components/ui\";\nimport { SessionCard } from \"../../features/agent-panes/views/shared/session-card\";\nimport { CommandPalette } from \"../../features/command-palette\";\nimport { ToastContainer } from \"../../features/notifications\";\nimport { MobileSupervisorBadge } from \"../../features/supervisor/views/mobile/mobile-supervisor-badge\";\nimport { MobileSupervisorSheet } from \"../../features/supervisor/views/mobile/mobile-supervisor-sheet\";\nimport { ObjectiveDialog } from \"../../features/supervisor/views/shared/objective-dialog\";\nimport { SupervisorCard } from \"../../features/supervisor/views/shared/supervisor-card\";\nimport { TerminalPanel } from \"../../features/terminal-panel\";\nimport { TopBar } from \"../../features/topbar\";\nimport { WorkspaceDesktopView } from \"../../features/workspace/views/desktop/workspace-desktop-view\";\nimport { MobileDock } from \"../../features/workspace/views/mobile/mobile-dock\";\nimport { MobileFilesSheet } from \"../../features/workspace/views/mobile/mobile-files-sheet\";\nimport { MobileTopBar } from \"../../features/workspace/views/mobile/mobile-topbar\";\nimport { MobileWorkspaceDrawer } from \"../../features/workspace/views/mobile/mobile-workspace-drawer\";\nimport { BranchQuickPick } from \"../../features/workspace/views/shared/branch-quick-pick\";\nimport { GitDiffViewer } from \"../../features/workspace/views/shared/git-diff-viewer\";\nimport { GitPanel } from \"../../features/workspace/views/shared/git-panel\";\nimport { WorkspaceLaunchModal } from \"../../features/workspace/views/shared/workspace-launch-modal\";\nimport { WorkspaceStatusBar } from \"../../features/workspace/views/shared/workspace-status-bar\";\nimport { WorktreeManagerSurface } from \"../../features/workspace/views/shared/worktree-manager-surface\";\nimport { useTranslation } from \"../../lib/i18n\";\nimport type { UiPreviewSceneDefinition } from \"../catalog\";\nimport { getUiPreviewSceneMetadata } from \"../scene-metadata\";\n\nconst workspace: Workspace = {\n id: \"ws-preview\",\n name: \"coder-studio\",\n path: \"/home/spencer/workspace/coder-studio\",\n targetRuntime: \"native\",\n openedAt: 1,\n lastActiveAt: 1,\n uiState: {\n leftPanelWidth: 280,\n bottomPanelHeight: 220,\n focusMode: false,\n activeSessionId: \"session-preview-1\",\n paneLayout: { id: \"root\", type: \"leaf\" },\n },\n};\n\nconst recentWorkspaces: WorkspaceHistoryEntry[] = [\n {\n path: \"/home/spencer/workspace/coder-studio\",\n name: \"coder-studio\",\n lastOpenedAt: 1715731200000,\n },\n {\n path: \"/home/spencer/workspace/platform-tools\",\n name: \"platform-tools\",\n lastOpenedAt: 1715644800000,\n },\n {\n path: \"/home/spencer/workspace/mobile-shell\",\n name: \"mobile-shell\",\n lastOpenedAt: 1715558400000,\n },\n];\n\nconst supervisor: Supervisor = {\n id: \"sup-preview-1\",\n sessionId: \"session-preview-1\",\n workspaceId: \"ws-preview\",\n state: \"idle\",\n targetId: \"target-preview-1\",\n objective: \"Review UI regressions before shipping\",\n evaluatorProviderId: \"claude\",\n maxSupervisionCount: 0,\n completedSupervisionCount: 0,\n currentTargetMemory: {\n targetId: \"target-preview-1\",\n decompositionGenerated: true,\n decompositionMode: \"stage\",\n items: [\n {\n id: \"stage-1\",\n kind: \"stage\",\n title: \"Audit compact strip density\",\n objective: \"Review density regressions in the compact strip\",\n deliverable: \"A verified density audit\",\n acceptanceCriteria: [\"Density issues are identified\"],\n status: \"done\",\n },\n {\n id: \"stage-2\",\n kind: \"stage\",\n title: \"Move memory into expandable detail\",\n objective: \"Expose target memory without bloating the strip\",\n deliverable: \"A compact card with explicit decomposition detail\",\n acceptanceCriteria: [\"Decomposition is visible without expanding layout noise\"],\n status: \"in_progress\",\n },\n {\n id: \"stage-3\",\n kind: \"stage\",\n title: \"Validate preview coverage across themes\",\n objective: \"Ensure preview coverage is representative\",\n deliverable: \"A validated preview pass\",\n acceptanceCriteria: [\"Preview coverage is confirmed\"],\n status: \"pending\",\n },\n ],\n activeItemId: \"stage-2\",\n progressSummary: \"Compact strip restored; preview coverage still under review.\",\n stalledCount: 0,\n updatedAt: 1,\n },\n recentTargetCycles: [\n {\n cycleId: \"target-cycle-preview-1\",\n targetId: \"target-preview-1\",\n startedAt: 1,\n completedAt: 2,\n result: \"continue\",\n reason: \"Keep the strip compact and move detailed memory into an explicit disclosure.\",\n },\n ],\n createdAt: 1,\n updatedAt: 1,\n};\n\nconst worktrees: WorktreeInfo[] = [\n {\n name: \"feature/e2e-ui\",\n path: \"/home/spencer/workspace/coder-studio-feature-e2e-ui\",\n branch: \"feature/e2e-ui\",\n commit: \"abc1234\",\n status: \"dirty\",\n },\n];\n\nconst worktreeStatus: GitStatus = {\n branch: \"feature/e2e-ui\",\n ahead: 1,\n behind: 0,\n staged: [],\n modified: [{ path: \"packages/web/src/ui-preview/app.tsx\", status: \"modified\" }],\n untracked: [],\n deleted: [],\n};\n\nconst worktreeTree: FileNode[] = [\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"e2e-ui\", path: \"e2e-ui\", kind: \"dir\" },\n];\n\nconst footerUpdateRailPreviewState: UpdateStateView = {\n version: 1,\n currentVersion: \"0.4.0\",\n latestVersion: \"0.5.0\",\n availability: \"update_available\",\n updateStatus: \"idle\",\n lastCheckedAt: 1715731200000,\n targetVersion: null,\n startedAt: null,\n finishedAt: null,\n requiresManualStep: false,\n manualCommand: null,\n errorSummary: null,\n supported: true,\n installKind: \"global_npm\",\n unsupportedReason: null,\n};\n\nconst fileTreeRoot: FileNode[] = [\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"README.md\", path: \"README.md\", kind: \"file\" },\n { name: \"pnpm-workspace.yaml\", path: \"pnpm-workspace.yaml\", kind: \"file\" },\n];\n\nconst fileTreePackages: FileNode[] = [\n { name: \"web\", path: \"packages/web\", kind: \"dir\" },\n { name: \"core\", path: \"packages/core\", kind: \"dir\" },\n];\n\nconst mobileSearchContentResults: SearchSessionStartResult = {\n sessionId: \"mobile-preview-search-session\",\n files: [\n {\n path: \"packages/web/src/features/workspace/views/mobile/mobile-files-sheet.tsx\",\n name: \"mobile-files-sheet.tsx\",\n matchCount: 2,\n hasMoreMatches: false,\n baseHash: \"preview:mobile-files-sheet\",\n matches: [\n {\n id: \"mobile-search-match-1\",\n line: 64,\n column: 11,\n endColumn: 17,\n preview: ' <SearchPanel workspaceId={workspaceId} variant=\"mobile\" />',\n previewColumnStart: 8,\n previewColumnEnd: 14,\n replacementPreview: ' <SearchPanel workspaceId={workspaceId} variant=\"mobile\" />',\n replacementPreviewColumnStart: 8,\n replacementPreviewColumnEnd: 14,\n isReplacementPreviewTruncated: false,\n },\n {\n id: \"mobile-search-match-2\",\n line: 88,\n column: 15,\n endColumn: 21,\n preview: ' aria-label={t(\"workspace.sidebar.search\")}',\n previewColumnStart: 13,\n previewColumnEnd: 19,\n replacementPreview: ' aria-label={t(\"workspace.sidebar.search\")}',\n replacementPreviewColumnStart: 13,\n replacementPreviewColumnEnd: 19,\n isReplacementPreviewTruncated: false,\n },\n ],\n },\n {\n path: \"packages/web/src/styles/components.css\",\n name: \"components.css\",\n matchCount: 2,\n hasMoreMatches: false,\n baseHash: \"preview:components-css\",\n matches: [\n {\n id: \"mobile-search-match-3\",\n line: 13812,\n column: 28,\n endColumn: 34,\n preview: \".workspace-search-panel__summary {\",\n previewColumnStart: 12,\n previewColumnEnd: 18,\n replacementPreview: \".workspace-search-panel__summary {\",\n replacementPreviewColumnStart: 12,\n replacementPreviewColumnEnd: 18,\n isReplacementPreviewTruncated: false,\n },\n {\n id: \"mobile-search-match-4\",\n line: 13994,\n column: 12,\n endColumn: 18,\n preview: \".workspace-search-panel__line {\",\n previewColumnStart: 12,\n previewColumnEnd: 18,\n replacementPreview: \".workspace-search-panel__line {\",\n replacementPreviewColumnStart: 12,\n replacementPreviewColumnEnd: 18,\n isReplacementPreviewTruncated: false,\n },\n ],\n },\n ],\n totalMatchCount: 4,\n totalFileCount: 2,\n hasMoreFiles: false,\n truncatedMatchFileCount: 0,\n skippedBinaryFileCount: 0,\n skippedLargeFileCount: 0,\n};\n\nconst readmeDesktopGitStatus: GitStatus = {\n branch: \"feature/readme-refresh\",\n ahead: 2,\n behind: 0,\n headSha: \"97cc218f926d61bbeca0d6a8bd4b62582cbf93ea\",\n headShortSha: \"97cc218\",\n headSubject: \"feat: stage readme screenshot refresh scenes\",\n staged: [{ path: \"README.md\", status: \"modified\" }],\n modified: [\n { path: \"packages/web/src/features/topbar/index.tsx\", status: \"modified\" },\n { path: \"docs/help/assets/screenshot-desktop-workspace-full.png\", status: \"modified\" },\n ],\n untracked: [{ path: \"docs/help/assets/screenshot-mobile-progress.png\", status: \"untracked\" }],\n deleted: [],\n};\n\nconst readmeDesktopHistory = [\n {\n sha: \"97cc218f926d61bbeca0d6a8bd4b62582cbf93ea\",\n shortSha: \"97cc218\",\n subject: \"feat: stage readme screenshot refresh scenes\",\n authorName: \"Spencer\",\n authoredAt: 1_715_731_200_000,\n },\n {\n sha: \"4d6fd0bbce5100f39277c9c9c92677b87de17b73\",\n shortSha: \"4d6fd0b\",\n subject: \"style: tighten header action hierarchy\",\n authorName: \"Spencer\",\n authoredAt: 1_715_644_800_000,\n },\n] as const;\n\nconst readmeDesktopSessions = [\n {\n id: \"session-readme-hero\",\n workspaceId: workspace.id,\n terminalId: \"term-agent-readme-hero\",\n providerId: \"codex\",\n state: \"running\" as const,\n capability: \"full\" as const,\n startedAt: 1,\n lastActiveAt: 3,\n title: \"Ship the header polish and verify README visuals\",\n },\n];\n\nconst readmeMobileSessions = [\n {\n id: \"session-readme-mobile\",\n workspaceId: workspace.id,\n terminalId: \"term-agent-readme-mobile\",\n providerId: \"claude\",\n state: \"idle\" as const,\n capability: \"full\" as const,\n startedAt: 1,\n lastActiveAt: 4,\n title: \"Resume mobile progress review\",\n },\n];\n\nconst readmeSupervisor: Supervisor = {\n id: \"sup-readme-hero\",\n sessionId: \"session-readme-hero\",\n workspaceId: workspace.id,\n state: \"evaluating\",\n targetId: \"target-readme-refresh\",\n objective: \"Refresh README screenshots to highlight active cross-device coding flows\",\n evaluatorProviderId: \"claude\",\n maxSupervisionCount: 0,\n completedSupervisionCount: 3,\n currentTargetMemory: {\n targetId: \"target-readme-refresh\",\n decompositionGenerated: true,\n decompositionMode: \"stage\",\n items: [\n {\n id: \"stage-1\",\n kind: \"stage\",\n title: \"Capture a desktop hero with active session context\",\n objective: \"Show an active desktop coding flow\",\n deliverable: \"A readable hero screenshot\",\n acceptanceCriteria: [\"Hero capture is readable\"],\n status: \"done\",\n },\n {\n id: \"stage-2\",\n kind: \"stage\",\n title: \"Capture a focused git review scene for README\",\n objective: \"Highlight review context clearly\",\n deliverable: \"A focused review screenshot\",\n acceptanceCriteria: [\"Diff emphasis is readable\"],\n status: \"in_progress\",\n },\n {\n id: \"stage-3\",\n kind: \"stage\",\n title: \"Capture a mobile progress check with supervisor status\",\n objective: \"Show mobile progress visibility\",\n deliverable: \"A mobile supervisor progress screenshot\",\n acceptanceCriteria: [\"Mobile supervisor state is legible\"],\n status: \"pending\",\n },\n ],\n activeItemId: \"stage-2\",\n progressSummary: \"Hero scene locked. Review capture is being polished for README readability.\",\n stalledCount: 0,\n updatedAt: 4,\n },\n recentTargetCycles: [\n {\n cycleId: \"target-cycle-readme-1\",\n targetId: \"target-readme-refresh\",\n startedAt: 2,\n completedAt: 3,\n result: \"continue\",\n reason: \"Hero screenshot is readable. Review scene still needs clearer diff emphasis.\",\n },\n ],\n createdAt: 1,\n updatedAt: 4,\n};\n\nconst readmeMobileSupervisor: Supervisor = {\n ...readmeSupervisor,\n id: \"sup-readme-mobile\",\n sessionId: \"session-readme-mobile\",\n state: \"idle\",\n currentTargetMemory: {\n targetId: \"target-readme-refresh\",\n decompositionGenerated: true,\n decompositionMode: \"stage\",\n items: [\n {\n id: \"stage-1\",\n kind: \"stage\",\n title: \"Capture a desktop hero with active session context\",\n objective: \"Show an active desktop coding flow\",\n deliverable: \"A readable hero screenshot\",\n acceptanceCriteria: [\"Hero capture is readable\"],\n status: \"done\",\n },\n {\n id: \"stage-2\",\n kind: \"stage\",\n title: \"Capture a focused git review scene for README\",\n objective: \"Highlight review context clearly\",\n deliverable: \"A focused review screenshot\",\n acceptanceCriteria: [\"Diff emphasis is readable\"],\n status: \"done\",\n },\n {\n id: \"stage-3\",\n kind: \"stage\",\n title: \"Capture a mobile progress check with supervisor status\",\n objective: \"Show mobile progress visibility\",\n deliverable: \"A mobile supervisor progress screenshot\",\n acceptanceCriteria: [\"Mobile supervisor state is legible\"],\n status: \"in_progress\",\n },\n ],\n activeItemId: \"stage-3\",\n progressSummary:\n \"Desktop captures are ready. Mobile continuity shot is the last remaining asset.\",\n stalledCount: 0,\n updatedAt: 5,\n },\n recentTargetCycles: [\n {\n cycleId: \"target-cycle-readme-mobile-1\",\n targetId: \"target-readme-refresh\",\n startedAt: 4,\n completedAt: 5,\n result: \"continue\",\n reason:\n \"Desktop assets are approved. Capture a mobile status-check scene that shows continuity.\",\n },\n ],\n createdAt: 1,\n updatedAt: 5,\n};\n\nfunction createReadmeWorkspaceFileTree() {\n return {\n \".\": [\n { name: \"docs\", path: \"docs\", kind: \"dir\" },\n { name: \"packages\", path: \"packages\", kind: \"dir\" },\n { name: \"README.md\", path: \"README.md\", kind: \"file\" },\n { name: \"README.zh-CN.md\", path: \"README.zh-CN.md\", kind: \"file\" },\n ] satisfies FileNode[],\n docs: [\n { name: \"help\", path: \"docs/help\", kind: \"dir\" },\n { name: \"promotion\", path: \"docs/promotion\", kind: \"dir\" },\n ] satisfies FileNode[],\n \"docs/help\": [\n { name: \"assets\", path: \"docs/help/assets\", kind: \"dir\" },\n { name: \"desktop-guide.md\", path: \"docs/help/desktop-guide.md\", kind: \"file\" },\n ] satisfies FileNode[],\n \"docs/help/assets\": [\n {\n name: \"screenshot-desktop-workspace-full.png\",\n path: \"docs/help/assets/screenshot-desktop-workspace-full.png\",\n kind: \"file\",\n },\n {\n name: \"screenshot-pc.png\",\n path: \"docs/help/assets/screenshot-pc.png\",\n kind: \"file\",\n },\n {\n name: \"screenshot-mobile.png\",\n path: \"docs/help/assets/screenshot-mobile.png\",\n kind: \"file\",\n },\n ] satisfies FileNode[],\n packages: [\n { name: \"web\", path: \"packages/web\", kind: \"dir\" },\n { name: \"core\", path: \"packages/core\", kind: \"dir\" },\n ] satisfies FileNode[],\n };\n}\n\nfunction buildReadmeDesktopHeroSeed(context: {\n theme: string;\n locale: \"zh\" | \"en\";\n device: \"desktop\" | \"mobile\";\n}) {\n const fileTreeByPath = createReadmeWorkspaceFileTree();\n\n return {\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n sessions: readmeDesktopSessions,\n paneLayoutByWorkspaceId: {\n [workspace.id]: {\n id: \"root\",\n type: \"split\",\n direction: \"horizontal\",\n children: [\n {\n id: \"hero-left\",\n type: \"leaf\",\n sessionId: \"session-readme-hero\",\n },\n {\n id: \"hero-right\",\n type: \"leaf\",\n sessionId: \"session-readme-hero\",\n },\n ],\n sessionId: \"session-readme-hero\",\n },\n },\n fileTreeByWorkspaceId: {\n [workspace.id]: new Map<string, FileNode[]>(Object.entries(fileTreeByPath)),\n },\n gitStateByWorkspaceId: {\n [workspace.id]: readmeDesktopGitStatus,\n },\n gitBranchListByWorkspaceId: {\n [workspace.id]: {\n current: \"feature/readme-refresh\",\n branches: [\n { name: \"feature/readme-refresh\", isCurrent: true, isRemote: false },\n { name: \"main\", isCurrent: false, isRemote: false },\n { name: \"origin/main\", isCurrent: false, isRemote: true },\n ],\n },\n },\n terminalMetaById: {\n \"term-agent-readme-hero\": {\n id: \"term-agent-readme-hero\",\n workspaceId: workspace.id,\n kind: \"agent\",\n alive: true,\n title: \"Codex session\",\n },\n \"term-shell-readme-hero\": {\n id: \"term-shell-readme-hero\",\n workspaceId: workspace.id,\n kind: \"shell\",\n alive: true,\n title: \"Workspace Shell\",\n },\n },\n terminalOutputById: {\n \"term-agent-readme-hero\": [\n new TextEncoder().encode(\n [\n '$ codex run --model gpt-5.5 --task \"refresh readme screenshots\"',\n \"Analyzing README usage and current preview scenes...\",\n \"Plan: add README-specific preview scenes, capture desktop hero, capture mobile continuity shot.\",\n \"\",\n \"Editing packages/web/src/ui-preview/scenes/showcase-scenes.tsx\",\n \"Preparing fresh assets in docs/help/assets/\",\n ].join(\"\\n\")\n ),\n ],\n \"term-shell-readme-hero\": [\n new TextEncoder().encode(\n [\n \"$ pnpm --filter @coder-studio/web exec vitest run src/ui-preview/scene-metadata.test.ts src/ui-preview/catalog.test.tsx\",\n \"✓ src/ui-preview/scene-metadata.test.ts (9)\",\n \"✓ src/ui-preview/catalog.test.tsx (35)\",\n \"\",\n '$ pnpm --dir e2e-ui exec playwright test --grep \"README /\"',\n \"capturing desktop hero and mobile progress scenes...\",\n ].join(\"\\n\")\n ),\n ],\n },\n supervisorBySessionId: {\n \"session-readme-hero\": readmeSupervisor,\n },\n commands: {\n workspaceList: [workspace],\n sessionListByWorkspaceId: {\n [workspace.id]: readmeDesktopSessions,\n },\n fileTreeByWorkspaceId: {\n [workspace.id]: fileTreeByPath,\n },\n gitStatusByWorkspaceId: {\n [workspace.id]: readmeDesktopGitStatus,\n },\n gitBranchesByWorkspaceId: {\n [workspace.id]: {\n current: \"feature/readme-refresh\",\n branches: [\n { name: \"feature/readme-refresh\", isCurrent: true, isRemote: false },\n { name: \"main\", isCurrent: false, isRemote: false },\n { name: \"origin/main\", isCurrent: false, isRemote: true },\n ],\n },\n },\n terminalListByWorkspaceId: {\n [workspace.id]: [\n {\n id: \"term-shell-readme-hero\",\n workspaceId: workspace.id,\n kind: \"shell\",\n title: \"Workspace Shell\",\n cwd: workspace.path,\n argv: [\"zsh\"],\n cols: 120,\n rows: 28,\n alive: true,\n createdAt: 2,\n },\n {\n id: \"term-shell-readme-verify\",\n workspaceId: workspace.id,\n kind: \"shell\",\n title: \"Preview Runner\",\n cwd: workspace.path,\n argv: [\"zsh\"],\n cols: 120,\n rows: 28,\n alive: true,\n createdAt: 3,\n },\n ],\n },\n supervisorBySessionId: {\n \"session-readme-hero\": readmeSupervisor,\n },\n },\n };\n}\n\nfunction buildReadmeDesktopReviewSeed(context: {\n theme: string;\n locale: \"zh\" | \"en\";\n device: \"desktop\" | \"mobile\";\n}) {\n const fileTreeByPath = createReadmeWorkspaceFileTree();\n\n return {\n ...buildReadmeDesktopHeroSeed(context),\n fileTreeByWorkspaceId: {\n [workspace.id]: new Map<string, FileNode[]>(Object.entries(fileTreeByPath)),\n },\n gitDiffPreviewByWorkspaceId: {\n [workspace.id]: {\n kind: \"worktree-file-diff\",\n path: \"packages/web/src/features/topbar/index.tsx\",\n title: \"README capture polish\",\n diff: [\n \"diff --git a/packages/web/src/features/topbar/index.tsx b/packages/web/src/features/topbar/index.tsx\",\n \"@@ Refine the desktop topbar hierarchy\",\n '- <span className=\\\"topbar-btn-label\\\">Quick Actions</span>',\n '+ <span className=\\\"topbar-btn-label\\\">Quick Actions</span>',\n '+ <span className=\\\"topbar-btn-hint\\\">Review README capture targets</span>',\n \"\",\n \"@@ screenshot staging\",\n \"+ <WorkspaceLaunchModal onClose={() => setWorkspaceLaunchOpen(false)} />\",\n ].join(\"\\n\"),\n renderAs: \"text\" as const,\n status: \"modified\" as const,\n },\n },\n commands: {\n ...buildReadmeDesktopHeroSeed(context).commands,\n fileTreeByWorkspaceId: {\n [workspace.id]: fileTreeByPath,\n },\n gitStatusByWorkspaceId: {\n [workspace.id]: readmeDesktopGitStatus,\n },\n gitLogByWorkspaceId: {\n [workspace.id]: { entries: [...readmeDesktopHistory] },\n },\n gitDiffByWorkspaceId: {\n [workspace.id]: {\n diff: [\n \"diff --git a/packages/web/src/features/topbar/index.tsx b/packages/web/src/features/topbar/index.tsx\",\n \"@@ Refine the desktop topbar hierarchy\",\n '+ <span className=\"topbar-btn-hint\">Review README capture targets</span>',\n '+ <span className=\"topbar-btn-hint\">Keep the workspace hero readable at README width</span>',\n ].join(\"\\n\"),\n renderAs: \"text\",\n status: \"modified\",\n },\n },\n gitCommitDetailByWorkspaceId: {\n [workspace.id]: {\n commit: {\n ...readmeDesktopHistory[0],\n parentSha: \"4d6fd0bbce5100f39277c9c9c92677b87de17b73\",\n },\n files: [\n {\n path: \"packages/web/src/features/topbar/index.tsx\",\n status: \"modified\",\n renderAs: \"text\",\n },\n ],\n },\n },\n supervisorBySessionId: {\n \"session-readme-hero\": readmeSupervisor,\n },\n },\n };\n}\n\nfunction ReadmeDesktopReviewWorkspace() {\n return (\n <div className=\"workspace-page workspace-page--desktop\">\n <TopBar />\n <div className=\"workspace-body\">\n <aside className=\"left-panel\" style={{ width: \"324px\" }}>\n <div className=\"nav-panel workspace-sidebar-panel\">\n <div className=\"workspace-sidebar-panel__body\">\n <GitPanel workspaceId={workspace.id} variant=\"desktop\" />\n </div>\n </div>\n </aside>\n <div className=\"split-divider-v\" aria-hidden=\"true\" />\n <div className=\"workspace-main-area\">\n <div className=\"workspace-main-stage\">\n <GitDiffViewer workspaceId={workspace.id} showCloseButton={false} />\n </div>\n </div>\n </div>\n <WorkspaceStatusBar\n align=\"start\"\n workspaceId={workspace.id}\n gitState={readmeDesktopGitStatus}\n />\n </div>\n );\n}\n\nfunction ReadmeMobileProgressWorkspace() {\n const readmeMobileGitState: GitStatus = {\n branch: \"feature/readme-refresh\",\n ahead: 2,\n behind: 0,\n staged: [{ path: \"README.md\", status: \"modified\" }],\n modified: [{ path: \"docs/help/assets/screenshot-mobile.png\", status: \"modified\" }],\n untracked: [],\n deleted: [],\n };\n\n return (\n <div\n className=\"mobile-shell mobile-shell--stacked mobile-shell--motion-reduced\"\n data-testid=\"mobile-shell\"\n >\n <MobileTopBar\n activeWorkspace={workspace}\n drawerOpen={false}\n onOpenSettings={() => {}}\n onToggleDrawer={() => {}}\n />\n <main className=\"mobile-shell__viewport\">\n <div className=\"mobile-shell__content\" style={{ gap: \"12px\", paddingBottom: \"144px\" }}>\n <section className=\"mobile-shell__agent-stage\" style={{ flex: \"0 0 420px\" }}>\n <SessionCard\n sessionId=\"session-readme-mobile\"\n showHeaderActions={false}\n showSupervisorInline={false}\n headerAccessory={\n <MobileSupervisorBadge sessionId=\"session-readme-mobile\" onOpen={() => {}} />\n }\n />\n </section>\n <section style={{ padding: \"0 12px\" }}>\n <SupervisorCard sessionId=\"session-readme-mobile\" workspaceId={workspace.id} />\n </section>\n </div>\n </main>\n <div\n className=\"mobile-shell__bottom-stack\"\n data-testid=\"mobile-bottom-stack\"\n style={{ \"--mobile-keyboard-inset\": \"0px\" } as CSSProperties}\n >\n <div className=\"mobile-dock-shell\">\n <MobileDock activeItem=\"agent\" onSelectItem={() => {}} />\n </div>\n <WorkspaceStatusBar workspaceId={workspace.id} gitState={readmeMobileGitState} />\n </div>\n </div>\n );\n}\n\nfunction buildReadmeMobileProgressSeed(context: {\n theme: string;\n locale: \"zh\" | \"en\";\n device: \"desktop\" | \"mobile\";\n}) {\n const mobileWorkspace = {\n ...workspace,\n uiState: {\n ...workspace.uiState,\n activeSessionId: \"session-readme-mobile\",\n paneLayout: {\n id: \"root\",\n type: \"leaf\" as const,\n sessionId: \"session-readme-mobile\",\n },\n },\n };\n\n return {\n ...context,\n workspaces: [mobileWorkspace],\n activeWorkspaceId: mobileWorkspace.id,\n sessions: readmeMobileSessions,\n paneLayoutByWorkspaceId: {\n [mobileWorkspace.id]: {\n id: \"root\",\n type: \"leaf\",\n sessionId: \"session-readme-mobile\",\n },\n },\n gitStateByWorkspaceId: {\n [mobileWorkspace.id]: {\n branch: \"feature/readme-refresh\",\n ahead: 2,\n behind: 0,\n staged: [{ path: \"README.md\", status: \"modified\" }],\n modified: [{ path: \"docs/help/assets/screenshot-mobile.png\", status: \"modified\" }],\n untracked: [],\n deleted: [],\n },\n },\n terminalMetaById: {\n \"term-agent-readme-mobile\": {\n id: \"term-agent-readme-mobile\",\n workspaceId: mobileWorkspace.id,\n kind: \"agent\",\n alive: true,\n title: \"Claude progress review\",\n },\n },\n terminalOutputById: {\n \"term-agent-readme-mobile\": [\n new TextEncoder().encode(\n [\n \"$ claude review --scene readme-mobile-progress\",\n \"Checking continuity between desktop hero and mobile status view...\",\n \"Recommendation: keep supervisor progress visible above the dock.\",\n \"Status: desktop captures approved, mobile continuity shot queued for export.\",\n ].join(\"\\n\")\n ),\n ],\n },\n supervisorBySessionId: {\n \"session-readme-mobile\": readmeMobileSupervisor,\n },\n commands: {\n workspaceList: [mobileWorkspace],\n sessionListByWorkspaceId: {\n [mobileWorkspace.id]: readmeMobileSessions,\n },\n gitStatusByWorkspaceId: {\n [mobileWorkspace.id]: {\n branch: \"feature/readme-refresh\",\n ahead: 2,\n behind: 0,\n staged: [{ path: \"README.md\", status: \"modified\" }],\n modified: [{ path: \"docs/help/assets/screenshot-mobile.png\", status: \"modified\" }],\n untracked: [],\n deleted: [],\n },\n },\n gitBranchesByWorkspaceId: {\n [mobileWorkspace.id]: {\n current: \"feature/readme-refresh\",\n branches: [\n { name: \"feature/readme-refresh\", isCurrent: true, isRemote: false },\n { name: \"main\", isCurrent: false, isRemote: false },\n ],\n },\n },\n supervisorBySessionId: {\n \"session-readme-mobile\": readmeMobileSupervisor,\n },\n },\n };\n}\n\nfunction scene(\n id: string,\n config: Pick<UiPreviewSceneDefinition, \"router\" | \"seed\" | \"render\">\n): UiPreviewSceneDefinition {\n const metadata = getUiPreviewSceneMetadata(id);\n if (!metadata) {\n throw new Error(`Missing UI preview metadata for ${id}`);\n }\n\n return {\n ...metadata,\n ...config,\n };\n}\n\nfunction MobileFilesSheetPreview() {\n const [activeView, setActiveView] = useState<\"explorer\" | \"search\" | \"source-control\">(\n \"explorer\"\n );\n const [route, setRoute] = useState<{ kind: \"root\" } | { kind: \"detail\"; path?: string }>({\n kind: \"root\",\n });\n\n return (\n <MobileFilesSheet\n workspaceId={workspace.id}\n route={route}\n activeView={activeView}\n onRouteChange={setRoute}\n onTabChange={setActiveView}\n />\n );\n}\n\nfunction FooterUpdateRailPreviewShell({\n device,\n className,\n}: {\n device: \"desktop\" | \"mobile\";\n className: string;\n}) {\n return device === \"mobile\" ? (\n <div\n className={`${className} mobile-shell mobile-shell--stacked mobile-shell--motion-reduced`}\n data-testid=\"mobile-shell\"\n >\n <MobileTopBar\n activeWorkspace={workspace}\n drawerOpen={false}\n onOpenSettings={() => {}}\n onToggleDrawer={() => {}}\n />\n <main className=\"mobile-shell__viewport\">\n <div className=\"mobile-shell__content\" style={{ paddingBottom: \"144px\" }} />\n </main>\n <div\n className=\"mobile-shell__bottom-stack\"\n data-testid=\"mobile-bottom-stack\"\n style={{ \"--mobile-keyboard-inset\": \"0px\" } as CSSProperties}\n >\n <div className=\"mobile-dock-shell\">\n <MobileDock activeItem=\"agent\" onSelectItem={() => {}} />\n </div>\n <WorkspaceStatusBar workspaceId={workspace.id} gitState={readmeDesktopGitStatus} />\n </div>\n </div>\n ) : (\n <div className={className}>\n <div className=\"workspace-page workspace-page--desktop\">\n <TopBar />\n <div className=\"workspace-body\">\n <div className=\"workspace-main-area\">\n <div className=\"workspace-main-stage\" />\n </div>\n </div>\n <WorkspaceStatusBar\n align=\"start\"\n workspaceId={workspace.id}\n gitState={readmeDesktopGitStatus}\n />\n </div>\n </div>\n );\n}\n\nfunction FooterUpdateRailConfirmPreview({ device }: { device: \"desktop\" | \"mobile\" }) {\n const t = useTranslation();\n\n return (\n <>\n <FooterUpdateRailPreviewShell className=\"footer-update-rail-confirm-review\" device={device} />\n <ConfirmDialog\n open\n onOpenChange={() => {}}\n title={t(\"settings.about.confirm_update_title\")}\n description={\n <div className=\"settings-dialog-copy\">\n <p>{t(\"settings.about.confirm_update_message\")}</p>\n <p>\n {t(\"settings.about.confirm_update_activity\", {\n terminals: 1,\n sessions: 2,\n supervisors: 3,\n })}\n </p>\n </div>\n }\n cancelText={t(\"action.cancel\")}\n confirmText={t(\"settings.about.update_now\")}\n tone=\"danger\"\n onConfirm={() => {}}\n />\n </>\n );\n}\n\nexport function createShowcaseScenes(): UiPreviewSceneDefinition[] {\n return [\n scene(\"workspace-launch-modal\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({\n ...context,\n commands: {\n workspaceHistoryList: recentWorkspaces,\n workspaceBrowse: {\n currentPath: \"/home/spencer/workspace\",\n parentPath: \"/home/spencer\",\n directories: [\n { name: \"coder-studio\", path: \"/home/spencer/workspace/coder-studio\", itemCount: 24 },\n { name: \"playground\", path: \"/home/spencer/workspace/playground\", itemCount: 6 },\n ],\n },\n workspaceOpen: workspace,\n },\n }),\n render: () => <WorkspaceLaunchModal onClose={() => {}} />,\n }),\n scene(\"command-palette\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n commandPaletteOpen: true,\n }),\n render: () => <CommandPalette />,\n }),\n scene(\"branch-quick-pick\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n branchQuickPick: {\n visible: true,\n workspaceId: workspace.id,\n inputValue: \"\",\n },\n commands: {\n gitBranchesByWorkspaceId: {\n [workspace.id]: {\n current: \"main\",\n branches: [\n { name: \"main\", isCurrent: true, isRemote: false },\n { name: \"feature/e2e-ui\", isCurrent: false, isRemote: false },\n { name: \"origin/main\", isCurrent: false, isRemote: true },\n ],\n },\n },\n gitStatusByWorkspaceId: {\n [workspace.id]: worktreeStatus,\n },\n },\n }),\n render: () => <BranchQuickPick />,\n }),\n scene(\"toast-stack\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({\n ...context,\n toasts: [\n {\n id: \"toast-success-preview\",\n kind: \"success\",\n title: \"Workspace opened\",\n body: \"coder-studio is ready.\",\n createdAt: 1,\n duration: 0,\n },\n {\n id: \"toast-error-preview\",\n kind: \"error\",\n title: \"Failed to refresh provider config\",\n body: \"Retry after checking the provider settings.\",\n createdAt: 2,\n duration: 0,\n },\n ],\n }),\n render: () => <ToastContainer />,\n }),\n scene(\"footer-update-rail-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n gitStateByWorkspaceId: {\n [workspace.id]: readmeDesktopGitStatus,\n },\n updateState: footerUpdateRailPreviewState,\n }),\n render: (context) => (\n <FooterUpdateRailPreviewShell\n className=\"footer-update-rail-review\"\n device={context.device}\n />\n ),\n }),\n scene(\"footer-update-rail-confirm-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n gitStateByWorkspaceId: {\n [workspace.id]: readmeDesktopGitStatus,\n },\n updateState: footerUpdateRailPreviewState,\n }),\n render: (context) => <FooterUpdateRailConfirmPreview device={context.device} />,\n }),\n scene(\"workspace-icon-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n supervisorBySessionId: {\n \"session-preview-1\": supervisor,\n },\n }),\n render: (context) =>\n context.device === \"mobile\" ? (\n <div className=\"workspace-icon-review\">\n <div className=\"mobile-shell__stage\">\n <div className=\"flex items-center justify-between gap-3 p-3\">\n <MobileSupervisorBadge sessionId=\"session-preview-1\" onOpen={() => {}} />\n </div>\n <div className=\"file-tree-shell file-tree-shell--mobile\">\n <div className=\"tree-item\">\n <span className=\"tree-icon folder\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.folder.closed\" size={14} />\n </span>\n <span>packages</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon code\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.code\" size={14} />\n </span>\n <span>app.tsx</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon data\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.data\" size={14} />\n </span>\n <span>theme.json</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon doc\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.doc\" size={14} />\n </span>\n <span>README.md</span>\n </div>\n </div>\n <EmptyState\n className=\"bottom-terminal-empty\"\n description={\n <p className=\"bottom-terminal-empty-hint\">\n Review the terminal empty-state icon and surface treatment.\n </p>\n }\n icon={\n <ThemedIcon\n className=\"bottom-terminal-empty-icon\"\n semantic=\"state.emptyTerminal\"\n size={32}\n />\n }\n title={<p className=\"bottom-terminal-empty-text\">No terminal session</p>}\n />\n <MobileDock activeItem=\"files\" onSelectItem={() => {}} />\n </div>\n </div>\n ) : (\n <div className=\"workspace-icon-review\">\n <div className=\"file-tree-shell\">\n <div className=\"tree-item\">\n <span className=\"tree-icon folder\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.folder.closed\" size={14} />\n </span>\n <span>packages</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon code\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.code\" size={14} />\n </span>\n <span>app.tsx</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon data\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.data\" size={14} />\n </span>\n <span>theme.json</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon doc\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.doc\" size={14} />\n </span>\n <span>README.md</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon media\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.media\" size={14} />\n </span>\n <span>logo.png</span>\n </div>\n <div className=\"tree-item\">\n <span className=\"tree-icon file\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"file.type.default\" size={14} />\n </span>\n <span>LICENSE</span>\n </div>\n </div>\n <div className=\"git-panel\">\n <div className=\"git-row\">\n <span className=\"git-row-icon git-row-icon-staged\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"git.status.staged\" size={12} />\n </span>\n <span>staged.ts</span>\n </div>\n <div className=\"git-row\">\n <span className=\"git-row-icon git-row-icon-modified\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"git.status.modified\" size={12} />\n </span>\n <span>modified.ts</span>\n </div>\n <div className=\"git-row\">\n <span className=\"git-row-icon git-row-icon-deleted\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"git.status.deleted\" size={12} />\n </span>\n <span>deleted.ts</span>\n </div>\n <div className=\"git-row\">\n <span className=\"git-row-icon git-row-icon-untracked\" aria-hidden=\"true\">\n <ThemedIcon semantic=\"git.status.untracked\" size={12} />\n </span>\n <span>untracked.ts</span>\n </div>\n </div>\n <EmptyState\n className=\"bottom-terminal-empty\"\n description={\n <p className=\"bottom-terminal-empty-hint\">\n Review the terminal empty-state icon and surface treatment.\n </p>\n }\n icon={\n <ThemedIcon\n className=\"bottom-terminal-empty-icon\"\n semantic=\"state.emptyTerminal\"\n size={32}\n />\n }\n title={<p className=\"bottom-terminal-empty-text\">No terminal session</p>}\n />\n </div>\n ),\n }),\n scene(\"toast-icon-review\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({\n ...context,\n toasts: [\n {\n id: \"toast-success\",\n kind: \"success\",\n title: \"Workspace opened\",\n body: \"coder-studio is ready.\",\n createdAt: 1,\n duration: 0,\n },\n {\n id: \"toast-warning\",\n kind: \"warning\",\n title: \"Unsaved config\",\n body: \"Review pending changes before continuing.\",\n createdAt: 2,\n duration: 0,\n },\n {\n id: \"toast-error\",\n kind: \"error\",\n title: \"Failed to refresh provider config\",\n body: \"Retry after checking the provider settings.\",\n createdAt: 3,\n duration: 0,\n },\n {\n id: \"toast-info\",\n kind: \"info\",\n title: \"Theme preview active\",\n body: \"Comparing icon palettes across themes.\",\n createdAt: 4,\n duration: 0,\n },\n ],\n }),\n render: () => <ToastContainer />,\n }),\n scene(\"supervisor-icon-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n supervisorBySessionId: {\n \"session-preview-1\": supervisor,\n },\n supervisorDialog: {\n open: true,\n sessionId: \"session-preview-1\",\n mode: \"edit\",\n draftObjective: supervisor.objective,\n draftEvaluatorProviderId: \"claude\",\n draftEvaluatorModel: \"\",\n draftMaxSupervisionCount: \"0\",\n draftScheduledAt: \"\",\n },\n }),\n render: (context) =>\n context.device === \"mobile\" ? (\n <MobileSupervisorSheet\n sessionId=\"session-preview-1\"\n workspaceId={workspace.id}\n onClose={() => {}}\n />\n ) : (\n <ObjectiveDialog workspaceId={workspace.id} sessionId=\"session-preview-1\" />\n ),\n }),\n scene(\"mobile-workspace-drawer\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [\n workspace,\n {\n ...workspace,\n id: \"ws-preview-2\",\n name: \"playground\",\n path: \"/home/spencer/workspace/playground\",\n },\n ],\n activeWorkspaceId: workspace.id,\n }),\n render: () => (\n <MobileWorkspaceDrawer\n activeWorkspaceId={workspace.id}\n isOpen\n workspaces={[\n workspace,\n {\n ...workspace,\n id: \"ws-preview-2\",\n name: \"playground\",\n path: \"/home/spencer/workspace/playground\",\n },\n ]}\n onClose={() => {}}\n onOpenWorkspaceLauncher={() => {}}\n />\n ),\n }),\n scene(\"mobile-files-sheet\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n commands: {\n fileTreeByWorkspaceId: {\n [workspace.id]: {\n \".\": fileTreeRoot,\n packages: fileTreePackages,\n },\n },\n gitStatusByWorkspaceId: {\n [workspace.id]: {\n branch: \"feature/mobile-polish\",\n ahead: 2,\n behind: 0,\n staged: [{ path: \"packages/web/src/styles/components.css\", status: \"modified\" }],\n modified: [\n {\n path: \"packages/web/src/features/settings/components/settings-page.tsx\",\n status: \"modified\",\n },\n {\n path: \"packages/web/src/features/workspace/views/mobile/mobile-workspace-drawer.tsx\",\n status: \"modified\",\n },\n ],\n untracked: [{ path: \"e2e-ui/output/mobile-review.png\", status: \"untracked\" }],\n deleted: [],\n },\n },\n gitBranchesByWorkspaceId: {\n [workspace.id]: {\n current: \"feature/mobile-polish\",\n branches: [\n { name: \"feature/mobile-polish\", isCurrent: true, isRemote: false },\n { name: \"develop\", isCurrent: false, isRemote: false },\n ],\n },\n },\n terminalListByWorkspaceId: {\n [workspace.id]: [],\n },\n fileSearchSessionByWorkspaceId: {\n [workspace.id]: mobileSearchContentResults,\n },\n },\n }),\n render: () => (\n <Sheet\n title=\"Explorer\"\n kicker=\"Workspace\"\n fullscreen\n bodyClassName=\"mobile-sheet__body--flush mobile-sheet__body--fullscreen\"\n contentClassName=\"mobile-sheet--files\"\n onClose={() => {}}\n body={<MobileFilesSheetPreview />}\n />\n ),\n }),\n scene(\"mobile-terminal-sheet\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n terminalMetaById: {\n \"term-preview-1\": {\n id: \"term-preview-1\",\n workspaceId: workspace.id,\n kind: \"shell\",\n alive: true,\n title: \"Workspace Shell\",\n },\n \"term-preview-2\": {\n id: \"term-preview-2\",\n workspaceId: workspace.id,\n kind: \"shell\",\n alive: true,\n title: \"Preview Runner\",\n },\n },\n terminalOutputById: {\n \"term-preview-1\": [new TextEncoder().encode(\"$ pnpm --filter @coder-studio/web test\\n\")],\n \"term-preview-2\": [new TextEncoder().encode(\"$ playwright test --project=mobile\\n\")],\n },\n commands: {\n terminalListByWorkspaceId: {\n [workspace.id]: [\n {\n id: \"term-preview-1\",\n workspaceId: workspace.id,\n kind: \"shell\",\n title: \"Workspace Shell\",\n cwd: workspace.path,\n argv: [\"zsh\"],\n cols: 120,\n rows: 28,\n alive: true,\n createdAt: 1,\n },\n {\n id: \"term-preview-2\",\n workspaceId: workspace.id,\n kind: \"shell\",\n title: \"Preview Runner\",\n cwd: workspace.path,\n argv: [\"zsh\"],\n cols: 120,\n rows: 28,\n alive: true,\n createdAt: 2,\n },\n ],\n },\n },\n }),\n render: () => {\n const MobileTerminalPreviewSheet = () => {\n const [headerAction, setHeaderAction] = useState<ReactNode>(null);\n\n return (\n <Sheet\n title=\"Terminal\"\n kicker={null}\n fullscreen\n bodyClassName=\"mobile-sheet__body--flush mobile-sheet__body--fullscreen\"\n contentClassName=\"mobile-sheet--terminal\"\n headerAction={headerAction}\n onClose={() => {}}\n body={\n <div className=\"mobile-terminal-sheet mobile-terminal-sheet--fullscreen\">\n <TerminalPanel\n chrome=\"mobile-fullscreen\"\n onMobileHeaderActionsChange={setHeaderAction}\n />\n </div>\n }\n footer={\n <WorkspaceStatusBar\n workspaceId={workspace.id}\n gitState={{\n branch: \"feature/mobile-terminal\",\n ahead: 0,\n behind: 0,\n staged: [],\n modified: [\n { path: \"packages/web/src/styles/components.css\", status: \"modified\" },\n ],\n untracked: [],\n deleted: [],\n }}\n flush\n />\n }\n />\n );\n };\n\n return <MobileTerminalPreviewSheet />;\n },\n }),\n scene(\"mobile-supervisor-sheet\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n supervisorBySessionId: {\n \"session-preview-1\": supervisor,\n },\n }),\n render: () => (\n <MobileSupervisorSheet\n sessionId=\"session-preview-1\"\n workspaceId={workspace.id}\n onClose={() => {}}\n />\n ),\n }),\n scene(\"supervisor-dialog\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n supervisorBySessionId: {\n \"session-preview-1\": supervisor,\n },\n supervisorDialog: {\n open: true,\n sessionId: \"session-preview-1\",\n mode: \"edit\",\n draftObjective: supervisor.objective,\n draftEvaluatorProviderId: \"claude\",\n },\n }),\n render: () => <ObjectiveDialog workspaceId={workspace.id} sessionId=\"session-preview-1\" />,\n }),\n scene(\"readme-desktop-hero\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildReadmeDesktopHeroSeed(context),\n render: () => <WorkspaceDesktopView />,\n }),\n scene(\"readme-desktop-review\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildReadmeDesktopReviewSeed(context),\n render: () => <ReadmeDesktopReviewWorkspace />,\n }),\n scene(\"readme-mobile-progress\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => buildReadmeMobileProgressSeed({ ...context, device: \"mobile\" }),\n render: () => <ReadmeMobileProgressWorkspace />,\n }),\n scene(\"worktree-manager\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [workspace],\n activeWorkspaceId: workspace.id,\n worktreeListByWorkspaceId: {\n [workspace.id]: worktrees,\n },\n commands: {\n worktreeListByWorkspaceId: {\n [workspace.id]: worktrees,\n },\n worktreeStatusByPath: {\n [worktrees[0].path]: worktreeStatus,\n },\n worktreeDiffByPath: {\n [worktrees[0].path]: \"diff --git a/src/app.tsx b/src/app.tsx\",\n },\n worktreeTreeByPath: {\n [worktrees[0].path]: worktreeTree,\n },\n },\n }),\n render: () => (\n <WorktreeManagerSurface workspaceId={workspace.id} openView=\"list\" onClose={() => {}} />\n ),\n }),\n scene(\"confirm-dialog-danger\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({ ...context }),\n render: () => (\n <ConfirmDialog\n open\n onOpenChange={() => {}}\n tone=\"danger\"\n title=\"Delete worktree?\"\n description=\"This removes the worktree directory from disk.\"\n cancelText=\"Cancel\"\n confirmText=\"Delete\"\n onConfirm={() => {}}\n />\n ),\n }),\n scene(\"provider-error-state\", {\n router: () => ({ initialEntries: [\"/settings\"], path: \"/settings\" }),\n seed: (context) => ({ ...context }),\n render: () => (\n <div className=\"settings-page\">\n <Notice\n tone=\"error\"\n title=\"Failed to refresh provider config\"\n message=\"Retry after checking the provider settings.\"\n action={<button className=\"settings-link\">Retry</button>}\n />\n </div>\n ),\n }),\n scene(\"file-tree-delete-confirm\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({ ...context }),\n render: () => (\n <ConfirmDialog\n open\n onOpenChange={() => {}}\n tone=\"danger\"\n title=\"Delete preview-file.ts?\"\n description=\"This permanently removes the file from the current workspace.\"\n cancelText=\"Cancel\"\n confirmText=\"Delete\"\n onConfirm={() => {}}\n />\n ),\n }),\n scene(\"empty-state\", {\n router: () => ({ initialEntries: [\"/\"], path: \"/\" }),\n seed: (context) => ({ ...context }),\n render: () => (\n <div className=\"welcome-card\">\n <EmptyState title={<p>No results</p>} description={<p>Try a different filter.</p>} />\n </div>\n ),\n }),\n scene(\"loading-state\", {\n router: () => ({ initialEntries: [\"/workspace\"], path: \"/workspace\" }),\n seed: (context) => ({\n ...context,\n workspaces: [],\n activeWorkspaceId: null,\n }),\n render: () => (\n <div className=\"workspace-resolving-shell\">\n <div className=\"workspace-resolving-card\">\n <EmptyState title={<p>Loading workspace</p>} description={<p>Please wait...</p>} />\n </div>\n </div>\n ),\n }),\n ];\n}\n","import type { ReactNode } from \"react\";\nimport type { UiPreviewSceneMetadata } from \"./scene-metadata\";\n\nexport type {\n UiPreviewCategory,\n UiPreviewSettingsSection,\n UiPreviewSource,\n} from \"./scene-metadata\";\n\nimport type {\n UiPreviewDevice,\n UiPreviewLocale,\n UiPreviewSeed,\n UiPreviewTheme,\n} from \"./preview-store\";\nimport { createDesktopReviewScenes } from \"./scenes/desktop-review-scenes\";\nimport { createPageScenes } from \"./scenes/page-scenes\";\nimport { createShowcaseScenes } from \"./scenes/showcase-scenes\";\n\nexport interface UiPreviewSceneContext {\n theme: UiPreviewTheme;\n locale: UiPreviewLocale;\n device: UiPreviewDevice;\n}\n\nexport interface UiPreviewSceneDefinition extends UiPreviewSceneMetadata {\n seed: (context: UiPreviewSceneContext) => UiPreviewSeed;\n render: (context: UiPreviewSceneContext) => ReactNode;\n router: (context: UiPreviewSceneContext) => {\n initialEntries: string[];\n path: string;\n };\n}\n\nexport const UI_PREVIEW_SCENES: UiPreviewSceneDefinition[] = [\n ...createPageScenes(),\n ...createShowcaseScenes(),\n ...createDesktopReviewScenes(),\n];\n\nexport function getUiPreviewScene(id: string): UiPreviewSceneDefinition | null {\n return UI_PREVIEW_SCENES.find((scene) => scene.id === id) ?? null;\n}\n","import { MemoryRouter, Route, Routes } from \"react-router-dom\";\nimport { EmptyState } from \"../components/ui\";\nimport { getThemeById, resolveStoredThemeId } from \"../theme\";\nimport { getUiPreviewScene, type UiPreviewSceneDefinition } from \"./catalog\";\nimport type { UiPreviewDevice, UiPreviewLocale, UiPreviewTheme } from \"./preview-store\";\n\nexport interface UiPreviewRequest {\n sceneId: string;\n theme: UiPreviewTheme;\n locale: UiPreviewLocale;\n device: UiPreviewDevice;\n context: {\n theme: UiPreviewTheme;\n locale: UiPreviewLocale;\n device: UiPreviewDevice;\n };\n scene: UiPreviewSceneDefinition | null;\n}\n\nexport function resolvePreviewRequest(search: string): UiPreviewRequest {\n const params = new URLSearchParams(search);\n const sceneId = params.get(\"scene\") ?? \"welcome\";\n const theme = resolveStoredThemeId(params.get(\"theme\"));\n const locale = params.get(\"locale\") === \"en\" ? \"en\" : \"zh\";\n const device = params.get(\"device\") === \"mobile\" ? \"mobile\" : \"desktop\";\n const scene = getUiPreviewScene(sceneId);\n\n return {\n sceneId,\n theme,\n locale,\n device,\n context: { theme, locale, device },\n scene,\n };\n}\n\nfunction UnknownScene({ sceneId }: { sceneId: string }) {\n return (\n <div className=\"welcome-container\">\n <div className=\"welcome-card\">\n <EmptyState title={<p>Unknown preview scene</p>} description={<p>{sceneId}</p>} />\n </div>\n </div>\n );\n}\n\nexport function UiPreviewApp({ request }: { request: UiPreviewRequest }) {\n document.documentElement.setAttribute(\n \"data-theme\",\n getThemeById(request.theme).documentThemeAttr\n );\n document.documentElement.setAttribute(\"lang\", request.locale === \"zh\" ? \"zh\" : \"en\");\n document.body.dataset.uiPreviewDevice = request.device;\n\n if (!request.scene) {\n return <UnknownScene sceneId={request.sceneId} />;\n }\n\n const router = request.scene.router(request.context);\n\n return (\n <MemoryRouter initialEntries={router.initialEntries}>\n <Routes>\n <Route path={router.path} element={request.scene.render(request.context)} />\n </Routes>\n </MemoryRouter>\n );\n}\n","import type {\n FileNode,\n GitBranch,\n GitCommitDetail,\n GitCommitSummary,\n GitFileDiffPayload,\n GitStatus,\n MonitoringResponse,\n ProviderListItem,\n ProviderRuntimeStatusResponse,\n SearchSessionApplyResult,\n SearchSessionFilePreview,\n SearchSessionStartResult,\n Session,\n Supervisor,\n UpdateStateView,\n Workspace,\n WorkspaceHistoryEntry,\n WorktreeInfo,\n} from \"@coder-studio/core\";\nimport { createStore, type Store } from \"jotai\";\nimport {\n applyAppearancePersonalizationToDocument,\n applyResolvedTheme,\n resolveAppearancePersonalizationSetting,\n} from \"../appearance\";\nimport {\n appearancePersonalizationAtom,\n authenticatedAtom,\n commandPaletteOpenAtom,\n localeAtom,\n themeAtom,\n} from \"../atoms/app-ui\";\nimport {\n authEnabledAtom,\n connectionStatusAtom,\n type DispatchCommand,\n wsClientAtom,\n} from \"../atoms/connection\";\nimport { providerListAtom, providerRuntimeStatusAtom } from \"../atoms/providers\";\nimport { sessionsAtom } from \"../atoms/sessions\";\nimport {\n activeWorkspaceIdAtom,\n type WorkspaceLoadState,\n workspaceOrderAtom,\n workspacesAtom,\n workspacesLoadErrorAtom,\n workspacesLoadStateAtom,\n} from \"../atoms/workspaces\";\nimport {\n activeEditorPaneIdAtomFamily,\n focusedEditorPaneIdAtomFamily,\n} from \"../features/agent-panes/atoms/editor-panes\";\nimport { type PaneNode, paneLayoutAtomFamily } from \"../features/agent-panes/atoms/pane-layout\";\nimport { type Toast, toastsAtom } from \"../features/notifications\";\nimport { supervisorDialogAtom, supervisorsAtom } from \"../features/supervisor/atoms\";\nimport { terminalMetaAtomFamily } from \"../features/terminal-panel/atoms\";\nimport { updateStateAtom } from \"../features/updates/atoms\";\nimport {\n activeFilePathAtomFamily,\n branchQuickPickAtom,\n fileTreeAtomFamily,\n gitBranchListAtomFamily,\n gitDiffPreviewAtomFamily,\n gitStateAtomFamily,\n type OpenFile,\n openFilesAtomFamily,\n terminalPanelVisibleAtom,\n workspaceLayoutStateAtomFamily,\n worktreeListAtomFamily,\n} from \"../features/workspace/atoms\";\nimport { resolveStoredThemeId } from \"../theme\";\n\nexport type UiPreviewTheme = string;\nexport type UiPreviewLocale = \"zh\" | \"en\";\nexport type UiPreviewDevice = \"desktop\" | \"mobile\";\n\nexport interface UiPreviewCommands {\n providerList?: ProviderListItem[];\n providerRuntimeStatus?: ProviderRuntimeStatusResponse[\"providers\"];\n settingsGet?: Record<string, unknown>;\n settingsUpdate?: Record<string, unknown>;\n settingsPreviewCommandByProviderId?: Record<string, string>;\n monitoringGet?: MonitoringResponse;\n monitoringRecheck?: MonitoringResponse;\n workspaceHistoryList?: WorkspaceHistoryEntry[];\n workspaceBrowse?: {\n currentPath: string;\n parentPath: string | null;\n directories: Array<{ name: string; path: string; itemCount?: number }>;\n };\n workspaceOpen?: Workspace;\n workspaceUiStateSet?: Workspace;\n workspaceList?: Workspace[];\n sessionListByWorkspaceId?: Record<string, Session[]>;\n gitStatusByWorkspaceId?: Record<string, GitStatus>;\n gitBranchesByWorkspaceId?: Record<string, { current: string; branches: GitBranch[] }>;\n gitLogByWorkspaceId?: Record<string, { entries: GitCommitSummary[] }>;\n gitDiffByWorkspaceId?: Record<string, GitFileDiffPayload>;\n gitCommitDetailByWorkspaceId?: Record<string, GitCommitDetail>;\n gitCommitFileDiffByWorkspaceId?: Record<string, GitFileDiffPayload>;\n fileTreeByWorkspaceId?: Record<string, Record<string, FileNode[]>>;\n fileSearchByWorkspaceId?: Record<string, FileNode[]>;\n fileSearchSessionByWorkspaceId?: Record<string, SearchSessionStartResult>;\n fileSearchPreviewByWorkspaceId?: Record<string, Record<string, SearchSessionFilePreview>>;\n fileSearchApplyByWorkspaceId?: Record<string, SearchSessionApplyResult>;\n fileReadByWorkspaceId?: Record<string, Record<string, { content: string; baseHash?: string }>>;\n worktreeListByWorkspaceId?: Record<string, WorktreeInfo[]>;\n worktreeStatusByPath?: Record<string, GitStatus>;\n worktreeDiffByPath?: Record<string, string>;\n worktreeTreeByPath?: Record<string, FileNode[]>;\n terminalListByWorkspaceId?: Record<\n string,\n Array<{\n id: string;\n workspaceId: string;\n kind: \"shell\";\n title: string;\n cwd: string;\n argv: string[];\n cols: number;\n rows: number;\n alive: boolean;\n createdAt: number;\n }>\n >;\n supervisorBySessionId?: Record<string, Supervisor>;\n}\n\nexport interface UiPreviewSeed {\n theme: UiPreviewTheme;\n locale: UiPreviewLocale;\n device: UiPreviewDevice;\n authEnabled?: boolean | null;\n authenticated?: boolean;\n connectionStatus?: \"connecting\" | \"connected\" | \"disconnected\" | \"reconnecting\" | \"rejected\";\n workspaces?: Workspace[];\n activeWorkspaceId?: string | null;\n workspacesLoadState?: WorkspaceLoadState;\n workspacesLoadError?: string | null;\n sessions?: Session[];\n providerList?: ProviderListItem[];\n providerRuntimeStatus?: ProviderRuntimeStatusResponse[\"providers\"];\n paneLayoutByWorkspaceId?: Record<string, PaneNode>;\n activeEditorPaneIdByWorkspaceId?: Record<string, string | null>;\n focusedEditorPaneIdByWorkspaceId?: Record<string, string | null>;\n fileTreeByWorkspaceId?: Record<string, Map<string, FileNode[]>>;\n openFilesByWorkspaceId?: Record<string, Record<string, OpenFile>>;\n activeFilePathByWorkspaceId?: Record<string, string | null>;\n gitStateByWorkspaceId?: Record<string, GitStatus>;\n gitBranchListByWorkspaceId?: Record<string, { current: string; branches: GitBranch[] }>;\n gitDiffPreviewByWorkspaceId?: Record<\n string,\n import(\"../features/workspace/atoms\").GitDiffPreview\n >;\n worktreeListByWorkspaceId?: Record<string, WorktreeInfo[]>;\n terminalMetaById?: Record<\n string,\n { id: string; workspaceId: string; kind: \"agent\" | \"shell\"; alive: boolean; title?: string }\n >;\n terminalOutputById?: Record<string, Uint8Array[]>;\n toasts?: Toast[];\n commandPaletteOpen?: boolean;\n branchQuickPick?: {\n visible: boolean;\n workspaceId?: string;\n inputValue: string;\n selectedBranch?: string;\n };\n terminalPanelVisible?: boolean;\n supervisorBySessionId?: Record<string, Supervisor>;\n supervisorDialog?: {\n open: boolean;\n sessionId: string | null;\n mode: \"enable\" | \"edit\";\n draftObjective: string;\n draftEvaluatorProviderId: \"claude\" | \"codex\";\n draftEvaluatorModel?: string;\n draftMaxSupervisionCount?: string;\n draftScheduledAt?: string;\n };\n updateState?: UpdateStateView | null;\n commands?: UiPreviewCommands;\n}\n\nfunction ok<T>(data: T) {\n return { ok: true as const, data };\n}\n\nfunction getTerminalPreviewBytes(seed: UiPreviewSeed, terminalId: string): Uint8Array {\n const chunks = seed.terminalOutputById?.[terminalId] ?? [];\n if (chunks.length === 0) {\n return new Uint8Array();\n }\n\n const totalLength = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const bytes = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n}\n\nfunction getTerminalPreviewSeq(seed: UiPreviewSeed, terminalId: string): number {\n return getTerminalPreviewBytes(seed, terminalId).byteLength;\n}\n\nfunction err(message: string) {\n return {\n ok: false as const,\n error: { code: \"preview_missing_handler\", message },\n };\n}\n\nfunction createPreviewDispatcher(seed: UiPreviewSeed, store: Store): DispatchCommand {\n return async <T>(op: string, args: unknown) => {\n const commands = seed.commands ?? {};\n\n if (op === \"settings.get\") {\n return ok((commands.settingsGet ?? {}) as T);\n }\n\n if (op === \"settings.update\") {\n return ok((commands.settingsUpdate ?? {}) as T);\n }\n\n if (op === \"settings.previewCommand\") {\n const providerId = (args as { providerId?: string })?.providerId ?? \"\";\n return ok({\n preview: commands.settingsPreviewCommandByProviderId?.[providerId] ?? \"\",\n } as unknown as T);\n }\n\n if (op === \"settings.readConfigFile\") {\n return ok({ exists: true, content: \"# preview config\\n\" } as unknown as T);\n }\n\n if (op === \"settings.writeConfigFile\") {\n return ok({ ok: true } as unknown as T);\n }\n\n if (op === \"monitoring.get\") {\n if (!commands.monitoringGet) {\n return err(\"Missing preview handler for monitoring.get\");\n }\n return ok(commands.monitoringGet as T);\n }\n\n if (op === \"monitoring.recheck\") {\n return ok((commands.monitoringRecheck ?? commands.monitoringGet ?? null) as T);\n }\n\n if (op === \"workspace.list\") {\n return ok((commands.workspaceList ?? seed.workspaces ?? []) as T);\n }\n\n if (op === \"workspace.history.list\") {\n return ok((commands.workspaceHistoryList ?? []) as T);\n }\n\n if (op === \"provider.list\") {\n return ok((commands.providerList ?? seed.providerList ?? []) as T);\n }\n\n if (op === \"provider.runtimeStatus\") {\n return ok({\n providers: commands.providerRuntimeStatus ?? seed.providerRuntimeStatus ?? {},\n } as unknown as T);\n }\n\n if (op === \"workspace.browse\") {\n if (!commands.workspaceBrowse) {\n return err(\"Missing workspace.browse preview handler\");\n }\n return ok(commands.workspaceBrowse as T);\n }\n\n if (op === \"workspace.open\") {\n if (!commands.workspaceOpen) {\n return err(\"Missing workspace.open preview handler\");\n }\n return ok(commands.workspaceOpen as T);\n }\n\n if (op === \"workspace.uiState.set\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n const uiState = (args as { uiState?: Workspace[\"uiState\"] })?.uiState;\n if (workspaceId && uiState?.paneLayout) {\n store.set(paneLayoutAtomFamily(workspaceId), uiState.paneLayout as PaneNode);\n }\n return ok(\n (commands.workspaceUiStateSet ?? commands.workspaceOpen ?? seed.workspaces?.[0]) as T\n );\n }\n\n if (op === \"session.list\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok((commands.sessionListByWorkspaceId?.[workspaceId] ?? []).slice() as T);\n }\n\n if (op === \"git.status\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n const value = commands.gitStatusByWorkspaceId?.[workspaceId];\n return value ? ok(value as T) : ok((seed.gitStateByWorkspaceId?.[workspaceId] ?? null) as T);\n }\n\n if (op === \"git.branches\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n const value = commands.gitBranchesByWorkspaceId?.[workspaceId];\n return value ? ok(value as T) : ok({ current: \"\", branches: [] } as unknown as T);\n }\n\n if (op === \"git.log\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok((commands.gitLogByWorkspaceId?.[workspaceId] ?? { entries: [] }) as unknown as T);\n }\n\n if (op === \"git.diff\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok(\n (commands.gitDiffByWorkspaceId?.[workspaceId] ?? {\n diff: \"\",\n renderAs: \"text\",\n status: \"modified\",\n }) as unknown as T\n );\n }\n\n if (op === \"git.commitDetail\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok(\n (commands.gitCommitDetailByWorkspaceId?.[workspaceId] ?? {\n commit: {\n sha: \"\",\n shortSha: \"\",\n subject: \"\",\n authorName: \"\",\n authoredAt: 0,\n },\n files: [],\n }) as unknown as T\n );\n }\n\n if (op === \"git.commitFileDiff\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok(\n (commands.gitCommitFileDiffByWorkspaceId?.[workspaceId] ?? {\n diff: \"\",\n renderAs: \"text\",\n status: \"modified\",\n }) as unknown as T\n );\n }\n\n if (op === \"git.checkout\") {\n return ok({ success: true, message: \"Preview checkout\", branch: \"main\" } as unknown as T);\n }\n\n if (op === \"git.fetch\" || op === \"git.pull\" || op === \"git.push\") {\n return ok({ success: true, message: \"Preview sync\" } as unknown as T);\n }\n\n if (op === \"file.readTree\") {\n const { workspaceId = \"\", subPath } =\n (args as { workspaceId?: string; subPath?: string }) ?? {};\n const key = subPath ?? \".\";\n const children = commands.fileTreeByWorkspaceId?.[workspaceId]?.[key] ?? [];\n return ok({ path: key, children } as unknown as T);\n }\n\n if (op === \"file.read\") {\n const { workspaceId = \"\", path = \"\" } =\n (args as { workspaceId?: string; path?: string }) ?? {};\n const file = commands.fileReadByWorkspaceId?.[workspaceId]?.[path];\n return ok({\n kind: \"text\",\n content: file?.content ?? `// Preview file: ${path}\\n`,\n baseHash: file?.baseHash ?? \"\",\n encoding: \"utf-8\",\n } as unknown as T);\n }\n\n if (op === \"file.search\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok({ files: commands.fileSearchByWorkspaceId?.[workspaceId] ?? [] } as unknown as T);\n }\n\n if (op === \"file.searchSession.start\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok(\n (commands.fileSearchSessionByWorkspaceId?.[workspaceId] ?? {\n files: [],\n sessionId: \"preview-search-session\",\n totalMatchCount: 0,\n totalFileCount: 0,\n hasMoreFiles: false,\n truncatedMatchFileCount: 0,\n skippedBinaryFileCount: 0,\n skippedLargeFileCount: 0,\n }) as unknown as T\n );\n }\n\n if (op === \"file.searchSession.previewFile\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n const path = (args as { path?: string })?.path ?? \"\";\n return ok(\n (commands.fileSearchPreviewByWorkspaceId?.[workspaceId]?.[path] ?? {\n kind: \"search-replace-file-diff\",\n path,\n title: path,\n sessionId: \"preview-search-session\",\n baseHash: \"preview-base-hash\",\n originalContent: `// Preview before replacement: ${path}\\n`,\n modifiedContent: `// Preview after replacement: ${path}\\n`,\n }) as unknown as T\n );\n }\n\n if (op === \"file.searchSession.apply\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok(\n (commands.fileSearchApplyByWorkspaceId?.[workspaceId] ?? {\n sessionId: \"preview-search-session\",\n status: \"ok\",\n appliedFileCount: 1,\n conflictFileCount: 0,\n skippedFileCount: 0,\n results: [],\n }) as unknown as T\n );\n }\n\n if (op === \"worktree.list\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok({\n worktrees: commands.worktreeListByWorkspaceId?.[workspaceId] ?? [],\n } as unknown as T);\n }\n\n if (op === \"worktree.status\") {\n const worktreePath = (args as { worktreePath?: string })?.worktreePath ?? \"\";\n const value = commands.worktreeStatusByPath?.[worktreePath];\n return value ? ok({ status: value } as unknown as T) : ok({ status: null } as unknown as T);\n }\n\n if (op === \"worktree.diff\") {\n const worktreePath = (args as { worktreePath?: string })?.worktreePath ?? \"\";\n return ok({ diff: commands.worktreeDiffByPath?.[worktreePath] ?? \"\" } as unknown as T);\n }\n\n if (op === \"worktree.tree\") {\n const worktreePath = (args as { worktreePath?: string })?.worktreePath ?? \"\";\n return ok({ tree: commands.worktreeTreeByPath?.[worktreePath] ?? [] } as unknown as T);\n }\n\n if (op === \"worktree.create\" || op === \"worktree.remove\") {\n return ok({ ok: true } as unknown as T);\n }\n\n if (op === \"terminal.list\") {\n const workspaceId = (args as { workspaceId?: string })?.workspaceId ?? \"\";\n return ok((commands.terminalListByWorkspaceId?.[workspaceId] ?? []) as unknown as T);\n }\n\n if (op === \"terminal.create\") {\n const workspaceId =\n (args as { workspaceId?: string })?.workspaceId ?? seed.activeWorkspaceId ?? \"\";\n return ok({\n id: \"terminal-preview-created\",\n workspaceId,\n kind: \"shell\",\n title: \"Preview Terminal\",\n cwd: \"/home/spencer/workspace/coder-studio\",\n argv: [],\n cols: 120,\n rows: 32,\n alive: true,\n createdAt: 1,\n } as unknown as T);\n }\n\n if (op === \"terminal.snapshot\") {\n const terminalId = (args as { terminalId?: string })?.terminalId ?? \"\";\n const bytes = getTerminalPreviewBytes(seed, terminalId);\n return ok({\n status: \"ok\",\n transport: \"binary\",\n streamId: 1,\n size: bytes.byteLength,\n seq: getTerminalPreviewSeq(seed, terminalId),\n rows: 28,\n cols: 120,\n source: \"headless\",\n bytes,\n } as unknown as T);\n }\n\n if (op === \"terminal.replay\") {\n const terminalId = (args as { terminalId?: string })?.terminalId ?? \"\";\n const lastSeq = (args as { lastSeq?: number })?.lastSeq ?? 0;\n const fullBytes = getTerminalPreviewBytes(seed, terminalId);\n const replayBytes = fullBytes.subarray(Math.max(0, lastSeq));\n return ok({\n status: \"ok\",\n transport: \"binary\",\n streamId: 1,\n size: replayBytes.byteLength,\n seq: fullBytes.byteLength,\n bytes: replayBytes,\n } as unknown as T);\n }\n\n if (\n op === \"terminal.close\" ||\n op === \"terminal.resize\" ||\n op === \"terminal.input\" ||\n op === \"provider.install.start\" ||\n op === \"provider.install.get\" ||\n op === \"session.create\" ||\n op === \"session.stop\" ||\n op === \"session.remove\" ||\n op === \"file.create\" ||\n op === \"file.mkdir\" ||\n op === \"file.delete\" ||\n op === \"supervisor.create\" ||\n op === \"supervisor.update\" ||\n op === \"supervisor.delete\"\n ) {\n return ok({} as unknown as T);\n }\n\n if (op === \"supervisor.get\") {\n const sessionId = (args as { sessionId?: string })?.sessionId ?? \"\";\n const supervisor =\n commands.supervisorBySessionId?.[sessionId] ??\n seed.supervisorBySessionId?.[sessionId] ??\n null;\n return ok({ supervisor } as unknown as T);\n }\n\n return err(`Missing preview handler for ${op}`);\n };\n}\n\nexport function buildUiPreviewStore(seed: UiPreviewSeed): Store {\n const store = createStore();\n const dispatch = createPreviewDispatcher(seed, store);\n const workspaces = seed.workspaces ?? [];\n const resolvedThemeId = resolveStoredThemeId(seed.theme);\n const personalization = resolveAppearancePersonalizationSetting(seed.commands?.settingsGet ?? {});\n\n store.set(themeAtom, resolvedThemeId);\n store.set(appearancePersonalizationAtom, personalization);\n store.set(localeAtom, seed.locale);\n store.set(authEnabledAtom, seed.authEnabled === undefined ? false : seed.authEnabled);\n store.set(authenticatedAtom, seed.authenticated ?? true);\n store.set(connectionStatusAtom, seed.connectionStatus ?? \"connected\");\n store.set(\n workspacesAtom,\n Object.fromEntries(workspaces.map((workspace) => [workspace.id, workspace]))\n );\n store.set(\n workspaceOrderAtom,\n workspaces.map((workspace) => workspace.id)\n );\n store.set(workspacesLoadStateAtom, seed.workspacesLoadState ?? \"ready\");\n store.set(workspacesLoadErrorAtom, seed.workspacesLoadError ?? null);\n store.set(\n activeWorkspaceIdAtom,\n seed.activeWorkspaceId === undefined ? (workspaces[0]?.id ?? null) : seed.activeWorkspaceId\n );\n for (const workspace of workspaces) {\n store.set(workspaceLayoutStateAtomFamily(workspace.id), {\n focusMode: workspace.uiState.focusMode,\n leftPanelWidth: workspace.uiState.leftPanelWidth,\n bottomPanelHeight: workspace.uiState.bottomPanelHeight,\n sidebarCollapsed: false,\n desktopSidebarView: \"explorer\",\n terminalPanelVisible: seed.terminalPanelVisible ?? true,\n });\n }\n store.set(\n sessionsAtom,\n Object.fromEntries((seed.sessions ?? []).map((session) => [session.id, session]))\n );\n store.set(providerListAtom, seed.providerList ?? []);\n store.set(providerRuntimeStatusAtom, seed.providerRuntimeStatus);\n store.set(commandPaletteOpenAtom, seed.commandPaletteOpen ?? false);\n store.set(branchQuickPickAtom, seed.branchQuickPick ?? { visible: false, inputValue: \"\" });\n store.set(terminalPanelVisibleAtom, seed.terminalPanelVisible ?? true);\n store.set(toastsAtom, seed.toasts ?? []);\n store.set(updateStateAtom, seed.updateState ?? null);\n store.set(\n supervisorDialogAtom,\n seed.supervisorDialog\n ? {\n draftEvaluatorModel: \"\",\n draftMaxSupervisionCount: \"0\",\n draftScheduledAt: \"\",\n ...seed.supervisorDialog,\n }\n : {\n open: false,\n sessionId: null,\n mode: \"enable\",\n draftObjective: \"\",\n draftEvaluatorProviderId: \"claude\",\n draftEvaluatorModel: \"\",\n draftMaxSupervisionCount: \"0\",\n draftScheduledAt: \"\",\n }\n );\n store.set(supervisorsAtom, new Map(Object.entries(seed.supervisorBySessionId ?? {})));\n store.set(wsClientAtom, {\n sendCommand: async <T>(op: string, args: unknown) => {\n const result = await dispatch<T>(op, args);\n if (!result.ok) {\n throw new Error(result.error?.message ?? `Preview command failed: ${op}`);\n }\n return result.data as T;\n },\n sendTerminalInput: async () => {},\n subscribe: () => () => {},\n connect: async () => {},\n disconnect: () => {},\n getStatus: () => \"connected\",\n } as never);\n\n if (typeof document !== \"undefined\") {\n applyResolvedTheme(resolvedThemeId);\n document.documentElement.setAttribute(\"lang\", seed.locale);\n document.body.dataset.uiPreviewDevice = seed.device;\n applyAppearancePersonalizationToDocument(personalization, resolvedThemeId);\n }\n\n for (const [workspaceId, layout] of Object.entries(seed.paneLayoutByWorkspaceId ?? {})) {\n store.set(paneLayoutAtomFamily(workspaceId), layout);\n }\n\n for (const [workspaceId, paneId] of Object.entries(seed.activeEditorPaneIdByWorkspaceId ?? {})) {\n store.set(activeEditorPaneIdAtomFamily(workspaceId), paneId);\n }\n\n for (const [workspaceId, paneId] of Object.entries(seed.focusedEditorPaneIdByWorkspaceId ?? {})) {\n store.set(focusedEditorPaneIdAtomFamily(workspaceId), paneId);\n }\n\n for (const [workspaceId, treeMap] of Object.entries(seed.fileTreeByWorkspaceId ?? {})) {\n store.set(fileTreeAtomFamily(workspaceId), treeMap);\n }\n\n for (const [workspaceId, openFiles] of Object.entries(seed.openFilesByWorkspaceId ?? {})) {\n store.set(openFilesAtomFamily(workspaceId), openFiles);\n }\n\n for (const [workspaceId, path] of Object.entries(seed.activeFilePathByWorkspaceId ?? {})) {\n store.set(activeFilePathAtomFamily(workspaceId), path);\n }\n\n for (const [workspaceId, gitState] of Object.entries(seed.gitStateByWorkspaceId ?? {})) {\n store.set(gitStateAtomFamily(workspaceId), gitState);\n }\n\n for (const [workspaceId, branchList] of Object.entries(seed.gitBranchListByWorkspaceId ?? {})) {\n store.set(gitBranchListAtomFamily(workspaceId), {\n ...branchList,\n loading: false,\n });\n }\n\n for (const [workspaceId, preview] of Object.entries(seed.gitDiffPreviewByWorkspaceId ?? {})) {\n store.set(gitDiffPreviewAtomFamily(workspaceId), preview);\n }\n\n for (const [workspaceId, items] of Object.entries(seed.worktreeListByWorkspaceId ?? {})) {\n store.set(worktreeListAtomFamily(workspaceId), {\n items,\n loading: false,\n lastLoadedAt: 1,\n });\n }\n\n for (const [terminalId, meta] of Object.entries(seed.terminalMetaById ?? {})) {\n store.set(terminalMetaAtomFamily(terminalId), meta);\n }\n\n return store;\n}\n","import \"@vitejs/plugin-react/preamble\";\nimport { Provider } from \"jotai\";\nimport ReactDOM from \"react-dom/client\";\nimport { resolvePreviewRequest, UiPreviewApp } from \"./app\";\nimport { buildUiPreviewStore } from \"./preview-store\";\n\nimport \"@xterm/xterm/css/xterm.css\";\nimport \"../styles/fonts.css\";\nimport \"../styles/tokens.css\";\nimport \"../styles/base.css\";\nimport \"../styles/components.css\";\n\nconst request = resolvePreviewRequest(window.location.search);\nconst store = buildUiPreviewStore(\n request.scene ? request.scene.seed(request.context) : request.context\n);\nconst root = ReactDOM.createRoot(document.getElementById(\"root\") as HTMLElement);\n\nroot.render(\n <Provider store={store}>\n <UiPreviewApp request={request} />\n </Provider>\n);\n"],"mappings":"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"}
|