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 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