pmx-canvas 0.2.4 → 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 +32 -0
- package/dist/canvas/index.js +56 -56
- package/dist/types/client/nodes/ExtAppFrame.d.ts +10 -0
- package/package.json +1 -1
- package/skills/pmx-canvas/SKILL.md +7 -0
- package/skills/pmx-canvas/references/full-reference.md +2 -1
- package/src/client/nodes/ExtAppFrame.tsx +37 -0
- package/src/server/intent-registry.ts +16 -0
- package/src/server/operations/ops/intent.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,37 @@ 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
|
+
|
|
8
39
|
## [0.2.4] - 2026-06-24
|
|
9
40
|
|
|
10
41
|
### Fixed
|
|
@@ -2417,6 +2448,7 @@ otherwise have to discover by trial and error.
|
|
|
2417
2448
|
- Regression coverage for snapshot flat-`id` aliases on both MCP and
|
|
2418
2449
|
HTTP surfaces, plus async / top-level-`await` WebView script bodies.
|
|
2419
2450
|
|
|
2451
|
+
[0.2.5]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.5
|
|
2420
2452
|
[0.2.4]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.4
|
|
2421
2453
|
[0.2.3]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.3
|
|
2422
2454
|
[0.2.2]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.2.2
|