pmx-canvas 0.1.15 → 0.1.16

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,64 @@
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.16] - 2026-05-04
7
+
8
+ Live-context-dock and undo-history hygiene pass on top of 0.1.15. The
9
+ context dock now renders the actual pinned nodes instead of falling back
10
+ to stale context-card data, auto-focus from ext-app opens stops
11
+ polluting undo history, and a couple of HTTP endpoints reject malformed
12
+ payloads instead of creating blank or empty nodes.
13
+
14
+ ### Added
15
+
16
+ - **`ContextNode` renders the active pinned nodes.** A new exported
17
+ `normalizePinnedContextDisplay()` produces a stable `{id, title,
18
+ summary, kind, path}` shape per pinned node, and the component now
19
+ takes a `pinnedNodes` prop. The dock falls back to the previous
20
+ context-card data only when no nodes are pinned, so what the agent
21
+ reads via `canvas://pinned-context` and what the human sees in the
22
+ dock are now the same view.
23
+ - **`StatusNode` exposes `getStatusDisplayPhase()` with a documented
24
+ fallback chain.** The display phase falls back `phase → content
25
+ → status → 'idle'` and is shared by the inline node, the summary,
26
+ and any consumer that needs the phase shown to the user.
27
+
28
+ ### Changed
29
+
30
+ - **`ContextPinBar` is mutually exclusive with the Updates panel.**
31
+ Like the docked context node, the floating pin bar now hides while
32
+ the right-edge attention history panel is open so the two surfaces
33
+ no longer collide on the same anchor.
34
+ - **Browser-driven viewport updates support `recordHistory: false`.**
35
+ Client `focusNode(id, options)` and the matching
36
+ `commitViewportWithOptions()` thread an optional
37
+ `{ recordHistory: false }` flag through to `POST
38
+ /api/canvas/viewport`, which now wraps the mutation in
39
+ `withSuppressedRecording` when the flag is set. Auto-focus
40
+ triggered by ext-app opens uses this path so opening an external
41
+ app no longer fills undo history with viewport churn.
42
+
43
+ ### Fixed
44
+
45
+ - **HTML nodes reject non-string `html` payloads.** `POST
46
+ /api/canvas/node` and the matching MCP path now return a 400
47
+ with a clear error when an html node is created with `html` (or
48
+ `data.html`) set to a non-string value, instead of accepting the
49
+ payload and producing a blank node.
50
+ - **Group creation rejects missing child IDs.** `POST
51
+ /api/canvas/group` (and `canvas_create_group`) no longer silently
52
+ creates an empty group when one or more of the requested children
53
+ do not exist; it returns a 400 listing the missing IDs.
54
+
55
+ ### Internal
56
+
57
+ - Regression coverage for: client status-node display-phase fallback,
58
+ ext-app auto-focus history suppression on the client side, the
59
+ context dock rendering pinned nodes (e2e), HTML-node payload type
60
+ validation over HTTP, group-create child-presence validation over
61
+ HTTP, and the `recordHistory: false` flag on the viewport
62
+ endpoint.
63
+
6
64
  ## [0.1.15] - 2026-05-03
7
65
 
8
66
  A bigger release focused on right-sizing what flows through MCP and the
@@ -605,6 +663,7 @@ otherwise have to discover by trial and error.
605
663
  - Regression coverage for snapshot flat-`id` aliases on both MCP and
606
664
  HTTP surfaces, plus async / top-level-`await` WebView script bodies.
607
665
 
666
+ [0.1.16]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.16
608
667
  [0.1.15]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.15
609
668
  [0.1.14]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.14
610
669
  [0.1.13]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.1.13