pmx-canvas 0.1.24 → 0.1.26
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 +95 -0
- package/dist/canvas/index.js +23 -23
- package/dist/types/client/nodes/McpAppNode.d.ts +1 -0
- package/dist/types/server/canvas-operations.d.ts +4 -0
- package/dist/types/server/canvas-state.d.ts +1 -0
- package/dist/types/server/index.d.ts +4 -0
- package/package.json +1 -1
- package/skills/pmx-canvas/SKILL.md +13 -0
- package/skills/pmx-canvas/references/codex-app-adapter.md +8 -5
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +14 -0
- package/src/client/nodes/McpAppNode.tsx +13 -1
- package/src/client/state/sse-bridge.ts +1 -1
- package/src/mcp/server.ts +4 -0
- package/src/server/canvas-operations.ts +17 -4
- package/src/server/canvas-state.ts +10 -2
- package/src/server/index.ts +27 -2
- package/src/server/mutation-history.ts +11 -0
- package/src/server/server.ts +128 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,99 @@
|
|
|
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.1.26] - 2026-06-03
|
|
7
|
+
|
|
8
|
+
Small follow-up to 0.1.25. `canvas_add_node` can now create populated
|
|
9
|
+
groups directly, the snapshot diff is available over HTTP, and the
|
|
10
|
+
packaged skill documents host-aware browser-panel etiquette.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`canvas_add_node({ type: 'group' })` creates a populated group.**
|
|
15
|
+
The generic add path (MCP and SDK) now routes `type: 'group'` to
|
|
16
|
+
`createGroup`, accepting `children` / `childIds` (node IDs to
|
|
17
|
+
enclose), an optional `childLayout` (`grid` / `column` / `flow`),
|
|
18
|
+
and a frame `color`. `canvas_create_group` remains the dedicated
|
|
19
|
+
entry point; this just removes the dead-end where `canvas_add_node`
|
|
20
|
+
produced an empty group node. Child-ID validation is inherited from
|
|
21
|
+
`createGroup` (missing / self / nested-group children rejected).
|
|
22
|
+
- **`GET /api/canvas/snapshots/diff` over HTTP.** The snapshot-vs-
|
|
23
|
+
current-layout diff that was previously MCP-only (`canvas_diff`) is
|
|
24
|
+
now reachable over HTTP at
|
|
25
|
+
`/api/canvas/snapshots/diff?name=<name|id>`, returning both the
|
|
26
|
+
structured `diff` and a `text` rendering. Missing name → 400,
|
|
27
|
+
unknown snapshot → 404.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- **Packaged skill documents host-aware browser-panel etiquette.**
|
|
32
|
+
`skills/pmx-canvas/SKILL.md` now tells agents to reuse an existing
|
|
33
|
+
native canvas panel (e.g. the GitHub Copilot `pmx-canvas` extension
|
|
34
|
+
or Codex's in-app Browser on `/workbench`) instead of opening a
|
|
35
|
+
second browser panel to the same workbench, and to open the browser
|
|
36
|
+
workbench only when no native adapter is present. It also restates
|
|
37
|
+
that only same-origin `/api/canvas/frame-documents/<id>` URLs are
|
|
38
|
+
auto-trusted — external `mcp-app` URLs show the unverified-domain
|
|
39
|
+
interstitial by design.
|
|
40
|
+
|
|
41
|
+
### Internal
|
|
42
|
+
|
|
43
|
+
- Regression coverage for: `canvas_add_node` group creation via both
|
|
44
|
+
`children` and `childIds` (MCP), and the HTTP snapshot-diff endpoint
|
|
45
|
+
returning the snapshot name in the structured diff.
|
|
46
|
+
|
|
47
|
+
## [0.1.25] - 2026-06-03
|
|
48
|
+
|
|
49
|
+
Adapter-regression cleanup on top of 0.1.24. Fixes several issues the
|
|
50
|
+
GitHub Copilot and Codex canvas adapters surfaced: effective pinned
|
|
51
|
+
state now shows up on node reads, PMX-served frame-document iframes are
|
|
52
|
+
trusted automatically, group membership is settable through the generic
|
|
53
|
+
node APIs, default node sizes were retuned, and the mutation-history
|
|
54
|
+
diff no longer reports spurious "data changed" for title/content edits.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **Node reads report effective pinned state.** `canvas_get_node` and
|
|
59
|
+
`canvas_get_layout` (and every read path) now return `pinned: true`
|
|
60
|
+
when a node is in the context-pin set, not only when its own
|
|
61
|
+
`pinned` flag is set. Adapters that key off `pinned` now see what
|
|
62
|
+
the human actually pinned.
|
|
63
|
+
- **Larger default node sizes.** Markdown nodes default to 640×420
|
|
64
|
+
(was 520×360) and `mcp-app` nodes get an explicit 960×600 default,
|
|
65
|
+
applied consistently across the HTTP create/batch path, the SDK,
|
|
66
|
+
and browser auto-placement. Larger app frames render their embedded
|
|
67
|
+
content without immediate manual resizing.
|
|
68
|
+
- **Mutation-history diff ignores title/content for "data changed".**
|
|
69
|
+
`canvas_diff` and the history timeline no longer flag a generic
|
|
70
|
+
"data changed" when only a node's `title` or `content` differs —
|
|
71
|
+
those are already reported as their own title/content changes, so
|
|
72
|
+
the data-level diff now compares the remaining fields.
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- **PMX-served frame documents are trusted automatically.** Embedded
|
|
77
|
+
`mcp-app` iframes whose source is a same-origin
|
|
78
|
+
`/api/canvas/frame-documents/<id>` URL are now treated as trusted
|
|
79
|
+
(no sandbox-escape warning), via a new
|
|
80
|
+
`isSameOriginFrameDocumentUrl()` guard that validates both the
|
|
81
|
+
origin and the path prefix. External URLs and unrelated same-origin
|
|
82
|
+
paths remain untrusted.
|
|
83
|
+
- **Group membership through the generic node APIs.** `POST
|
|
84
|
+
/api/canvas/group` and the node update path accept `children` /
|
|
85
|
+
`childIds` (or `data.children`) and persist group membership, with
|
|
86
|
+
validation that rejects missing child IDs, self-references, and
|
|
87
|
+
nested-group children. Snapshot diffs expose the resulting
|
|
88
|
+
membership.
|
|
89
|
+
|
|
90
|
+
### Internal
|
|
91
|
+
|
|
92
|
+
- Regression coverage for: frame-document trust (same-origin PMX path
|
|
93
|
+
trusted; external and unrelated same-origin paths not), generic
|
|
94
|
+
group-children APIs persisting membership and surfacing it in
|
|
95
|
+
snapshot diffs, the retuned default node sizes through CLI/HTTP/MCP,
|
|
96
|
+
effective-pinned read state, and the title/content-aware
|
|
97
|
+
mutation-history diff.
|
|
98
|
+
|
|
6
99
|
## [0.1.24] - 2026-06-03
|
|
7
100
|
|
|
8
101
|
Host-adapter and agent-experience (AX) release. Adds host-agnostic AX
|
|
@@ -1183,6 +1276,8 @@ otherwise have to discover by trial and error.
|
|
|
1183
1276
|
- Regression coverage for snapshot flat-`id` aliases on both MCP and
|
|
1184
1277
|
HTTP surfaces, plus async / top-level-`await` WebView script bodies.
|
|
1185
1278
|
|
|
1279
|
+
[0.1.26]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.26
|
|
1280
|
+
[0.1.25]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.25
|
|
1186
1281
|
[0.1.24]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.24
|
|
1187
1282
|
[0.1.23]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.23
|
|
1188
1283
|
[0.1.22]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.22
|