pmx-canvas 0.2.3 → 0.2.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,66 @@ All notable changes to `pmx-canvas` are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.5] - 2026-06-24
9
+
10
+ ### Fixed
11
+
12
+ - **A vetoed-via-`update` intent now blocks its linked settle (report #C, 0.2.4).**
13
+ `canvas_intent { action: "update", vetoed: true }` dissolved the ghost visually but did not
14
+ record the veto, so a subsequently linked `canvas_node` settle still landed — only
15
+ `action: "clear"` was authoritative. `IntentRegistry.update` now treats `vetoed: true` as a veto
16
+ (poisons the intent id + emits the `ax-intent-clear` dissolve), so a later linked commit is
17
+ rejected with `Intent "<id>" was vetoed`, matching `clear { vetoed: true }`. Applies across
18
+ HTTP, MCP (`canvas_intent`), and the SDK (`updateIntent`); `vetoed` is now an advertised field
19
+ on the update op.
20
+ - **Mitigated the WebKit ext-app black-tile paint race on board load (report Finding F, 0.2.4).**
21
+ A hosted ext-app (Excalidraw) node already on the board when a WebKit host panel loads (e.g. the
22
+ GitHub Copilot app's WKWebView) could come up as a black tile — a host paint race on the
23
+ doubly-nested iframe, healthy server-side, clean in Chrome / the Codex browser / on live-created
24
+ nodes. `ExtAppFrame` now forces one iframe remount on mount **only under a WebKit-only host**
25
+ (Safari/WKWebView; Blink — Chrome/Edge/Codex — and Gecko are a strict no-op), replicating the
26
+ deterministic expand+close recovery so present-at-load nodes repaint without manual interaction.
27
+ Expand-then-close or a normal browser remains the fallback; the durable fix is upstream in the
28
+ host panel.
29
+
30
+ ### Docs
31
+
32
+ - **Corrected the `canvas_webview status` field names in the reference (report Finding D, 0.2.4).**
33
+ The status response is `{ supported, active, headlessOnly, url, backend, width, height,
34
+ dataStoreDir, startedAt, lastError }` — the viewport size is `width` / `height`, not
35
+ `viewportWidth` / `viewportHeight`.
36
+ - **Added a WebKit ext-app black-tile host caveat to the skill** so agents don't misdiagnose a
37
+ healthy app session as a broken node (Finding F).
38
+
39
+ ## [0.2.4] - 2026-06-24
40
+
41
+ ### Fixed
42
+
43
+ - **`canvas_ax_delivery` claim can surface the newest steering first (report #68).** The
44
+ delivery claim (`canvas_claim_ax_delivery` / `GET /api/canvas/ax/delivery/pending` / CLI
45
+ `ax delivery list`) defaults to oldest-first FIFO for ordered processing, but on a
46
+ long-lived board with stale undelivered steering an agent claiming with a small `limit`
47
+ could process old leftovers and miss the human's latest in-canvas action. A new `order`
48
+ parameter (`"oldest"` default, `"newest"`) lets an adapter claim newest-first so a fresh
49
+ browser-originated steer is never buried behind the backlog. Additive — the default FIFO
50
+ order, wire shape, and the compact `canvas://ax-context` newest-first lead block are all
51
+ unchanged.
52
+ - **CLI `ax` commands honor `--source` (report #69).** `pmx-canvas ax focus … --source codex`
53
+ (and the other `ax` subcommands that record a source — `steer`, `event add`, `interaction`,
54
+ `work`, `approval`, `review`, `evidence`, `elicitation`, `mode`, `command`, `policy`) now
55
+ persist the given source instead of always recording `cli`, so an adapterless agent using
56
+ the CLI as a fallback transport attributes its actions correctly (keeping AX loop-safety
57
+ accurate). The flag defaults to `cli` when omitted — unchanged for existing usage.
58
+
59
+ ### Docs
60
+
61
+ - **Ghost Cursor skill guidance: default-on, with concrete use/skip + settle scope.** The
62
+ bundled `pmx-canvas` skill now frames proactive `canvas_intent` signalling as the default
63
+ before meaningful spatial mutations, with explicit use-vs-skip lists and a one-ghost-per-
64
+ human-meaningful-move rule for batches. It also documents that linked settle is scoped to
65
+ node / edge / group mutations — `canvas_app` (diagram / mcp-app) and `canvas_webview`
66
+ reject an `intentId` (HTTP 400), so signal a ghost, then clear it and open without one.
67
+
8
68
  ## [0.2.3] - 2026-06-23
9
69
 
10
70
  ### Fixed
@@ -2388,6 +2448,8 @@ otherwise have to discover by trial and error.
2388
2448
  - Regression coverage for snapshot flat-`id` aliases on both MCP and
2389
2449
  HTTP surfaces, plus async / top-level-`await` WebView script bodies.
2390
2450
 
2451
+ [0.2.5]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.5
2452
+ [0.2.4]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.4
2391
2453
  [0.2.3]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.3
2392
2454
  [0.2.2]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.2
2393
2455
  [0.2.1]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.1