pmx-canvas 0.6.4 → 0.6.5

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.
Files changed (78) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/Readme.md +7 -1
  3. package/dist/canvas/global.css +58 -4
  4. package/dist/canvas/index.js +92 -92
  5. package/dist/canvas/mermaid-entry.js +258 -258
  6. package/dist/types/cli/agent.d.ts +1 -0
  7. package/dist/types/cli/commands/record.d.ts +12 -0
  8. package/dist/types/client/canvas/Presentation.d.ts +13 -0
  9. package/dist/types/client/canvas/use-node-drag.d.ts +2 -1
  10. package/dist/types/client/nodes/McpAppNode.d.ts +24 -1
  11. package/dist/types/client/state/presentation.d.ts +3 -0
  12. package/dist/types/client/types.d.ts +1 -1
  13. package/dist/types/json-render/catalog.d.ts +2 -2
  14. package/dist/types/json-render/server.d.ts +2 -0
  15. package/dist/types/server/canvas-db.d.ts +2 -0
  16. package/dist/types/server/canvas-operations.d.ts +22 -0
  17. package/dist/types/server/canvas-schema.d.ts +1 -0
  18. package/dist/types/server/canvas-state.d.ts +6 -0
  19. package/dist/types/server/canvas-validation.d.ts +3 -0
  20. package/dist/types/server/html-surface.d.ts +1 -1
  21. package/dist/types/server/index.d.ts +4 -0
  22. package/dist/types/server/operations/ops/app.d.ts +2 -0
  23. package/dist/types/server/operations/ops/json-render.d.ts +2 -0
  24. package/dist/types/server/operations/ops/nodes.d.ts +3 -1
  25. package/dist/types/server/web-artifacts.d.ts +3 -0
  26. package/dist/types/shared/tour.d.ts +72 -0
  27. package/docs/cli.md +89 -0
  28. package/docs/http-api.md +79 -4
  29. package/docs/mcp.md +25 -1
  30. package/docs/node-types.md +80 -0
  31. package/package.json +1 -1
  32. package/skills/pmx-canvas/SKILL.md +10 -2
  33. package/skills/pmx-canvas/references/full-reference.md +1 -1
  34. package/skills/pmx-canvas/references/installing-pmx-canvas.md +4 -4
  35. package/src/cli/agent.ts +5 -0
  36. package/src/cli/commands/nodes.ts +10 -0
  37. package/src/cli/commands/record.ts +218 -0
  38. package/src/cli/index.ts +2 -0
  39. package/src/client/App.tsx +7 -1
  40. package/src/client/canvas/AgentPresenceLayer.tsx +1 -1
  41. package/src/client/canvas/CanvasNode.tsx +8 -0
  42. package/src/client/canvas/IntentLayer.tsx +9 -2
  43. package/src/client/canvas/Presentation.tsx +108 -0
  44. package/src/client/canvas/TopBar.tsx +28 -2
  45. package/src/client/canvas/use-node-drag.ts +8 -3
  46. package/src/client/mermaid-entry.ts +39 -0
  47. package/src/client/nodes/HtmlNode.tsx +12 -13
  48. package/src/client/nodes/McpAppNode.tsx +105 -13
  49. package/src/client/nodes/MermaidNode.tsx +3 -2
  50. package/src/client/state/intent-store.ts +5 -1
  51. package/src/client/state/presentation.ts +7 -0
  52. package/src/client/state/session-store.ts +3 -0
  53. package/src/client/state/sse-bridge.ts +3 -0
  54. package/src/client/theme/global.css +58 -4
  55. package/src/json-render/server.ts +29 -0
  56. package/src/server/agent-presence.ts +15 -9
  57. package/src/server/canvas-db.ts +15 -0
  58. package/src/server/canvas-operations.ts +115 -22
  59. package/src/server/canvas-schema.ts +10 -0
  60. package/src/server/canvas-state.ts +39 -4
  61. package/src/server/canvas-validation.ts +9 -1
  62. package/src/server/demo-state.json +11 -7
  63. package/src/server/html-primitives.ts +199 -91
  64. package/src/server/html-surface.ts +8 -3
  65. package/src/server/index.ts +12 -0
  66. package/src/server/operations/composites.ts +3 -1
  67. package/src/server/operations/ops/app.ts +10 -0
  68. package/src/server/operations/ops/batch.ts +12 -3
  69. package/src/server/operations/ops/groups.ts +14 -7
  70. package/src/server/operations/ops/json-render.ts +37 -5
  71. package/src/server/operations/ops/nodes.ts +42 -16
  72. package/src/server/operations/ops/viewport.ts +32 -0
  73. package/src/server/operations/registry.ts +6 -0
  74. package/src/server/scope-fence.ts +1 -1
  75. package/src/server/server.ts +9 -6
  76. package/src/server/web-artifacts.ts +9 -2
  77. package/src/server/workboard.ts +3 -3
  78. package/src/shared/tour.ts +87 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
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.6.5] - 2026-09-26
7
+
8
+ ### Added
9
+
10
+ - Present saved board tours or derive stops from groups, with keyboard navigation and optional local PNG/MP4 capture using the same camera path.
11
+ - Creation responses report requested and applied sizes, including group fitting, across HTTP, MCP, and batches.
12
+ - JSON-render warns when unbound form values would be ignored.
13
+
14
+ ### Fixed
15
+
16
+ - Workboards use equal-width columns across narrow and wide frames.
17
+ - Embedded HTML and JSON-render updates keep the previous frame visible until the replacement is ready.
18
+ - Explicitly empty HTML primitive fields omit their sections instead of inserting example content.
19
+ - Mermaid diagrams fit overflowing content without enlarging small diagrams; authored sizes and optional natural scrolling are preserved.
20
+ - Titlebar clicks select nodes without adding a selection after a drag.
21
+ - Detached agents expire promptly, workers roll up under their parent, and camera operations no longer claim writer activity.
22
+ - Unchanged and worker sessions do not replace useful receipts or reopen the panel.
23
+ - Ghosts finish their rendered settle animation before removal, and tour-only changes create distinct snapshots.
24
+
6
25
  ## [0.6.4] - 2026-09-24
