@sayknow-cli/coding-agent 0.4.4 → 0.4.6

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,43 @@ 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.6] — 2026-07-23
9
+
10
+ ### Fixed (Sayknow Pet sizing/animation under tmux)
11
+
12
+ - **Wrap the terminal cell-pixel-size query (`CSI 16 t`) in tmux's DCS
13
+ passthrough envelope.** Under tmux the query was answered by tmux itself with
14
+ a wrong cell size, so the sixel pet was encoded far too large — it overflowed
15
+ the composer and its animation froze (the oversized sprite resolved to an
16
+ out-of-bounds position, so each animation frame's overlay payload became
17
+ `null` and never redrew). The outer terminal now reports its real cell size,
18
+ so the pet renders at its intended 2-row height and animates. Only affected
19
+ tmux + a sixel terminal (the 0.4.5 pet-in-tmux path); non-multiplexed
20
+ rendering was already correct.
21
+
22
+ ## [0.4.5] — 2026-07-23
23
+
24
+ ### Added (Sayknow Pet in tmux)
25
+
26
+ - **Auto-enable the Sayknow Pet (and inline sixel graphics) under tmux when the
27
+ outer terminal genuinely supports sixel.** Previously graphics were
28
+ unconditionally suppressed under any multiplexer because tmux advertises
29
+ compile-time sixel support (`DA1 ";4"`) regardless of the attached terminal,
30
+ and no code emitted the DCS passthrough envelope. Now:
31
+ - The startup sixel capability probe runs under tmux with its DA1 +
32
+ XTSMGRAPHICS queries wrapped in tmux's `\ePtmux;…\e\\` passthrough envelope,
33
+ so the **outer** terminal answers — a positive reply is genuine end-to-end
34
+ evidence, not tmux's unreliable self-report. screen/zellij (no passthrough
35
+ envelope) stay suppressed.
36
+ - Sixel render output (pet frames + inline images) is wrapped in the same
37
+ passthrough envelope under tmux.
38
+ - SKC-launched tmux sessions set `allow-passthrough on` (pane-scoped, quiet on
39
+ tmux < 3.3) automatically.
40
+ - Probe-gated and safe: terminals that do not actually render sixel through
41
+ tmux (e.g. Ghostty, which uses the kitty protocol and has no sixel) never
42
+ activate it, so no garbage escapes are emitted. Set `SKC_SIXEL_MULTIPLEXER=0`
43
+ to force the pre-0.4.5 behavior (graphics off under tmux).
44
+
8
45
  ## [0.4.4] — 2026-07-22
9
46
 
10
47
  ### Fixed (workflow arbitration native)
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",
4
+ "version": "0.4.6",
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.4",
56
- "@sayknow-cli/agent-core": "0.4.4",
57
- "@sayknow-cli/ai": "0.4.4",
58
- "@sayknow-cli/natives": "0.4.4",
59
- "@sayknow-cli/tui": "0.4.4",
60
- "@sayknow-cli/utils": "0.4.4",
55
+ "@sayknow-cli/stats": "0.4.6",
56
+ "@sayknow-cli/agent-core": "0.4.6",
57
+ "@sayknow-cli/ai": "0.4.6",
58
+ "@sayknow-cli/natives": "0.4.6",
59
+ "@sayknow-cli/tui": "0.4.6",
60
+ "@sayknow-cli/utils": "0.4.6",
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"],