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 +59 -0
- package/dist/canvas/index.js +47 -47
- package/dist/types/client/nodes/ContextNode.d.ts +11 -2
- package/dist/types/client/nodes/StatusNode.d.ts +1 -0
- package/dist/types/client/state/canvas-store.d.ts +6 -2
- package/dist/types/client/state/intent-bridge.d.ts +2 -0
- package/package.json +1 -1
- package/src/client/canvas/ContextPinBar.tsx +2 -1
- package/src/client/canvas/DockedNode.tsx +4 -3
- package/src/client/nodes/ContextNode.tsx +128 -6
- package/src/client/nodes/StatusNode.tsx +16 -1
- package/src/client/nodes/StatusSummary.tsx +2 -1
- package/src/client/state/canvas-store.ts +13 -5
- package/src/client/state/intent-bridge.ts +5 -1
- package/src/client/state/sse-bridge.ts +1 -1
- package/src/server/server.ts +24 -1
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
|