pmx-canvas 0.10.0 → 0.11.0
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/.github/extensions/pmx-canvas/runtime.json +1 -1
- package/.github/extensions/pmx-canvas/tools.json +246 -108
- package/CHANGELOG.md +32 -0
- package/dist/canvas/chunks/abnfDiagram-N423BO3Z-p8dtp6va.js +1 -0
- package/dist/canvas/chunks/architecture-TIHT7OUA-9tffvpsv.js +1 -0
- package/dist/canvas/chunks/architectureDiagram-T3A2C74G-5jhmxrzf.js +36 -0
- package/dist/canvas/chunks/blockDiagram-VBNYF7ZC-pw1fa9yb.js +132 -0
- package/dist/canvas/chunks/c4Diagram-5PPSVZJV-x07nq0tt.js +10 -0
- package/dist/canvas/chunks/classDiagram-JCYQIIEL-nc6g5x1r.js +1 -0
- package/dist/canvas/chunks/classDiagram-v2-OCEON4UE-0qnbpwvh.js +1 -0
- package/dist/canvas/chunks/cose-bilkent-JH36ORCC-nm39npq0.js +1 -0
- package/dist/canvas/chunks/cynefin-VYW2F7L2-ys8p46ts.js +1 -0
- package/dist/canvas/chunks/cynefinDiagram-MW4NZA55-vdxrwahz.js +62 -0
- package/dist/canvas/chunks/dagre-VZM6K2ZE-bqdm7wpd.js +4 -0
- package/dist/canvas/chunks/diagram-7IWD3JNH-gs5gpr93.js +30 -0
- package/dist/canvas/chunks/diagram-B4RE2ZJO-cgwjg47s.js +3 -0
- package/dist/canvas/chunks/diagram-LBJQPF4R-w3vahpav.js +24 -0
- package/dist/canvas/chunks/diagram-Q27KOJAE-42837z6h.js +24 -0
- package/dist/canvas/chunks/diagram-UB23O5K3-4fz83q59.js +41 -0
- package/dist/canvas/chunks/ebnfDiagram-BXEA7PRR-zphtgegj.js +1 -0
- package/dist/canvas/chunks/erDiagram-JOGREHBK-zvbbdxp4.js +85 -0
- package/dist/canvas/chunks/eventmodeling-45OFAUF4-v9q6dn4c.js +1 -0
- package/dist/canvas/chunks/flowDiagram-UKHOOZJN-yrr5z8tc.js +1 -0
- package/dist/canvas/chunks/ganttDiagram-PKOTCBZU-282jzycm.js +292 -0
- package/dist/canvas/chunks/gitGraph-TEB2WS4Q-kdwb8m0a.js +1 -0
- package/dist/canvas/chunks/gitGraphDiagram-DS77QQ5N-vqqy6p1b.js +106 -0
- package/dist/canvas/chunks/index-0rk4gp1g.js +2 -0
- package/dist/canvas/chunks/index-194m3hc3.js +2 -0
- package/dist/canvas/chunks/index-1r72hdzb.js +301 -0
- package/dist/canvas/chunks/index-353m7b0p.js +2 -0
- package/dist/canvas/chunks/index-3cy1bzwh.js +2 -0
- package/dist/canvas/chunks/index-5tv8v1hk.js +1 -0
- package/dist/canvas/chunks/index-6ceya556.js +332 -0
- package/dist/canvas/chunks/index-6qmsnxwy.js +4 -0
- package/dist/canvas/chunks/index-d3b3gqe9.js +2 -0
- package/dist/canvas/chunks/index-fjtdggjn.js +2 -0
- package/dist/canvas/chunks/index-g3pwnqeb.js +2 -0
- package/dist/canvas/chunks/index-gf4e0et4.js +2 -0
- package/dist/canvas/chunks/index-hj99nz1f.js +1 -0
- package/dist/canvas/chunks/index-nprm96xp.js +16 -0
- package/dist/canvas/chunks/index-qj8fxwsf.js +2 -0
- package/dist/canvas/chunks/index-r2fyc9w1.js +89 -0
- package/dist/canvas/chunks/index-rft2hcz5.js +2 -0
- package/dist/canvas/chunks/index-rh7nv68n.js +2 -0
- package/dist/canvas/chunks/index-s4j678gj.js +2 -0
- package/dist/canvas/chunks/index-tb1wf525.js +179 -0
- package/dist/canvas/chunks/index-vv56h019.js +2 -0
- package/dist/canvas/chunks/index-w2mra17t.js +207 -0
- package/dist/canvas/chunks/index-wgv7en21.js +232 -0
- package/dist/canvas/chunks/index-yw8h9vha.js +157 -0
- package/dist/canvas/chunks/info-DKCQHKI2-wpzs6sz3.js +1 -0
- package/dist/canvas/chunks/infoDiagram-6WML65LV-v1yvggqj.js +2 -0
- package/dist/canvas/chunks/ishikawaDiagram-WSZJBQD7-5hnq1a9p.js +70 -0
- package/dist/canvas/chunks/journeyDiagram-NVQOT4AX-zjcffveh.js +139 -0
- package/dist/canvas/chunks/kanban-definition-27J2QSJJ-dakqtfp1.js +89 -0
- package/dist/canvas/chunks/katex-dmg8k4zm.js +257 -0
- package/dist/canvas/chunks/mermaid.core-j2geswrd.js +12 -0
- package/dist/canvas/chunks/mindmap-definition-FAOFIHXS-142xhr3k.js +96 -0
- package/dist/canvas/chunks/packet-7NZHBO7P-xn439f0s.js +1 -0
- package/dist/canvas/chunks/pegDiagram-VL7TDLO6-5wvk7vsd.js +1 -0
- package/dist/canvas/chunks/pie-RZYD4A2V-0kf16rwh.js +1 -0
- package/dist/canvas/chunks/pieDiagram-7S7Q4E2Y-ztdhwycc.js +39 -0
- package/dist/canvas/chunks/quadrantDiagram-CIZ2JOQS-c5p9gmg6.js +7 -0
- package/dist/canvas/chunks/radar-I7S5WNFK-0g2pz36t.js +1 -0
- package/dist/canvas/chunks/railroad-3IZDKUUU-fcaran6j.js +1 -0
- package/dist/canvas/chunks/railroad-abnf-AHOZXSZD-wgdya41q.js +1 -0
- package/dist/canvas/chunks/railroad-ebnf-EBAXGLYW-gy07a4ka.js +1 -0
- package/dist/canvas/chunks/railroad-peg-LSFZ7HO6-ewk6wtkh.js +1 -0
- package/dist/canvas/chunks/railroadDiagram-AXF67PYL-xkmqkjwf.js +1 -0
- package/dist/canvas/chunks/requirementDiagram-LRYGKXZP-9wm2dyaw.js +84 -0
- package/dist/canvas/chunks/sankeyDiagram-W5VNT64P-2w19etgb.js +40 -0
- package/dist/canvas/chunks/sequenceDiagram-SI44F4Z6-0jn0vwmz.js +162 -0
- package/dist/canvas/chunks/sizeCapture-X5ZJPWSS-x75epwdq.js +1 -0
- package/dist/canvas/chunks/stateDiagram-OKZ733FA-schjpy6d.js +1 -0
- package/dist/canvas/chunks/stateDiagram-v2-UEYNNEHI-k8sfp2e7.js +1 -0
- package/dist/canvas/chunks/swimlanes-SLNWSIFB-gkw4xce3.js +1 -0
- package/dist/canvas/chunks/swimlanesDiagram-ULZ7WXOC-nqysw67j.js +8 -0
- package/dist/canvas/chunks/timeline-definition-Z64GVDOM-x7nkcy01.js +120 -0
- package/dist/canvas/chunks/treeView-QDETBFTQ-cesw6gp0.js +1 -0
- package/dist/canvas/chunks/treemap-6X3UGDF4-zdv4knp9.js +1 -0
- package/dist/canvas/chunks/vennDiagram-T6HMQDX7-x8dqn9yf.js +34 -0
- package/dist/canvas/chunks/wardley-OPB4EBWU-44pdddez.js +1 -0
- package/dist/canvas/chunks/wardleyDiagram-T6FBY63Y-t1j52t9r.js +78 -0
- package/dist/canvas/chunks/xychartDiagram-ELKLHX3M-38t16pme.js +7 -0
- package/dist/canvas/global.css +389 -229
- package/dist/canvas/index.js +141 -211
- package/dist/canvas/mcp-app.html +4205 -554
- package/dist/canvas/mermaid-entry.js +338 -338
- package/dist/canvas/surface-theme.css +6 -6
- package/dist/json-render/index.css +1 -1
- package/dist/json-render/index.js +49 -49
- package/dist/types/client/canvas/BarHint.d.ts +5 -3
- package/dist/types/client/canvas/CanvasNode.d.ts +0 -11
- package/dist/types/client/canvas/EdgeLayer.d.ts +1 -2
- package/dist/types/client/canvas/auto-fit.d.ts +4 -5
- package/dist/types/client/mermaid-entry.d.ts +1 -2
- package/dist/types/client/mermaid-render.d.ts +1 -0
- package/dist/types/client/nodes/BoardNode.d.ts +1 -1
- package/dist/types/client/nodes/ExtAppFrame.d.ts +7 -90
- package/dist/types/client/nodes/McpAppNode.d.ts +1 -25
- package/dist/types/client/nodes/MermaidNode.d.ts +1 -8
- package/dist/types/client/nodes/ViewerFrame.d.ts +29 -0
- package/dist/types/client/nodes/ViewerHost.d.ts +6 -0
- package/dist/types/client/nodes/iframe-document-url.d.ts +3 -9
- package/dist/types/client/nodes/primitive-copy.d.ts +5 -0
- package/dist/types/client/nodes/use-iframe-content-height.d.ts +1 -1
- package/dist/types/client/nodes/use-surface-frame.d.ts +4 -6
- package/dist/types/client/nodes/viewer-runtime-state.d.ts +2 -1
- package/dist/types/client/state/canvas-store.d.ts +3 -1
- package/dist/types/client/state/intent-bridge.d.ts +1 -0
- package/dist/types/client/state/presentation.d.ts +17 -6
- package/dist/types/json-render/server.d.ts +2 -1
- package/dist/types/server/canvas-state.d.ts +2 -0
- package/dist/types/server/index.d.ts +10 -5
- package/dist/types/server/operations/ops/boards.d.ts +0 -1
- package/dist/types/server/tour-control.d.ts +13 -3
- package/dist/types/shared/ax-surface-protocol.d.ts +0 -9
- package/dist/types/shared/tour.d.ts +8 -0
- package/docs/design/Chrome.dc.html +32 -6
- package/docs/design/Types1.dc.html +3 -2
- package/docs/design/Types2.dc.html +1 -1
- package/docs/design/Types3.dc.html +1 -1
- package/docs/design/Zoom.dc.html +37 -60
- package/docs/design/canvas.json +1 -1
- package/docs/design.md +169 -4
- package/docs/http-api.md +51 -1
- package/docs/mcp.md +8 -0
- package/docs/node-types.md +38 -3
- package/docs/plans/plan-009-tech-debt-backlog.md +2 -2
- package/docs/plans/plan-019-post-0.9-roadmap.md +283 -11
- package/docs/product-vision-2026-09.md +9 -0
- package/package.json +2 -2
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/plugin.json +1 -1
- package/plugins/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/tools.json +246 -108
- package/skills/pmx-canvas/SKILL.md +11 -18
- package/skills/pmx-canvas/references/full-reference.md +9 -4
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/skills/published-consumer-e2e/scripts/run-published-consumer-e2e.sh +3 -5
- package/src/client/canvas/BarHint.tsx +6 -3
- package/src/client/canvas/CanvasNode.tsx +34 -47
- package/src/client/canvas/CanvasViewport.tsx +6 -7
- package/src/client/canvas/ContextMenu.tsx +63 -3
- package/src/client/canvas/EdgeLayer.tsx +365 -169
- package/src/client/canvas/ExpandedNodeOverlay.tsx +1 -2
- package/src/client/canvas/Presentation.tsx +53 -3
- package/src/client/canvas/TopBar.tsx +24 -9
- package/src/client/canvas/auto-fit.ts +9 -11
- package/src/client/canvas/canvas-area.ts +1 -1
- package/src/client/canvas/use-focus-trap.ts +6 -1
- package/src/client/mermaid-entry.ts +6 -20
- package/src/client/mermaid-render.ts +39 -0
- package/src/client/nodes/AxStepControls.tsx +45 -69
- package/src/client/nodes/BoardNode.tsx +65 -9
- package/src/client/nodes/ContextNode.tsx +88 -396
- package/src/client/nodes/ExtAppFrame.tsx +283 -1462
- package/src/client/nodes/FileNode.tsx +92 -81
- package/src/client/nodes/HtmlNode.tsx +8 -36
- package/src/client/nodes/LedgerNode.tsx +31 -17
- package/src/client/nodes/MarkdownNode.tsx +8 -17
- package/src/client/nodes/McpAppNode.tsx +48 -154
- package/src/client/nodes/MermaidNode.tsx +80 -69
- package/src/client/nodes/PromptNode.tsx +12 -14
- package/src/client/nodes/ResponseNode.tsx +8 -6
- package/src/client/nodes/StatusNode.tsx +22 -7
- package/src/client/nodes/StatusSummary.tsx +5 -3
- package/src/client/nodes/TraceNode.tsx +8 -8
- package/src/client/nodes/ViewerFrame.tsx +262 -0
- package/src/client/nodes/ViewerHost.tsx +41 -0
- package/src/client/nodes/WebpageNode.tsx +22 -24
- package/src/client/nodes/iframe-document-url.ts +20 -27
- package/src/client/nodes/primitive-copy.ts +97 -0
- package/src/client/nodes/use-iframe-content-height.ts +34 -10
- package/src/client/nodes/use-surface-frame.ts +22 -11
- package/src/client/nodes/viewer-runtime-state.ts +41 -35
- package/src/client/state/canvas-store.ts +18 -12
- package/src/client/state/intent-bridge.ts +1 -0
- package/src/client/state/presentation.ts +135 -15
- package/src/client/state/sse-bridge.ts +18 -19
- package/src/client/theme/global.css +389 -229
- package/src/client/theme/surface-theme.css +6 -6
- package/src/json-render/charts/tufte-components.tsx +44 -2
- package/src/json-render/renderer/index.css +62 -2
- package/src/json-render/renderer/index.tsx +31 -7
- package/src/json-render/server.ts +3 -2
- package/src/server/board-export.ts +35 -24
- package/src/server/canvas-geometry.ts +1 -0
- package/src/server/canvas-state.ts +5 -0
- package/src/server/demo-state.json +106 -100
- package/src/server/html-primitives.ts +3 -9
- package/src/server/html-surface.ts +8 -0
- package/src/server/index.ts +19 -9
- package/src/server/operations/mcp-contracts.ts +17 -2
- package/src/server/operations/ops/boards.ts +1 -3
- package/src/server/operations/ops/viewport.ts +11 -9
- package/src/server/server.ts +7 -59
- package/src/server/tour-control.ts +66 -6
- package/src/shared/ax-surface-protocol.ts +0 -11
- package/src/shared/content-height-reporter.ts +4 -3
- package/src/shared/tour.ts +8 -0
|
@@ -5148,6 +5148,38 @@
|
|
|
5148
5148
|
"previous"
|
|
5149
5149
|
]
|
|
5150
5150
|
},
|
|
5151
|
+
"presenter": {
|
|
5152
|
+
"description": "Document intent order and expected board activation",
|
|
5153
|
+
"type": "object",
|
|
5154
|
+
"properties": {
|
|
5155
|
+
"clientId": {
|
|
5156
|
+
"type": "string",
|
|
5157
|
+
"minLength": 1,
|
|
5158
|
+
"maxLength": 128
|
|
5159
|
+
},
|
|
5160
|
+
"intent": {
|
|
5161
|
+
"type": "integer",
|
|
5162
|
+
"exclusiveMinimum": 0,
|
|
5163
|
+
"maximum": 9007199254740991
|
|
5164
|
+
},
|
|
5165
|
+
"catalogEpoch": {
|
|
5166
|
+
"type": "string",
|
|
5167
|
+
"minLength": 1,
|
|
5168
|
+
"maxLength": 128
|
|
5169
|
+
},
|
|
5170
|
+
"boardGeneration": {
|
|
5171
|
+
"type": "integer",
|
|
5172
|
+
"minimum": 0,
|
|
5173
|
+
"maximum": 9007199254740991
|
|
5174
|
+
}
|
|
5175
|
+
},
|
|
5176
|
+
"required": [
|
|
5177
|
+
"clientId",
|
|
5178
|
+
"intent",
|
|
5179
|
+
"catalogEpoch",
|
|
5180
|
+
"boardGeneration"
|
|
5181
|
+
]
|
|
5182
|
+
},
|
|
5151
5183
|
"present": {
|
|
5152
5184
|
"description": "Start presenting in viewers that are not presenting yet (default true; false only moves presenting viewers)",
|
|
5153
5185
|
"type": "boolean"
|
|
@@ -5454,7 +5486,6 @@
|
|
|
5454
5486
|
"type": "string",
|
|
5455
5487
|
"enum": [
|
|
5456
5488
|
"tour.set",
|
|
5457
|
-
"tour.exit",
|
|
5458
5489
|
"annotation.remove"
|
|
5459
5490
|
]
|
|
5460
5491
|
},
|
|
@@ -5494,142 +5525,249 @@
|
|
|
5494
5525
|
"const": "success"
|
|
5495
5526
|
},
|
|
5496
5527
|
"data": {
|
|
5497
|
-
"
|
|
5498
|
-
|
|
5499
|
-
"ok": {
|
|
5500
|
-
"type": "boolean"
|
|
5501
|
-
},
|
|
5502
|
-
"index": {
|
|
5503
|
-
"type": "integer",
|
|
5504
|
-
"minimum": 0,
|
|
5505
|
-
"maximum": 9007199254740991
|
|
5506
|
-
},
|
|
5507
|
-
"total": {
|
|
5508
|
-
"type": "integer",
|
|
5509
|
-
"minimum": 0,
|
|
5510
|
-
"maximum": 9007199254740991
|
|
5511
|
-
},
|
|
5512
|
-
"stop": {
|
|
5528
|
+
"anyOf": [
|
|
5529
|
+
{
|
|
5513
5530
|
"type": "object",
|
|
5514
5531
|
"properties": {
|
|
5515
|
-
"
|
|
5516
|
-
"
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
|
|
5523
|
-
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
|
|
5531
|
-
|
|
5532
|
-
|
|
5533
|
-
|
|
5532
|
+
"ok": {
|
|
5533
|
+
"type": "boolean"
|
|
5534
|
+
},
|
|
5535
|
+
"catalogEpoch": {
|
|
5536
|
+
"type": "string"
|
|
5537
|
+
},
|
|
5538
|
+
"boardGeneration": {
|
|
5539
|
+
"type": "integer",
|
|
5540
|
+
"minimum": 0,
|
|
5541
|
+
"maximum": 9007199254740991
|
|
5542
|
+
},
|
|
5543
|
+
"sequence": {
|
|
5544
|
+
"type": "integer",
|
|
5545
|
+
"minimum": 0,
|
|
5546
|
+
"maximum": 9007199254740991
|
|
5547
|
+
},
|
|
5548
|
+
"index": {
|
|
5549
|
+
"type": "integer",
|
|
5550
|
+
"minimum": 0,
|
|
5551
|
+
"maximum": 9007199254740991
|
|
5552
|
+
},
|
|
5553
|
+
"total": {
|
|
5554
|
+
"type": "integer",
|
|
5555
|
+
"minimum": 0,
|
|
5556
|
+
"maximum": 9007199254740991
|
|
5557
|
+
},
|
|
5558
|
+
"stop": {
|
|
5559
|
+
"type": "object",
|
|
5560
|
+
"properties": {
|
|
5561
|
+
"target": {
|
|
5562
|
+
"anyOf": [
|
|
5563
|
+
{
|
|
5534
5564
|
"type": "object",
|
|
5535
5565
|
"properties": {
|
|
5536
|
-
"
|
|
5537
|
-
"type": "
|
|
5538
|
-
|
|
5539
|
-
"y": {
|
|
5540
|
-
"type": "number"
|
|
5541
|
-
},
|
|
5542
|
-
"width": {
|
|
5543
|
-
"type": "number",
|
|
5544
|
-
"exclusiveMinimum": 0
|
|
5545
|
-
},
|
|
5546
|
-
"height": {
|
|
5547
|
-
"type": "number",
|
|
5548
|
-
"exclusiveMinimum": 0
|
|
5566
|
+
"nodeId": {
|
|
5567
|
+
"type": "string",
|
|
5568
|
+
"minLength": 1
|
|
5549
5569
|
}
|
|
5550
5570
|
},
|
|
5551
5571
|
"required": [
|
|
5552
|
-
"
|
|
5553
|
-
"y",
|
|
5554
|
-
"width",
|
|
5555
|
-
"height"
|
|
5572
|
+
"nodeId"
|
|
5556
5573
|
],
|
|
5557
5574
|
"additionalProperties": false
|
|
5558
|
-
}
|
|
5559
|
-
|
|
5560
|
-
"required": [
|
|
5561
|
-
"rect"
|
|
5562
|
-
],
|
|
5563
|
-
"additionalProperties": false
|
|
5564
|
-
},
|
|
5565
|
-
{
|
|
5566
|
-
"type": "object",
|
|
5567
|
-
"properties": {
|
|
5568
|
-
"viewport": {
|
|
5575
|
+
},
|
|
5576
|
+
{
|
|
5569
5577
|
"type": "object",
|
|
5570
5578
|
"properties": {
|
|
5571
|
-
"
|
|
5572
|
-
"type": "
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5579
|
+
"rect": {
|
|
5580
|
+
"type": "object",
|
|
5581
|
+
"properties": {
|
|
5582
|
+
"x": {
|
|
5583
|
+
"type": "number"
|
|
5584
|
+
},
|
|
5585
|
+
"y": {
|
|
5586
|
+
"type": "number"
|
|
5587
|
+
},
|
|
5588
|
+
"width": {
|
|
5589
|
+
"type": "number",
|
|
5590
|
+
"exclusiveMinimum": 0
|
|
5591
|
+
},
|
|
5592
|
+
"height": {
|
|
5593
|
+
"type": "number",
|
|
5594
|
+
"exclusiveMinimum": 0
|
|
5595
|
+
}
|
|
5596
|
+
},
|
|
5597
|
+
"required": [
|
|
5598
|
+
"x",
|
|
5599
|
+
"y",
|
|
5600
|
+
"width",
|
|
5601
|
+
"height"
|
|
5602
|
+
],
|
|
5603
|
+
"additionalProperties": false
|
|
5580
5604
|
}
|
|
5581
5605
|
},
|
|
5582
5606
|
"required": [
|
|
5583
|
-
"
|
|
5584
|
-
|
|
5585
|
-
|
|
5607
|
+
"rect"
|
|
5608
|
+
],
|
|
5609
|
+
"additionalProperties": false
|
|
5610
|
+
},
|
|
5611
|
+
{
|
|
5612
|
+
"type": "object",
|
|
5613
|
+
"properties": {
|
|
5614
|
+
"viewport": {
|
|
5615
|
+
"type": "object",
|
|
5616
|
+
"properties": {
|
|
5617
|
+
"x": {
|
|
5618
|
+
"type": "number"
|
|
5619
|
+
},
|
|
5620
|
+
"y": {
|
|
5621
|
+
"type": "number"
|
|
5622
|
+
},
|
|
5623
|
+
"scale": {
|
|
5624
|
+
"type": "number",
|
|
5625
|
+
"exclusiveMinimum": 0
|
|
5626
|
+
}
|
|
5627
|
+
},
|
|
5628
|
+
"required": [
|
|
5629
|
+
"x",
|
|
5630
|
+
"y",
|
|
5631
|
+
"scale"
|
|
5632
|
+
],
|
|
5633
|
+
"additionalProperties": false
|
|
5634
|
+
}
|
|
5635
|
+
},
|
|
5636
|
+
"required": [
|
|
5637
|
+
"viewport"
|
|
5586
5638
|
],
|
|
5587
5639
|
"additionalProperties": false
|
|
5588
5640
|
}
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
"
|
|
5641
|
+
]
|
|
5642
|
+
},
|
|
5643
|
+
"duration": {
|
|
5644
|
+
"type": "number",
|
|
5645
|
+
"minimum": 0,
|
|
5646
|
+
"maximum": 3600
|
|
5647
|
+
},
|
|
5648
|
+
"easing": {
|
|
5649
|
+
"type": "string",
|
|
5650
|
+
"enum": [
|
|
5651
|
+
"linear",
|
|
5652
|
+
"ease-in-out",
|
|
5653
|
+
"ease-out"
|
|
5654
|
+
]
|
|
5655
|
+
},
|
|
5656
|
+
"padding": {
|
|
5657
|
+
"type": "number",
|
|
5658
|
+
"minimum": 0
|
|
5659
|
+
},
|
|
5660
|
+
"pullback": {
|
|
5661
|
+
"type": "number",
|
|
5662
|
+
"minimum": 0,
|
|
5663
|
+
"maximum": 4
|
|
5594
5664
|
}
|
|
5595
|
-
|
|
5665
|
+
},
|
|
5666
|
+
"required": [
|
|
5667
|
+
"target"
|
|
5668
|
+
],
|
|
5669
|
+
"additionalProperties": false
|
|
5670
|
+
}
|
|
5671
|
+
},
|
|
5672
|
+
"required": [
|
|
5673
|
+
"ok",
|
|
5674
|
+
"catalogEpoch",
|
|
5675
|
+
"boardGeneration",
|
|
5676
|
+
"sequence",
|
|
5677
|
+
"index",
|
|
5678
|
+
"total",
|
|
5679
|
+
"stop"
|
|
5680
|
+
],
|
|
5681
|
+
"additionalProperties": {}
|
|
5682
|
+
},
|
|
5683
|
+
{
|
|
5684
|
+
"type": "object",
|
|
5685
|
+
"properties": {
|
|
5686
|
+
"ok": {
|
|
5687
|
+
"type": "boolean",
|
|
5688
|
+
"const": true
|
|
5596
5689
|
},
|
|
5597
|
-
"
|
|
5598
|
-
"type": "
|
|
5599
|
-
"
|
|
5600
|
-
|
|
5690
|
+
"superseded": {
|
|
5691
|
+
"type": "boolean",
|
|
5692
|
+
"const": true
|
|
5693
|
+
}
|
|
5694
|
+
},
|
|
5695
|
+
"required": [
|
|
5696
|
+
"ok",
|
|
5697
|
+
"superseded"
|
|
5698
|
+
],
|
|
5699
|
+
"additionalProperties": false
|
|
5700
|
+
}
|
|
5701
|
+
]
|
|
5702
|
+
}
|
|
5703
|
+
},
|
|
5704
|
+
"required": [
|
|
5705
|
+
"operation",
|
|
5706
|
+
"outcome",
|
|
5707
|
+
"data"
|
|
5708
|
+
],
|
|
5709
|
+
"additionalProperties": false
|
|
5710
|
+
},
|
|
5711
|
+
{
|
|
5712
|
+
"type": "object",
|
|
5713
|
+
"properties": {
|
|
5714
|
+
"operation": {
|
|
5715
|
+
"type": "string",
|
|
5716
|
+
"const": "tour.exit"
|
|
5717
|
+
},
|
|
5718
|
+
"outcome": {
|
|
5719
|
+
"type": "string",
|
|
5720
|
+
"const": "success"
|
|
5721
|
+
},
|
|
5722
|
+
"data": {
|
|
5723
|
+
"anyOf": [
|
|
5724
|
+
{
|
|
5725
|
+
"type": "object",
|
|
5726
|
+
"properties": {
|
|
5727
|
+
"ok": {
|
|
5728
|
+
"type": "boolean"
|
|
5601
5729
|
},
|
|
5602
|
-
"
|
|
5603
|
-
"type": "string"
|
|
5604
|
-
"enum": [
|
|
5605
|
-
"linear",
|
|
5606
|
-
"ease-in-out",
|
|
5607
|
-
"ease-out"
|
|
5608
|
-
]
|
|
5730
|
+
"catalogEpoch": {
|
|
5731
|
+
"type": "string"
|
|
5609
5732
|
},
|
|
5610
|
-
"
|
|
5611
|
-
"type": "
|
|
5612
|
-
"minimum": 0
|
|
5733
|
+
"boardGeneration": {
|
|
5734
|
+
"type": "integer",
|
|
5735
|
+
"minimum": 0,
|
|
5736
|
+
"maximum": 9007199254740991
|
|
5613
5737
|
},
|
|
5614
|
-
"
|
|
5615
|
-
"type": "
|
|
5738
|
+
"sequence": {
|
|
5739
|
+
"type": "integer",
|
|
5616
5740
|
"minimum": 0,
|
|
5617
|
-
"maximum":
|
|
5741
|
+
"maximum": 9007199254740991
|
|
5618
5742
|
}
|
|
5619
5743
|
},
|
|
5620
5744
|
"required": [
|
|
5621
|
-
"
|
|
5745
|
+
"ok",
|
|
5746
|
+
"catalogEpoch",
|
|
5747
|
+
"boardGeneration",
|
|
5748
|
+
"sequence"
|
|
5749
|
+
],
|
|
5750
|
+
"additionalProperties": {}
|
|
5751
|
+
},
|
|
5752
|
+
{
|
|
5753
|
+
"type": "object",
|
|
5754
|
+
"properties": {
|
|
5755
|
+
"ok": {
|
|
5756
|
+
"type": "boolean",
|
|
5757
|
+
"const": true
|
|
5758
|
+
},
|
|
5759
|
+
"superseded": {
|
|
5760
|
+
"type": "boolean",
|
|
5761
|
+
"const": true
|
|
5762
|
+
}
|
|
5763
|
+
},
|
|
5764
|
+
"required": [
|
|
5765
|
+
"ok",
|
|
5766
|
+
"superseded"
|
|
5622
5767
|
],
|
|
5623
5768
|
"additionalProperties": false
|
|
5624
5769
|
}
|
|
5625
|
-
|
|
5626
|
-
"required": [
|
|
5627
|
-
"ok",
|
|
5628
|
-
"index",
|
|
5629
|
-
"total",
|
|
5630
|
-
"stop"
|
|
5631
|
-
],
|
|
5632
|
-
"additionalProperties": {}
|
|
5770
|
+
]
|
|
5633
5771
|
}
|
|
5634
5772
|
},
|
|
5635
5773
|
"required": [
|
|
@@ -106,7 +106,7 @@ for the authoritative stop, viewport, persistence, reset, group-order, and captu
|
|
|
106
106
|
|
|
107
107
|
## Runtime prerequisites
|
|
108
108
|
|
|
109
|
-
PMX Canvas 0.
|
|
109
|
+
PMX Canvas 0.11.0 requires **Bun >=1.4.4**, including when installed through npm.
|
|
110
110
|
Check `bun --version` and ensure Bun is on the MCP host's PATH, not just your shell's;
|
|
111
111
|
use an absolute executable path if needed. Install/configure only when requested.
|
|
112
112
|
For pinned installation, MCP configuration, managed services, and disposable verification,
|
|
@@ -525,6 +525,10 @@ Use the visible workbench when the human is actively curating layout:
|
|
|
525
525
|
- Drop files or URLs to create matching nodes; an empty board shows starter actions (new note,
|
|
526
526
|
pick files, paste a link, start an agent session).
|
|
527
527
|
- Use a markdown node's Edit button to edit its content.
|
|
528
|
+
- For a frameless section label, set Markdown `data.display: "heading"` (or choose
|
|
529
|
+
**Display as heading** in its menu). `"card"` restores the ordinary frame.
|
|
530
|
+
- Zoom keeps the same spatial board and scales card content proportionally.
|
|
531
|
+
Viewers load automatically near the viewport, including at fit-all zoom.
|
|
528
532
|
- **Groups** are frames with the name pill and an action cluster (auto-arrange children, collapse,
|
|
529
533
|
⋯ rename / ungroup / pin all) on the top edge. Membership changes only on release while the
|
|
530
534
|
"release to add to <group>" pill shows (Esc keeps it out); dragging a child fully out offers
|
|
@@ -787,23 +791,12 @@ changes do not advance content revisions, while semantic edits and undo do.
|
|
|
787
791
|
- A hosted ext-app (Excalidraw) node in a **WebKit** host panel (e.g. the GitHub Copilot app's
|
|
788
792
|
embedded WKWebView) can remain blank even when its API session is healthy and `sessionStatus`
|
|
789
793
|
is `ready`. This host-specific rendering issue remains open; successful Chrome/Codex rendering
|
|
790
|
-
does not establish native-host health.
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
probe, including when visibility is reported as visible. The recovery trail
|
|
797
|
-
(`GET /api/canvas/debug/ext-app-recovery` / `window.__PMX_EXTAPP_LOG`) now records
|
|
798
|
-
`mount-slot`, `paint-ok`, `paint-fail`, `soft-expand-cycle`, `recovery-exhausted`, and
|
|
799
|
-
`assume-visible-rearm`. Treat `paint-ok`/`paint-fail` as diagnostic evidence, not compositor
|
|
800
|
-
proof. Require a rendered screenshot in the affected host before declaring its surface
|
|
801
|
-
healthy; a Chromium pass does not close a native Copilot/WebKit failure. In a host that
|
|
802
|
-
reports the document hidden, `paint-ok` is recorded as
|
|
803
|
-
`paint-ok (unverified: host hidden)` — the app answered the paint probe, but nothing is
|
|
804
|
-
proven composited, so do not treat it as a verified paint. If a
|
|
805
|
-
tile still shows the Retry affordance, click Retry (fresh recovery budget) or expand-then-close;
|
|
806
|
-
attach the recovery trail when reporting.
|
|
794
|
+
does not establish native-host health. Viewers now share one loading/paint handoff and
|
|
795
|
+
explicit **Retry**. The old WebKit recovery ladder and its
|
|
796
|
+
diagnostic log endpoint are removed. A double-rAF acknowledgement establishes document
|
|
797
|
+
scheduling, not native compositor health. Require a rendered screenshot in the affected
|
|
798
|
+
host before declaring its surface healthy. A failed replacement keeps the last painted
|
|
799
|
+
document; use its Retry control rather than expecting automatic remount cycles.
|
|
807
800
|
- Ext-app frame documents live in server memory. Through 0.4.0, killing/restarting the daemon
|
|
808
801
|
while a panel stays open leaves ext-app tiles on dead frame URLs (`Frame document not found`,
|
|
809
802
|
0.4.0 report Finding S) until a full workbench reload. Since 0.4.1 the browser revalidates its
|
|
@@ -555,10 +555,15 @@ Once the board list has loaded, all workbench context-pin writes send the captur
|
|
|
555
555
|
`expectedBoardId`; a server-side board switch returns 409 instead of changing
|
|
556
556
|
another board's pins. Receipt pin actions require reopening the owning board.
|
|
557
557
|
|
|
558
|
-
Embedded
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
558
|
+
Embedded previews mount automatically near the viewport at every zoom and remain
|
|
559
|
+
mounted to preserve arbitrary app state. There is no lifetime preview cap. Mermaid renders
|
|
560
|
+
inline, without an iframe. JSON/graph viewers inherit all nine named canvas themes
|
|
561
|
+
and keep form drafts when the theme changes. During replacement, the pending
|
|
562
|
+
document temporarily coexists with its painted predecessor.
|
|
563
|
+
|
|
564
|
+
A network load or missing JSON runtime times out after 10 seconds and offers a
|
|
565
|
+
visible **Retry**, retaining the last painted document during replacement.
|
|
566
|
+
An already mounted offscreen runtime may wait for paint without being timed out.
|
|
562
567
|
|
|
563
568
|
Native edge add accepts optional `toBoardId`: `from` is on the open source board,
|
|
564
569
|
`to` is a card on the target board. CLI: `pmx-canvas edge add --from <source> --to <target>
|
|
@@ -4,7 +4,7 @@ Use this reference when the `pmx-canvas` skill is installed but the `pmx-canvas`
|
|
|
4
4
|
|
|
5
5
|
## Prerequisites and version
|
|
6
6
|
|
|
7
|
-
The examples pin **PMX Canvas 0.
|
|
7
|
+
The examples pin **PMX Canvas 0.11.0**, which requires **Bun >=1.4.4** even when
|
|
8
8
|
installed through npm: the CLI runs through Bun, not Node. Check `bun --version`
|
|
9
9
|
first. If missing or older, follow the [Bun installation instructions](https://bun.sh/docs/installation)
|
|
10
10
|
with the user's authorization. Ensure Bun is on the MCP host's PATH as well as the
|
|
@@ -22,11 +22,11 @@ in `SKILL.md`. Do not pair newer checkout guidance with an older runtime unknowi
|
|
|
22
22
|
## Install from npm
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
npm install -g pmx-canvas@0.
|
|
25
|
+
npm install -g pmx-canvas@0.11.0
|
|
26
26
|
pmx-canvas --version
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Without a global install, use `bunx pmx-canvas@0.
|
|
29
|
+
Without a global install, use `bunx pmx-canvas@0.11.0` in place of `pmx-canvas` in
|
|
30
30
|
the commands below. Do not use unpinned `bunx pmx-canvas` for a version-specific check.
|
|
31
31
|
|
|
32
32
|
## Choose the workspace and target
|
|
@@ -96,7 +96,7 @@ discards empty env values, remove `PMX_CANVAS_URL` from its launch environment i
|
|
|
96
96
|
"mcpServers": {
|
|
97
97
|
"canvas": {
|
|
98
98
|
"command": "bunx",
|
|
99
|
-
"args": ["pmx-canvas@0.
|
|
99
|
+
"args": ["pmx-canvas@0.11.0", "--mcp"],
|
|
100
100
|
"env": {
|
|
101
101
|
"PMX_CANVAS_WORKSPACE_ROOT": "/absolute/path/to/project",
|
|
102
102
|
"PMX_CANVAS_PORT": "14313",
|
|
@@ -140,7 +140,7 @@ Amp executes, not only on the user's laptop. Merge this into that workspace's
|
|
|
140
140
|
"amp.mcpServers": {
|
|
141
141
|
"canvas": {
|
|
142
142
|
"command": "bunx",
|
|
143
|
-
"args": ["pmx-canvas@0.
|
|
143
|
+
"args": ["pmx-canvas@0.11.0", "--mcp"],
|
|
144
144
|
"includeTools": ["canvas_*"],
|
|
145
145
|
"env": {
|
|
146
146
|
"PMX_CANVAS_WORKSPACE_ROOT": "/absolute/path/to/project",
|
|
@@ -174,7 +174,7 @@ The agent must not run this approval itself or move the command to global settin
|
|
|
174
174
|
`--mcp-config` to bypass workspace trust. Approval authorizes execution of this MCP
|
|
175
175
|
command; it is not a new Canvas import consent or permission to mutate arbitrary boards.
|
|
176
176
|
After approval, reload MCP connections (`reload_mcp` in Amp) and require `connected`.
|
|
177
|
-
Discover `canvas` tools with `tool_search`; the full unfiltered 0.
|
|
177
|
+
Discover `canvas` tools with `tool_search`; the full unfiltered 0.11.0 server has 25 tools,
|
|
178
178
|
including `canvas_help`. If still absent, inspect the server status, command/PATH and target instead
|
|
179
179
|
of reinstalling blindly. See [Amp MCP documentation](https://ampcode.com/docs/customize/mcp).
|
|
180
180
|
|
|
@@ -75,11 +75,9 @@ if [[ -f "${REPO_ROOT}/LICENSE" ]]; then
|
|
|
75
75
|
cp "${REPO_ROOT}/LICENSE" "${PACKAGE_STAGING}/package/LICENSE"
|
|
76
76
|
fi
|
|
77
77
|
cp -R "${REPO_ROOT}/src" "${PACKAGE_STAGING}/package/src"
|
|
78
|
-
mkdir -p "${PACKAGE_STAGING}/package/dist
|
|
79
|
-
cp "${REPO_ROOT}/dist/canvas
|
|
80
|
-
cp "${REPO_ROOT}/dist/
|
|
81
|
-
cp "${REPO_ROOT}/dist/json-render/index.js" "${PACKAGE_STAGING}/package/dist/json-render/index.js"
|
|
82
|
-
cp "${REPO_ROOT}/dist/json-render/index.css" "${PACKAGE_STAGING}/package/dist/json-render/index.css"
|
|
78
|
+
mkdir -p "${PACKAGE_STAGING}/package/dist"
|
|
79
|
+
cp -R "${REPO_ROOT}/dist/canvas" "${PACKAGE_STAGING}/package/dist/canvas"
|
|
80
|
+
cp -R "${REPO_ROOT}/dist/json-render" "${PACKAGE_STAGING}/package/dist/json-render"
|
|
83
81
|
TARBALL="pmx-canvas-published-consumer.tgz"
|
|
84
82
|
tar -czf "${PACK_DIR}/${TARBALL}" -C "${PACKAGE_STAGING}" package
|
|
85
83
|
|
|
@@ -20,6 +20,7 @@ export function BarPortal({ children }: { children: VNode }) {
|
|
|
20
20
|
* `title` hints, which are delay-gated and never render in embedded panes.
|
|
21
21
|
*/
|
|
22
22
|
export function BarHint({
|
|
23
|
+
id,
|
|
23
24
|
label,
|
|
24
25
|
shortcut,
|
|
25
26
|
body,
|
|
@@ -29,10 +30,12 @@ export function BarHint({
|
|
|
29
30
|
fitWithin,
|
|
30
31
|
children,
|
|
31
32
|
}: {
|
|
33
|
+
/** Optional description target for the control's aria-describedby. */
|
|
34
|
+
id?: string;
|
|
32
35
|
label: string;
|
|
33
36
|
shortcut?: string;
|
|
34
|
-
/**
|
|
35
|
-
body?:
|
|
37
|
+
/** Explanatory text, optionally split into readable paragraphs. */
|
|
38
|
+
body?: ComponentChildren;
|
|
36
39
|
align?: 'start' | 'center' | 'end';
|
|
37
40
|
/** Which way the tooltip opens. Bars at the bottom of the region open 'up'. */
|
|
38
41
|
side?: 'down' | 'up';
|
|
@@ -73,7 +76,7 @@ export function BarHint({
|
|
|
73
76
|
onFocusIn={fitWithin ? fit : undefined}
|
|
74
77
|
>
|
|
75
78
|
{children}
|
|
76
|
-
<span class="toolbar-tooltip" role="tooltip">
|
|
79
|
+
<span id={id} class="toolbar-tooltip" role="tooltip">
|
|
77
80
|
<span class="toolbar-tooltip-label">{label}</span>
|
|
78
81
|
{body && <span class="toolbar-tooltip-body">{body}</span>}
|
|
79
82
|
{shortcut && (
|