pmx-canvas 0.4.0 → 0.4.1

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
@@ -3,6 +3,28 @@
3
3
  All notable changes to `pmx-canvas` are documented here. This project follows
4
4
  [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [0.4.1] - 2026-08-04
7
+
8
+ ### Added
9
+
10
+ - Iframe-backed nodes (HTML, graph, json-render, MCP apps) now render inside
11
+ nested-iframe hosts like Amp orb portals: the canvas probes at boot whether
12
+ the embedding context loads iframe `src` URLs at all, and falls back to
13
+ fetching same-origin surfaces and rendering them inline via `srcdoc` when it
14
+ does not. Force a mode with `/workbench?iframe-mode=srcdoc` (or `=src`).
15
+
16
+ ### Fixed
17
+
18
+ - Ext-app nodes now survive a daemon restart without a full panel reload
19
+ (Finding S): the browser revalidates its frame-document URLs on every
20
+ reconnect and automatically re-mints them against the new server process
21
+ when they have gone stale.
22
+ - Best-effort mitigation for residual black ext-app tiles in WebKit host
23
+ panels (Finding N): after an app finishes booting, the canvas briefly nudges
24
+ the iframe's layout size so WebKit must re-rasterize the frame — the same
25
+ mechanism as the manual enlarge-then-close unstick, without the reload. The
26
+ nudge is recorded as `repaint-nudge` in the ext-app recovery trail.
27
+
6
28
  ## [0.4.0] - 2026-08-04
7
29
 
8
30
  ### Breaking
@@ -2831,6 +2853,7 @@ otherwise have to discover by trial and error.
2831
2853
  - Regression coverage for snapshot flat-`id` aliases on both MCP and
2832
2854
  HTTP surfaces, plus async / top-level-`await` WebView script bodies.
2833
2855
 
2856
+ [0.4.1]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.1
2834
2857
  [0.4.0]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.0
2835
2858
  [0.3.4]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.3.4
2836
2859
  [0.3.3]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.3.3
package/Readme.md CHANGED
@@ -144,10 +144,15 @@ surfaces (the core never imports a host SDK).
144
144
  built-in browser pane alongside the PMX MCP server, same zero-adapter recipe
145
145
  as Codex: open `http://localhost:4313/workbench` in the app's browser and the
146
146
  live board, pins, and Ghost Cursor all work in-panel.
147
- - **Amp orb portals** (and other buffering proxies) — the canvas detects when
148
- the live event stream is being buffered by the proxy and automatically
149
- switches to a polling transport, so the board boots and stays live through
150
- the portal with no proxy shims (`/workbench?transport=poll` forces it).
147
+ - **Amp orb portals** (and other buffering proxies / nested-iframe embeds) —
148
+ the canvas detects when the live event stream is being buffered by the proxy
149
+ and automatically switches to a polling transport, so the board boots and
150
+ stays live through the portal with no proxy shims
151
+ (`/workbench?transport=poll` forces it). It also detects when the nested
152
+ iframe embed blocks `src`-URL iframes entirely and renders HTML, graph,
153
+ json-render, and app surfaces inline via `srcdoc` instead
154
+ (`?iframe-mode=srcdoc` forces it), so iframe-backed nodes work in the portal
155
+ too.
151
156
 
152
157
  The contract is host-agnostic, so a new host plugs in the same way: map its
153
158
  hooks, canvas, and session APIs onto PMX's AX primitives — no core changes.