shadok-ai 0.12.8 → 0.12.10
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/dist/tmux.d.ts +48 -0
- package/dist/tmux.js +119 -29
- package/dist/tmux.js.map +1 -1
- package/package.json +1 -1
- package/public/index.html +80 -31
- package/public/tour-steps.js +8 -10
package/dist/tmux.d.ts
CHANGED
|
@@ -13,7 +13,55 @@ import type { PilotOptions, WaitIdleOptions, WaitOptions } from "./session.js";
|
|
|
13
13
|
export interface TmuxPilotOptions extends PilotOptions {
|
|
14
14
|
/** tmux session name (stable across restarts — derive from the session id). */
|
|
15
15
|
tmuxName: string;
|
|
16
|
+
/** Where the one-shot launcher script is written (default `~/.shadok-ai/run`). */
|
|
17
|
+
launcherDir?: string;
|
|
16
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* What a failed tmux call is allowed to say: the subcommand and tmux's own
|
|
21
|
+
* complaint, NEVER the rest of the argument vector.
|
|
22
|
+
*
|
|
23
|
+
* `execFileSync` builds its error message as "Command failed: <every argument>",
|
|
24
|
+
* and that message travelled to the browser untouched. When the arguments are a
|
|
25
|
+
* spawn command, they are every secret the profile injects — so a spawn that
|
|
26
|
+
* failed for an unrelated reason displayed forty-six credentials in the web UI.
|
|
27
|
+
* `send-keys` carries the user's own prompt text, which has no business in an
|
|
28
|
+
* error either.
|
|
29
|
+
*/
|
|
30
|
+
export declare function tmuxErrorMessage(args: string[], stderr: unknown): string;
|
|
31
|
+
/** Single-quote a string for POSIX sh; safe for any content, newlines included. */
|
|
32
|
+
export declare function shellQuote(s: string): string;
|
|
33
|
+
/** A name `export` accepts. The vault does not restrict names, the shell does. */
|
|
34
|
+
export declare function isEnvName(name: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* The one-shot script a tmux pane runs to start an agent.
|
|
37
|
+
*
|
|
38
|
+
* The spawn used to be a single `env KEY=VALUE … claude <args>` string handed to
|
|
39
|
+
* `tmux new-session`. Two things were wrong with carrying it that way. tmux
|
|
40
|
+
* refuses a command over ~16 KB ("command too long", measured: 16000 bytes
|
|
41
|
+
* pass, 17000 fail), and that string holds every secret VALUE of the profile
|
|
42
|
+
* plus every system prompt — so a lead role with a long prompt on a large vault
|
|
43
|
+
* simply could not be launched, while a shorter role on the same vault could.
|
|
44
|
+
* And those values were arguments of a process, which `ps` shows to anyone on
|
|
45
|
+
* the machine.
|
|
46
|
+
*
|
|
47
|
+
* Writing them to a file makes the tmux command a few dozen bytes whatever the
|
|
48
|
+
* vault holds, and `export` is a shell builtin, so no value is ever the argument
|
|
49
|
+
* of any process. The order is the old one and is load-bearing: strip the
|
|
50
|
+
* inherited CLAUDE* markers, then the secrets, then `FORCED_CLAUDE_ENV` LAST so
|
|
51
|
+
* a profile can never switch transcript writing off (invariant 29). The script
|
|
52
|
+
* removes itself first thing — `sh` already holds it open, so unlinking the name
|
|
53
|
+
* loses nothing — which bounds the file's life to the moment before `exec`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function launcherScript(o: {
|
|
56
|
+
unset: string[];
|
|
57
|
+
env: Record<string, string>;
|
|
58
|
+
forced: Record<string, string>;
|
|
59
|
+
bin: string;
|
|
60
|
+
args: string[];
|
|
61
|
+
}): {
|
|
62
|
+
script: string;
|
|
63
|
+
skipped: string[];
|
|
64
|
+
};
|
|
17
65
|
/** True when a tmux session with this exact name is alive. */
|
|
18
66
|
export declare function tmuxHasSession(name: string): boolean;
|
|
19
67
|
/** Kills a tmux session by name. Idempotent: an absent session is a no-op. */
|
package/dist/tmux.js
CHANGED
|
@@ -5,14 +5,86 @@ import path from "node:path";
|
|
|
5
5
|
import { idleStep, screenShowsWork, inputText, describeStuckScreen, nextScreenDelay, typeIntoBox, SCREEN_FAST_MS } from "./detect.js";
|
|
6
6
|
import { windowMs, FORCED_CLAUDE_ENV } from "./session.js";
|
|
7
7
|
import { binaryBusyError } from "./claude-bin.js";
|
|
8
|
+
import { SHADOK_DIR } from "./config.js";
|
|
8
9
|
function tmux(args, input) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
try {
|
|
11
|
+
return execFileSync("tmux", args, {
|
|
12
|
+
encoding: "utf8",
|
|
13
|
+
input,
|
|
14
|
+
timeout: 10_000,
|
|
15
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
16
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
throw new Error(tmuxErrorMessage(args, e.stderr));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What a failed tmux call is allowed to say: the subcommand and tmux's own
|
|
25
|
+
* complaint, NEVER the rest of the argument vector.
|
|
26
|
+
*
|
|
27
|
+
* `execFileSync` builds its error message as "Command failed: <every argument>",
|
|
28
|
+
* and that message travelled to the browser untouched. When the arguments are a
|
|
29
|
+
* spawn command, they are every secret the profile injects — so a spawn that
|
|
30
|
+
* failed for an unrelated reason displayed forty-six credentials in the web UI.
|
|
31
|
+
* `send-keys` carries the user's own prompt text, which has no business in an
|
|
32
|
+
* error either.
|
|
33
|
+
*/
|
|
34
|
+
export function tmuxErrorMessage(args, stderr) {
|
|
35
|
+
const why = typeof stderr === "string" ? stderr.trim() : Buffer.isBuffer(stderr) ? stderr.toString("utf8").trim() : "";
|
|
36
|
+
return `tmux ${args[0] ?? "command"} failed${why ? `: ${why}` : ""}`;
|
|
37
|
+
}
|
|
38
|
+
/** Single-quote a string for POSIX sh; safe for any content, newlines included. */
|
|
39
|
+
export function shellQuote(s) {
|
|
40
|
+
return `'${String(s).replace(/'/g, "'\\''")}'`;
|
|
41
|
+
}
|
|
42
|
+
/** A name `export` accepts. The vault does not restrict names, the shell does. */
|
|
43
|
+
export function isEnvName(name) {
|
|
44
|
+
return /^[A-Za-z_][A-Za-z0-9_]*$/.test(name);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The one-shot script a tmux pane runs to start an agent.
|
|
48
|
+
*
|
|
49
|
+
* The spawn used to be a single `env KEY=VALUE … claude <args>` string handed to
|
|
50
|
+
* `tmux new-session`. Two things were wrong with carrying it that way. tmux
|
|
51
|
+
* refuses a command over ~16 KB ("command too long", measured: 16000 bytes
|
|
52
|
+
* pass, 17000 fail), and that string holds every secret VALUE of the profile
|
|
53
|
+
* plus every system prompt — so a lead role with a long prompt on a large vault
|
|
54
|
+
* simply could not be launched, while a shorter role on the same vault could.
|
|
55
|
+
* And those values were arguments of a process, which `ps` shows to anyone on
|
|
56
|
+
* the machine.
|
|
57
|
+
*
|
|
58
|
+
* Writing them to a file makes the tmux command a few dozen bytes whatever the
|
|
59
|
+
* vault holds, and `export` is a shell builtin, so no value is ever the argument
|
|
60
|
+
* of any process. The order is the old one and is load-bearing: strip the
|
|
61
|
+
* inherited CLAUDE* markers, then the secrets, then `FORCED_CLAUDE_ENV` LAST so
|
|
62
|
+
* a profile can never switch transcript writing off (invariant 29). The script
|
|
63
|
+
* removes itself first thing — `sh` already holds it open, so unlinking the name
|
|
64
|
+
* loses nothing — which bounds the file's life to the moment before `exec`.
|
|
65
|
+
*/
|
|
66
|
+
export function launcherScript(o) {
|
|
67
|
+
const skipped = [];
|
|
68
|
+
const exports = [];
|
|
69
|
+
const add = (k, v) => {
|
|
70
|
+
if (!isEnvName(k))
|
|
71
|
+
return skipped.push(k);
|
|
72
|
+
exports.push(`export ${k}=${shellQuote(v)}`);
|
|
73
|
+
};
|
|
74
|
+
add("TERM", "xterm-256color");
|
|
75
|
+
for (const [k, v] of Object.entries(o.env))
|
|
76
|
+
add(k, v);
|
|
77
|
+
for (const [k, v] of Object.entries(o.forced))
|
|
78
|
+
add(k, v);
|
|
79
|
+
const script = [
|
|
80
|
+
"#!/bin/sh",
|
|
81
|
+
'rm -f -- "$0"',
|
|
82
|
+
...o.unset.filter(isEnvName).map((k) => `unset ${k}`),
|
|
83
|
+
...exports,
|
|
84
|
+
`exec ${[o.bin, ...o.args].map(shellQuote).join(" ")}`,
|
|
85
|
+
"",
|
|
86
|
+
].join("\n");
|
|
87
|
+
return { script, skipped };
|
|
16
88
|
}
|
|
17
89
|
function tmuxOk(args) {
|
|
18
90
|
try {
|
|
@@ -74,28 +146,44 @@ export class TmuxPilot {
|
|
|
74
146
|
else {
|
|
75
147
|
// Strip a parent Claude Code session's vars (a nested claude that sees
|
|
76
148
|
// them may disable interactive mode), like PtyPilot does.
|
|
77
|
-
const unset = Object.keys(process.env)
|
|
78
|
-
.filter((k) => /^(CLAUDE|CLAUDECODE|AI_AGENT)/.test(k))
|
|
79
|
-
.flatMap((k) => ["-u", k]);
|
|
149
|
+
const unset = Object.keys(process.env).filter((k) => /^(CLAUDE|CLAUDECODE|AI_AGENT)/.test(k));
|
|
80
150
|
const bin = this.opts.claudePath ?? "claude";
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
151
|
+
// Secrets and prompts go into a private one-shot script, never onto the
|
|
152
|
+
// tmux command line: see `launcherScript` for why both halves matter.
|
|
153
|
+
const { script, skipped } = launcherScript({
|
|
154
|
+
unset,
|
|
155
|
+
env: this.opts.env ?? {},
|
|
156
|
+
forced: FORCED_CLAUDE_ENV,
|
|
157
|
+
bin,
|
|
158
|
+
args: this.opts.args ?? [],
|
|
159
|
+
});
|
|
160
|
+
for (const name of skipped)
|
|
161
|
+
console.error(`[${this.name}] secret "${name}" not exported — not a valid environment variable name`);
|
|
162
|
+
const dir = this.opts.launcherDir ?? path.join(SHADOK_DIR, "run");
|
|
163
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
164
|
+
fs.chmodSync(dir, 0o700);
|
|
165
|
+
const launcher = path.join(dir, `${this.name}.sh`);
|
|
166
|
+
// `wx` after a forced remove: a stale file from an earlier failed spawn must
|
|
167
|
+
// not keep whatever mode it had — the new one is created 0600 or not at all.
|
|
168
|
+
fs.rmSync(launcher, { force: true });
|
|
169
|
+
fs.writeFileSync(launcher, script, { mode: 0o600, flag: "wx" });
|
|
170
|
+
try {
|
|
171
|
+
tmux([
|
|
172
|
+
"new-session",
|
|
173
|
+
"-d",
|
|
174
|
+
"-s", this.name,
|
|
175
|
+
"-x", String(this.opts.cols),
|
|
176
|
+
"-y", String(this.opts.rows),
|
|
177
|
+
"-c", this.opts.cwd ?? process.cwd(),
|
|
178
|
+
`sh ${shellQuote(launcher)}`,
|
|
179
|
+
]);
|
|
180
|
+
}
|
|
181
|
+
catch (e) {
|
|
182
|
+
// The pane never ran, so the script never removed itself: it holds the
|
|
183
|
+
// profile's secrets and must not outlive the failure.
|
|
184
|
+
fs.rmSync(launcher, { force: true });
|
|
185
|
+
throw e;
|
|
186
|
+
}
|
|
99
187
|
// `tmux new-session` returns as soon as the pane exists, so a pane that is
|
|
100
188
|
// ALREADY gone means its command never got to run — ETXTBSY being the
|
|
101
189
|
// reason that actually happens here, when a claude-code upgrade is
|
|
@@ -103,8 +191,10 @@ export class TmuxPilot {
|
|
|
103
191
|
// reads it as an ordinary exit, and a spawn killed by a transient reports
|
|
104
192
|
// as a dead agent. A pane tmux has not torn down yet reads as alive and we
|
|
105
193
|
// fall through to the old behaviour — no worse than before, never worse.
|
|
106
|
-
if (!this.hasSession())
|
|
194
|
+
if (!this.hasSession()) {
|
|
195
|
+
fs.rmSync(launcher, { force: true });
|
|
107
196
|
throw binaryBusyError(bin);
|
|
197
|
+
}
|
|
108
198
|
}
|
|
109
199
|
this.capture();
|
|
110
200
|
// Self-rescheduling rather than a flat interval: the capture is synchronous,
|
package/dist/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -275,7 +275,8 @@
|
|
|
275
275
|
.led.busy { background: var(--amber); box-shadow: 0 0 8px var(--amber); animation: breathe 1.2s ease-in-out infinite; }
|
|
276
276
|
.led.off { background: var(--err); }
|
|
277
277
|
@keyframes breathe { 50% { opacity: 0.35; } }
|
|
278
|
-
@
|
|
278
|
+
@keyframes sheet-up { from { transform: translateY(100%); } to { transform: translateY(0); } }
|
|
279
|
+
@media (prefers-reduced-motion: reduce) { .led.busy { animation: none; } body.picker-open #tabbar { animation: none; } }
|
|
279
280
|
header .spacer { flex: 1; }
|
|
280
281
|
/* Quota dials (5h / 7d subscription usage).
|
|
281
282
|
A 240° speedometer whose CENTRE is the ideal pace and whose RIGHT END is
|
|
@@ -1178,17 +1179,43 @@
|
|
|
1178
1179
|
#chanBar .gauge .label { font-size: 10px; }
|
|
1179
1180
|
#chanBar #cwdView { display: inline-block; max-width: 200px; overflow: hidden; text-overflow: ellipsis; vertical-align: bottom; }
|
|
1180
1181
|
/* Channel selector: hidden on desktop (the sidebar is the navigation). */
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1182
|
+
/* Mobile agents trigger: hidden on desktop (the sidebar IS the navigation),
|
|
1183
|
+
shown as a compact "● name ▾" pill on a phone. */
|
|
1184
|
+
#chanPicker {
|
|
1185
|
+
display: none; align-items: center; gap: 6px;
|
|
1186
|
+
font-family: var(--mono); font-size: 13px; cursor: pointer;
|
|
1184
1187
|
background: var(--bg-inset); color: var(--text);
|
|
1185
1188
|
border: 1px solid var(--line); border-radius: 6px; padding: 5px 8px;
|
|
1186
1189
|
max-width: 55vw;
|
|
1187
1190
|
}
|
|
1191
|
+
#chanPicker #pickerName { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1192
|
+
#chanPicker .pk-caret { color: var(--text-dim); font-size: 11px; flex: none; transition: transform 0.15s; }
|
|
1193
|
+
body.picker-open #chanPicker { border-color: var(--amber); }
|
|
1194
|
+
body.picker-open #chanPicker .pk-caret { transform: rotate(180deg); }
|
|
1188
1195
|
/* ── Mobile: sidebar hidden, navigation via the channel header's selector ── */
|
|
1189
1196
|
@media (max-width: 640px) {
|
|
1190
1197
|
#tabbar { display: none; }
|
|
1191
|
-
#
|
|
1198
|
+
#chanPicker { display: inline-flex; min-width: 0; }
|
|
1199
|
+
/* The agents column, on demand, as a bottom sheet — the SAME rich tabs, not a
|
|
1200
|
+
flattened list. Slides up over the chat; a backdrop dims and closes it. */
|
|
1201
|
+
body.picker-open #tabbar {
|
|
1202
|
+
display: flex;
|
|
1203
|
+
position: fixed; left: 0; right: 0; bottom: 0; top: auto;
|
|
1204
|
+
width: auto; max-height: 78vh; z-index: 55;
|
|
1205
|
+
border-right: none; border-top: 1px solid var(--line);
|
|
1206
|
+
border-radius: 14px 14px 0 0;
|
|
1207
|
+
box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.5);
|
|
1208
|
+
padding: 8px 8px calc(12px + env(safe-area-inset-bottom, 0px));
|
|
1209
|
+
animation: sheet-up 0.18s ease-out;
|
|
1210
|
+
}
|
|
1211
|
+
/* A grab handle, so the panel reads as a sheet you can dismiss. */
|
|
1212
|
+
body.picker-open #tabbar::before {
|
|
1213
|
+
content: ""; align-self: center; flex: none;
|
|
1214
|
+
width: 36px; height: 4px; margin: 2px 0 8px;
|
|
1215
|
+
border-radius: 2px; background: var(--line);
|
|
1216
|
+
}
|
|
1217
|
+
#pickerBackdrop { position: fixed; inset: 0; z-index: 54; background: rgba(8, 9, 13, 0.5); }
|
|
1218
|
+
#pickerBackdrop[hidden] { display: none; }
|
|
1192
1219
|
#chanBar #chanBarName { display: none; }
|
|
1193
1220
|
/* Condensed channel bar: keep Status + Session, hide the rest. */
|
|
1194
1221
|
#chanBar #dirGauge, #chanBar #branchGauge { display: none !important; }
|
|
@@ -1241,7 +1268,7 @@
|
|
|
1241
1268
|
@media (pointer: coarse) {
|
|
1242
1269
|
textarea, select,
|
|
1243
1270
|
input[type="text"], input[type="password"], input[type="number"], input[type="search"],
|
|
1244
|
-
#composer textarea
|
|
1271
|
+
#composer textarea { font-size: 16px; }
|
|
1245
1272
|
}
|
|
1246
1273
|
#xtermHost { flex: 1; min-height: 0; overflow: auto; padding: 8px 10px; }
|
|
1247
1274
|
#xtermHost .xterm { height: 100%; }
|
|
@@ -2022,6 +2049,8 @@
|
|
|
2022
2049
|
</button>
|
|
2023
2050
|
</div>
|
|
2024
2051
|
</nav>
|
|
2052
|
+
<!-- Dims the chat behind the mobile agents sheet; tap to close. -->
|
|
2053
|
+
<div id="pickerBackdrop" hidden></div>
|
|
2025
2054
|
|
|
2026
2055
|
<section class="chat-pane">
|
|
2027
2056
|
|
|
@@ -2030,8 +2059,12 @@
|
|
|
2030
2059
|
separate place, so its actions have no reason to appear with it. -->
|
|
2031
2060
|
<div id="chanBar" hidden>
|
|
2032
2061
|
<span class="label" id="chanBarName"></span>
|
|
2033
|
-
<!-- Mobile: sidebar hidden → this
|
|
2034
|
-
|
|
2062
|
+
<!-- Mobile: the sidebar is hidden → this button opens the very same rich
|
|
2063
|
+
agent tabs (LED, state, background-work hatch, context bar) as a bottom
|
|
2064
|
+
sheet, instead of flattening them into a native <select>. -->
|
|
2065
|
+
<button id="chanPicker" type="button" aria-haspopup="true" aria-expanded="false" title="Agents">
|
|
2066
|
+
<span id="pickerLed" class="led"></span><span id="pickerName">—</span><span class="pk-caret">▾</span>
|
|
2067
|
+
</button>
|
|
2035
2068
|
<div class="gauge">
|
|
2036
2069
|
<span class="label">Status</span>
|
|
2037
2070
|
<span class="value"><span id="led" class="led"></span><span id="state">—</span></span>
|
|
@@ -2787,7 +2820,7 @@
|
|
|
2787
2820
|
document.addEventListener("click", () => {
|
|
2788
2821
|
if (Date.now() - tabMenuOpenedAt > 200) closeTabMenu();
|
|
2789
2822
|
});
|
|
2790
|
-
document.addEventListener("keydown", (e) => { if (e.key === "Escape") closeTabMenu(); });
|
|
2823
|
+
document.addEventListener("keydown", (e) => { if (e.key === "Escape") { closeTabMenu(); closePicker(); } });
|
|
2791
2824
|
window.addEventListener("blur", () => closeTabMenu());
|
|
2792
2825
|
|
|
2793
2826
|
/** Right-click menu on a tab: the home for per-channel actions. */
|
|
@@ -3460,6 +3493,8 @@
|
|
|
3460
3493
|
promptInput.value = tab.draft;
|
|
3461
3494
|
autosizePrompt();
|
|
3462
3495
|
refreshChrome();
|
|
3496
|
+
// Picking an agent from the mobile sheet dismisses it.
|
|
3497
|
+
closePicker();
|
|
3463
3498
|
// Experimental terminal follows the active channel (re-seeds on switch).
|
|
3464
3499
|
if (typeof syncTerm === "function") syncTerm();
|
|
3465
3500
|
if (tab.status !== "setup") {
|
|
@@ -3866,29 +3901,39 @@
|
|
|
3866
3901
|
* central panel shows the invitation.
|
|
3867
3902
|
*/
|
|
3868
3903
|
/** (Re)builds the mobile selector: one option per channel + "+ New agent". */
|
|
3904
|
+
// The mobile trigger just MIRRORS the active agent (its name + LED). The sheet
|
|
3905
|
+
// it opens is the real sidebar (#tabbar), so there is no flattened list to
|
|
3906
|
+
// rebuild here — every rich tab renders itself. Name kept for its callers.
|
|
3869
3907
|
function rebuildChanSelect() {
|
|
3870
|
-
const
|
|
3871
|
-
if (!
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
}
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
}
|
|
3908
|
+
const led = $("pickerLed"), name = $("pickerName");
|
|
3909
|
+
if (!led || !name) return;
|
|
3910
|
+
led.className = active && active.ledEl ? active.ledEl.className : "led";
|
|
3911
|
+
name.textContent = active ? (active.nameEl ? active.nameEl.textContent : "agent " + active.id) : "—";
|
|
3912
|
+
}
|
|
3913
|
+
// ── Mobile agents sheet ──────────────────────────────────────────────────
|
|
3914
|
+
// On a phone the sidebar is hidden; this opens it as a bottom sheet so the
|
|
3915
|
+
// channels keep their full rendering (status, background-work hatch, context)
|
|
3916
|
+
// instead of collapsing into a native <select>.
|
|
3917
|
+
function isMobileWidth() { return matchMedia("(max-width: 640px)").matches; }
|
|
3918
|
+
function openPicker() {
|
|
3919
|
+
if (!isMobileWidth()) return;
|
|
3920
|
+
document.body.classList.add("picker-open");
|
|
3921
|
+
$("pickerBackdrop").hidden = false;
|
|
3922
|
+
$("chanPicker").setAttribute("aria-expanded", "true");
|
|
3923
|
+
}
|
|
3924
|
+
function closePicker() {
|
|
3925
|
+
if (!document.body.classList.contains("picker-open")) return;
|
|
3926
|
+
document.body.classList.remove("picker-open");
|
|
3927
|
+
$("pickerBackdrop").hidden = true;
|
|
3928
|
+
$("chanPicker").setAttribute("aria-expanded", "false");
|
|
3929
|
+
}
|
|
3930
|
+
function togglePicker() {
|
|
3931
|
+
document.body.classList.contains("picker-open") ? closePicker() : openPicker();
|
|
3932
|
+
}
|
|
3933
|
+
$("chanPicker").addEventListener("click", togglePicker);
|
|
3934
|
+
$("pickerBackdrop").addEventListener("click", closePicker);
|
|
3935
|
+
// Leaving phone width (rotation, resized window) must not strand an open sheet.
|
|
3936
|
+
addEventListener("resize", () => { if (!isMobileWidth()) closePicker(); });
|
|
3892
3937
|
|
|
3893
3938
|
function refreshChrome() {
|
|
3894
3939
|
rebuildChanSelect(); // keeps the mobile selector in step (list + active)
|
|
@@ -4774,6 +4819,9 @@
|
|
|
4774
4819
|
* of the conversation you were watching.
|
|
4775
4820
|
*/
|
|
4776
4821
|
function openSetup() {
|
|
4822
|
+
// Close the mobile agents sheet first: the setup overlay sits BELOW it in
|
|
4823
|
+
// the stack, so leaving the sheet open would hide the form behind it.
|
|
4824
|
+
closePicker();
|
|
4777
4825
|
// PREDICTABLE defaults on every opening. The browser restores form-field
|
|
4778
4826
|
// state (a "continue"/"resume" mode chosen once, an unticked worktree box, a
|
|
4779
4827
|
// worktree cwd) — which is what silently made "create an agent" fall back
|
|
@@ -7252,6 +7300,7 @@
|
|
|
7252
7300
|
|
|
7253
7301
|
tweakCta.addEventListener("click", async () => {
|
|
7254
7302
|
if (tweakBusy) return;
|
|
7303
|
+
closePicker(); // dismiss the mobile sheet; the tweak agent takes over the view
|
|
7255
7304
|
// Belt and braces: the CTA is hidden as soon as a tweak channel exists, but
|
|
7256
7305
|
// should it reappear we activate the existing one rather than open a second.
|
|
7257
7306
|
const already = tweakTab();
|
package/public/tour-steps.js
CHANGED
|
@@ -38,16 +38,14 @@ export const TOUR_STEPS = [
|
|
|
38
38
|
"Every agent gets its own git worktree and branch, so several never collide. " +
|
|
39
39
|
"Pick one here to follow it, and “+ New agent” starts another. One of them is this " +
|
|
40
40
|
"cockpit's home agent: the only one that cannot be closed.",
|
|
41
|
-
// The column on desktop, the
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
// same failure as a spotlight on empty space
|
|
48
|
-
|
|
49
|
-
// not in the tour.)
|
|
50
|
-
target: ["#tabbar", "#chanSelect"],
|
|
41
|
+
// The column on desktop, the agents-picker button on a phone — never both at
|
|
42
|
+
// once. The phone's `#chanPicker` opens the SAME column as a bottom sheet, so
|
|
43
|
+
// "+ New agent" and Tweak are reachable there too now — but the spotlight
|
|
44
|
+
// lands on the CLOSED button, whose contents aren't on screen yet. So this
|
|
45
|
+
// body still says neither "at the top" nor "at the bottom" and still doesn't
|
|
46
|
+
// point at "Tweak Shadok-AI": naming a control the reader cannot see at the
|
|
47
|
+
// moment of the spotlight is the same failure as a spotlight on empty space.
|
|
48
|
+
target: ["#tabbar", "#chanPicker"],
|
|
51
49
|
},
|
|
52
50
|
{
|
|
53
51
|
id: "tab",
|