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.
Files changed (201) hide show
  1. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  2. package/.github/extensions/pmx-canvas/tools.json +246 -108
  3. package/CHANGELOG.md +32 -0
  4. package/dist/canvas/chunks/abnfDiagram-N423BO3Z-p8dtp6va.js +1 -0
  5. package/dist/canvas/chunks/architecture-TIHT7OUA-9tffvpsv.js +1 -0
  6. package/dist/canvas/chunks/architectureDiagram-T3A2C74G-5jhmxrzf.js +36 -0
  7. package/dist/canvas/chunks/blockDiagram-VBNYF7ZC-pw1fa9yb.js +132 -0
  8. package/dist/canvas/chunks/c4Diagram-5PPSVZJV-x07nq0tt.js +10 -0
  9. package/dist/canvas/chunks/classDiagram-JCYQIIEL-nc6g5x1r.js +1 -0
  10. package/dist/canvas/chunks/classDiagram-v2-OCEON4UE-0qnbpwvh.js +1 -0
  11. package/dist/canvas/chunks/cose-bilkent-JH36ORCC-nm39npq0.js +1 -0
  12. package/dist/canvas/chunks/cynefin-VYW2F7L2-ys8p46ts.js +1 -0
  13. package/dist/canvas/chunks/cynefinDiagram-MW4NZA55-vdxrwahz.js +62 -0
  14. package/dist/canvas/chunks/dagre-VZM6K2ZE-bqdm7wpd.js +4 -0
  15. package/dist/canvas/chunks/diagram-7IWD3JNH-gs5gpr93.js +30 -0
  16. package/dist/canvas/chunks/diagram-B4RE2ZJO-cgwjg47s.js +3 -0
  17. package/dist/canvas/chunks/diagram-LBJQPF4R-w3vahpav.js +24 -0
  18. package/dist/canvas/chunks/diagram-Q27KOJAE-42837z6h.js +24 -0
  19. package/dist/canvas/chunks/diagram-UB23O5K3-4fz83q59.js +41 -0
  20. package/dist/canvas/chunks/ebnfDiagram-BXEA7PRR-zphtgegj.js +1 -0
  21. package/dist/canvas/chunks/erDiagram-JOGREHBK-zvbbdxp4.js +85 -0
  22. package/dist/canvas/chunks/eventmodeling-45OFAUF4-v9q6dn4c.js +1 -0
  23. package/dist/canvas/chunks/flowDiagram-UKHOOZJN-yrr5z8tc.js +1 -0
  24. package/dist/canvas/chunks/ganttDiagram-PKOTCBZU-282jzycm.js +292 -0
  25. package/dist/canvas/chunks/gitGraph-TEB2WS4Q-kdwb8m0a.js +1 -0
  26. package/dist/canvas/chunks/gitGraphDiagram-DS77QQ5N-vqqy6p1b.js +106 -0
  27. package/dist/canvas/chunks/index-0rk4gp1g.js +2 -0
  28. package/dist/canvas/chunks/index-194m3hc3.js +2 -0
  29. package/dist/canvas/chunks/index-1r72hdzb.js +301 -0
  30. package/dist/canvas/chunks/index-353m7b0p.js +2 -0
  31. package/dist/canvas/chunks/index-3cy1bzwh.js +2 -0
  32. package/dist/canvas/chunks/index-5tv8v1hk.js +1 -0
  33. package/dist/canvas/chunks/index-6ceya556.js +332 -0
  34. package/dist/canvas/chunks/index-6qmsnxwy.js +4 -0
  35. package/dist/canvas/chunks/index-d3b3gqe9.js +2 -0
  36. package/dist/canvas/chunks/index-fjtdggjn.js +2 -0
  37. package/dist/canvas/chunks/index-g3pwnqeb.js +2 -0
  38. package/dist/canvas/chunks/index-gf4e0et4.js +2 -0
  39. package/dist/canvas/chunks/index-hj99nz1f.js +1 -0
  40. package/dist/canvas/chunks/index-nprm96xp.js +16 -0
  41. package/dist/canvas/chunks/index-qj8fxwsf.js +2 -0
  42. package/dist/canvas/chunks/index-r2fyc9w1.js +89 -0
  43. package/dist/canvas/chunks/index-rft2hcz5.js +2 -0
  44. package/dist/canvas/chunks/index-rh7nv68n.js +2 -0
  45. package/dist/canvas/chunks/index-s4j678gj.js +2 -0
  46. package/dist/canvas/chunks/index-tb1wf525.js +179 -0
  47. package/dist/canvas/chunks/index-vv56h019.js +2 -0
  48. package/dist/canvas/chunks/index-w2mra17t.js +207 -0
  49. package/dist/canvas/chunks/index-wgv7en21.js +232 -0
  50. package/dist/canvas/chunks/index-yw8h9vha.js +157 -0
  51. package/dist/canvas/chunks/info-DKCQHKI2-wpzs6sz3.js +1 -0
  52. package/dist/canvas/chunks/infoDiagram-6WML65LV-v1yvggqj.js +2 -0
  53. package/dist/canvas/chunks/ishikawaDiagram-WSZJBQD7-5hnq1a9p.js +70 -0
  54. package/dist/canvas/chunks/journeyDiagram-NVQOT4AX-zjcffveh.js +139 -0
  55. package/dist/canvas/chunks/kanban-definition-27J2QSJJ-dakqtfp1.js +89 -0
  56. package/dist/canvas/chunks/katex-dmg8k4zm.js +257 -0
  57. package/dist/canvas/chunks/mermaid.core-j2geswrd.js +12 -0
  58. package/dist/canvas/chunks/mindmap-definition-FAOFIHXS-142xhr3k.js +96 -0
  59. package/dist/canvas/chunks/packet-7NZHBO7P-xn439f0s.js +1 -0
  60. package/dist/canvas/chunks/pegDiagram-VL7TDLO6-5wvk7vsd.js +1 -0
  61. package/dist/canvas/chunks/pie-RZYD4A2V-0kf16rwh.js +1 -0
  62. package/dist/canvas/chunks/pieDiagram-7S7Q4E2Y-ztdhwycc.js +39 -0
  63. package/dist/canvas/chunks/quadrantDiagram-CIZ2JOQS-c5p9gmg6.js +7 -0
  64. package/dist/canvas/chunks/radar-I7S5WNFK-0g2pz36t.js +1 -0
  65. package/dist/canvas/chunks/railroad-3IZDKUUU-fcaran6j.js +1 -0
  66. package/dist/canvas/chunks/railroad-abnf-AHOZXSZD-wgdya41q.js +1 -0
  67. package/dist/canvas/chunks/railroad-ebnf-EBAXGLYW-gy07a4ka.js +1 -0
  68. package/dist/canvas/chunks/railroad-peg-LSFZ7HO6-ewk6wtkh.js +1 -0
  69. package/dist/canvas/chunks/railroadDiagram-AXF67PYL-xkmqkjwf.js +1 -0
  70. package/dist/canvas/chunks/requirementDiagram-LRYGKXZP-9wm2dyaw.js +84 -0
  71. package/dist/canvas/chunks/sankeyDiagram-W5VNT64P-2w19etgb.js +40 -0
  72. package/dist/canvas/chunks/sequenceDiagram-SI44F4Z6-0jn0vwmz.js +162 -0
  73. package/dist/canvas/chunks/sizeCapture-X5ZJPWSS-x75epwdq.js +1 -0
  74. package/dist/canvas/chunks/stateDiagram-OKZ733FA-schjpy6d.js +1 -0
  75. package/dist/canvas/chunks/stateDiagram-v2-UEYNNEHI-k8sfp2e7.js +1 -0
  76. package/dist/canvas/chunks/swimlanes-SLNWSIFB-gkw4xce3.js +1 -0
  77. package/dist/canvas/chunks/swimlanesDiagram-ULZ7WXOC-nqysw67j.js +8 -0
  78. package/dist/canvas/chunks/timeline-definition-Z64GVDOM-x7nkcy01.js +120 -0
  79. package/dist/canvas/chunks/treeView-QDETBFTQ-cesw6gp0.js +1 -0
  80. package/dist/canvas/chunks/treemap-6X3UGDF4-zdv4knp9.js +1 -0
  81. package/dist/canvas/chunks/vennDiagram-T6HMQDX7-x8dqn9yf.js +34 -0
  82. package/dist/canvas/chunks/wardley-OPB4EBWU-44pdddez.js +1 -0
  83. package/dist/canvas/chunks/wardleyDiagram-T6FBY63Y-t1j52t9r.js +78 -0
  84. package/dist/canvas/chunks/xychartDiagram-ELKLHX3M-38t16pme.js +7 -0
  85. package/dist/canvas/global.css +389 -229
  86. package/dist/canvas/index.js +141 -211
  87. package/dist/canvas/mcp-app.html +4205 -554
  88. package/dist/canvas/mermaid-entry.js +338 -338
  89. package/dist/canvas/surface-theme.css +6 -6
  90. package/dist/json-render/index.css +1 -1
  91. package/dist/json-render/index.js +49 -49
  92. package/dist/types/client/canvas/BarHint.d.ts +5 -3
  93. package/dist/types/client/canvas/CanvasNode.d.ts +0 -11
  94. package/dist/types/client/canvas/EdgeLayer.d.ts +1 -2
  95. package/dist/types/client/canvas/auto-fit.d.ts +4 -5
  96. package/dist/types/client/mermaid-entry.d.ts +1 -2
  97. package/dist/types/client/mermaid-render.d.ts +1 -0
  98. package/dist/types/client/nodes/BoardNode.d.ts +1 -1
  99. package/dist/types/client/nodes/ExtAppFrame.d.ts +7 -90
  100. package/dist/types/client/nodes/McpAppNode.d.ts +1 -25
  101. package/dist/types/client/nodes/MermaidNode.d.ts +1 -8
  102. package/dist/types/client/nodes/ViewerFrame.d.ts +29 -0
  103. package/dist/types/client/nodes/ViewerHost.d.ts +6 -0
  104. package/dist/types/client/nodes/iframe-document-url.d.ts +3 -9
  105. package/dist/types/client/nodes/primitive-copy.d.ts +5 -0
  106. package/dist/types/client/nodes/use-iframe-content-height.d.ts +1 -1
  107. package/dist/types/client/nodes/use-surface-frame.d.ts +4 -6
  108. package/dist/types/client/nodes/viewer-runtime-state.d.ts +2 -1
  109. package/dist/types/client/state/canvas-store.d.ts +3 -1
  110. package/dist/types/client/state/intent-bridge.d.ts +1 -0
  111. package/dist/types/client/state/presentation.d.ts +17 -6
  112. package/dist/types/json-render/server.d.ts +2 -1
  113. package/dist/types/server/canvas-state.d.ts +2 -0
  114. package/dist/types/server/index.d.ts +10 -5
  115. package/dist/types/server/operations/ops/boards.d.ts +0 -1
  116. package/dist/types/server/tour-control.d.ts +13 -3
  117. package/dist/types/shared/ax-surface-protocol.d.ts +0 -9
  118. package/dist/types/shared/tour.d.ts +8 -0
  119. package/docs/design/Chrome.dc.html +32 -6
  120. package/docs/design/Types1.dc.html +3 -2
  121. package/docs/design/Types2.dc.html +1 -1
  122. package/docs/design/Types3.dc.html +1 -1
  123. package/docs/design/Zoom.dc.html +37 -60
  124. package/docs/design/canvas.json +1 -1
  125. package/docs/design.md +169 -4
  126. package/docs/http-api.md +51 -1
  127. package/docs/mcp.md +8 -0
  128. package/docs/node-types.md +38 -3
  129. package/docs/plans/plan-009-tech-debt-backlog.md +2 -2
  130. package/docs/plans/plan-019-post-0.9-roadmap.md +283 -11
  131. package/docs/product-vision-2026-09.md +9 -0
  132. package/package.json +2 -2
  133. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  134. package/plugins/pmx-canvas/plugin.json +1 -1
  135. package/plugins/pmx-canvas/runtime.json +1 -1
  136. package/plugins/pmx-canvas/tools.json +246 -108
  137. package/skills/pmx-canvas/SKILL.md +11 -18
  138. package/skills/pmx-canvas/references/full-reference.md +9 -4
  139. package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
  140. package/skills/published-consumer-e2e/scripts/run-published-consumer-e2e.sh +3 -5
  141. package/src/client/canvas/BarHint.tsx +6 -3
  142. package/src/client/canvas/CanvasNode.tsx +34 -47
  143. package/src/client/canvas/CanvasViewport.tsx +6 -7
  144. package/src/client/canvas/ContextMenu.tsx +63 -3
  145. package/src/client/canvas/EdgeLayer.tsx +365 -169
  146. package/src/client/canvas/ExpandedNodeOverlay.tsx +1 -2
  147. package/src/client/canvas/Presentation.tsx +53 -3
  148. package/src/client/canvas/TopBar.tsx +24 -9
  149. package/src/client/canvas/auto-fit.ts +9 -11
  150. package/src/client/canvas/canvas-area.ts +1 -1
  151. package/src/client/canvas/use-focus-trap.ts +6 -1
  152. package/src/client/mermaid-entry.ts +6 -20
  153. package/src/client/mermaid-render.ts +39 -0
  154. package/src/client/nodes/AxStepControls.tsx +45 -69
  155. package/src/client/nodes/BoardNode.tsx +65 -9
  156. package/src/client/nodes/ContextNode.tsx +88 -396
  157. package/src/client/nodes/ExtAppFrame.tsx +283 -1462
  158. package/src/client/nodes/FileNode.tsx +92 -81
  159. package/src/client/nodes/HtmlNode.tsx +8 -36
  160. package/src/client/nodes/LedgerNode.tsx +31 -17
  161. package/src/client/nodes/MarkdownNode.tsx +8 -17
  162. package/src/client/nodes/McpAppNode.tsx +48 -154
  163. package/src/client/nodes/MermaidNode.tsx +80 -69
  164. package/src/client/nodes/PromptNode.tsx +12 -14
  165. package/src/client/nodes/ResponseNode.tsx +8 -6
  166. package/src/client/nodes/StatusNode.tsx +22 -7
  167. package/src/client/nodes/StatusSummary.tsx +5 -3
  168. package/src/client/nodes/TraceNode.tsx +8 -8
  169. package/src/client/nodes/ViewerFrame.tsx +262 -0
  170. package/src/client/nodes/ViewerHost.tsx +41 -0
  171. package/src/client/nodes/WebpageNode.tsx +22 -24
  172. package/src/client/nodes/iframe-document-url.ts +20 -27
  173. package/src/client/nodes/primitive-copy.ts +97 -0
  174. package/src/client/nodes/use-iframe-content-height.ts +34 -10
  175. package/src/client/nodes/use-surface-frame.ts +22 -11
  176. package/src/client/nodes/viewer-runtime-state.ts +41 -35
  177. package/src/client/state/canvas-store.ts +18 -12
  178. package/src/client/state/intent-bridge.ts +1 -0
  179. package/src/client/state/presentation.ts +135 -15
  180. package/src/client/state/sse-bridge.ts +18 -19
  181. package/src/client/theme/global.css +389 -229
  182. package/src/client/theme/surface-theme.css +6 -6
  183. package/src/json-render/charts/tufte-components.tsx +44 -2
  184. package/src/json-render/renderer/index.css +62 -2
  185. package/src/json-render/renderer/index.tsx +31 -7
  186. package/src/json-render/server.ts +3 -2
  187. package/src/server/board-export.ts +35 -24
  188. package/src/server/canvas-geometry.ts +1 -0
  189. package/src/server/canvas-state.ts +5 -0
  190. package/src/server/demo-state.json +106 -100
  191. package/src/server/html-primitives.ts +3 -9
  192. package/src/server/html-surface.ts +8 -0
  193. package/src/server/index.ts +19 -9
  194. package/src/server/operations/mcp-contracts.ts +17 -2
  195. package/src/server/operations/ops/boards.ts +1 -3
  196. package/src/server/operations/ops/viewport.ts +11 -9
  197. package/src/server/server.ts +7 -59
  198. package/src/server/tour-control.ts +66 -6
  199. package/src/shared/ax-surface-protocol.ts +0 -11
  200. package/src/shared/content-height-reporter.ts +4 -3
  201. package/src/shared/tour.ts +8 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.10.0"