7
26
 
8
27
  ### Added
package/Readme.md CHANGED
@@ -18,6 +18,12 @@ structured panel into place as they generate it — not as a separate tooling
18
18
  project. Pin what matters and the agent reads your spatial curation as
19
19
  structured context.
20
20
 
21
+ **The board is the presentation.** Click **Present** to step through a saved tour
22
+ (or groups in reading order), with chrome hidden and smooth camera moves.
23
+ Optionally capture that same tour with
24
+ `pmx-canvas record --mode deterministic --present --output tour.mp4`. See the
25
+ [tour model and CLI walkthrough](docs/cli.md#tour-and-presentation).
26
+
21
27
  <p align="center">
22
28
  <img src="docs/screenshots/workbench-live-dark.png" alt="Live multi-agent workbench — dark theme: two agents on the board, review cards, an architecture diagram, and the writers pill" width="49%" />
23
29
  <img src="docs/screenshots/workbench-live-light.png" alt="Live multi-agent workbench — light theme" width="49%" />
@@ -372,7 +378,7 @@ services:
372
378
  ```bash
373
379
  # .agents/setup — install the CLI (pin the exact version: a fresh orb running
374
380
  # @latest can silently pick up a newer release than the one you validated)
375
- npm install -g pmx-canvas@0.6.4
381
+ npm install -g pmx-canvas@0.6.5
376
382
  ```
377
383
 
378
384
  The server binds the portal-assigned `$PORT` automatically (gated on the
@@ -1210,13 +1210,13 @@ body,
1210
1210
  font-size: 9px;
1211
1211
  padding: 1px 6px;
1212
1212
  }
1213
- /* Idle cursors leave the board (user feedback, 0.5.1 cycle): with many agents
1213
+ /* Parked idle cursors leave the board (user feedback, 0.5.1 cycle): with many agents
1214
1214
  attached, a wall of parked "Idle" pills covers real node content. The
1215
1215
  element stays MOUNTED — counts, twin-merge, and cursor-follow logic are
1216
1216
  untouched, and visibility (not display) keeps its layout box so position
1217
- polls still resolve — but it paints nothing; any non-idle phase fades it
1218
- back in. Placed after .is-worker so opacity: 0 wins that collision. */
1219
- .agent-cursor.phase-idle {
1217
+ polls still resolve — but it paints nothing. An explicitly reported cursor
1218
+ remains visible even while idle so cursor-only movement cannot disappear. */
1219
+ .agent-cursor.phase-idle:not(.has-explicit-cursor) {
1220
1220
  opacity: 0;
1221
1221
  visibility: hidden;
1222
1222
  transition:
@@ -4211,6 +4211,33 @@ html.is-node-resizing .ext-app-preview-catcher {
4211
4211
  }
4212
4212
 
4213
4213
  /* MCP app iframe */
4214
+ .mcp-app-frame-stack {
4215
+ position: relative;
4216
+ flex: 1;
4217
+ min-width: 0;
4218
+ min-height: 0;
4219
+ background: var(--c-panel-soft);
4220
+ overflow: hidden;
4221
+ border-radius: 0 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px);
4222
+ }
4223
+
4224
+ .mcp-app-frame-stack:has(.html-node-frame) {
4225
+ width: 100%;
4226
+ height: 100%;
4227
+ min-height: 300px;
4228
+ background: var(--c-bg);
4229
+ border-radius: 6px;
4230
+ }
4231
+
4232
+ .mcp-app-frame-stack:has(.html-node-frame-presentation) {
4233
+ min-height: 0;
4234
+ border-radius: 0;
4235
+ }
4236
+
4237
+ .mcp-app-frame-stack:has(.html-node-frame-expanded) {
4238
+ min-height: 70vh;
4239
+ }
4240
+
4214
4241
  .mcp-app-frame {
4215
4242
  width: 100%;
4216
4243
  height: 100%;
@@ -6808,3 +6835,30 @@ html.is-node-dragging .intent-ghost,
6808
6835
  html.is-node-dragging .intent-line-layer {
6809
6836
  opacity: 0.5;
6810
6837
  }
6838
+
6839
+ .present-button {
6840
+ color: var(--c-text);
6841
+ background: var(--c-bg);
6842
+ border: 1px solid var(--c-line);
6843
+ border-radius: 6px;
6844
+ padding: 4px 12px;
6845
+ cursor: pointer;
6846
+ }
6847
+ .is-presenting > :not(.app-main):not(.presentation-error),
6848
+ .is-presenting .app-main > :not(.canvas-region),
6849
+ .is-presenting .canvas-region > :not(.canvas-viewport) {
6850
+ display: none !important;
6851
+ }
6852
+ .is-presenting .canvas-viewport { pointer-events: none; }
6853
+ .presentation-error {
6854
+ position: fixed;
6855
+ bottom: 16px;
6856
+ left: 16px;
6857
+ z-index: 100;
6858
+ max-width: calc(100% - 32px);
6859
+ padding: 10px 16px;
6860
+ border: 1px solid var(--c-line);
6861
+ border-radius: 6px;
6862
+ background: var(--c-panel);
6863
+ color: var(--c-text);
6864
+ }