pmx-canvas 0.1.1 → 0.1.2
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 +69 -0
- package/dist/canvas/index.js +53 -53
- package/dist/types/client/nodes/ExtAppFrame.d.ts +1 -1
- package/dist/types/server/bundled-skills.d.ts +40 -0
- package/dist/types/shared/ext-app-tool-result.d.ts +12 -0
- package/package.json +1 -1
- package/src/cli/index.ts +19 -1
- package/src/client/nodes/ExtAppFrame.tsx +91 -17
- package/src/mcp/server.ts +64 -1
- package/src/server/bundled-skills.ts +143 -0
- package/src/server/canvas-operations.ts +22 -3
- package/src/server/server.ts +20 -13
- package/src/server/web-artifacts.ts +40 -2
- package/src/shared/ext-app-tool-result.ts +25 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,75 @@
|
|
|
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.2] - 2026-04-24
|
|
7
|
+
|
|
8
|
+
Follow-up to 0.1.1 driven by fresh-install review feedback. Two validation /
|
|
9
|
+
UX bugs, one long-tail stability fix in the MCP App host, plus new agent
|
|
10
|
+
ergonomics (version flag, skill discovery).
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`pmx-canvas --version` / `-v`.** Prints the installed package version and
|
|
15
|
+
exits. Version is read from the sibling `package.json` so it stays accurate
|
|
16
|
+
whether the CLI is invoked via `bunx`, a global npm install, or a repo-local
|
|
17
|
+
`bun run` — no hard-coded string, no build step required.
|
|
18
|
+
- **`canvas://skills` MCP resource.** Agent skills bundled with the npm install
|
|
19
|
+
(`skills/<name>/SKILL.md`) are now discoverable through MCP. The `canvas://skills`
|
|
20
|
+
resource returns a JSON index (name, description, per-skill URI), and each
|
|
21
|
+
skill is addressable individually at `canvas://skills/<name>`. The
|
|
22
|
+
`canvas_build_web_artifact` tool description now explicitly points agents at
|
|
23
|
+
`canvas://skills/web-artifacts-builder` for the full workflow, stack choices,
|
|
24
|
+
and anti-slop design guidelines.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **`image` node no longer accepts non-image file paths.** Creating an image
|
|
29
|
+
node with a path like `report.pptx` previously stored the path silently
|
|
30
|
+
with no `mimeType`; the server now rejects the request with a 400 and a
|
|
31
|
+
helpful message listing the accepted extensions (png, jpg, jpeg, gif, svg,
|
|
32
|
+
webp, bmp, avif, ico). `data:` URIs are validated against `image/*` media
|
|
33
|
+
types. Use `type="file"` or `type="webpage"` for non-image sources.
|
|
34
|
+
- **`web-artifact` init is more resilient on machines with tight process
|
|
35
|
+
limits.** `init-artifact.sh` and `bundle-artifact.sh` now spawn in their
|
|
36
|
+
own POSIX process group so timeouts and failures kill every descendant
|
|
37
|
+
(pnpm, bun, parcel, swc, lmdb) instead of leaving orphans that accumulate
|
|
38
|
+
FDs and eventually produce `fork: Resource temporarily unavailable`. pnpm's
|
|
39
|
+
internal child concurrency is capped to 2 via
|
|
40
|
+
`pnpm_config_child_concurrency` so the ~30-package shadcn install doesn't
|
|
41
|
+
blow past macOS's default `ulimit -u`. Failure responses now include the
|
|
42
|
+
last 20 lines of stderr (falling back to stdout) so the cause of an exit
|
|
43
|
+
code is visible directly in the API response rather than requiring a manual
|
|
44
|
+
re-run of the shell script.
|
|
45
|
+
- **MCP App (`mcp-app` / Excalidraw) state sync.** Edits saved by an MCP App
|
|
46
|
+
widget now propagate via SSE to other clients hosting the same app node
|
|
47
|
+
(fixes Excalidraw losing multi-client sync). The host also suppresses
|
|
48
|
+
echo-back re-renders when a layout update mints a new `toolResult`
|
|
49
|
+
reference with unchanged content — so a widget's own `callServerTool` call
|
|
50
|
+
no longer causes its UI to re-render mid-interaction.
|
|
51
|
+
- **MCP App inline-mode click safety.** The ext-app iframe in inline mode is
|
|
52
|
+
now covered by a transparent `ext-app-preview-catcher` overlay that opens
|
|
53
|
+
the fullscreen view on click, rather than letting stray canvas clicks
|
|
54
|
+
reach the widget. Agents / users interact with widgets in the expanded
|
|
55
|
+
overlay (via MCP tools or direct click); inline mode stays a safe
|
|
56
|
+
preview.
|
|
57
|
+
|
|
58
|
+
### Internal
|
|
59
|
+
|
|
60
|
+
- New unit tests: `image` node validation (accepted extensions, URL + data
|
|
61
|
+
URI paths, rejected non-image extensions, rejected non-image data URIs)
|
|
62
|
+
and `canvas://skills` discovery (loader resolves the packaged skills
|
|
63
|
+
directory, index is stable-sorted, individual skill contents resolve,
|
|
64
|
+
unknown names return null).
|
|
65
|
+
- Shared `extAppToolResultsMatch` helper in `src/shared/ext-app-tool-result.ts`
|
|
66
|
+
for structural equality between `CallToolResult` values, used by the host
|
|
67
|
+
ExtAppFrame to dedupe SSE-delivered tool results.
|
|
68
|
+
- E2E: Counter-fixture test updated for the new expand-to-interact
|
|
69
|
+
interaction model (opens the `.ext-app-preview-catcher` overlay, finds
|
|
70
|
+
the iframe in `.expanded-overlay-panel`, force-clicks the in-widget button
|
|
71
|
+
to tolerate the widget's auto-resize settling).
|
|
72
|
+
|
|
73
|
+
[0.1.2]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.2
|
|
74
|
+
|
|
6
75
|
## [0.1.1] - 2026-04-24
|
|
7
76
|
|
|
8
77
|
### Changed
|