2
+ "version": "0.11.0"
3
3
  }
@@ -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
- "type": "object",
5498
- "properties": {
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
- "target": {
5516
- "anyOf": [
5517
- {
5518
- "type": "object",
5519
- "properties": {
5520
- "nodeId": {
5521
- "type": "string",
5522
- "minLength": 1
5523
- }
5524
- },
5525
- "required": [
5526
- "nodeId"
5527
- ],
5528
- "additionalProperties": false
5529
- },
5530
- {
5531
- "type": "object",
5532
- "properties": {
5533
- "rect": {
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
- "x": {
5537
- "type": "number"
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
- "x",
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
- "x": {
5572
- "type": "number"
5573
- },
5574
- "y": {
5575
- "type": "number"
5576
- },
5577
- "scale": {
5578
- "type": "number",
5579
- "exclusiveMinimum": 0
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
- "x",
5584
- "y",
5585
- "scale"
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
- "required": [
5591
- "viewport"
5592
- ],
5593
- "additionalProperties": false
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
- "duration": {
5598
- "type": "number",
5599
- "minimum": 0,
5600
- "maximum": 3600
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
- "easing": {
5603
- "type": "string",
5604
- "enum": [
5605
- "linear",
5606
- "ease-in-out",
5607
- "ease-out"
5608
- ]
5730
+ "catalogEpoch": {
5731
+ "type": "string"
5609
5732
  },
5610
- "padding": {
5611
- "type": "number",
5612
- "minimum": 0
5733
+ "boardGeneration": {
5734
+ "type": "integer",
5735
+ "minimum": 0,
5736
+ "maximum": 9007199254740991
5613
5737
  },
5614
- "pullback": {
5615
- "type": "number",
5738
+ "sequence": {
5739
+ "type": "integer",
5616
5740
  "minimum": 0,
5617
- "maximum": 4
5741
+ "maximum": 9007199254740991
5618
5742
  }
5619
5743
  },
5620
5744
  "required": [
5621
- "target"
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": [
package/CHANGELOG.md CHANGED
@@ -3,6 +3,38 @@
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.11.0] - 2026-10-25
7
+
8
+ ### Breaking
9
+
10
+ - Removed `/api/canvas/debug/ext-app-recovery` with automatic viewer recovery; use the viewer's visible Retry control after a loading failure.
11
+
12
+ ### Added
13
+
14
+ - Card menus offer Copy JSON for supported HTML primitives, including their current interactive state, replacing the Copy prompt header button.
15
+ - HTTP, MCP and SDK tour commands accept an optional presenter fence to prevent superseded navigation from moving the board.
16
+
17
+ ### Changed
18
+
19
+ - Markdown cards can become frameless section headings, and fit and focus leave room for floating controls.
20
+ - Cards, charts and dashboards share canvas typography, spacing and all nine themes without repeated chart titles.
21
+ - The board and its contents scale proportionally at every zoom.
22
+ - Viewer previews load automatically near the viewport at every zoom and stay mounted when panned out of view.
23
+ - Mermaid diagrams render directly on the canvas with its theme colours.
24
+ - Markdown's Set as README action lives in ⋯, while its README identifier and Edit action stay visible.
25
+ - Present explains saved tours and group-derived stops on hover and keyboard focus.
26
+
27
+ ### Fixed
28
+
29
+ - Failed viewer replacements keep the last painted view and offer one explicit Retry.
30
+ - JSON and graph viewers preserve drafts across theme changes and transitions into and out of expanded view.
31
+ - Repeated viewer measurements no longer reverse Undo or a smaller height; changed content dimensions or a replaced or reopened viewer can fit again.
32
+ - Webpage previews do not inherit MCP clipboard permissions.
33
+ - Work cards keep complete status labels and reachable controls without accidental scrollbars.
34
+ - Relation labels move clear of cards while staying connected to their lines.
35
+ - Static exports preserve section headings, named themes and compact chart layouts without repeated titles.
36
+ - Close slopegraph labels stay readable without moving their data points.
37
+
6
38
  ## [0.10.0] - 2026-10-24
7
39
 
8
40
  ### Breaking
@@ -0,0 +1 @@
1
+ import{e,t}from"./index-1r72hdzb.js";import"./index-6qmsnxwy.js";import{P,ze,Ge}from"./index-r2fyc9w1.js";import{R}from"./index-353m7b0p.js";import{Qt,Pe}from"./index-tb1wf525.js";var l=Qt().RailroadAbnf.parser.LangiumParser,s=e((r)=>{let n=r.alternatives.map(p);if(n.length===1)return n[0];return{type:"choice",alternatives:n}},"transformAlternation"),p=e((r)=>{let n=r.elements.map(f);if(n.length===1)return n[0];return{type:"sequence",elements:n}},"transformConcatenation"),u=e((r)=>{if(r.includes("*")){let[a,o]=r.split("*"),i=a?parseInt(a,10):0,m=o?parseInt(o,10):1/0;return{min:i,max:m}}let n=parseInt(r,10);return{min:n,max:n}},"parseRepeat"),f=e((r)=>{let n=c(r.primary);if(!r.repeat)return n;let{min:a,max:o}=u(r.repeat);if(a===0&&o===1)return{type:"optional",element:n};return{type:"repetition",element:n,min:a,max:o}},"transformElement"),c=e((r)=>{switch(r.$type){case"AbnfStringLiteral":return{type:"terminal",value:r.value};case"AbnfNumVal":return{type:"terminal",value:r.value};case"AbnfRuleName":return{type:"nonterminal",name:r.name};case"AbnfGroup":return s(r.element);case"AbnfOptionalGroup":return{type:"optional",element:s(r.element)};default:throw Error(`Unsupported ABNF primary node: ${r.$type}`)}},"transformPrimary"),d=e((r)=>({name:r.name,definition:s(r.definition)}),"transformRule"),v=e((r)=>{if(R(r,P),r.title)P.setTitle(r.title);r.rules.map((n)=>P.addRule(d(n)))},"populateDb"),g={parse:e((r)=>{P.clear(),t.debug("[ABNF Parser] Starting Langium parse");let n=l.parse(r);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new Pe(n);let a=n.value;t.debug("[ABNF Parser] Parsed rules:",a.rules.length),v(a),t.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:P}},S={parser:g,db:P,renderer:Ge,styles:ze};export{S as diagram};
@@ -0,0 +1 @@
1
+ import{ci}from"./index-tb1wf525.js";export{ci as createArchitectureServices};