pmx-canvas 0.2.4 → 0.2.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,77 @@ All notable changes to `pmx-canvas` are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.6] - 2026-06-25
9
+
10
+ ### Fixed
11
+
12
+ - **WebKit ext-app black tile — single-app cold hydration now repaints (report Finding F, 0.2.5
13
+ reopened).** Reproduced locally for the first time in Bun's headless `webkit` WebView (A/B/A:
14
+ a node painted live, then black after a `webview stop`/`start` so it was present at cold load).
15
+ The mcp-app shell loads blank and the app draws its content *after* load (over the bridge); under
16
+ a cold-hydration burst WebKit fails to composite that late draw, so the layer stays black (clean
17
+ in Blink, and clean for a node created live into an idle panel). A parent-side transform/src nudge
18
+ does not repair a black layer — only a full remount (new iframe + bridge re-init, what expand+close
19
+ does) does, and only when it lands in an idle moment. Replaced the 0.2.4 fire-on-mount remount with
20
+ a post-boot (`ready` for empty apps, `done` after replayed tool output for restored apps),
21
+ **serialized** WebKit-only remount so each ext-app repaints into a progressively-quieter panel,
22
+ with the one-shot timer cleared only on unmount. This reliably repaints a **single**
23
+ present-at-load ext-app (verified by screenshot). A board with **several** ext-apps present at
24
+ WebKit panel-load can still black out (the simultaneous compositing burst is a host limit) —
25
+ expand-then-close or Chrome remains the fallback, and the skill caveat states this accurately.
26
+ Strict no-op in Blink/Gecko
27
+ (Chrome/Codex/Playwright unaffected). (The `.mcp-app-frame` GPU-layer class was evaluated and
28
+ rejected: its `translateZ(0)` stacking context breaks the AX emit→ack round-trip in the expanded
29
+ ext-app overlay.)
30
+
31
+ ### Docs
32
+
33
+ - **Aligned the `color` contract to the runtime (report Finding H, 0.2.5).** `color` is honored only
34
+ on **group** (frame accent) and **graph** nodes; a top-level `color` on `markdown` / `status` /
35
+ `context` is ignored over both HTTP and CLI. The reference no longer implies basic nodes take a
36
+ `color` param — their meaning comes from node type/value (a `status` node color-codes from its
37
+ content). Group the nodes and color the group to tint a region.
38
+ - **Added an MCP wrong-workspace-split caveat to Workspace Safety (report Finding I).** An
39
+ `pmx-canvas --mcp` server binds a fallback port adopting its own launch `cwd` as the workspace if
40
+ its preferred port is taken by another workspace, so its writes land on a daemon the panel never
41
+ renders. Verify the MCP server's workspace before trusting its state; pin `cwd=<project>` or
42
+ `PMX_CANVAS_PORT`, or prefer the CLI's query/mutation commands (which never spawn a server) for
43
+ automation loops.
44
+ - **Finding G (chrome WebView `start` timeout) is environment-specific, not a 0.2.5 regression.** No
45
+ 0.2.5 source touched the WebView/automation path; the chrome backend starts cleanly locally and in
46
+ the Codex retest. It timed out only in the Copilot-hosted pass — track as a host/environment issue.
47
+
48
+ ## [0.2.5] - 2026-06-24
49
+
50
+ ### Fixed
51
+
52
+ - **A vetoed-via-`update` intent now blocks its linked settle (report #C, 0.2.4).**
53
+ `canvas_intent { action: "update", vetoed: true }` dissolved the ghost visually but did not
54
+ record the veto, so a subsequently linked `canvas_node` settle still landed — only
55
+ `action: "clear"` was authoritative. `IntentRegistry.update` now treats `vetoed: true` as a veto
56
+ (poisons the intent id + emits the `ax-intent-clear` dissolve), so a later linked commit is
57
+ rejected with `Intent "<id>" was vetoed`, matching `clear { vetoed: true }`. Applies across
58
+ HTTP, MCP (`canvas_intent`), and the SDK (`updateIntent`); `vetoed` is now an advertised field
59
+ on the update op.
60
+ - **Mitigated the WebKit ext-app black-tile paint race on board load (report Finding F, 0.2.4).**
61
+ A hosted ext-app (Excalidraw) node already on the board when a WebKit host panel loads (e.g. the
62
+ GitHub Copilot app's WKWebView) could come up as a black tile — a host paint race on the
63
+ doubly-nested iframe, healthy server-side, clean in Chrome / the Codex browser / on live-created
64
+ nodes. `ExtAppFrame` now forces one iframe remount on mount **only under a WebKit-only host**
65
+ (Safari/WKWebView; Blink — Chrome/Edge/Codex — and Gecko are a strict no-op), replicating the
66
+ deterministic expand+close recovery so present-at-load nodes repaint without manual interaction.
67
+ Expand-then-close or a normal browser remains the fallback; the durable fix is upstream in the
68
+ host panel.
69
+
70
+ ### Docs
71
+
72
+ - **Corrected the `canvas_webview status` field names in the reference (report Finding D, 0.2.4).**
73
+ The status response is `{ supported, active, headlessOnly, url, backend, width, height,
74
+ dataStoreDir, startedAt, lastError }` — the viewport size is `width` / `height`, not
75
+ `viewportWidth` / `viewportHeight`.
76
+ - **Added a WebKit ext-app black-tile host caveat to the skill** so agents don't misdiagnose a
77
+ healthy app session as a broken node (Finding F).
78
+
8
79
  ## [0.2.4] - 2026-06-24
9
80
 
10
81
  ### Fixed
@@ -2417,6 +2488,8 @@ otherwise have to discover by trial and error.
2417
2488
  - Regression coverage for snapshot flat-`id` aliases on both MCP and
2418
2489
  HTTP surfaces, plus async / top-level-`await` WebView script bodies.
2419
2490
 
2491
+ [0.2.6]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.6
2492
+ [0.2.5]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.5
2420
2493
  [0.2.4]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.4
2421
2494
  [0.2.3]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.3
2422
2495
  [0.2.2]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.2