diff --git a/.gitignore b/.gitignore
index 33c84e5a..66320524 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,3 +95,6 @@ legacy/**/.coverage
legacy/**/.coverage.*
.clide/settings.yaml
.claude/skills/pql/
+
+# frame0-wireframe local ID ↔ Frame0 ID mapping; per-machine state.
+docs/wireframes/**/.*.idmap.json
diff --git a/.pql/pql-plan.json b/.pql/pql-plan.json
index 9aa39313..f2f4b5cb 100644
--- a/.pql/pql-plan.json
+++ b/.pql/pql-plan.json
@@ -1,5 +1,5 @@
{
- "exported_at": "2026-05-06T09:10:36Z",
+ "exported_at": "2026-05-06T09:13:52Z",
"decisions": [
{
"id": "D-1",
diff --git a/docs/claude-design/README.md b/docs/claude-design/README.md
index 0c5ce69b..ee315918 100644
--- a/docs/claude-design/README.md
+++ b/docs/claude-design/README.md
@@ -1,4 +1,25 @@
-# clide · design handoff
+# clide · design handoff (superseded reference)
+
+> **Status (2026-05-06):** Reference-only. The implementation has
+> moved past these mockups. The canonical wireframe set now lives at
+> [`docs/wireframes/`](../wireframes/), generated from the actual
+> implementation via the `frame0-wireframe` skill.
+>
+> Update wireframes there, not here.
+>
+> **Why kept:** the design tokens under `tokens/` and `themes/` still
+> feed the runtime themes (per [D-43](../../decisions/architecture.md#d-43-design-handoff-adopt-token-palettes-reject-material-wrapper)
+> / [D-44](../../decisions/architecture.md#d-44-four-bundled-themes-clide-midnight-paper-terminal)).
+> The HTMLs and PNGs are kept for historical context.
+>
+> **What changed since:** welcome screen has logo-with-wordmark and a
+> Tips card spanning both columns; status line with theme switcher
+> lives at the bottom right; Claude pane runs in fullscreen mode
+> (`CLAUDE_CODE_NO_FLICKER=1`) so the input box is pinned by Claude
+> Code itself; tmux uses an isolated `-L clide` socket with bundled
+> config; sidebar layout follows D-47's "Claude is home" model.
+
+---
Bundle for importing into the clide repo and driving further work with Claude Code.
diff --git a/docs/wireframes/README.md b/docs/wireframes/README.md
new file mode 100644
index 00000000..439aad0f
--- /dev/null
+++ b/docs/wireframes/README.md
@@ -0,0 +1,53 @@
+# clide wireframes
+
+Canonical layout reference, generated from the actual implementation
+via the `frame0-wireframe` skill. Each `.json` is the source of
+truth; the `.png` is rendered from it.
+
+These supersede the hi-fi mockups under
+[`../claude-design/`](../claude-design/), which are kept for
+historical context and design tokens.
+
+## Set
+
+### Welcome
+- [`welcome/welcome-screen.json`](welcome/welcome-screen.json) /
+ [.png](welcome/welcome-screen.png)
+ — first-run landing: logo + wordmark, START / RECENT columns,
+ Tips card, status line.
+
+### Main view
+- [`main/main-view.json`](main/main-view.json) /
+ [.png](main/main-view.png)
+ — three-column default: tickets sidebar, Claude pane, empty
+ context panel.
+- [`main/editor-above-claude.json`](main/editor-above-claude.json) /
+ [.png](main/editor-above-claude.png)
+ — D-49 editor mode: editor above Claude in the middle column,
+ divider between, prompt Y stays fixed.
+- [`main/focus-mode.json`](main/focus-mode.json) /
+ [.png](main/focus-mode.png)
+ — D-52 focus mode: full-window Claude pane, sidebars hidden,
+ Esc-to-exit hint in the title bar.
+- [`main/sidebar-collapsed.json`](main/sidebar-collapsed.json) /
+ [.png](main/sidebar-collapsed.png)
+ — D-51 12px spine: sidebar collapsed to a vertical strip with
+ rotated label and activity badge.
+- [`main/ticket-detail.json`](main/ticket-detail.json) /
+ [.png](main/ticket-detail.png)
+ — context panel showing a selected ticket with metadata and
+ description.
+
+## Updating
+
+1. Edit the `.json` (source of truth).
+2. Re-export with the `frame0-wireframe` skill:
+ ```
+ .claude/skills/frame0-wireframe/scripts/frame0-sync.py \
+ export docs/wireframes/
/.json \
+ docs/wireframes//.png
+ ```
+3. Commit both files.
+
+Frame0 must be running locally for export. Don't pull from Frame0 —
+the JSON is authoritative.
diff --git a/docs/wireframes/main/editor-above-claude.json b/docs/wireframes/main/editor-above-claude.json
new file mode 100644
index 00000000..858c9c45
--- /dev/null
+++ b/docs/wireframes/main/editor-above-claude.json
@@ -0,0 +1,231 @@
+{
+ "name": "Main View — editor above Claude",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1400, "height": 860,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1400, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 720, "top": 50,
+ "text": "clide › clide ⌄ · src/welcome/welcome_view.dart ●",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "sidebar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 280, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "sidebar-section": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 96,
+ "text": "▾ FILES",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "files-tree": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 124,
+ "text": "▸ assets\n▸ bin\n▾ lib\n ▾ builtin\n ▾ welcome\n ▾ src\n welcome_view.dart\n extension.dart\n ▸ kernel\n ▸ widgets",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "sidebar-rail": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 822, "width": 280, "height": 40,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+
+ "editor-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 320, "top": 76, "width": 740, "height": 320,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "editor-header": {
+ "type": "Rectangle",
+ "parent": "editor-pane",
+ "left": 320, "top": 76, "width": 740, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "editor-title": {
+ "type": "Text",
+ "parent": "editor-header",
+ "left": 336, "top": 86,
+ "text": "✎ welcome_view.dart ●",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "editor-demote": {
+ "type": "Text",
+ "parent": "editor-header",
+ "left": 1024, "top": 86,
+ "text": "👁 ⌘W",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "editor-line-1": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 130,
+ "text": " 1 class _TipsCard extends StatelessWidget {",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+ "editor-line-2": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 148,
+ "text": " 2 const _TipsCard({required this.tokens});",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+ "editor-line-3": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 166,
+ "text": " 3 final SurfaceTokens tokens;",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+ "editor-line-4": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 184,
+ "text": " 4",
+ "fontColor": "#5a6478",
+ "fontSize": 11
+ },
+ "editor-line-5": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 202,
+ "text": " 5 static const _tips = <(String, String)>[",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+ "editor-line-6": {
+ "type": "Text",
+ "parent": "editor-pane",
+ "left": 336, "top": 220,
+ "text": " 6 ('Quick open', '⌘P'),",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+
+ "divider": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 320, "top": 396, "width": 740, "height": 4,
+ "fillColor": "#262a32",
+ "strokeColor": "#262a32"
+ },
+
+ "claude-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 320, "top": 400, "width": 740, "height": 462,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "claude-header": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 320, "top": 400, "width": 740, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "claude-title": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 336, "top": 410,
+ "text": "claude — primary",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-conv": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 336, "top": 460,
+ "text": "› refactor _TipsCard into its own file\n\n● Moved _TipsCard to lib/builtin/welcome/src/tips_card.dart.\n Re-exported from welcome_view.dart for backwards compat.\n Updated test/builtin/welcome/widget_test.dart to import\n the new path.",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-prompt-divider": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 320, "top": 800, "width": 740, "height": 1,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "claude-prompt": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 336, "top": 808,
+ "text": "› Try \"run the tests\"",
+ "fontColor": "#5a6478",
+ "fontSize": 12
+ },
+
+ "context-panel": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 1060, "top": 76, "width": 380, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "context-section": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 96,
+ "text": "▾ PREVIEW",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "context-doc": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 134,
+ "text": "Welcome screen\n\nThe first surface a user sees when no project is\nopen, or after closing one.\n\nLayout: centered max-850px column with logo +\nwordmark, START / RECENT row, and (when the\nviewport is tall enough) a TIPS card spanning\nthe full width.",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+
+ "status-branch": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 56, "top": 880,
+ "text": "⑂ main ↑5 · 3 modified",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "status-app": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 700, "top": 880,
+ "text": "● application ok",
+ "fontColor": "#5a8c5a",
+ "fontSize": 11
+ }
+ }
+}
diff --git a/docs/wireframes/main/editor-above-claude.png b/docs/wireframes/main/editor-above-claude.png
new file mode 100644
index 00000000..6665ff5d
Binary files /dev/null and b/docs/wireframes/main/editor-above-claude.png differ
diff --git a/docs/wireframes/main/focus-mode.json b/docs/wireframes/main/focus-mode.json
new file mode 100644
index 00000000..10c82c92
--- /dev/null
+++ b/docs/wireframes/main/focus-mode.json
@@ -0,0 +1,131 @@
+{
+ "name": "Main View — focus mode",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1400, "height": 860,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1400, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 720, "top": 50,
+ "text": "clide › clide ⌄ — focus mode",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "esc-hint": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 1340, "top": 50,
+ "text": "Esc to exit",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+
+ "claude-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 1400, "height": 786,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "claude-header": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 40, "top": 76, "width": 1400, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "claude-title": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 56, "top": 86,
+ "text": "claude — primary",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-subtitle": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 56, "top": 100,
+ "text": "tmux · clide-claude-var-mnt-data-projects-clide · focus",
+ "fontColor": "#7a8294",
+ "fontSize": 10
+ },
+
+ "claude-banner-icon": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 56, "top": 142,
+ "text": "▰▰",
+ "fontColor": "#d97757",
+ "fontSize": 12
+ },
+ "claude-banner-name": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 82, "top": 142,
+ "text": "Claude Code v2.1.128",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-banner-meta": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 82, "top": 158,
+ "text": "Opus 4.7 (1M context) with high effort · Claude Max",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+
+ "claude-msg-1-prompt": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 56, "top": 230,
+ "text": "› switch to focus mode for the next push",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "claude-msg-1-resp": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 56, "top": 258,
+ "text": "● Focus mode entered. Esc to exit. Sidebar and context\n panel are hidden — Claude pane fills the workspace.",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+
+ "claude-prompt-divider": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 40, "top": 800, "width": 1400, "height": 1,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "claude-prompt-caret": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 56, "top": 808,
+ "text": "›",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "claude-prompt-placeholder": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 80, "top": 810,
+ "text": "Try \"go full screen\"",
+ "fontColor": "#5a6478",
+ "fontSize": 12
+ }
+ }
+}
diff --git a/docs/wireframes/main/focus-mode.png b/docs/wireframes/main/focus-mode.png
new file mode 100644
index 00000000..afa595f6
Binary files /dev/null and b/docs/wireframes/main/focus-mode.png differ
diff --git a/docs/wireframes/main/main-view.json b/docs/wireframes/main/main-view.json
new file mode 100644
index 00000000..0da3773a
--- /dev/null
+++ b/docs/wireframes/main/main-view.json
@@ -0,0 +1,447 @@
+{
+ "name": "Main View — project loaded",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1400, "height": 860,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028",
+ "corners": [4, 4, 4, 4]
+ },
+
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1400, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028",
+ "corners": [4, 4, 0, 0]
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 720, "top": 50,
+ "text": "clide › clide ⌄",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "sidebar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 360, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "sidebar-search": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 92, "width": 280, "height": 32,
+ "fillColor": "#0e1014",
+ "strokeColor": "#262a32",
+ "corners": [4, 4, 4, 4]
+ },
+ "sidebar-search-icon": {
+ "type": "Text",
+ "parent": "sidebar-search",
+ "left": 68, "top": 100,
+ "text": "⌕",
+ "fontColor": "#5a6478",
+ "fontSize": 14
+ },
+
+ "section-in-progress": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 142,
+ "text": "▾ IN PROGRESS · 1",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-1": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 166, "width": 328, "height": 64,
+ "fillColor": "#0e1014",
+ "strokeColor": "#262a32",
+ "corners": [4, 4, 4, 4]
+ },
+ "ticket-1-id": {
+ "type": "Text",
+ "parent": "ticket-1",
+ "left": 70, "top": 178,
+ "text": "● T-21 ← T-4",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-1-title": {
+ "type": "Text",
+ "parent": "ticket-1",
+ "left": 70, "top": 200,
+ "text": "implement welcome screen per hi-fi design",
+ "fontColor": "#e8ecf2",
+ "fontSize": 13
+ },
+
+ "section-ready": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 250,
+ "text": "▾ READY · 3",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-2": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 274, "width": 328, "height": 56,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "ticket-2-id": {
+ "type": "Text",
+ "parent": "ticket-2",
+ "left": 70, "top": 282,
+ "text": "● T-17 ← T-8",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-2-title": {
+ "type": "Text",
+ "parent": "ticket-2",
+ "left": 70, "top": 302,
+ "text": "add dart doc generation to CI",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "ticket-3": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 332, "width": 328, "height": 56,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "ticket-3-id": {
+ "type": "Text",
+ "parent": "ticket-3",
+ "left": 70, "top": 340,
+ "text": "● T-24 ← T-3",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-3-title": {
+ "type": "Text",
+ "parent": "ticket-3",
+ "left": 70, "top": 360,
+ "text": "secondary Claude pane UI wiring",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "section-backlog": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 408,
+ "text": "▾ BACKLOG · 33",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-4": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 432, "width": 328, "height": 50,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "ticket-4-id": {
+ "type": "Text",
+ "parent": "ticket-4",
+ "left": 70, "top": 440,
+ "text": "● T-7 ← T-7",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-4-title": {
+ "type": "Text",
+ "parent": "ticket-4",
+ "left": 70, "top": 458,
+ "text": "Tier 5 — canvas and graph view",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "ticket-5": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 484, "width": 328, "height": 50,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "ticket-5-id": {
+ "type": "Text",
+ "parent": "ticket-5",
+ "left": 70, "top": 492,
+ "text": "● T-23 ← T-4",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-5-title": {
+ "type": "Text",
+ "parent": "ticket-5",
+ "left": 70, "top": 510,
+ "text": "wire command palette keybinding",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "sidebar-rail": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 822, "width": 360, "height": 40,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "rail-icon-1": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 68, "top": 832,
+ "text": "▤",
+ "fontColor": "#e8ecf2",
+ "fontSize": 16
+ },
+ "rail-icon-2": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 110, "top": 832,
+ "text": "◇",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "rail-icon-3": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 152, "top": 832,
+ "text": "▢",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "rail-icon-4": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 194, "top": 832,
+ "text": "⑂",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "rail-icon-5": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 236, "top": 832,
+ "text": "⌕",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "rail-icon-6": {
+ "type": "Text",
+ "parent": "sidebar-rail",
+ "left": 278, "top": 832,
+ "text": "!",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+
+ "claude-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 400, "top": 76, "width": 660, "height": 786,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "claude-header": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 400, "top": 76, "width": 660, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "claude-title": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 416, "top": 86,
+ "text": "claude — primary",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-subtitle": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 416, "top": 100,
+ "text": "tmux · clide-claude-var-mnt-data-projects-clide",
+ "fontColor": "#7a8294",
+ "fontSize": 10
+ },
+
+ "claude-logo-icon": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 142,
+ "text": "▰▰",
+ "fontColor": "#d97757",
+ "fontSize": 12
+ },
+ "claude-banner-name": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 442, "top": 142,
+ "text": "Claude Code v2.1.128",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-banner-model": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 442, "top": 158,
+ "text": "Opus 4.7 (1M context) with high effort · Claude Max",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "claude-banner-cwd": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 442, "top": 174,
+ "text": "/var/mnt/data/projects/clide",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+
+ "claude-message-1": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 230,
+ "text": "› wireframe the main view",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "claude-response-1": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 258,
+ "text": "● Building wireframe from current implementation. Three\n columns: sidebar (tickets shown), Claude pane, context\n panel. Let me check the tab contributions first.",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+
+ "claude-mcp-warn": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 720,
+ "text": "1 MCP server failed · /mcp",
+ "fontColor": "#d97757",
+ "fontSize": 11
+ },
+
+ "claude-prompt-divider": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 400, "top": 752, "width": 660, "height": 1,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "claude-prompt-caret": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 760,
+ "text": "›",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "claude-prompt-placeholder": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 440, "top": 762,
+ "text": "Try \"export the wireframes\"",
+ "fontColor": "#5a6478",
+ "fontSize": 12
+ },
+ "claude-prompt-meta": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 794,
+ "text": "[jeroenschweitzer@danoontje clide] | Opus 4.7 (1M context)",
+ "fontColor": "#7a8294",
+ "fontSize": 10
+ },
+
+ "context-panel": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 1060, "top": 76, "width": 380, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "context-empty": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 96,
+ "text": "Select a ticket to view details.",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "context-rail": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 1060, "top": 822, "width": 380, "height": 40,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "context-rail-icon-1": {
+ "type": "Text",
+ "parent": "context-rail",
+ "left": 1300, "top": 832,
+ "text": "▤",
+ "fontColor": "#e8ecf2",
+ "fontSize": 16
+ },
+ "context-rail-icon-2": {
+ "type": "Text",
+ "parent": "context-rail",
+ "left": 1340, "top": 832,
+ "text": "◇",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "context-rail-icon-3": {
+ "type": "Text",
+ "parent": "context-rail",
+ "left": 1380, "top": 832,
+ "text": "⌕",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+ "context-rail-icon-4": {
+ "type": "Text",
+ "parent": "context-rail",
+ "left": 1416, "top": 832,
+ "text": "▢",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+
+ "status-branch": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 56, "top": 880,
+ "text": "⑂ main ↑5",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "status-app": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 700, "top": 880,
+ "text": "● application ok",
+ "fontColor": "#5a8c5a",
+ "fontSize": 11
+ }
+ }
+}
diff --git a/docs/wireframes/main/main-view.png b/docs/wireframes/main/main-view.png
new file mode 100644
index 00000000..5e1f265f
Binary files /dev/null and b/docs/wireframes/main/main-view.png differ
diff --git a/docs/wireframes/main/sidebar-collapsed.json b/docs/wireframes/main/sidebar-collapsed.json
new file mode 100644
index 00000000..25072953
--- /dev/null
+++ b/docs/wireframes/main/sidebar-collapsed.json
@@ -0,0 +1,155 @@
+{
+ "name": "Main View — sidebar collapsed",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1400, "height": 860,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1400, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 720, "top": 50,
+ "text": "clide › clide ⌄",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "spine-left": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 12, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "spine-left-label": {
+ "type": "Text",
+ "parent": "spine-left",
+ "left": 44, "top": 220,
+ "text": "TICKETS",
+ "fontColor": "#7a8294",
+ "fontSize": 9
+ },
+ "spine-left-badge": {
+ "type": "Ellipse",
+ "parent": "spine-left",
+ "left": 43, "top": 96, "width": 6, "height": 6,
+ "fillColor": "#d97757",
+ "strokeColor": "#d97757"
+ },
+
+ "claude-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 52, "top": 76, "width": 1008, "height": 786,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "claude-header": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 52, "top": 76, "width": 1008, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "claude-title": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 68, "top": 86,
+ "text": "claude — primary",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-subtitle": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 68, "top": 100,
+ "text": "tmux · sidebar collapsed (⌘⇧1) — Tickets has activity",
+ "fontColor": "#7a8294",
+ "fontSize": 10
+ },
+
+ "claude-banner": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 68, "top": 142,
+ "text": "Claude Code v2.1.128 · Opus 4.7 (1M context)",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+
+ "claude-msg": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 68, "top": 200,
+ "text": "› hide the sidebar, I want more room\n\n● Sidebar collapsed to a 12px spine. Activity badge\n on the spine indicates new ticket changes — click\n the spine or press ⌘⇧1 to expand.",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+
+ "claude-prompt-divider": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 52, "top": 800, "width": 1008, "height": 1,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "claude-prompt": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 68, "top": 808,
+ "text": "› Try \"show the sidebar again\"",
+ "fontColor": "#5a6478",
+ "fontSize": 12
+ },
+
+ "context-panel": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 1060, "top": 76, "width": 380, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "context-section": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 96,
+ "text": "▾ VIEWER",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "context-empty": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 134,
+ "text": "Open a file to preview.",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "status-branch": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 56, "top": 880,
+ "text": "⑂ main ↑5",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "status-app": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 700, "top": 880,
+ "text": "● application ok",
+ "fontColor": "#5a8c5a",
+ "fontSize": 11
+ }
+ }
+}
diff --git a/docs/wireframes/main/sidebar-collapsed.png b/docs/wireframes/main/sidebar-collapsed.png
new file mode 100644
index 00000000..335d7fd9
Binary files /dev/null and b/docs/wireframes/main/sidebar-collapsed.png differ
diff --git a/docs/wireframes/main/ticket-detail.json b/docs/wireframes/main/ticket-detail.json
new file mode 100644
index 00000000..e4844a87
--- /dev/null
+++ b/docs/wireframes/main/ticket-detail.json
@@ -0,0 +1,269 @@
+{
+ "name": "Main View — ticket detail in context",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1400, "height": 860,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1400, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 720, "top": 50,
+ "text": "clide › clide ⌄",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "sidebar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 360, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "section": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 96,
+ "text": "▾ IN PROGRESS · 1",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-selected": {
+ "type": "Rectangle",
+ "parent": "sidebar",
+ "left": 56, "top": 122, "width": 328, "height": 64,
+ "fillColor": "#1a1f28",
+ "strokeColor": "#7c5cff",
+ "corners": [4, 4, 4, 4]
+ },
+ "ticket-selected-id": {
+ "type": "Text",
+ "parent": "ticket-selected",
+ "left": 70, "top": 134,
+ "text": "● T-24 ← T-3",
+ "fontColor": "#a0a8b8",
+ "fontSize": 11
+ },
+ "ticket-selected-title": {
+ "type": "Text",
+ "parent": "ticket-selected",
+ "left": 70, "top": 156,
+ "text": "secondary Claude pane UI wiring",
+ "fontColor": "#e8ecf2",
+ "fontSize": 13
+ },
+
+ "section-2": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 56, "top": 210,
+ "text": "▾ READY · 3",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-other-1": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 70, "top": 240,
+ "text": "● T-17 add dart doc generation to CI",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "ticket-other-2": {
+ "type": "Text",
+ "parent": "sidebar",
+ "left": 70, "top": 264,
+ "text": "● T-21 implement welcome screen…",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "claude-pane": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 400, "top": 76, "width": 540, "height": 786,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028"
+ },
+ "claude-header": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 400, "top": 76, "width": 540, "height": 36,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "claude-title": {
+ "type": "Text",
+ "parent": "claude-header",
+ "left": 416, "top": 86,
+ "text": "claude — primary",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-msg": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 142,
+ "text": "› let's pick T-24 next\n\n● T-24 selected. Detail loaded in the right panel.\n This ticket wires up the secondary Claude pane UI —\n see D-41 for the spawn/close semantics.",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+ "claude-prompt-divider": {
+ "type": "Rectangle",
+ "parent": "claude-pane",
+ "left": 400, "top": 800, "width": 540, "height": 1,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028"
+ },
+ "claude-prompt": {
+ "type": "Text",
+ "parent": "claude-pane",
+ "left": 416, "top": 808,
+ "text": "› Try \"start it\"",
+ "fontColor": "#5a6478",
+ "fontSize": 12
+ },
+
+ "context-panel": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 940, "top": 76, "width": 500, "height": 786,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "ticket-id": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 96,
+ "text": "T-24 · task · ready",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "ticket-title": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 118,
+ "text": "secondary Claude pane UI wiring",
+ "fontColor": "#e8ecf2",
+ "fontSize": 18
+ },
+
+ "field-parent": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 162,
+ "text": "Parent",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "field-parent-val": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 162,
+ "text": "T-3 — Tier 1 — Claude in xterm pane, PTY, session",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "field-decision": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 188,
+ "text": "Decision",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "field-decision-val": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 188,
+ "text": "D-41 — Claude panes — one primary per repo, tmux-backed",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "field-priority": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 214,
+ "text": "Priority",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "field-priority-val": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 214,
+ "text": "medium",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "field-created": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 240,
+ "text": "Created",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "field-created-val": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 1080, "top": 240,
+ "text": "2026-04-22",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "desc-label": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 296,
+ "text": "DESCRIPTION",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "desc-body": {
+ "type": "Text",
+ "parent": "context-panel",
+ "left": 956, "top": 324,
+ "text": "Wire the secondary Claude pane spawn flow into the\nUI: a “new Claude session” affordance in the pane\nchrome, secondary numbering (-1, -2 …), close-to-\nprimary focus collapse, and the visual distinction\nbetween primary and secondary in the pane header.",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "actions": {
+ "type": "Rectangle",
+ "parent": "context-panel",
+ "left": 956, "top": 760, "width": 468, "height": 36,
+ "fillColor": "#0e1014",
+ "strokeColor": "#262a32",
+ "corners": [4, 4, 4, 4]
+ },
+ "action-start": {
+ "type": "Text",
+ "parent": "actions",
+ "left": 974, "top": 770,
+ "text": "▶ Start (status → in_progress)",
+ "fontColor": "#e8ecf2",
+ "fontSize": 12
+ },
+
+ "status-branch": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 56, "top": 880,
+ "text": "⑂ main ↑5",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ }
+ }
+}
diff --git a/docs/wireframes/main/ticket-detail.png b/docs/wireframes/main/ticket-detail.png
new file mode 100644
index 00000000..d0e77846
Binary files /dev/null and b/docs/wireframes/main/ticket-detail.png differ
diff --git a/docs/wireframes/welcome/welcome-screen.json b/docs/wireframes/welcome/welcome-screen.json
new file mode 100644
index 00000000..38b09436
--- /dev/null
+++ b/docs/wireframes/welcome/welcome-screen.json
@@ -0,0 +1,362 @@
+{
+ "name": "Welcome Screen",
+ "shapes": {
+ "canvas": {
+ "type": "Rectangle",
+ "left": 40, "top": 40, "width": 1280, "height": 800,
+ "fillColor": "#0e1014",
+ "strokeColor": "#1c2028",
+ "corners": [4, 4, 4, 4]
+ },
+
+ "title-bar": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 40, "width": 1280, "height": 36,
+ "fillColor": "#1c2028",
+ "strokeColor": "#1c2028",
+ "corners": [4, 4, 0, 0]
+ },
+ "title-bar-text": {
+ "type": "Text",
+ "parent": "title-bar",
+ "left": 660, "top": 50,
+ "text": "clide ⌄",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "spine-left": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 40, "top": 76, "width": 12, "height": 700,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+ "spine-right": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 1308, "top": 76, "width": 12, "height": 700,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028"
+ },
+
+ "logo": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 250, "top": 240,
+ "text": "<>",
+ "fontColor": "#7c8896",
+ "fontSize": 96
+ },
+ "logo-accent": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 254, "top": 332, "width": 60, "height": 4,
+ "fillColor": "#d97757",
+ "strokeColor": "#d97757"
+ },
+
+ "wordmark": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 396, "top": 248,
+ "text": "clide",
+ "fontColor": "#e8ecf2",
+ "fontSize": 64
+ },
+ "subtitle": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 396, "top": 322,
+ "text": "IDE for Claude Code CLI",
+ "fontColor": "#7a8294",
+ "fontSize": 16
+ },
+
+ "start-label": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 250, "top": 426,
+ "text": "START",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "row-open": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 250, "top": 458, "width": 380, "height": 36,
+ "fillColor": "#0e1014",
+ "strokeColor": "#0e1014"
+ },
+ "row-open-icon": {
+ "type": "Text",
+ "parent": "row-open",
+ "left": 262, "top": 466,
+ "text": "▢",
+ "fontColor": "#7a8294",
+ "fontSize": 14
+ },
+ "row-open-label": {
+ "type": "Text",
+ "parent": "row-open",
+ "left": 296, "top": 468,
+ "text": "Open folder…",
+ "fontColor": "#e8ecf2",
+ "fontSize": 14
+ },
+ "row-open-key": {
+ "type": "Text",
+ "parent": "row-open",
+ "left": 590, "top": 470,
+ "text": "⌘O",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "row-clone": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 250, "top": 498, "width": 380, "height": 36,
+ "fillColor": "#0e1014",
+ "strokeColor": "#0e1014"
+ },
+ "row-clone-icon": {
+ "type": "Text",
+ "parent": "row-clone",
+ "left": 262, "top": 506,
+ "text": "⑂",
+ "fontColor": "#7a8294",
+ "fontSize": 14
+ },
+ "row-clone-label": {
+ "type": "Text",
+ "parent": "row-clone",
+ "left": 296, "top": 508,
+ "text": "Clone from git…",
+ "fontColor": "#e8ecf2",
+ "fontSize": 14
+ },
+ "row-clone-key": {
+ "type": "Text",
+ "parent": "row-clone",
+ "left": 590, "top": 510,
+ "text": "⌘G",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "row-claude": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 250, "top": 538, "width": 380, "height": 36,
+ "fillColor": "#0e1014",
+ "strokeColor": "#0e1014"
+ },
+ "row-claude-icon": {
+ "type": "Text",
+ "parent": "row-claude",
+ "left": 262, "top": 546,
+ "text": "◯",
+ "fontColor": "#7a8294",
+ "fontSize": 14
+ },
+ "row-claude-label": {
+ "type": "Text",
+ "parent": "row-claude",
+ "left": 296, "top": 548,
+ "text": "Start a Claude session",
+ "fontColor": "#e8ecf2",
+ "fontSize": 14
+ },
+ "row-claude-key": {
+ "type": "Text",
+ "parent": "row-claude",
+ "left": 590, "top": 550,
+ "text": "⌘C",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "recent-label": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 700, "top": 426,
+ "text": "RECENT",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "recent-row": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 700, "top": 458, "width": 410, "height": 56,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028",
+ "corners": [4, 4, 4, 4]
+ },
+ "recent-name": {
+ "type": "Text",
+ "parent": "recent-row",
+ "left": 716, "top": 468,
+ "text": "clide",
+ "fontColor": "#e8ecf2",
+ "fontSize": 14
+ },
+ "recent-meta": {
+ "type": "Text",
+ "parent": "recent-row",
+ "left": 716, "top": 490,
+ "text": "/var/mnt/data/projects/clide · ⑂ main",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+ "recent-time": {
+ "type": "Text",
+ "parent": "recent-row",
+ "left": 1056, "top": 480,
+ "text": "just now",
+ "fontColor": "#7a8294",
+ "fontSize": 12
+ },
+
+ "tips-card": {
+ "type": "Rectangle",
+ "parent": "canvas",
+ "left": 250, "top": 612, "width": 860, "height": 110,
+ "fillColor": "#13161c",
+ "strokeColor": "#1c2028",
+ "corners": [6, 6, 6, 6]
+ },
+ "tips-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 274, "top": 628,
+ "text": "TIPS",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+
+ "tip-1-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 274, "top": 660,
+ "text": "Quick open",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-1-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 488, "top": 662,
+ "text": "⌘P",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "tip-2-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 558, "top": 660,
+ "text": "Command palette",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-2-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 766, "top": 662,
+ "text": "⌘⇧P",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "tip-3-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 836, "top": 660,
+ "text": "Toggle sidebar",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-3-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 1056, "top": 662,
+ "text": "⌘B",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "tip-4-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 274, "top": 690,
+ "text": "Toggle context",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-4-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 488, "top": 692,
+ "text": "⌘J",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "tip-5-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 558, "top": 690,
+ "text": "Switch theme",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-5-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 754, "top": 692,
+ "text": "⌘K ⌘T",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+ "tip-6-label": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 836, "top": 690,
+ "text": "New Claude session",
+ "fontColor": "#7a8294",
+ "fontSize": 13
+ },
+ "tip-6-key": {
+ "type": "Text",
+ "parent": "tips-card",
+ "left": 1054, "top": 692,
+ "text": "⌘⇧C",
+ "fontColor": "#a0a8b8",
+ "fontSize": 12
+ },
+
+ "status-version": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 940, "top": 798,
+ "text": "clide 2.0.0-dev",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ },
+ "status-app": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 1058, "top": 798,
+ "text": "· application ok",
+ "fontColor": "#5a8c5a",
+ "fontSize": 11
+ },
+ "status-theme": {
+ "type": "Text",
+ "parent": "canvas",
+ "left": 1180, "top": 798,
+ "text": "· theme: clide",
+ "fontColor": "#7a8294",
+ "fontSize": 11
+ }
+ }
+}
diff --git a/docs/wireframes/welcome/welcome-screen.png b/docs/wireframes/welcome/welcome-screen.png
new file mode 100644
index 00000000..b52b7aae
Binary files /dev/null and b/docs/wireframes/welcome/welcome-screen.png differ