cli-jaw 2.17.30 → 2.17.35
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/README.md +2 -0
- package/dist/src/agent/codex-app-client.js +69 -1
- package/dist/src/agent/codex-app-client.js.map +1 -1
- package/dist/src/agent/cursor-runtime.js +9 -0
- package/dist/src/agent/cursor-runtime.js.map +1 -1
- package/dist/src/agent/pi-runtime.js +1 -1
- package/dist/src/agent/pi-runtime.js.map +1 -1
- package/dist/src/agent/prompt-context.js +39 -0
- package/dist/src/agent/prompt-context.js.map +1 -1
- package/dist/src/agent/spawn.js +138 -20
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/browser/web-ai/capability-observation-presets.js +4 -0
- package/dist/src/browser/web-ai/capability-observation-presets.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt-model.js +9 -5
- package/dist/src/browser/web-ai/chatgpt-model.js.map +1 -1
- package/dist/src/browser/web-ai/grok-model.js +18 -5
- package/dist/src/browser/web-ai/grok-model.js.map +1 -1
- package/dist/src/cli/claude-models.js +6 -0
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +29 -4
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/registry.js +56 -15
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/code-mode/model-options.js +4 -4
- package/dist/src/code-mode/model-options.js.map +1 -1
- package/dist/src/core/config.js +1 -1
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +19 -0
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/runtime-settings.js +11 -2
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/orchestrator/attestation.js +66 -0
- package/dist/src/orchestrator/attestation.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +11 -3
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +5 -0
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/routes/command.js +4 -1
- package/dist/src/routes/command.js.map +1 -1
- package/dist/src/routes/orchestrate.js +14 -2
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/slack/commands.js +1 -0
- package/dist/src/slack/commands.js.map +1 -1
- package/dist/src/telegram/bot.js +3 -2
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +5 -1
- package/public/dist/assets/{Agent-BjxJRsKG.js → Agent-kyyjcnqC.js} +1 -1
- package/public/dist/assets/BrowserPanel-0b3deLGR.js +3 -0
- package/public/dist/assets/BrowserPanel-D7SnTts8.css +1 -0
- package/public/dist/assets/{Heartbeat-Ca8DmJcw.js → Heartbeat-CD1R95Kv.js} +1 -1
- package/public/dist/assets/{Memory-BY88ur_h.js → Memory-CpZIdE1o.js} +1 -1
- package/public/dist/assets/{ModelProvider-mtAtYLmW.js → ModelProvider-tL42E5dy.js} +1 -1
- package/public/dist/assets/agent-meta-KPnVam9G.js +1 -0
- package/public/dist/assets/{app-CYayckBa.js → app-BvRV-aEt.js} +4 -4
- package/public/dist/assets/bgtask-badge-DLqpImpn.js +1 -0
- package/public/dist/assets/{bgtask-badge-CT6s6rND.js → bgtask-badge-FiEB3FJm.js} +1 -1
- package/public/dist/assets/constants-BfYYzHNr.js +1 -0
- package/public/dist/assets/{employees-DCju7V1x.js → employees-86F_D_Ce.js} +1 -1
- package/public/dist/assets/iframe-renderer-C_swzquc.js +1 -0
- package/public/dist/assets/{iframe-renderer-LZp7Nqm1.js → iframe-renderer-eozJpgjk.js} +2 -2
- package/public/dist/assets/manager-BnmWx9xL.js +13 -0
- package/public/dist/assets/manager-Cmu0aKPb.css +1 -0
- package/public/dist/assets/{memory-V5caYbpS.js → memory-DX7U3WV_.js} +1 -1
- package/public/dist/assets/memory-DfPbqPTD.js +1 -0
- package/public/dist/assets/{message-history-Bp_sUDSx.js → message-history-B_fIGorC.js} +1 -1
- package/public/dist/assets/message-history-BhSsLjis.js +1 -0
- package/public/dist/assets/{render-Cd4frZ2U.js → render-fKAuISeM.js} +1 -1
- package/public/dist/assets/settings-BNqSR9Zr.js +1 -0
- package/public/dist/assets/{settings-a0blK1fr.js → settings-CH6exiZf.js} +1 -1
- package/public/dist/assets/{settings-core-C5qo8giT.js → settings-core-DqKyyxbQ.js} +1 -1
- package/public/dist/assets/settings-core-x7CmBZq1.js +1 -0
- package/public/dist/assets/{sidebar-FbI4udzs.js → sidebar-qyLy9Og8.js} +3 -3
- package/public/dist/assets/skills-C7Yi3LIq.js +1 -0
- package/public/dist/assets/{skills-DeG9lWF2.js → skills-DAhOtbfP.js} +1 -1
- package/public/dist/assets/{slash-commands-FoQuZXga.js → slash-commands-BYH6YVS4.js} +1 -1
- package/public/dist/assets/slash-commands-DEbJk3sj.js +1 -0
- package/public/dist/assets/{trace-drawer-CWs8ydMO.js → trace-drawer-nyAJ3Bm_.js} +1 -1
- package/public/dist/assets/{ui-Cd8etFwN.js → ui-C62w6bJS.js} +1 -1
- package/public/dist/assets/ui-CBErZPBp.js +1 -0
- package/public/dist/index.html +1 -1
- package/public/dist/manager/index.html +2 -2
- package/public/js/constants.ts +22 -5
- package/public/js/features/settings-types.ts +5 -0
- package/public/manager/src/App.tsx +1 -1
- package/public/manager/src/AppChrome.tsx +18 -3
- package/public/manager/src/SidebarRailRouter.tsx +47 -1
- package/public/manager/src/browser-panel/BrowserPanel.tsx +151 -57
- package/public/manager/src/browser-panel/browser-address-bar.tsx +53 -0
- package/public/manager/src/browser-panel/browser-address-state.ts +41 -0
- package/public/manager/src/browser-panel/browser-favicon.ts +18 -0
- package/public/manager/src/browser-panel/browser-history-store.ts +80 -0
- package/public/manager/src/browser-panel/browser-panel.css +141 -24
- package/public/manager/src/components/CommandBar.tsx +17 -5
- package/public/manager/src/components/InstanceGroups.tsx +143 -23
- package/public/manager/src/components/InstanceNavigator.tsx +55 -2
- package/public/manager/src/components/InstanceRow.tsx +51 -3
- package/public/manager/src/components/SidebarRail.tsx +10 -10
- package/public/manager/src/components/SidebarResizeHandle.tsx +22 -0
- package/public/manager/src/components/WorkspaceLayout.tsx +22 -8
- package/public/manager/src/components/instance-row-status.ts +48 -0
- package/public/manager/src/components/sidebar-keyboard.ts +129 -0
- package/public/manager/src/dashboard-settings/DashboardSettingsWorkspace.tsx +42 -0
- package/public/manager/src/help/helpContent.tsx +1 -0
- package/public/manager/src/hooks/useSidebarGroupCollapse.ts +46 -0
- package/public/manager/src/hooks/useSidebarWidth.ts +88 -0
- package/public/manager/src/hooks/useWindowFullscreen.ts +23 -0
- package/public/manager/src/manager-components.css +206 -31
- package/public/manager/src/manager-layout.css +30 -19
- package/public/manager/src/manager-p0-1-1.css +72 -36
- package/public/manager/src/manager-polish.css +6 -45
- package/public/manager/src/manager-shortcut-runner.ts +37 -1
- package/public/manager/src/manager-shortcuts.ts +21 -0
- package/public/manager/src/manager-tokens.css +190 -127
- package/public/manager/src/panels/PanelResizer.tsx +18 -2
- package/public/manager/src/panels/desktop-bridge.ts +12 -1
- package/public/manager/src/panels/panels.css +32 -32
- package/public/manager/src/settings/pages/Agent.tsx +26 -0
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +6 -5
- package/public/manager/src/styles.css +15 -7
- package/public/manager/src/types.ts +5 -1
- package/public/dist/assets/BrowserPanel-CsYKexNf.js +0 -3
- package/public/dist/assets/BrowserPanel-DpntR8EJ.css +0 -1
- package/public/dist/assets/agent-meta-_Idad3qq.js +0 -1
- package/public/dist/assets/bgtask-badge-CidVvjWb.js +0 -1
- package/public/dist/assets/constants-DK-21dMG.js +0 -1
- package/public/dist/assets/iframe-renderer-aFXUtTXX.js +0 -1
- package/public/dist/assets/manager-CwqrZ2MH.js +0 -13
- package/public/dist/assets/manager-LkGs6qEJ.css +0 -1
- package/public/dist/assets/memory-BcZdf_oz.js +0 -1
- package/public/dist/assets/message-history-DrEPUdTy.js +0 -1
- package/public/dist/assets/settings-core-Cm-CmVLA.js +0 -1
- package/public/dist/assets/settings-mbGEtP5B.js +0 -1
- package/public/dist/assets/skills-G8KUeHBV.js +0 -1
- package/public/dist/assets/slash-commands-BYv3yboz.js +0 -1
- package/public/dist/assets/ui-yrn3s72A.js +0 -1
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
/* ──────────────────────────────────────────────────────────────────────────
|
|
2
|
-
*
|
|
2
|
+
* Theme tokens for the manager dashboard (260902 t3 shell polish, wp1).
|
|
3
3
|
*
|
|
4
4
|
* Three-tier hierarchy:
|
|
5
|
-
* primitive raw
|
|
5
|
+
* primitive raw scale values (referenced only inside this file)
|
|
6
6
|
* semantic intent-based aliases (consumed by all other CSS)
|
|
7
7
|
* component declared in component CSS only when truly divergent
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Every legacy variable name is preserved; only values moved to the
|
|
10
|
+
* zinc/neutral oklch scale with a single oklch primary accent
|
|
11
|
+
* (devlog/_plan/260902_t3_shell_polish/010_design_tokens.md).
|
|
12
|
+
* `--accent` is the CTA primary, not a surface tint.
|
|
13
13
|
*
|
|
14
14
|
* Theme resolution lives on <html data-theme="dark|light|auto">. The inline
|
|
15
15
|
* boot script in index.html sets this attribute before paint to prevent FOUC.
|
|
16
16
|
* ────────────────────────────────────────────────────────────────────────── */
|
|
17
17
|
|
|
18
|
-
/* Primitive scale
|
|
18
|
+
/* Primitive scale — never consumed outside this file (radius/font/motion are
|
|
19
|
+
* theme-independent semantics that also live here). */
|
|
19
20
|
:root {
|
|
20
|
-
--jp-gray-50:
|
|
21
|
-
--jp-gray-100:
|
|
22
|
-
--jp-gray-200:
|
|
23
|
-
--jp-gray-300:
|
|
24
|
-
--jp-gray-400:
|
|
25
|
-
--jp-gray-500:
|
|
26
|
-
--jp-gray-600:
|
|
27
|
-
--jp-gray-700:
|
|
28
|
-
--jp-gray-800:
|
|
29
|
-
--jp-gray-900:
|
|
21
|
+
--jp-gray-50: oklch(98.5% 0 0);
|
|
22
|
+
--jp-gray-100: oklch(96.7% 0.001 286.375);
|
|
23
|
+
--jp-gray-200: oklch(92% 0.004 286.32);
|
|
24
|
+
--jp-gray-300: oklch(87.1% 0.006 286.286);
|
|
25
|
+
--jp-gray-400: oklch(70.5% 0.015 286.067);
|
|
26
|
+
--jp-gray-500: oklch(55.2% 0.016 285.938);
|
|
27
|
+
--jp-gray-600: oklch(44.2% 0.017 285.786);
|
|
28
|
+
--jp-gray-700: oklch(37% 0.013 285.805);
|
|
29
|
+
--jp-gray-800: oklch(27.4% 0.006 286.033);
|
|
30
|
+
--jp-gray-900: oklch(21% 0.006 285.885);
|
|
30
31
|
|
|
31
32
|
--jp-blue-100: #dbe7ff;
|
|
32
33
|
--jp-blue-300: #8fb8f7;
|
|
@@ -35,44 +36,59 @@
|
|
|
35
36
|
--jp-blue-600: #1f6feb;
|
|
36
37
|
--jp-blue-700: #155bbb;
|
|
37
38
|
|
|
38
|
-
--jp-green-400:
|
|
39
|
-
--jp-green-600:
|
|
40
|
-
--jp-amber-400:
|
|
41
|
-
--jp-amber-600:
|
|
42
|
-
--jp-red-400:
|
|
43
|
-
--jp-red-600:
|
|
44
|
-
--jp-slate-400:
|
|
45
|
-
--jp-slate-500:
|
|
39
|
+
--jp-green-400: oklch(76.5% 0.177 163.223);
|
|
40
|
+
--jp-green-600: oklch(59.6% 0.145 163.225);
|
|
41
|
+
--jp-amber-400: oklch(82.8% 0.189 84.429);
|
|
42
|
+
--jp-amber-600: oklch(66.6% 0.179 58.318);
|
|
43
|
+
--jp-red-400: oklch(70.4% 0.191 22.216);
|
|
44
|
+
--jp-red-600: oklch(57.7% 0.245 27.325);
|
|
45
|
+
--jp-slate-400: oklch(70.5% 0.015 286.067);
|
|
46
|
+
--jp-slate-500: oklch(55.2% 0.016 285.938);
|
|
47
|
+
|
|
48
|
+
--radius-sm: 0.375rem;
|
|
49
|
+
--radius-md: 0.5rem;
|
|
50
|
+
--radius-lg: 0.625rem;
|
|
51
|
+
--radius-xl: 0.875rem;
|
|
52
|
+
--control-radius: 0.5rem;
|
|
53
|
+
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui,
|
|
54
|
+
"Pretendard", "Noto Sans CJK SC", "Noto Sans CJK JP", "Noto Sans KR", sans-serif;
|
|
55
|
+
--font-mono: "Geist Mono", ui-monospace, "SF Mono", "SFMono-Regular", Menlo,
|
|
56
|
+
Consolas, "Liberation Mono", monospace;
|
|
57
|
+
--motion-fast: 120ms;
|
|
58
|
+
--motion-base: 180ms;
|
|
59
|
+
--workspace-topbar-height: 44px;
|
|
60
|
+
--scrollbar-size: 6px;
|
|
61
|
+
--scrollbar-radius: 3px;
|
|
46
62
|
}
|
|
47
63
|
|
|
48
|
-
/* Default = dark
|
|
64
|
+
/* Default = dark. */
|
|
49
65
|
:root,
|
|
50
66
|
:root[data-theme="dark"] {
|
|
51
67
|
color-scheme: dark;
|
|
52
68
|
|
|
53
69
|
/* legacy variable names — keep so existing CSS still renders */
|
|
54
|
-
--bg-base: #
|
|
55
|
-
--bg-panel: #
|
|
56
|
-
--bg-raised:
|
|
57
|
-
--bg-elevated: #
|
|
58
|
-
--border-subtle:
|
|
59
|
-
--border-strong:
|
|
60
|
-
--text-primary: #
|
|
61
|
-
--text-secondary: #
|
|
62
|
-
--text-dim:
|
|
63
|
-
--accent:
|
|
64
|
-
--accent-soft:
|
|
70
|
+
--bg-base: #0a0a0a;
|
|
71
|
+
--bg-panel: color-mix(in srgb, #0a0a0a 97%, white);
|
|
72
|
+
--bg-raised: color-mix(in srgb, white 4%, transparent);
|
|
73
|
+
--bg-elevated: color-mix(in srgb, #0a0a0a 97%, white);
|
|
74
|
+
--border-subtle: color-mix(in srgb, white 8%, transparent);
|
|
75
|
+
--border-strong: color-mix(in srgb, white 10%, transparent);
|
|
76
|
+
--text-primary: #f1f3f7;
|
|
77
|
+
--text-secondary: #a3a3a3;
|
|
78
|
+
--text-dim: color-mix(in srgb, oklch(55.6% 0 0) 90%, white);
|
|
79
|
+
--accent: oklch(0.571 0.21 264);
|
|
80
|
+
--accent-soft: color-mix(in srgb, var(--accent) 12%, transparent);
|
|
65
81
|
--selection-bg: color-mix(in srgb, var(--accent) 40%, transparent);
|
|
66
|
-
--status-running:
|
|
67
|
-
--status-success:
|
|
68
|
-
--status-warn:
|
|
69
|
-
--status-error:
|
|
70
|
-
--status-idle:
|
|
71
|
-
--shadow-panel: 0
|
|
72
|
-
--shadow-elevated: 0 1px
|
|
73
|
-
--scrim-overlay:
|
|
82
|
+
--status-running: oklch(69.6% 0.17 162.48);
|
|
83
|
+
--status-success: oklch(69.6% 0.17 162.48);
|
|
84
|
+
--status-warn: oklch(76.9% 0.188 70.08);
|
|
85
|
+
--status-error: color-mix(in srgb, oklch(63.7% 0.237 25.331) 90%, white);
|
|
86
|
+
--status-idle: color-mix(in srgb, oklch(55.2% 0.016 285.938) 90%, white);
|
|
87
|
+
--shadow-panel: inset 0 1px rgb(255 255 255 / 4%), 0 24px 72px -20px rgb(0 0 0 / 90%);
|
|
88
|
+
--shadow-elevated: 0 1px 2px color-mix(in srgb, var(--text-primary) 12%, transparent);
|
|
89
|
+
--scrim-overlay: color-mix(in srgb, var(--bg-base) 64%, transparent);
|
|
74
90
|
|
|
75
|
-
/*
|
|
91
|
+
/* semantic aliases */
|
|
76
92
|
--surface-base: var(--bg-base);
|
|
77
93
|
--surface-panel: var(--bg-panel);
|
|
78
94
|
--surface-raised: var(--bg-raised);
|
|
@@ -84,69 +100,84 @@
|
|
|
84
100
|
--ink-on-accent: #ffffff;
|
|
85
101
|
--ring: var(--accent);
|
|
86
102
|
|
|
87
|
-
/* common composite values
|
|
88
|
-
--button-bg: #
|
|
89
|
-
--button-bg-hover:
|
|
90
|
-
--button-border-hover:
|
|
91
|
-
--row-bg: #
|
|
92
|
-
--row-bg-hover:
|
|
93
|
-
--canvas-deep: #
|
|
94
|
-
--canvas-mid: #
|
|
95
|
-
--canvas-soft:
|
|
96
|
-
--shell-tint:
|
|
97
|
-
--error-border:
|
|
98
|
-
--error-text:
|
|
99
|
-
--lifecycle-border
|
|
100
|
-
--lifecycle-text:
|
|
101
|
-
--highlight-bg:
|
|
102
|
-
--highlight-border
|
|
103
|
-
--placeholder-ink:
|
|
104
|
-
--segment-track:
|
|
105
|
-
--segment-border:
|
|
106
|
-
--segment-hover:
|
|
107
|
-
--segment-active: #
|
|
108
|
-
--segment-active-ink: #
|
|
109
|
-
--link-border:
|
|
110
|
-
--link-bg-hover:
|
|
111
|
-
--link-border-hover:
|
|
112
|
-
--link-ink: #
|
|
113
|
-
--inset-glow:
|
|
114
|
-
--rail-top: #
|
|
115
|
-
--rail-bottom: #
|
|
103
|
+
/* common composite values */
|
|
104
|
+
--button-bg: color-mix(in srgb, #0a0a0a 97%, white);
|
|
105
|
+
--button-bg-hover: color-mix(in srgb, white 4%, transparent);
|
|
106
|
+
--button-border-hover: color-mix(in srgb, white 10%, transparent);
|
|
107
|
+
--row-bg: #000000;
|
|
108
|
+
--row-bg-hover: color-mix(in srgb, white 4%, transparent);
|
|
109
|
+
--canvas-deep: #000000;
|
|
110
|
+
--canvas-mid: color-mix(in srgb, #0a0a0a 97%, white);
|
|
111
|
+
--canvas-soft: color-mix(in srgb, white 4%, transparent);
|
|
112
|
+
--shell-tint: color-mix(in srgb, var(--accent) 6%, transparent);
|
|
113
|
+
--error-border: color-mix(in srgb, var(--status-error) 16%, transparent);
|
|
114
|
+
--error-text: var(--jp-red-400);
|
|
115
|
+
--lifecycle-border:color-mix(in srgb, var(--accent) 30%, transparent);
|
|
116
|
+
--lifecycle-text: color-mix(in srgb, var(--accent) 60%, white);
|
|
117
|
+
--highlight-bg: color-mix(in srgb, var(--accent) 12%, transparent);
|
|
118
|
+
--highlight-border:color-mix(in srgb, white 10%, transparent);
|
|
119
|
+
--placeholder-ink: var(--text-dim);
|
|
120
|
+
--segment-track: color-mix(in srgb, white 3%, transparent);
|
|
121
|
+
--segment-border: color-mix(in srgb, white 8%, transparent);
|
|
122
|
+
--segment-hover: color-mix(in srgb, white 4%, transparent);
|
|
123
|
+
--segment-active: #000000;
|
|
124
|
+
--segment-active-ink: #f1f3f7;
|
|
125
|
+
--link-border: color-mix(in srgb, white 8%, transparent);
|
|
126
|
+
--link-bg-hover: color-mix(in srgb, white 4%, transparent);
|
|
127
|
+
--link-border-hover: color-mix(in srgb, white 10%, transparent);
|
|
128
|
+
--link-ink: #a3a3a3;
|
|
129
|
+
--inset-glow: color-mix(in srgb, white 3%, transparent);
|
|
130
|
+
--rail-top: #000000;
|
|
131
|
+
--rail-bottom: #000000;
|
|
116
132
|
|
|
117
|
-
/* alias tokens for notes/panels
|
|
118
|
-
--canvas-panel:
|
|
119
|
-
--canvas-base:
|
|
120
|
-
--danger-soft: color-mix(in srgb, var(--status-error)
|
|
133
|
+
/* alias tokens for notes/panels */
|
|
134
|
+
--canvas-panel: color-mix(in srgb, #0a0a0a 97%, white);
|
|
135
|
+
--canvas-base: #000000;
|
|
136
|
+
--danger-soft: color-mix(in srgb, var(--status-error) 16%, transparent);
|
|
121
137
|
--accent-primary: var(--accent);
|
|
122
138
|
--surface-secondary: var(--surface-raised);
|
|
123
139
|
--text-tertiary: var(--text-dim);
|
|
140
|
+
--text-danger: var(--error-text);
|
|
141
|
+
|
|
142
|
+
/* sidebar surface + status tokens (260902 t3 shell, consumed from wp2/wp3) */
|
|
143
|
+
--sidebar-row-hover: color-mix(in srgb, #f1f3f7 8%, transparent);
|
|
144
|
+
--sidebar-row-active: color-mix(in srgb, #f1f3f7 11%, transparent);
|
|
145
|
+
--sidebar-row-selected: color-mix(in srgb, #f1f3f7 7%, transparent);
|
|
146
|
+
--sidebar-row-working: #38bdf8;
|
|
147
|
+
--sidebar-row-attention: var(--jp-amber-400);
|
|
148
|
+
--sidebar-row-error: var(--jp-red-400);
|
|
149
|
+
--sidebar-row-ready: var(--text-dim);
|
|
150
|
+
--sidebar-border: color-mix(in srgb, white 8%, transparent);
|
|
151
|
+
--sidebar-control-surface: #0a0a0a;
|
|
152
|
+
--focus-ring: 2px solid color-mix(in srgb, var(--ring) 50%, transparent);
|
|
153
|
+
--scrollbar-thumb: rgb(255 255 255 / 8%);
|
|
154
|
+
--scrollbar-thumb-hover: rgb(255 255 255 / 12%);
|
|
124
155
|
}
|
|
125
156
|
|
|
126
157
|
/* Light palette. */
|
|
127
158
|
:root[data-theme="light"] {
|
|
128
159
|
color-scheme: light;
|
|
129
160
|
|
|
130
|
-
--bg-base:
|
|
161
|
+
--bg-base: oklch(99.2% 0 0);
|
|
131
162
|
--bg-panel: #ffffff;
|
|
132
|
-
--bg-raised: var(--jp-gray-
|
|
163
|
+
--bg-raised: var(--jp-gray-50);
|
|
133
164
|
--bg-elevated: #ffffff;
|
|
134
165
|
--border-subtle: var(--jp-gray-200);
|
|
135
166
|
--border-strong: var(--jp-gray-300);
|
|
136
|
-
--text-primary: var(--jp-gray-
|
|
167
|
+
--text-primary: var(--jp-gray-800);
|
|
137
168
|
--text-secondary: var(--jp-gray-600);
|
|
138
169
|
--text-dim: var(--jp-gray-500);
|
|
139
|
-
--accent:
|
|
140
|
-
--accent-soft: var(--
|
|
170
|
+
--accent: oklch(0.488 0.217 264);
|
|
171
|
+
--accent-soft: color-mix(in srgb, var(--accent) 8%, transparent);
|
|
141
172
|
--selection-bg: color-mix(in srgb, var(--accent) 30%, transparent);
|
|
142
173
|
--status-running: var(--jp-green-600);
|
|
143
174
|
--status-success: var(--jp-green-600);
|
|
144
175
|
--status-warn: var(--jp-amber-600);
|
|
145
176
|
--status-error: var(--jp-red-600);
|
|
146
177
|
--status-idle: var(--jp-slate-500);
|
|
147
|
-
--shadow-panel: 0
|
|
148
|
-
--shadow-elevated: 0 1px
|
|
149
|
-
--scrim-overlay:
|
|
178
|
+
--shadow-panel: 0 24px 64px -24px rgb(0 0 0 / 18%);
|
|
179
|
+
--shadow-elevated: 0 1px 2px color-mix(in srgb, var(--text-primary) 12%, transparent);
|
|
180
|
+
--scrim-overlay: color-mix(in srgb, var(--bg-base) 60%, transparent);
|
|
150
181
|
|
|
151
182
|
--surface-base: var(--bg-base);
|
|
152
183
|
--surface-panel: var(--bg-panel);
|
|
@@ -157,43 +188,57 @@
|
|
|
157
188
|
--ink-secondary: var(--text-secondary);
|
|
158
189
|
--ink-muted: var(--text-dim);
|
|
159
190
|
--ink-on-accent: #ffffff;
|
|
160
|
-
--ring: var(--
|
|
191
|
+
--ring: var(--accent);
|
|
161
192
|
|
|
162
193
|
--button-bg: #ffffff;
|
|
163
194
|
--button-bg-hover: var(--jp-gray-100);
|
|
164
195
|
--button-border-hover: var(--jp-gray-400);
|
|
165
196
|
--row-bg: #ffffff;
|
|
166
|
-
--row-bg-hover:
|
|
197
|
+
--row-bg-hover: oklch(99.2% 0 0);
|
|
167
198
|
--canvas-deep: var(--jp-gray-50);
|
|
168
199
|
--canvas-mid: #ffffff;
|
|
169
200
|
--canvas-soft: var(--jp-gray-100);
|
|
170
|
-
--shell-tint:
|
|
171
|
-
--error-border:
|
|
172
|
-
--error-text:
|
|
173
|
-
--lifecycle-border
|
|
174
|
-
--lifecycle-text:
|
|
175
|
-
--highlight-bg: var(--jp-
|
|
176
|
-
--highlight-border: var(--jp-
|
|
201
|
+
--shell-tint: color-mix(in srgb, var(--accent) 6%, transparent);
|
|
202
|
+
--error-border: color-mix(in srgb, var(--status-error) 8%, transparent);
|
|
203
|
+
--error-text: oklch(50.5% 0.213 27.518);
|
|
204
|
+
--lifecycle-border:color-mix(in srgb, var(--accent) 25%, transparent);
|
|
205
|
+
--lifecycle-text: var(--accent);
|
|
206
|
+
--highlight-bg: var(--jp-gray-100);
|
|
207
|
+
--highlight-border: var(--jp-gray-300);
|
|
177
208
|
--placeholder-ink: var(--jp-gray-500);
|
|
178
|
-
--segment-track: var(--jp-gray-
|
|
209
|
+
--segment-track: var(--jp-gray-50);
|
|
179
210
|
--segment-border: var(--jp-gray-200);
|
|
180
|
-
--segment-hover:
|
|
211
|
+
--segment-hover: oklch(99.2% 0 0);
|
|
181
212
|
--segment-active: #ffffff;
|
|
182
|
-
--segment-active-ink: var(--jp-gray-
|
|
213
|
+
--segment-active-ink: var(--jp-gray-800);
|
|
183
214
|
--link-border: var(--jp-gray-200);
|
|
184
|
-
--link-bg-hover:
|
|
215
|
+
--link-bg-hover: oklch(99.2% 0 0);
|
|
185
216
|
--link-border-hover: var(--jp-gray-300);
|
|
186
217
|
--link-ink: var(--jp-gray-600);
|
|
187
218
|
--inset-glow: rgba(0, 0, 0, 0.02);
|
|
188
219
|
--rail-top: #ffffff;
|
|
189
|
-
--rail-bottom:
|
|
220
|
+
--rail-bottom: oklch(99.2% 0 0);
|
|
190
221
|
|
|
191
|
-
--canvas-panel:
|
|
192
|
-
--canvas-base: oklch(99% 0
|
|
222
|
+
--canvas-panel: #ffffff;
|
|
223
|
+
--canvas-base: oklch(99.2% 0 0);
|
|
193
224
|
--danger-soft: color-mix(in srgb, var(--status-error) 8%, transparent);
|
|
194
225
|
--accent-primary: var(--accent);
|
|
195
226
|
--surface-secondary: var(--surface-raised);
|
|
196
227
|
--text-tertiary: var(--text-dim);
|
|
228
|
+
--text-danger: var(--error-text);
|
|
229
|
+
|
|
230
|
+
--sidebar-row-hover: oklch(99.2% 0 0);
|
|
231
|
+
--sidebar-row-active: #ffffff;
|
|
232
|
+
--sidebar-row-selected: #ffffff;
|
|
233
|
+
--sidebar-row-working: #0284c7;
|
|
234
|
+
--sidebar-row-attention: var(--jp-amber-600);
|
|
235
|
+
--sidebar-row-error: var(--jp-red-600);
|
|
236
|
+
--sidebar-row-ready: var(--text-dim);
|
|
237
|
+
--sidebar-border: var(--border-subtle);
|
|
238
|
+
--sidebar-control-surface: var(--jp-gray-100);
|
|
239
|
+
--focus-ring: 2px solid color-mix(in srgb, var(--ring) 50%, transparent);
|
|
240
|
+
--scrollbar-thumb: rgb(217 217 217);
|
|
241
|
+
--scrollbar-thumb-hover: rgb(191 191 191);
|
|
197
242
|
}
|
|
198
243
|
|
|
199
244
|
/* Auto: follow OS, default to dark when query is unsupported. */
|
|
@@ -201,26 +246,26 @@
|
|
|
201
246
|
:root[data-theme="auto"] {
|
|
202
247
|
color-scheme: light;
|
|
203
248
|
|
|
204
|
-
--bg-base:
|
|
249
|
+
--bg-base: oklch(99.2% 0 0);
|
|
205
250
|
--bg-panel: #ffffff;
|
|
206
|
-
--bg-raised: var(--jp-gray-
|
|
251
|
+
--bg-raised: var(--jp-gray-50);
|
|
207
252
|
--bg-elevated: #ffffff;
|
|
208
253
|
--border-subtle: var(--jp-gray-200);
|
|
209
254
|
--border-strong: var(--jp-gray-300);
|
|
210
|
-
--text-primary: var(--jp-gray-
|
|
255
|
+
--text-primary: var(--jp-gray-800);
|
|
211
256
|
--text-secondary: var(--jp-gray-600);
|
|
212
257
|
--text-dim: var(--jp-gray-500);
|
|
213
|
-
--accent:
|
|
214
|
-
--accent-soft: var(--
|
|
258
|
+
--accent: oklch(0.488 0.217 264);
|
|
259
|
+
--accent-soft: color-mix(in srgb, var(--accent) 8%, transparent);
|
|
215
260
|
--selection-bg: color-mix(in srgb, var(--accent) 30%, transparent);
|
|
216
261
|
--status-running: var(--jp-green-600);
|
|
217
262
|
--status-success: var(--jp-green-600);
|
|
218
263
|
--status-warn: var(--jp-amber-600);
|
|
219
264
|
--status-error: var(--jp-red-600);
|
|
220
265
|
--status-idle: var(--jp-slate-500);
|
|
221
|
-
--shadow-panel: 0
|
|
222
|
-
--shadow-elevated: 0 1px
|
|
223
|
-
--scrim-overlay:
|
|
266
|
+
--shadow-panel: 0 24px 64px -24px rgb(0 0 0 / 18%);
|
|
267
|
+
--shadow-elevated: 0 1px 2px color-mix(in srgb, var(--text-primary) 12%, transparent);
|
|
268
|
+
--scrim-overlay: color-mix(in srgb, var(--bg-base) 60%, transparent);
|
|
224
269
|
|
|
225
270
|
--surface-base: var(--bg-base);
|
|
226
271
|
--surface-panel: var(--bg-panel);
|
|
@@ -231,42 +276,60 @@
|
|
|
231
276
|
--ink-secondary: var(--text-secondary);
|
|
232
277
|
--ink-muted: var(--text-dim);
|
|
233
278
|
--ink-on-accent: #ffffff;
|
|
234
|
-
--ring: var(--
|
|
279
|
+
--ring: var(--accent);
|
|
235
280
|
|
|
236
281
|
--button-bg: #ffffff;
|
|
237
282
|
--button-bg-hover: var(--jp-gray-100);
|
|
238
283
|
--button-border-hover: var(--jp-gray-400);
|
|
239
284
|
--row-bg: #ffffff;
|
|
240
|
-
--row-bg-hover:
|
|
285
|
+
--row-bg-hover: oklch(99.2% 0 0);
|
|
241
286
|
--canvas-deep: var(--jp-gray-50);
|
|
242
287
|
--canvas-mid: #ffffff;
|
|
243
288
|
--canvas-soft: var(--jp-gray-100);
|
|
244
|
-
--shell-tint:
|
|
245
|
-
--error-border:
|
|
246
|
-
--error-text:
|
|
247
|
-
--lifecycle-border
|
|
248
|
-
--lifecycle-text:
|
|
249
|
-
--highlight-bg: var(--jp-
|
|
250
|
-
--highlight-border: var(--jp-
|
|
289
|
+
--shell-tint: color-mix(in srgb, var(--accent) 6%, transparent);
|
|
290
|
+
--error-border: color-mix(in srgb, var(--status-error) 8%, transparent);
|
|
291
|
+
--error-text: oklch(50.5% 0.213 27.518);
|
|
292
|
+
--lifecycle-border:color-mix(in srgb, var(--accent) 25%, transparent);
|
|
293
|
+
--lifecycle-text: var(--accent);
|
|
294
|
+
--highlight-bg: var(--jp-gray-100);
|
|
295
|
+
--highlight-border: var(--jp-gray-300);
|
|
251
296
|
--placeholder-ink: var(--jp-gray-500);
|
|
252
|
-
--segment-track: var(--jp-gray-
|
|
297
|
+
--segment-track: var(--jp-gray-50);
|
|
253
298
|
--segment-border: var(--jp-gray-200);
|
|
254
|
-
--segment-hover:
|
|
299
|
+
--segment-hover: oklch(99.2% 0 0);
|
|
255
300
|
--segment-active: #ffffff;
|
|
256
|
-
--segment-active-ink: var(--jp-gray-
|
|
301
|
+
--segment-active-ink: var(--jp-gray-800);
|
|
257
302
|
--link-border: var(--jp-gray-200);
|
|
258
|
-
--link-bg-hover:
|
|
303
|
+
--link-bg-hover: oklch(99.2% 0 0);
|
|
259
304
|
--link-border-hover: var(--jp-gray-300);
|
|
260
305
|
--link-ink: var(--jp-gray-600);
|
|
261
306
|
--inset-glow: rgba(0, 0, 0, 0.02);
|
|
262
307
|
--rail-top: #ffffff;
|
|
263
|
-
--rail-bottom:
|
|
308
|
+
--rail-bottom: oklch(99.2% 0 0);
|
|
264
309
|
|
|
265
|
-
--canvas-panel:
|
|
266
|
-
--canvas-base: oklch(99% 0
|
|
310
|
+
--canvas-panel: #ffffff;
|
|
311
|
+
--canvas-base: oklch(99.2% 0 0);
|
|
267
312
|
--danger-soft: color-mix(in srgb, var(--status-error) 8%, transparent);
|
|
268
313
|
--accent-primary: var(--accent);
|
|
269
314
|
--surface-secondary: var(--surface-raised);
|
|
270
315
|
--text-tertiary: var(--text-dim);
|
|
316
|
+
--text-danger: var(--error-text);
|
|
317
|
+
|
|
318
|
+
--sidebar-row-hover: oklch(99.2% 0 0);
|
|
319
|
+
--sidebar-row-active: #ffffff;
|
|
320
|
+
--sidebar-row-selected: #ffffff;
|
|
321
|
+
--sidebar-row-working: #0284c7;
|
|
322
|
+
--sidebar-row-attention: var(--jp-amber-600);
|
|
323
|
+
--sidebar-row-error: var(--jp-red-600);
|
|
324
|
+
--sidebar-row-ready: var(--text-dim);
|
|
325
|
+
--sidebar-border: var(--border-subtle);
|
|
326
|
+
--sidebar-control-surface: var(--jp-gray-100);
|
|
327
|
+
--focus-ring: 2px solid color-mix(in srgb, var(--ring) 50%, transparent);
|
|
328
|
+
--scrollbar-thumb: rgb(217 217 217);
|
|
329
|
+
--scrollbar-thumb-hover: rgb(191 191 191);
|
|
271
330
|
}
|
|
272
331
|
}
|
|
332
|
+
|
|
333
|
+
:root[data-cli-jaw-desktop="true"] {
|
|
334
|
+
--workspace-topbar-height: 52px;
|
|
335
|
+
}
|
|
@@ -7,11 +7,16 @@ type PanelResizerProps = {
|
|
|
7
7
|
onDelta: (delta: number) => void;
|
|
8
8
|
onEnd?: (() => void) | undefined;
|
|
9
9
|
className?: string | undefined;
|
|
10
|
+
ariaLabel?: string | undefined;
|
|
11
|
+
ariaValueNow?: number | undefined;
|
|
12
|
+
onDoubleClick?: (() => void) | undefined;
|
|
10
13
|
};
|
|
11
14
|
|
|
12
15
|
export function PanelResizer(props: PanelResizerProps) {
|
|
13
16
|
const dragging = useRef(false);
|
|
14
17
|
const lastPos = useRef(0);
|
|
18
|
+
const startPos = useRef(0);
|
|
19
|
+
const moved = useRef(false);
|
|
15
20
|
const onDeltaRef = useRef(props.onDelta);
|
|
16
21
|
const onEndRef = useRef(props.onEnd);
|
|
17
22
|
const [isDragging, setIsDragging] = useState(false);
|
|
@@ -25,6 +30,12 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
25
30
|
const applyPointerPosition = useCallback((clientX: number, clientY: number) => {
|
|
26
31
|
if (!dragging.current) return;
|
|
27
32
|
const pos = direction === 'horizontal' ? clientX : clientY;
|
|
33
|
+
// A double-click is two mousedowns a few pixels apart; do not treat
|
|
34
|
+
// that jitter as a resize (t3 sidebar rail uses the same 2px guard).
|
|
35
|
+
if (!moved.current) {
|
|
36
|
+
if (Math.abs(pos - startPos.current) <= 2) return;
|
|
37
|
+
moved.current = true;
|
|
38
|
+
}
|
|
28
39
|
const delta = pos - lastPos.current;
|
|
29
40
|
lastPos.current = pos;
|
|
30
41
|
if (delta !== 0) onDeltaRef.current(delta);
|
|
@@ -94,8 +105,10 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
94
105
|
|
|
95
106
|
function startDragging(clientX: number, clientY: number) {
|
|
96
107
|
dragging.current = true;
|
|
108
|
+
moved.current = false;
|
|
97
109
|
setIsDragging(true);
|
|
98
|
-
|
|
110
|
+
startPos.current = direction === 'horizontal' ? clientX : clientY;
|
|
111
|
+
lastPos.current = startPos.current;
|
|
99
112
|
document.body.classList.add(direction === 'horizontal' ? 'is-resizing-horizontal' : 'is-resizing-vertical');
|
|
100
113
|
}
|
|
101
114
|
|
|
@@ -136,12 +149,15 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
136
149
|
role="separator"
|
|
137
150
|
tabIndex={0}
|
|
138
151
|
className={`panel-resizer panel-resizer-${direction} ${props.className ?? ''}`}
|
|
139
|
-
aria-label={`Resize ${direction === 'horizontal' ? 'width' : 'height'}`}
|
|
152
|
+
aria-label={props.ariaLabel ?? `Resize ${direction === 'horizontal' ? 'width' : 'height'}`}
|
|
153
|
+
aria-valuenow={props.ariaValueNow}
|
|
154
|
+
aria-valuetext={props.ariaValueNow === undefined ? undefined : `${props.ariaValueNow}px`}
|
|
140
155
|
aria-orientation={direction === 'horizontal' ? 'vertical' : 'horizontal'}
|
|
141
156
|
onPointerDown={handlePointerDown}
|
|
142
157
|
onMouseDown={handleMouseDown}
|
|
143
158
|
onLostPointerCapture={stopDragging}
|
|
144
159
|
onKeyDown={handleKeyDown}
|
|
160
|
+
onDoubleClick={props.onDoubleClick}
|
|
145
161
|
/>
|
|
146
162
|
{isDragging && (
|
|
147
163
|
<div
|
|
@@ -191,6 +191,8 @@ export type BrowserWebviewTabState = {
|
|
|
191
191
|
inspecting?: boolean;
|
|
192
192
|
crashed?: boolean;
|
|
193
193
|
error?: string;
|
|
194
|
+
favicons?: string[];
|
|
195
|
+
zoomFactor?: number;
|
|
194
196
|
};
|
|
195
197
|
|
|
196
198
|
/** v5: element resolved from the native inspect pick (CDP DOM/AX domains). */
|
|
@@ -225,7 +227,10 @@ export type BrowserWebviewCommand =
|
|
|
225
227
|
| { kind: 'reload'; tabId: string; ignoreCache?: boolean }
|
|
226
228
|
| { kind: 'goBack'; tabId: string }
|
|
227
229
|
| { kind: 'goForward'; tabId: string }
|
|
228
|
-
| { kind: 'stop'; tabId: string }
|
|
230
|
+
| { kind: 'stop'; tabId: string }
|
|
231
|
+
| { kind: 'zoomIn'; tabId: string }
|
|
232
|
+
| { kind: 'zoomOut'; tabId: string }
|
|
233
|
+
| { kind: 'zoomReset'; tabId: string };
|
|
229
234
|
|
|
230
235
|
export type BrowserWebviewNativeAction =
|
|
231
236
|
| { kind: 'openExternal'; tabId: string }
|
|
@@ -281,6 +286,11 @@ export type PermissionDiagnosticsBridgeApi = {
|
|
|
281
286
|
getLastDenials: () => Promise<{ ok: boolean; denials?: PermissionDenial[]; error?: string }>;
|
|
282
287
|
};
|
|
283
288
|
|
|
289
|
+
export type DesktopWindowBridgeApi = {
|
|
290
|
+
getFullscreenState?: () => boolean;
|
|
291
|
+
onFullscreenStateChange?: (cb: (fullscreen: boolean) => void) => () => void;
|
|
292
|
+
};
|
|
293
|
+
|
|
284
294
|
export type DesktopShellCapability = 'terminal' | 'diff' | 'git' | 'folder' | 'shortcuts' | 'browser' | 'clipboard' | 'permissions';
|
|
285
295
|
|
|
286
296
|
/**
|
|
@@ -306,6 +316,7 @@ export type CliJawDesktopApi = {
|
|
|
306
316
|
browser?: BrowserBridgeApi | undefined;
|
|
307
317
|
reloadWindow?: (() => void) | undefined;
|
|
308
318
|
hardReloadWindow?: (() => void) | undefined;
|
|
319
|
+
window?: DesktopWindowBridgeApi | undefined;
|
|
309
320
|
};
|
|
310
321
|
|
|
311
322
|
export function getDesktop(): CliJawDesktopApi | null {
|