@sayknow-cli/coding-agent 0.4.3 → 0.4.5
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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,52 @@ This file tracks the **fork's own releases**; upstream's full feature history li
|
|
|
5
5
|
in that project. Each release notes the upstream version it is built on.
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
## [0.4.5] — 2026-07-23
|
|
9
|
+
|
|
10
|
+
### Added (Sayknow Pet in tmux)
|
|
11
|
+
|
|
12
|
+
- **Auto-enable the Sayknow Pet (and inline sixel graphics) under tmux when the
|
|
13
|
+
outer terminal genuinely supports sixel.** Previously graphics were
|
|
14
|
+
unconditionally suppressed under any multiplexer because tmux advertises
|
|
15
|
+
compile-time sixel support (`DA1 ";4"`) regardless of the attached terminal,
|
|
16
|
+
and no code emitted the DCS passthrough envelope. Now:
|
|
17
|
+
- The startup sixel capability probe runs under tmux with its DA1 +
|
|
18
|
+
XTSMGRAPHICS queries wrapped in tmux's `\ePtmux;…\e\\` passthrough envelope,
|
|
19
|
+
so the **outer** terminal answers — a positive reply is genuine end-to-end
|
|
20
|
+
evidence, not tmux's unreliable self-report. screen/zellij (no passthrough
|
|
21
|
+
envelope) stay suppressed.
|
|
22
|
+
- Sixel render output (pet frames + inline images) is wrapped in the same
|
|
23
|
+
passthrough envelope under tmux.
|
|
24
|
+
- SKC-launched tmux sessions set `allow-passthrough on` (pane-scoped, quiet on
|
|
25
|
+
tmux < 3.3) automatically.
|
|
26
|
+
- Probe-gated and safe: terminals that do not actually render sixel through
|
|
27
|
+
tmux (e.g. Ghostty, which uses the kitty protocol and has no sixel) never
|
|
28
|
+
activate it, so no garbage escapes are emitted. Set `SKC_SIXEL_MULTIPLEXER=0`
|
|
29
|
+
to force the pre-0.4.5 behavior (graphics off under tmux).
|
|
30
|
+
|
|
31
|
+
## [0.4.4] — 2026-07-22
|
|
32
|
+
|
|
33
|
+
### Fixed (workflow arbitration native)
|
|
34
|
+
|
|
35
|
+
- **Port `skc-notifications` to upstream v0.11.6 and switch pi-natives to
|
|
36
|
+
`sdk.rs`.** 0.4.x synced upstream's coding-agent, whose SDK bus requires the
|
|
37
|
+
native `NotificationServer` arbitration API (`registerArbitratedAsk`,
|
|
38
|
+
`retireIfUnclaimed`, `stopAndWait`). But the fork's `skc-notifications` crate
|
|
39
|
+
was stuck at upstream v0.9.1, so `crates/pi-natives/src/sdk.rs` (restored from
|
|
40
|
+
v0.11.6) could not compile against it and was dropped from `lib.rs`. The
|
|
41
|
+
shipped `notifications.rs` `NotificationServer` lacked the arbitration
|
|
42
|
+
methods, so every SDK session startup threw `NativeRuntimeCompatibilityError`
|
|
43
|
+
("required workflow arbitration methods are missing") — extensions failed to
|
|
44
|
+
load and no session could start on 0.4.1–0.4.3.
|
|
45
|
+
- Upgrades `crates/skc-notifications` v0.9.1 → v0.11.6 (adds the
|
|
46
|
+
`broker_protocol`/`control`/`query`/`reverse` modules and the `hmac` workspace
|
|
47
|
+
dependency), wires `mod sdk;` and retires `notifications.rs`. This restores
|
|
48
|
+
the arbitration API **and** the SKC v3 SDK connection lane
|
|
49
|
+
(`onSdkFrame`/`sendTo`/`onConnectionClose`/`registerWorkflowGateAsk`/
|
|
50
|
+
`pushTurnStreamUnchecked`), which was also dead in 0.4.1–0.4.3. No native
|
|
51
|
+
method that the fork already relied on is removed (`sdk.rs`'s
|
|
52
|
+
`NotificationServer` is a strict superset of `notifications.rs`).
|
|
53
|
+
|
|
8
54
|
## [0.4.3] — 2026-07-21
|
|
9
55
|
|
|
10
56
|
### Fixed (cross-platform native publish)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@sayknow-cli/coding-agent",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.5",
|
|
5
5
|
"description": "Sayknow-CLI CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://sayknow-cli.com",
|
|
7
7
|
"author": "jaybeyond",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"@agentclientprotocol/sdk": "1.2.1",
|
|
53
53
|
"@babel/parser": "^7.29.3",
|
|
54
54
|
"@mozilla/readability": "^0.6.0",
|
|
55
|
-
"@sayknow-cli/stats": "0.4.
|
|
56
|
-
"@sayknow-cli/agent-core": "0.4.
|
|
57
|
-
"@sayknow-cli/ai": "0.4.
|
|
58
|
-
"@sayknow-cli/natives": "0.4.
|
|
59
|
-
"@sayknow-cli/tui": "0.4.
|
|
60
|
-
"@sayknow-cli/utils": "0.4.
|
|
55
|
+
"@sayknow-cli/stats": "0.4.5",
|
|
56
|
+
"@sayknow-cli/agent-core": "0.4.5",
|
|
57
|
+
"@sayknow-cli/ai": "0.4.5",
|
|
58
|
+
"@sayknow-cli/natives": "0.4.5",
|
|
59
|
+
"@sayknow-cli/tui": "0.4.5",
|
|
60
|
+
"@sayknow-cli/utils": "0.4.5",
|
|
61
61
|
"@puppeteer/browsers": "^2.13.0",
|
|
62
62
|
"@types/turndown": "5.0.6",
|
|
63
63
|
"@xterm/headless": "^6.0.0",
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
type SayknowPixelFrameName,
|
|
15
15
|
type SayknowPixelFrames,
|
|
16
16
|
type TUI,
|
|
17
|
+
wrapTmuxPassthrough,
|
|
17
18
|
} from "@sayknow-cli/tui";
|
|
18
19
|
import type { CustomEditor } from "./custom-editor";
|
|
19
20
|
import { getPetPixelProtocol } from "./pet-capability";
|
|
@@ -280,6 +281,9 @@ export class SayknowPetWidget {
|
|
|
280
281
|
sixelTopPaddingPx: protocol === "sixel" ? PET_SIXEL_DROP_PX : 0,
|
|
281
282
|
kittyCellYOffsetPx: protocol === "kitty" ? petKittyDropPx(cell.heightPx) : 0,
|
|
282
283
|
kittyImageId: protocol === "kitty" ? this.#kittyImageId : undefined,
|
|
284
|
+
// Forward the pet's sixel raster through tmux's DCS passthrough envelope
|
|
285
|
+
// when under tmux (no-op otherwise), so the outer terminal renders it.
|
|
286
|
+
wrapSixel: wrapTmuxPassthrough,
|
|
283
287
|
});
|
|
284
288
|
this.#framedEditor.setReserve(this.#pixel.columns + PET_SIDE_MARGIN);
|
|
285
289
|
}
|
|
@@ -245,6 +245,13 @@ export function buildSkcTmuxProfileCommands(
|
|
|
245
245
|
if (envDisabled(env[SKC_TMUX_PROFILE_ENV])) return commands;
|
|
246
246
|
commands.push(
|
|
247
247
|
{ description: "enable tmux clipboard integration", args: ["set-option", "-t", target, "set-clipboard", "on"] },
|
|
248
|
+
{
|
|
249
|
+
// Forward DCS passthrough (sixel graphics / Sayknow Pet) to the outer
|
|
250
|
+
// terminal. `-pq` scopes it to this session's pane (never the global
|
|
251
|
+
// server state) and stays quiet on tmux < 3.3 where the option is unknown.
|
|
252
|
+
description: "allow DCS passthrough for sixel graphics",
|
|
253
|
+
args: ["set-option", "-pq", "-t", target, "allow-passthrough", "on"],
|
|
254
|
+
},
|
|
248
255
|
{
|
|
249
256
|
description: "make copy-mode selection readable",
|
|
250
257
|
args: ["set-window-option", "-t", target, "mode-style", "fg=colour231,bg=colour60"],
|