shadok-ai 0.2.71 → 0.2.73
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/package.json +1 -1
- package/public/index.html +12 -0
- package/public/tour-steps.js +15 -1
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -4860,6 +4860,18 @@
|
|
|
4860
4860
|
if (term && termSession && termSession.ws)
|
|
4861
4861
|
sendTo(termSession, { type: "term-input", data: strToB64Utf8(d) });
|
|
4862
4862
|
});
|
|
4863
|
+
// Selecting text in the TUI forwards the mouse to the app, which copies
|
|
4864
|
+
// and emits OSC 52 (it reports "N lines copied"). xterm ignores OSC 52 for
|
|
4865
|
+
// security, so the copy never left the pane; bridge it to the browser
|
|
4866
|
+
// clipboard. Payload is "<targets>;<base64>"; "?" is a read request (skip).
|
|
4867
|
+
term.parser.registerOscHandler(52, (data) => {
|
|
4868
|
+
const semi = data.indexOf(";");
|
|
4869
|
+
const payload = semi >= 0 ? data.slice(semi + 1) : data;
|
|
4870
|
+
if (!payload || payload === "?") return true;
|
|
4871
|
+
try { copyText(new TextDecoder().decode(b64ToBytes(payload))); }
|
|
4872
|
+
catch { /* malformed base64 → nothing to copy */ }
|
|
4873
|
+
return true; // handled
|
|
4874
|
+
});
|
|
4863
4875
|
}
|
|
4864
4876
|
if (termSession !== active) {
|
|
4865
4877
|
// Re-point the terminal at the newly-active channel (server re-seeds).
|
package/public/tour-steps.js
CHANGED
|
@@ -41,13 +41,27 @@ export const TOUR_STEPS = [
|
|
|
41
41
|
"rename it, change its profile, mirror it to Telegram, or close it.",
|
|
42
42
|
target: ".tab.active",
|
|
43
43
|
},
|
|
44
|
+
{
|
|
45
|
+
// Deliberately its own stop, against this file's own "group landmarks"
|
|
46
|
+
// rule: a schedule is not a landmark, it is the reason to open the cockpit
|
|
47
|
+
// again tomorrow. It used to be the last clause of the toolbar step, sixth
|
|
48
|
+
// in a list of six — so the one capability no other tool has was the least
|
|
49
|
+
// prominent thing in the tour, and a first-time visitor never met it.
|
|
50
|
+
id: "schedule",
|
|
51
|
+
title: "They can work while you're away",
|
|
52
|
+
body:
|
|
53
|
+
"“Schedule”, in that same ⋯ menu, pairs a recurring prompt with a shell check that runs " +
|
|
54
|
+
"without the model. Silent check → nothing happened, the agent stays asleep at zero " +
|
|
55
|
+
"tokens. Otherwise it wakes up holding the finding, and tells you here or on Telegram.",
|
|
56
|
+
target: ".tab.active",
|
|
57
|
+
},
|
|
44
58
|
{
|
|
45
59
|
id: "tools",
|
|
46
60
|
title: "The toolbar",
|
|
47
61
|
body:
|
|
48
62
|
"🔑 secrets injected into agents that need them · 👤 profiles (role, guardrails, model) · " +
|
|
49
63
|
"Telegram settings · 🔔 notifications · ⋯ for the diff of what an agent changed " +
|
|
50
|
-
"and to replay this tour.
|
|
64
|
+
"and to replay this tour.",
|
|
51
65
|
// NOT `.hdr-tools`, which is `display: contents` on desktop and therefore
|
|
52
66
|
// generates no box at all — its rect is all zeros, so the step would have
|
|
53
67
|
// been dropped as "not visible" on the very layout where the toolbar is
|