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,34 +1,56 @@
|
|
|
1
1
|
.command-bar {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
height: var(--workspace-topbar-height);
|
|
4
|
+
min-height: var(--workspace-topbar-height);
|
|
5
|
+
gap: 0;
|
|
6
|
+
padding: 0 10px;
|
|
4
7
|
}
|
|
5
8
|
.command-center.command-bar.is-electron-titlebar,
|
|
6
9
|
:root[data-cli-jaw-desktop="true"] .command-center.command-bar {
|
|
7
|
-
--electron-titlebar-left-reserve:
|
|
8
|
-
padding:
|
|
10
|
+
--electron-titlebar-left-reserve: 90px;
|
|
11
|
+
padding: 0 10px 0 var(--electron-titlebar-left-reserve);
|
|
9
12
|
}
|
|
10
|
-
:root[data-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
:root[data-cli-jaw-desktop="true"] .command-center.command-bar
|
|
15
|
-
:root[data-cli-jaw-desktop="true"] .command-center.command-bar select,
|
|
16
|
-
:root[data-cli-jaw-desktop="true"] .command-center.command-bar a,
|
|
17
|
-
:root[data-cli-jaw-desktop="true"] .command-center.command-bar .command-actions,
|
|
18
|
-
:root[data-cli-jaw-desktop="true"] .command-center.command-bar .command-search {
|
|
13
|
+
:root[data-window-fullscreen="true"] .command-center.command-bar.is-electron-titlebar,
|
|
14
|
+
:root[data-cli-jaw-desktop="true"][data-window-fullscreen="true"] .command-center.command-bar {
|
|
15
|
+
--electron-titlebar-left-reserve: 12px;
|
|
16
|
+
}
|
|
17
|
+
:root[data-cli-jaw-desktop="true"] .command-center.command-bar { -webkit-app-region: drag; }
|
|
18
|
+
:root[data-cli-jaw-desktop="true"] .command-center.command-bar :is(button, input, select, a, .command-actions, .command-search, .drawer-trigger, .theme-switch, .command-panel-controls, .search-input-wrapper, .desktop-open-button, .desktop-status-badge) {
|
|
19
19
|
-webkit-app-region: no-drag;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.command-primary {
|
|
23
|
+
height: 100%;
|
|
23
24
|
gap: 8px;
|
|
24
|
-
grid-template-columns:
|
|
25
|
-
|
|
25
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
26
|
+
grid-template-areas: "title search actions";
|
|
27
|
+
}
|
|
28
|
+
.drawer-trigger { grid-area: title; }
|
|
29
|
+
/* .command-icon-button is more specific than the components display:none;
|
|
30
|
+
keep the mobile drawer trigger hidden on desktop. */
|
|
31
|
+
.command-primary .drawer-trigger.command-icon-button { display: none; }
|
|
32
|
+
@media (max-width: 1023px) {
|
|
33
|
+
.command-primary {
|
|
34
|
+
grid-template-columns: auto auto minmax(0, 1fr) auto;
|
|
35
|
+
grid-template-areas: "drawer title search actions";
|
|
36
|
+
}
|
|
37
|
+
.command-primary .drawer-trigger.command-icon-button { display: inline-grid; grid-area: drawer; }
|
|
38
|
+
}
|
|
39
|
+
@media (max-width: 767px) {
|
|
40
|
+
.command-primary {
|
|
41
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
42
|
+
grid-template-areas: "drawer search actions";
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
.command-title { grid-area: title; }
|
|
46
|
+
.command-search { grid-area: search; width: 100%; max-width: none; }
|
|
47
|
+
.command-actions { grid-area: actions; }
|
|
26
48
|
|
|
27
49
|
.command-title {
|
|
28
50
|
--manager-brand-cyan: #21e6f3;
|
|
29
51
|
position: relative;
|
|
30
|
-
display: flex;
|
|
31
|
-
gap:
|
|
52
|
+
display: inline-flex;
|
|
53
|
+
gap: 8px;
|
|
32
54
|
align-content: center;
|
|
33
55
|
align-items: center;
|
|
34
56
|
min-width: 0;
|
|
@@ -37,16 +59,16 @@
|
|
|
37
59
|
|
|
38
60
|
.command-title h1,
|
|
39
61
|
.command-title .manager-brand-heading {
|
|
40
|
-
max-width:
|
|
62
|
+
max-width: 148px;
|
|
41
63
|
overflow: hidden;
|
|
42
64
|
text-overflow: ellipsis;
|
|
43
65
|
white-space: nowrap;
|
|
44
66
|
color: var(--manager-brand-cyan);
|
|
45
67
|
font-family: "Satoshi", "Geist Mono", "IBM Plex Mono", monospace;
|
|
46
|
-
font-size:
|
|
47
|
-
font-weight:
|
|
48
|
-
letter-spacing: 0;
|
|
49
|
-
line-height:
|
|
68
|
+
font-size: 13px;
|
|
69
|
+
font-weight: 600;
|
|
70
|
+
letter-spacing: 0.02em;
|
|
71
|
+
line-height: 1;
|
|
50
72
|
text-shadow: 0 0 16px color-mix(in srgb, var(--manager-brand-cyan) 28%, transparent);
|
|
51
73
|
}
|
|
52
74
|
|
|
@@ -60,6 +82,7 @@
|
|
|
60
82
|
|
|
61
83
|
.manager-brand-wordmark {
|
|
62
84
|
flex: 0 0 auto;
|
|
85
|
+
letter-spacing: 0.02em;
|
|
63
86
|
}
|
|
64
87
|
|
|
65
88
|
.manager-brand-dash {
|
|
@@ -89,18 +112,21 @@
|
|
|
89
112
|
gap: 4px;
|
|
90
113
|
}
|
|
91
114
|
|
|
115
|
+
.command-icon-button,
|
|
92
116
|
.command-panel-toggle {
|
|
93
|
-
width:
|
|
94
|
-
min-width:
|
|
95
|
-
height:
|
|
96
|
-
min-height:
|
|
117
|
+
width: 28px;
|
|
118
|
+
min-width: 28px;
|
|
119
|
+
height: 28px;
|
|
120
|
+
min-height: 28px;
|
|
97
121
|
display: inline-grid;
|
|
98
122
|
place-items: center;
|
|
123
|
+
padding: 0;
|
|
124
|
+
border-radius: var(--control-radius);
|
|
125
|
+
}
|
|
126
|
+
.command-panel-toggle {
|
|
99
127
|
border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border-subtle));
|
|
100
|
-
border-radius: 8px;
|
|
101
128
|
background: color-mix(in srgb, var(--accent) 7%, transparent);
|
|
102
129
|
color: var(--text-primary);
|
|
103
|
-
padding: 0;
|
|
104
130
|
}
|
|
105
131
|
|
|
106
132
|
.command-panel-toggle:hover,
|
|
@@ -114,6 +140,21 @@
|
|
|
114
140
|
background: color-mix(in srgb, var(--accent) 18%, var(--bg-raised));
|
|
115
141
|
}
|
|
116
142
|
|
|
143
|
+
.search-input-wrapper.is-ghost input {
|
|
144
|
+
height: 28px;
|
|
145
|
+
min-height: 28px;
|
|
146
|
+
border: 1px solid transparent;
|
|
147
|
+
background: var(--sidebar-control-surface);
|
|
148
|
+
border-radius: var(--control-radius);
|
|
149
|
+
padding: 0 8px 0 32px;
|
|
150
|
+
font-size: 12px;
|
|
151
|
+
}
|
|
152
|
+
.command-palette-trigger {
|
|
153
|
+
height: 28px;
|
|
154
|
+
min-height: 28px;
|
|
155
|
+
border-radius: var(--control-radius);
|
|
156
|
+
}
|
|
157
|
+
|
|
117
158
|
.workbench-preview .workbench-header {
|
|
118
159
|
padding: 4px 8px;
|
|
119
160
|
}
|
|
@@ -132,11 +173,6 @@
|
|
|
132
173
|
border-radius: 4px;
|
|
133
174
|
}
|
|
134
175
|
|
|
135
|
-
.manager-shell.is-sidebar-collapsed .manager-workspace,
|
|
136
|
-
.manager-workspace.is-sidebar-collapsed {
|
|
137
|
-
--sidebar-width: 44px;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
176
|
.manager-shell.is-sidebar-collapsed .sidebar-rail {
|
|
141
177
|
padding: 6px 4px;
|
|
142
178
|
}
|
|
@@ -165,9 +201,9 @@
|
|
|
165
201
|
}
|
|
166
202
|
|
|
167
203
|
.dashboard-shell.manager-shell:not(.is-sidebar-collapsed) .rail-button {
|
|
168
|
-
width:
|
|
169
|
-
min-width:
|
|
170
|
-
min-height:
|
|
204
|
+
width: 32px;
|
|
205
|
+
min-width: 32px;
|
|
206
|
+
min-height: 32px;
|
|
171
207
|
}
|
|
172
208
|
|
|
173
209
|
.dashboard-shell.manager-shell:not(.is-sidebar-collapsed) .rail-spacer {
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
--activity-dock-height: 0px;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
.dashboard-shell.manager-shell:not(.is-sidebar-collapsed) .manager-workspace {
|
|
6
|
-
--sidebar-width: 300px;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
5
|
.manager-workspace.is-inspector-collapsed .manager-activity {
|
|
10
6
|
display: none;
|
|
11
7
|
}
|
|
@@ -15,8 +11,8 @@
|
|
|
15
11
|
}
|
|
16
12
|
|
|
17
13
|
.rail-button {
|
|
18
|
-
width:
|
|
19
|
-
min-width:
|
|
14
|
+
width: 32px;
|
|
15
|
+
min-width: 32px;
|
|
20
16
|
gap: 6px;
|
|
21
17
|
color: var(--text-secondary);
|
|
22
18
|
font-size: 12px;
|
|
@@ -28,14 +24,10 @@
|
|
|
28
24
|
|
|
29
25
|
.rail-button-short {
|
|
30
26
|
display: none;
|
|
31
|
-
font-family:
|
|
27
|
+
font-family: var(--font-mono);
|
|
32
28
|
font-weight: 700;
|
|
33
29
|
}
|
|
34
30
|
|
|
35
|
-
.rail-button.is-active {
|
|
36
|
-
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
31
|
.manager-shell.is-sidebar-collapsed .rail-button {
|
|
40
32
|
width: 38px;
|
|
41
33
|
min-width: 38px;
|
|
@@ -50,33 +42,10 @@
|
|
|
50
42
|
display: inline;
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
.command-bar {
|
|
54
|
-
gap: 4px;
|
|
55
|
-
padding: 6px 10px;
|
|
56
|
-
}
|
|
57
|
-
.command-bar.is-electron-titlebar {
|
|
58
|
-
padding-left: 132px;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.command-primary {
|
|
62
|
-
gap: 8px;
|
|
63
|
-
grid-template-columns: minmax(108px, 150px) max-content minmax(max-content, 1fr);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
45
|
.command-title .eyebrow {
|
|
67
46
|
display: none;
|
|
68
47
|
}
|
|
69
48
|
|
|
70
|
-
.command-title h1 {
|
|
71
|
-
max-width: 150px;
|
|
72
|
-
overflow: hidden;
|
|
73
|
-
text-overflow: ellipsis;
|
|
74
|
-
white-space: nowrap;
|
|
75
|
-
color: var(--text-primary);
|
|
76
|
-
font-size: 14px;
|
|
77
|
-
font-weight: 700;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
49
|
.command-filter-strip {
|
|
81
50
|
gap: 6px;
|
|
82
51
|
flex-wrap: nowrap;
|
|
@@ -159,11 +128,6 @@
|
|
|
159
128
|
border-radius: 4px;
|
|
160
129
|
}
|
|
161
130
|
|
|
162
|
-
.manager-shell.is-sidebar-collapsed .manager-workspace,
|
|
163
|
-
.manager-workspace.is-sidebar-collapsed {
|
|
164
|
-
--sidebar-width: 44px;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
131
|
.manager-shell.is-sidebar-collapsed .sidebar-rail {
|
|
168
132
|
padding: 6px 4px;
|
|
169
133
|
}
|
|
@@ -189,7 +153,7 @@
|
|
|
189
153
|
.manager-sidebar .instance-row {
|
|
190
154
|
gap: 4px;
|
|
191
155
|
margin-bottom: 4px;
|
|
192
|
-
border-radius:
|
|
156
|
+
border-radius: var(--radius-sm);
|
|
193
157
|
padding: 7px 8px;
|
|
194
158
|
}
|
|
195
159
|
|
|
@@ -273,6 +237,7 @@
|
|
|
273
237
|
.manager-sidebar .instance-actions button,
|
|
274
238
|
.manager-sidebar .instance-actions .open-link {
|
|
275
239
|
min-height: 24px;
|
|
240
|
+
border-radius: var(--control-radius);
|
|
276
241
|
padding-inline: 5px;
|
|
277
242
|
font-size: 10.5px;
|
|
278
243
|
}
|
|
@@ -282,12 +247,8 @@
|
|
|
282
247
|
}
|
|
283
248
|
|
|
284
249
|
@media (max-width: 1279px) and (min-width: 1024px) {
|
|
285
|
-
.dashboard-shell.manager-shell:not(.is-sidebar-collapsed) .manager-workspace {
|
|
286
|
-
--sidebar-width: 280px;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
250
|
.dashboard-shell.manager-shell:not(.is-sidebar-collapsed) .manager-workspace.is-right-panel-open {
|
|
290
|
-
grid-template-columns: var(--sidebar-width
|
|
251
|
+
grid-template-columns: var(--sidebar-width) minmax(0, 1fr) var(--right-panel-width, 320px);
|
|
291
252
|
grid-template-areas: "sidebar center right" "sidebar bottom right";
|
|
292
253
|
}
|
|
293
254
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { DashboardDetailTab, DashboardInstance, DashboardShortcutAction, DashboardSidebarMode } from './types';
|
|
1
|
+
import type { DashboardDetailTab, DashboardInstance, DashboardShortcutAction, DashboardShortcutKeymap, DashboardSidebarMode } from './types';
|
|
2
|
+
import { actionForShortcutEvent } from './manager-shortcuts';
|
|
2
3
|
import { panelShortcutBus } from './panels/panel-shortcut-bus';
|
|
3
4
|
import { getDesktop } from './panels/desktop-bridge';
|
|
5
|
+
import { getInstanceJumpSelector, jumpInstanceIndexFromAction, readRenderedInstancePorts } from './components/sidebar-keyboard';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Dependencies the manager keyboard-shortcut runner needs from <App>.
|
|
@@ -22,6 +24,14 @@ export interface ManagerShortcutRunnerDeps {
|
|
|
22
24
|
|
|
23
25
|
export function runManagerShortcut(action: DashboardShortcutAction, deps: ManagerShortcutRunnerDeps): void {
|
|
24
26
|
if (panelShortcutBus.dispatch(action)) return;
|
|
27
|
+
const jumpIndex = jumpInstanceIndexFromAction(action);
|
|
28
|
+
if (jumpIndex != null) {
|
|
29
|
+
const root = document.getElementById('manager-sidebar-list');
|
|
30
|
+
if (!root) return;
|
|
31
|
+
const port = readRenderedInstancePorts(root)[jumpIndex];
|
|
32
|
+
if (port != null) getInstanceJumpSelector()?.(port);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
25
35
|
if (action === 'focusInstances') {
|
|
26
36
|
deps.handleSidebarModeChange('instances');
|
|
27
37
|
deps.setDrawerOpen(false);
|
|
@@ -106,4 +116,30 @@ export function runManagerShortcut(action: DashboardShortcutAction, deps: Manage
|
|
|
106
116
|
deps.handleSidebarToggle();
|
|
107
117
|
return;
|
|
108
118
|
}
|
|
119
|
+
if (action === 'resetSidebarWidth') {
|
|
120
|
+
document.dispatchEvent(new CustomEvent('jaw:shortcut-action', { detail: 'resetSidebarWidth' }));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const CAPTURE_TOGGLE_ACTIONS = new Set<DashboardShortcutAction>([
|
|
126
|
+
'toggleLeftSidebar',
|
|
127
|
+
'toggleRightPanel',
|
|
128
|
+
'resetSidebarWidth',
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
export function createManagerCaptureKeydownHandler(
|
|
132
|
+
getKeymap: () => DashboardShortcutKeymap,
|
|
133
|
+
onAction: (action: DashboardShortcutAction) => void,
|
|
134
|
+
): (event: KeyboardEvent) => void {
|
|
135
|
+
return (event: KeyboardEvent) => {
|
|
136
|
+
if (event.defaultPrevented) return;
|
|
137
|
+
const target = event.target;
|
|
138
|
+
if (target instanceof Element && target.closest('[data-keybinding-capture]')) return;
|
|
139
|
+
const action = actionForShortcutEvent(event, getKeymap());
|
|
140
|
+
if (!action || !CAPTURE_TOGGLE_ACTIONS.has(action)) return;
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
event.stopPropagation();
|
|
143
|
+
onAction(action);
|
|
144
|
+
};
|
|
109
145
|
}
|
|
@@ -27,6 +27,16 @@ export const MANAGER_SHORTCUT_ACTIONS: DashboardShortcutAction[] = [
|
|
|
27
27
|
'terminalClear',
|
|
28
28
|
'terminalNewTab',
|
|
29
29
|
'toggleLeftSidebar',
|
|
30
|
+
'resetSidebarWidth',
|
|
31
|
+
'jumpInstance1',
|
|
32
|
+
'jumpInstance2',
|
|
33
|
+
'jumpInstance3',
|
|
34
|
+
'jumpInstance4',
|
|
35
|
+
'jumpInstance5',
|
|
36
|
+
'jumpInstance6',
|
|
37
|
+
'jumpInstance7',
|
|
38
|
+
'jumpInstance8',
|
|
39
|
+
'jumpInstance9',
|
|
30
40
|
];
|
|
31
41
|
|
|
32
42
|
export const DEFAULT_MANAGER_SHORTCUT_KEYMAP: DashboardShortcutKeymap = {
|
|
@@ -56,6 +66,16 @@ export const DEFAULT_MANAGER_SHORTCUT_KEYMAP: DashboardShortcutKeymap = {
|
|
|
56
66
|
terminalClear: 'Meta+K',
|
|
57
67
|
terminalNewTab: 'Meta+T',
|
|
58
68
|
toggleLeftSidebar: 'Meta+Shift+B',
|
|
69
|
+
resetSidebarWidth: 'Alt+Shift+B',
|
|
70
|
+
jumpInstance1: 'Alt+1',
|
|
71
|
+
jumpInstance2: 'Alt+2',
|
|
72
|
+
jumpInstance3: 'Alt+3',
|
|
73
|
+
jumpInstance4: 'Alt+4',
|
|
74
|
+
jumpInstance5: 'Alt+5',
|
|
75
|
+
jumpInstance6: 'Alt+6',
|
|
76
|
+
jumpInstance7: 'Alt+7',
|
|
77
|
+
jumpInstance8: 'Alt+8',
|
|
78
|
+
jumpInstance9: 'Alt+9',
|
|
59
79
|
};
|
|
60
80
|
|
|
61
81
|
const MANAGER_SHORTCUT_ALIASES: Partial<Record<DashboardShortcutAction, string[]>> = {
|
|
@@ -117,6 +137,7 @@ export function normalizeManagerShortcutKeymap(value: unknown): DashboardShortcu
|
|
|
117
137
|
|
|
118
138
|
function resolveEventKey(event: KeyboardEvent): string {
|
|
119
139
|
if (event.code === 'Backquote') return '`';
|
|
140
|
+
if (event.altKey && event.code?.startsWith('Digit')) return event.code.slice(5);
|
|
120
141
|
const k = normalizeKey(event.key);
|
|
121
142
|
if (k.length === 1) return k;
|
|
122
143
|
// macOS Option+letter produces special chars (e.g. ∆ for Alt+J).
|