pmx-canvas 0.8.0 → 0.9.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 (341) hide show
  1. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  2. package/.github/extensions/pmx-canvas/tools.json +601 -22
  3. package/CHANGELOG.md +66 -0
  4. package/Readme.md +131 -532
  5. package/dist/canvas/global.css +2759 -510
  6. package/dist/canvas/index.js +168 -107
  7. package/dist/canvas/mcp-app.html +2936 -632
  8. package/dist/json-render/index.css +81 -1
  9. package/dist/json-render/index.js +20 -20
  10. package/dist/types/client/canvas/BarHint.d.ts +12 -2
  11. package/dist/types/client/canvas/BoardLinkDialog.d.ts +3 -1
  12. package/dist/types/client/canvas/BoardPinButton.d.ts +10 -0
  13. package/dist/types/client/canvas/BoardSwitcher.d.ts +1 -1
  14. package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
  15. package/dist/types/client/canvas/CommandBar.d.ts +3 -4
  16. package/dist/types/client/canvas/ConnectionBanner.d.ts +2 -1
  17. package/dist/types/client/canvas/ContextChip.d.ts +3 -0
  18. package/dist/types/client/canvas/CrossBoardReferences.d.ts +5 -0
  19. package/dist/types/client/canvas/EdgeLayer.d.ts +14 -3
  20. package/dist/types/client/canvas/EmptyState.d.ts +4 -4
  21. package/dist/types/client/canvas/HomeGraphView.d.ts +2 -0
  22. package/dist/types/client/canvas/HomeMapView.d.ts +1 -0
  23. package/dist/types/client/canvas/HomeReviewView.d.ts +6 -0
  24. package/dist/types/client/canvas/HomeView.d.ts +9 -7
  25. package/dist/types/client/canvas/KnowledgeDialog.d.ts +4 -0
  26. package/dist/types/client/canvas/LifecycleChrome.d.ts +5 -0
  27. package/dist/types/client/canvas/LifecycleFields.d.ts +7 -0
  28. package/dist/types/client/canvas/LifecyclePanel.d.ts +1 -0
  29. package/dist/types/client/canvas/MemoryInspector.d.ts +7 -0
  30. package/dist/types/client/canvas/NearPinLayer.d.ts +14 -0
  31. package/dist/types/client/canvas/NodeContextMark.d.ts +40 -7
  32. package/dist/types/client/canvas/RelationPresetsDialog.d.ts +4 -0
  33. package/dist/types/client/canvas/RelationsPanel.d.ts +4 -0
  34. package/dist/types/client/canvas/SessionPanel.d.ts +2 -0
  35. package/dist/types/client/canvas/canvas-area.d.ts +1 -1
  36. package/dist/types/client/canvas/graph-geometry.d.ts +27 -0
  37. package/dist/types/client/canvas/graph-model.d.ts +37 -0
  38. package/dist/types/client/canvas/memory-layout.d.ts +23 -0
  39. package/dist/types/client/canvas/use-chrome-height.d.ts +2 -0
  40. package/dist/types/client/canvas/use-focus-trap.d.ts +1 -0
  41. package/dist/types/client/canvas/use-memory-graph.d.ts +8 -0
  42. package/dist/types/client/canvas/use-pan-zoom.d.ts +4 -1
  43. package/dist/types/client/icons.d.ts +0 -10
  44. package/dist/types/client/nodes/AxStepControls.d.ts +1 -1
  45. package/dist/types/client/nodes/HtmlNode.d.ts +1 -0
  46. package/dist/types/client/nodes/InlineMarkdownEditor.d.ts +4 -4
  47. package/dist/types/client/nodes/MarkdownNode.d.ts +5 -1
  48. package/dist/types/client/nodes/McpAppNode.d.ts +4 -4
  49. package/dist/types/client/nodes/viewer-runtime-state.d.ts +1 -1
  50. package/dist/types/client/state/boards-store.d.ts +81 -9
  51. package/dist/types/client/state/canvas-store.d.ts +14 -1
  52. package/dist/types/client/state/context-chip-store.d.ts +22 -0
  53. package/dist/types/client/state/context-status-store.d.ts +35 -0
  54. package/dist/types/client/state/intent-bridge.d.ts +11 -8
  55. package/dist/types/client/state/knowledge-store.d.ts +22 -0
  56. package/dist/types/client/state/near-pin-store.d.ts +44 -1
  57. package/dist/types/client/state/presence-store.d.ts +4 -4
  58. package/dist/types/client/state/presentation.d.ts +28 -0
  59. package/dist/types/client/state/relation-store.d.ts +10 -0
  60. package/dist/types/client/state/session-store.d.ts +41 -2
  61. package/dist/types/client/state/workspace-settings.d.ts +7 -0
  62. package/dist/types/client/types.d.ts +13 -1
  63. package/dist/types/client/utils/keyboard.d.ts +2 -0
  64. package/dist/types/client/utils/time-ago.d.ts +4 -0
  65. package/dist/types/mcp/context-uri-template.d.ts +3 -1
  66. package/dist/types/server/agent-presence.d.ts +10 -3
  67. package/dist/types/server/ax-context.d.ts +1 -1
  68. package/dist/types/server/canvas-db.d.ts +30 -7
  69. package/dist/types/server/canvas-operations.d.ts +24 -2
  70. package/dist/types/server/canvas-provenance.d.ts +22 -2
  71. package/dist/types/server/canvas-serialization.d.ts +2 -0
  72. package/dist/types/server/canvas-state.d.ts +93 -15
  73. package/dist/types/server/canvas-validation.d.ts +1 -1
  74. package/dist/types/server/context-brief.d.ts +94 -6
  75. package/dist/types/server/context-reads.d.ts +33 -7
  76. package/dist/types/server/edit-summary.d.ts +20 -0
  77. package/dist/types/server/index.d.ts +71 -10
  78. package/dist/types/server/knowledge-lifecycle.d.ts +221 -0
  79. package/dist/types/server/lifecycle-status.d.ts +10 -0
  80. package/dist/types/server/memory-graph.d.ts +9 -0
  81. package/dist/types/server/mutation-history.d.ts +2 -0
  82. package/dist/types/server/operations/ops/ax-shared.d.ts +1 -1
  83. package/dist/types/server/operations/ops/boards.d.ts +2 -1
  84. package/dist/types/server/operations/ops/lifecycle.d.ts +2 -0
  85. package/dist/types/server/operations/ops/memory-graph.d.ts +2 -0
  86. package/dist/types/server/operations/ops/nodes.d.ts +5 -0
  87. package/dist/types/server/operations/ops/query.d.ts +23 -0
  88. package/dist/types/server/operations/registry.d.ts +1 -0
  89. package/dist/types/server/placement.d.ts +7 -0
  90. package/dist/types/server/scope-fence.d.ts +2 -1
  91. package/dist/types/server/spatial-analysis.d.ts +6 -3
  92. package/dist/types/server/tour-control.d.ts +32 -0
  93. package/dist/types/server/wiki-links.d.ts +14 -0
  94. package/dist/types/server/workbench-auth.d.ts +2 -0
  95. package/dist/types/shared/agent-context.d.ts +2 -0
  96. package/dist/types/shared/agent-presence.d.ts +15 -12
  97. package/dist/types/shared/auto-arrange.d.ts +1 -0
  98. package/dist/types/shared/boards.d.ts +4 -4
  99. package/dist/types/shared/knowledge-lifecycle.d.ts +41 -0
  100. package/dist/types/shared/knowledge-presets.d.ts +6 -0
  101. package/dist/types/shared/lifecycle-status.d.ts +24 -0
  102. package/dist/types/shared/memory-graph.d.ts +53 -0
  103. package/dist/types/shared/relations.d.ts +68 -0
  104. package/dist/types/shared/semantic-attention.d.ts +2 -0
  105. package/dist/types/shared/tour.d.ts +38 -0
  106. package/dist/types/shared/workspace-settings.d.ts +11 -0
  107. package/docs/RELEASE.md +21 -3
  108. package/docs/adr-001-bun-only-runtime.md +7 -1
  109. package/docs/adr-002-shared-product-separate-runtimes.md +93 -0
  110. package/docs/api-reference.md +109 -0
  111. package/docs/ax-host-adapter-contract.md +1 -1
  112. package/docs/ax-state-contract.md +5 -4
  113. package/docs/cli.md +153 -15
  114. package/docs/demos/pmx-canvas-demo.mp4 +0 -0
  115. package/docs/design/AgentContext.dc.html +3 -3
  116. package/docs/design/BoardPins.dc.html +37 -22
  117. package/docs/design/Categories.dc.html +208 -0
  118. package/docs/design/CategoryEditor.dc.html +33 -0
  119. package/docs/design/Chrome.dc.html +55 -9
  120. package/docs/design/ContextChip.dc.html +224 -0
  121. package/docs/design/ContextChip600.dc.html +136 -0
  122. package/docs/design/EmptyState.dc.html +45 -0
  123. package/docs/design/Flows.dc.html +23 -1
  124. package/docs/design/HeaderMarks.dc.html +183 -0
  125. package/docs/design/Home.dc.html +19 -1
  126. package/docs/design/HomeGraph.dc.html +86 -202
  127. package/docs/design/HomeMap.dc.html +23 -1
  128. package/docs/design/HomeTeam.dc.html +32 -14
  129. package/docs/design/Lifecycle.dc.html +22 -0
  130. package/docs/design/Lifecycle600.dc.html +18 -0
  131. package/docs/design/LifecycleVariants.dc.html +157 -0
  132. package/docs/design/LinkAuthorship.dc.html +139 -0
  133. package/docs/design/LinksChanged.dc.html +203 -0
  134. package/docs/design/LinksOptions.dc.html +137 -0
  135. package/docs/design/LinksOptions600.dc.html +134 -0
  136. package/docs/design/NearPin.dc.html +9 -10
  137. package/docs/design/Pane600.dc.html +4 -3
  138. package/docs/design/Relations.dc.html +3 -2
  139. package/docs/design/Restore.dc.html +152 -0
  140. package/docs/design/SeeChange.dc.html +267 -0
  141. package/docs/design/Uses.dc.html +12 -6
  142. package/docs/design/canvas.json +146 -19
  143. package/docs/design.md +454 -18
  144. package/docs/environment.md +0 -1
  145. package/docs/evals/curation-effect.md +128 -0
  146. package/docs/http-api.md +465 -38
  147. package/docs/mcp.md +150 -19
  148. package/docs/node-types.md +58 -3
  149. package/docs/plans/design-gaps-2026-10-08.md +53 -0
  150. package/docs/plans/plan-009-tech-debt-backlog.md +379 -0
  151. package/docs/plans/plan-016-context-made-visible-wave-1.md +150 -5
  152. package/docs/plans/plan-017-knowledge-categories-and-lifecycle.md +175 -0
  153. package/docs/plans/plan-018-connected-memory-wave-2.md +594 -0
  154. package/docs/plans/plan-019-post-0.9-roadmap.md +198 -0
  155. package/docs/product-context-vision-2026-09.md +17 -1
  156. package/docs/product-vision-2026-09.md +1082 -43
  157. package/docs/product-vision-review-2026-09.md +13 -1
  158. package/docs/screenshots/workbench-live-dark.png +0 -0
  159. package/docs/screenshots/workbench-live-light.png +0 -0
  160. package/docs/sdk.md +62 -2
  161. package/package.json +1 -1
  162. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  163. package/plugins/pmx-canvas/plugin.json +1 -1
  164. package/plugins/pmx-canvas/runtime.json +1 -1
  165. package/plugins/pmx-canvas/tools.json +601 -22
  166. package/skills/pmx-canvas/SKILL.md +234 -43
  167. package/skills/pmx-canvas/evals/evals.json +62 -0
  168. package/skills/pmx-canvas/references/ax-html-control-surface.md +6 -0
  169. package/skills/pmx-canvas/references/full-reference.md +120 -21
  170. package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
  171. package/skills/pmx-canvas/references/importing-context.md +132 -0
  172. package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
  173. package/skills/pmx-canvas/references/tours-and-recording.md +16 -1
  174. package/skills/pmx-canvas-testing/SKILL.md +20 -0
  175. package/src/cli/agent.ts +2 -0
  176. package/src/cli/commands/ax.ts +12 -0
  177. package/src/cli/commands/boards.ts +87 -11
  178. package/src/cli/commands/edges.ts +28 -0
  179. package/src/cli/commands/groups.ts +7 -0
  180. package/src/cli/commands/nodes.ts +4 -2
  181. package/src/cli/commands/query.ts +34 -2
  182. package/src/cli/commands/record.ts +199 -48
  183. package/src/cli/index.ts +7 -1
  184. package/src/client/App.tsx +177 -70
  185. package/src/client/canvas/AttentionHistory.tsx +0 -2
  186. package/src/client/canvas/BarHint.tsx +40 -2
  187. package/src/client/canvas/BoardCopyDialog.tsx +1 -1
  188. package/src/client/canvas/BoardFolderDialog.tsx +7 -7
  189. package/src/client/canvas/BoardLinkDialog.tsx +138 -33
  190. package/src/client/canvas/BoardPinButton.tsx +33 -0
  191. package/src/client/canvas/BoardSwitcher.tsx +26 -40
  192. package/src/client/canvas/CanvasNode.tsx +360 -237
  193. package/src/client/canvas/CanvasViewport.tsx +45 -7
  194. package/src/client/canvas/CommandBar.tsx +29 -23
  195. package/src/client/canvas/CommandPalette.tsx +5 -12
  196. package/src/client/canvas/ConnectionBanner.tsx +3 -3
  197. package/src/client/canvas/ContextChip.tsx +296 -0
  198. package/src/client/canvas/ContextMenu.tsx +63 -5
  199. package/src/client/canvas/CrossBoardReferences.tsx +60 -0
  200. package/src/client/canvas/EdgeLayer.tsx +339 -76
  201. package/src/client/canvas/EmptyState.tsx +33 -18
  202. package/src/client/canvas/ExpandedNodeOverlay.tsx +72 -40
  203. package/src/client/canvas/ExternalWriters.tsx +57 -42
  204. package/src/client/canvas/HomeGraphView.tsx +942 -0
  205. package/src/client/canvas/HomeMapView.tsx +641 -0
  206. package/src/client/canvas/HomeReviewView.tsx +167 -0
  207. package/src/client/canvas/HomeView.tsx +687 -160
  208. package/src/client/canvas/IntentLayer.tsx +19 -12
  209. package/src/client/canvas/KnowledgeDialog.tsx +488 -0
  210. package/src/client/canvas/LifecycleChrome.tsx +133 -0
  211. package/src/client/canvas/LifecycleFields.tsx +91 -0
  212. package/src/client/canvas/LifecyclePanel.tsx +533 -0
  213. package/src/client/canvas/MemoryInspector.tsx +104 -0
  214. package/src/client/canvas/Minimap.tsx +3 -3
  215. package/src/client/canvas/NearPinLayer.tsx +187 -0
  216. package/src/client/canvas/NodeContextMark.tsx +175 -97
  217. package/src/client/canvas/Presentation.tsx +23 -57
  218. package/src/client/canvas/RelationPresetsDialog.tsx +413 -0
  219. package/src/client/canvas/RelationsPanel.tsx +82 -0
  220. package/src/client/canvas/SelectionBar.tsx +3 -6
  221. package/src/client/canvas/SessionPanel.tsx +90 -50
  222. package/src/client/canvas/SessionReceipt.tsx +311 -39
  223. package/src/client/canvas/ShortcutOverlay.tsx +1 -1
  224. package/src/client/canvas/SnapshotPanel.tsx +27 -36
  225. package/src/client/canvas/ToolRail.tsx +367 -192
  226. package/src/client/canvas/TopBar.tsx +354 -124
  227. package/src/client/canvas/canvas-area.ts +10 -3
  228. package/src/client/canvas/graph-geometry.ts +195 -0
  229. package/src/client/canvas/graph-model.ts +254 -0
  230. package/src/client/canvas/memory-layout.ts +106 -0
  231. package/src/client/canvas/use-chrome-height.ts +20 -0
  232. package/src/client/canvas/use-focus-trap.ts +31 -5
  233. package/src/client/canvas/use-memory-graph.ts +58 -0
  234. package/src/client/canvas/use-node-drag.ts +2 -1
  235. package/src/client/canvas/use-pan-zoom.ts +64 -7
  236. package/src/client/icons.tsx +0 -63
  237. package/src/client/mcp-app/style.css +0 -6
  238. package/src/client/nodes/AxStepControls.tsx +74 -50
  239. package/src/client/nodes/BoardNode.tsx +5 -1
  240. package/src/client/nodes/ContextNode.tsx +18 -11
  241. package/src/client/nodes/ExtAppFrame.tsx +0 -1
  242. package/src/client/nodes/FileNode.tsx +46 -42
  243. package/src/client/nodes/HtmlNode.tsx +44 -2
  244. package/src/client/nodes/ImageNode.tsx +1 -1
  245. package/src/client/nodes/InlineFormatBar.tsx +6 -9
  246. package/src/client/nodes/InlineMarkdownEditor.tsx +56 -17
  247. package/src/client/nodes/MarkdownNode.tsx +377 -109
  248. package/src/client/nodes/McpAppNode.tsx +50 -20
  249. package/src/client/nodes/MdFormatBar.tsx +21 -18
  250. package/src/client/nodes/PromptNode.tsx +1 -1
  251. package/src/client/nodes/ResponseNode.tsx +1 -1
  252. package/src/client/nodes/viewer-runtime-state.ts +54 -22
  253. package/src/client/state/attention-bridge.ts +64 -15
  254. package/src/client/state/boards-store.ts +193 -39
  255. package/src/client/state/canvas-store.ts +99 -12
  256. package/src/client/state/context-chip-store.ts +70 -0
  257. package/src/client/state/context-status-store.ts +53 -0
  258. package/src/client/state/intent-bridge.ts +51 -30
  259. package/src/client/state/knowledge-store.ts +43 -0
  260. package/src/client/state/near-pin-store.ts +115 -6
  261. package/src/client/state/presence-store.ts +7 -10
  262. package/src/client/state/presentation.ts +91 -0
  263. package/src/client/state/relation-store.ts +81 -0
  264. package/src/client/state/session-store.ts +144 -18
  265. package/src/client/state/sse-bridge.ts +206 -29
  266. package/src/client/state/workspace-settings.ts +11 -0
  267. package/src/client/theme/global.css +2759 -510
  268. package/src/client/types.ts +12 -0
  269. package/src/client/utils/keyboard.ts +10 -0
  270. package/src/client/utils/time-ago.ts +14 -0
  271. package/src/json-render/renderer/index.css +6 -1
  272. package/src/json-render/renderer/index.tsx +31 -1
  273. package/src/mcp/canvas-app.ts +12 -2
  274. package/src/mcp/context-uri-template.ts +7 -4
  275. package/src/mcp/server.ts +63 -41
  276. package/src/mcp/workbench-app.ts +39 -6
  277. package/src/server/agent-presence.ts +128 -28
  278. package/src/server/ax-context.ts +27 -13
  279. package/src/server/board-export.ts +12 -1
  280. package/src/server/canvas-db.ts +331 -42
  281. package/src/server/canvas-operations.ts +196 -84
  282. package/src/server/canvas-provenance.ts +53 -22
  283. package/src/server/canvas-serialization.ts +2 -0
  284. package/src/server/canvas-state.ts +950 -122
  285. package/src/server/canvas-validation.ts +9 -2
  286. package/src/server/context-brief.ts +345 -38
  287. package/src/server/context-reads.ts +179 -30
  288. package/src/server/demo-state.json +355 -24
  289. package/src/server/edit-summary.ts +74 -0
  290. package/src/server/html-surface.ts +8 -1
  291. package/src/server/index.ts +203 -13
  292. package/src/server/knowledge-lifecycle.ts +304 -0
  293. package/src/server/lifecycle-status.ts +232 -0
  294. package/src/server/memory-graph.ts +166 -0
  295. package/src/server/mutation-history.ts +18 -6
  296. package/src/server/operations/composites.ts +32 -11
  297. package/src/server/operations/http.ts +7 -2
  298. package/src/server/operations/index.ts +4 -0
  299. package/src/server/operations/mcp.ts +32 -1
  300. package/src/server/operations/ops/ax-presence.ts +1 -1
  301. package/src/server/operations/ops/ax-read.ts +57 -6
  302. package/src/server/operations/ops/ax-timeline.ts +28 -2
  303. package/src/server/operations/ops/backup.ts +5 -3
  304. package/src/server/operations/ops/batch.ts +35 -4
  305. package/src/server/operations/ops/boards.ts +188 -47
  306. package/src/server/operations/ops/canvas-wire.ts +31 -1
  307. package/src/server/operations/ops/edges.ts +36 -2
  308. package/src/server/operations/ops/groups.ts +6 -1
  309. package/src/server/operations/ops/json-render.ts +5 -1
  310. package/src/server/operations/ops/lifecycle.ts +262 -0
  311. package/src/server/operations/ops/memory-graph.ts +45 -0
  312. package/src/server/operations/ops/nodes.ts +107 -24
  313. package/src/server/operations/ops/query.ts +281 -68
  314. package/src/server/operations/ops/snapshots.ts +73 -1
  315. package/src/server/operations/ops/validate.ts +5 -1
  316. package/src/server/operations/ops/viewport.ts +97 -3
  317. package/src/server/operations/registry.ts +77 -26
  318. package/src/server/placement.ts +29 -0
  319. package/src/server/scope-fence.ts +78 -6
  320. package/src/server/server.ts +115 -16
  321. package/src/server/spatial-analysis.ts +48 -23
  322. package/src/server/tour-control.ts +82 -0
  323. package/src/server/wiki-links.ts +137 -0
  324. package/src/server/workbench-auth.ts +11 -0
  325. package/src/shared/agent-context.ts +3 -0
  326. package/src/shared/agent-presence.ts +15 -15
  327. package/src/shared/auto-arrange.ts +2 -0
  328. package/src/shared/boards.ts +4 -4
  329. package/src/shared/knowledge-lifecycle.ts +22 -0
  330. package/src/shared/knowledge-presets.ts +80 -0
  331. package/src/shared/lifecycle-status.ts +26 -0
  332. package/src/shared/memory-graph.ts +74 -0
  333. package/src/shared/relations.ts +98 -0
  334. package/src/shared/semantic-attention.ts +15 -1
  335. package/src/shared/tour.ts +23 -5
  336. package/src/shared/workspace-settings.ts +13 -0
  337. package/dist/types/client/canvas/ContextPinBar.d.ts +0 -1
  338. package/dist/types/client/canvas/FocusFieldLayer.d.ts +0 -1
  339. package/dist/types/client/canvas/kind-colors.d.ts +0 -3
  340. package/dist/types/server/agent-context.d.ts +0 -22
  341. package/src/client/canvas/ContextPinBar.tsx +0 -25
@@ -0,0 +1,198 @@
1
+ # Plan 019: After 0.9.0
2
+
3
+ **Status (2026-10-19):** proposed sequence, agreed in direction with the maintainer. Nothing
4
+ here is started. 0.9.0 itself (the CHANGELOG's Unreleased section) still needs the owner's
5
+ acceptance and release approval; this plan begins once it ships. Version numbers below are
6
+ proposals, not assignments; each release still needs explicit approval and the
7
+ [release gates](../RELEASE.md).
8
+ **Sources:** [product vision](../product-vision-2026-09.md) (moves and the 2026-10-19 sequence),
9
+ [design.md build plan](../design.md#build-plan) (Waves 4, 5, Later),
10
+ [plan 009](plan-009-tech-debt-backlog.md) (open debt),
11
+ [design gaps](design-gaps-2026-10-08.md) (drawn, not built).
12
+
13
+ **Evaluations come last (maintainer, 2026-10-19).** The curation-effect benchmark and its
14
+ per-release reruns move to step 6, the last step of this plan and before the separately
15
+ scheduled hosted work. They do not precede or gate steps 1–5. Release gates in `RELEASE.md`,
16
+ including `bun run test:e2e-cli`, are not evaluations in this sense and still run every
17
+ release. **Accepted risk:** steps 1–5 build on the curation claim before its effect is
18
+ measured; the maintainer carries that risk rather than reinstating an earlier gate.
19
+
20
+ ## Sequence
21
+
22
+ | Step | Proposed version | Scope | Vision | Size |
23
+ |---|---|---|---|---|
24
+ | 1 | 0.9.1 | Cleanup: tour debt, large-board costs, bounded due evaluator, MCP reconnect, lint | 12, 1 | S–M |
25
+ | 2 | 0.10 | MCP hardening: contracts, annotations, cancellation, resource subscriptions | 6a, 1 | M |
26
+ | 3 | 0.11 | One frame host, portal-layer mount, Wave-0 design pass | 5, 9 | M–L |
27
+ | 4 | 0.12 | Wave 5: agent output as nodes, make/inline board, group drill-in, relations sketch parity | 3, 0 | L |
28
+ | 5 | later | Trust (M half), journal, concurrent boards, binary | 7, 4, 8 | L–XL |
29
+ | 6 | end | Curation-effect baseline and reruns; skill-prompt benchmark | Part 1 item 4 | S–M |
30
+
31
+ Each step starts after the previous release ships, except that a concrete defect found in
32
+ use can be fixed narrowly in a patch release without pulling later scope forward.
33
+
34
+ ## Step 1: 0.9.1 cleanup
35
+
36
+ Debt deliberately kept out of 0.9.0, plus measured performance leads.
37
+
38
+ - **Tour debt** ([vision move 12](../product-vision-2026-09.md#12-tours-the-board-is-the-presentation-m)):
39
+ a tour camera move saves every node's layout (`commitViewport` → `persistLayout` from the SSE
40
+ camera handler) and re-reads the whole layout (`tour-control.ts`); `animateCameraPath`
41
+ duplicates `animateViewport` (`canvas-store.ts`); current-tour logic is repeated in
42
+ `tour-control.ts`, `index.ts` and the viewport operation; the SDK's `getTour()` omits the
43
+ tour position HTTP and MCP return.
44
+ - **Large-board cost** ([WI-01](plan-009-tech-debt-backlog.md)): measure each remaining
45
+ amplifier separately on a large real-shaped board: duplicated source in
46
+ `canvas-serialization.ts`, offscreen `/api/render` posts from `MarkdownNode.tsx`, the double
47
+ lex in `handleRender`, full-layout SSE. Fix only what the measurements implicate.
48
+ - **Bounded due evaluator** ([plan 009](plan-009-tech-debt-backlog.md), "Before larger-library
49
+ scaling"): a one-card lifecycle request reads only its dependency closure; batch review
50
+ summaries; separate Home folder aggregates from card detail.
51
+ - **MCP `-32001`** (plan 009 Finding U): try to reproduce the stressed-reconnect timeout. Fix
52
+ if reproduced; otherwise record the attempt and keep it open.
53
+ - **Lint**: burn down the remaining Biome warnings.
54
+
55
+ **Done when**
56
+ - A tour step changes the viewport and writes no node layout: a test asserts the intended
57
+ viewport change and that no layout-persistence write occurs during `tour go`/`next`
58
+ (unchanged positions alone would also pass a needless identical rewrite). SDK, HTTP and MCP
59
+ return the same tour shape, including position. One camera-animation path remains.
60
+ - Each WI-01 amplifier has a reproducible measurement script and a before/after number on the
61
+ same workload, per the measurement rules in `CLAUDE.md`; unimplicated ones are recorded, not changed.
62
+ - A one-card lifecycle request on a board with populated review histories reads only its
63
+ closure (counted in a test), and Home's folder counts are unchanged.
64
+ - `bun run lint` reports zero warnings, or the remaining ones are listed with a reason.
65
+
66
+ ## Step 2: 0.10 MCP hardening
67
+
68
+ [Vision move 6a](../product-vision-2026-09.md#6a-make-the-tool-surface-cheap-s--staged-follow-up)
69
+ and move 1's context delivery, on the current SDK v1.
70
+
71
+ 1. Remeasure `tools/list` size per tool before any schema change.
72
+ 2. `outputSchema` + `structuredContent` for stable results (IDs, revisions, mutation
73
+ outcomes); compact model-facing content; UI-only payloads in `_meta` where supported.
74
+ 3. Accurate read-only / destructive / idempotent / external-access annotations. A composite
75
+ with any write action is not read-only.
76
+ 4. Cancellation carried through the operation layer into waits and cancellable I/O; progress
77
+ for long operations where the host supports it; partial outcomes reported honestly.
78
+ 5. Resource subscriptions: advertise the capability, track subscribed URIs per connection,
79
+ notify only subscribers. Explicit context reads keep working for hosts without them.
80
+
81
+ Candidates, not automatic scope: `canvas_help { op }`, `session.start`, per-action schemas.
82
+
83
+ **Done when**
84
+ - Representative read and mutation results validate against their advertised schemas.
85
+ - An annotation audit test fails if a composite with a write action is marked read-only.
86
+ - Cancelling an in-flight wait releases it immediately instead of at timeout.
87
+ - Subscribe, unsubscribe and connection isolation are tested with two connections; actual
88
+ reads are measured separately from notifications.
89
+ - Local stdio works unchanged; `docs/mcp.md`, the skill reference and the tool count are updated.
90
+
91
+ ## Step 3: 0.11 frame host and design pass
92
+
93
+ [Vision moves 5 and 9](../product-vision-2026-09.md#5-keep-every-node-type-unify-how-they-render-m),
94
+ [design.md Wave 4](../design.md#build-plan).
95
+
96
+ - **One frame host** for `html`, `mcp-app`, `json-render`, `graph`, `webpage`, `mermaid`: lazy
97
+ mount near the viewport, a live-frame budget, one paint deadline, one visible fallback with
98
+ retry, full theme tokens passed in. Reuse the shared AX bridge. Replaces the recovery
99
+ machinery in `ExtAppFrame.tsx`. Mermaid renders inline.
100
+ - **Portal-layer ext-app mount** ([plan 009](plan-009-tech-debt-backlog.md), contingency whose
101
+ trigger is met): render ext-app iframes outside the world transform for WebKit black tiles.
102
+ - **Wave-0 design pass** ([design gaps](design-gaps-2026-10-08.md) suggested order 4): section
103
+ labels (#2), the 44 px floating-chrome lane and Updates chip (#3), node header fill/title
104
+ (#7), then the token sweep (#4 type floor, #5 radii/elevation, #6 Harbor drift, #9 raw
105
+ `rgba()`), then the per-type pass (#8).
106
+
107
+ **Done when**
108
+ - design.md's Wave 4 check: no viewer draws its own background; a board with 20 portals mounts
109
+ no more frames than one without; fit-all is readable.
110
+ - Authored drafts, input state, offscreen replacements and the painted-refresh handoff still
111
+ pass their existing browser cases.
112
+ - Each design-gap item matches its drawing at 600, 1024 and 1920 px in all nine themes; the
113
+ demo board is regenerated and `tests/unit/demo.test.ts` passes.
114
+ - WebKit remains best-effort and the limitation stays explicit. Per vision move 5, a WebKit
115
+ project joins the gate at the hosted share link or the next WebKit-only bug that reaches a
116
+ release, whichever comes first.
117
+
118
+ ## Step 4: 0.12 Wave 5 and relations sketch parity
119
+
120
+ [Vision move 3](../product-vision-2026-09.md#3-the-agents-output-moves-onto-the-board-m), move 0's
121
+ make board / inline board, [design.md Wave 5](../design.md#build-plan) and the remaining
122
+ Relations/Flows/Uses sketch parity.
123
+
124
+ **Before building:** decide how board-qualified relations, provenance and review records move
125
+ when a card moves into or out of a board (plan 009 "Wave 5, groups and agent output"), and the
126
+ move 3 open questions (decision 3).
127
+
128
+ - Work items as `status` nodes; gates, elicitations and mode requests as one `ask` node with an
129
+ attributed answer (new node type: follow the "Adding New Node Types" checklist in `CLAUDE.md`).
130
+ - Make board / inline board; group drill-in with breadcrumbs and outside endpoint stubs.
131
+ - Relations sketch parity: inline edge editor, amber stale-lineage strokes, pair/cycle/affected
132
+ badges, Show lineage / Show on canvas.
133
+
134
+ **Done when**
135
+ - design.md's Wave 5 check: agent output uses the same shell and tokens; a group opened as a
136
+ board shows its outside stubs.
137
+ - Moving a card preserves its outside links and audit identity; copying a claim does not
138
+ copy its validation.
139
+ - A changed source turns downstream edges amber on the board, not only the card footer.
140
+ - The `ask` node renders in a live browser board (DOM check), not only in unit tests.
141
+
142
+ ## Step 5: later
143
+
144
+ In dependency order, each starting only when the previous one is in use:
145
+
146
+ 1. **Trust, M half** (move 7): per-writer tokens, `--listen` with a token, file confinement
147
+ with a per-board allow-root list (decision 5).
148
+ 2. **Journal** (move 4), then stage-2 concurrent boards.
149
+ 3. **Binary** (move 8). README changes need explicit approval.
150
+
151
+ Move 7 is built here for remote agents and as the authorization model hosting reuses; local
152
+ PMX stays single-user, and static export is its sharing path.
153
+
154
+ ## Step 6: evaluations (end)
155
+
156
+ - First run of [curation-effect](../evals/curation-effect.md) on the then-current release;
157
+ resume its per-release reruns from there.
158
+ - Benchmark the 17 skill eval prompts against a baseline (plan 009, skill-mirror row).
159
+
160
+ ## After this plan: the hosted version
161
+
162
+ Not scheduled here. All account and team work belongs to the hosted version (vision Part 4,
163
+ decided 2026-10-19): the read-only share link (with a WebKit project added to the gate),
164
+ comments, a second writer, accounts, per-board roles and org/team/personal scopes. There is
165
+ no supported self-hosted multi-user edition; local and self-hosted PMX stay single-user.
166
+
167
+ **Built for both hosted editions.** The ChatGPT Sites version ships first and the standalone
168
+ Cloudflare version (Part 5) follows, so this work lives in the shared product per
169
+ [ADR-002](../adr-002-shared-product-separate-runtimes.md): roles, membership, scopes,
170
+ publication and per-board read filtering are shared rules keyed on an edition-neutral
171
+ principal; each edition supplies runtime adapters, including identity, storage, lifecycle and
172
+ external capabilities (decisions 2–3). Editions reuse domain rules, schemas and contracts but
173
+ own independent records, without synchronization; memberships never import as authority
174
+ (decision 7). Dependency checks establish source separation only: verify supported behavior
175
+ and lifecycle guarantees on Sites, and on standalone Cloudflare when that edition is
176
+ implemented. Cloudflare is not a prerequisite for Sites.
177
+
178
+ **Order inside the hosted version:** authenticated identity and per-board permissions before
179
+ the first share link; full account administration and scopes can follow. Validate browser
180
+ board sharing separately from plugin installation for each intended audience: Sites documents
181
+ external invitations and public publishing for the browser, while Site-hosted plugin sharing
182
+ is narrower (vision Part 4).
183
+
184
+ **Prerequisites from this plan:** move 7's authorization model (step 5.1), the vision's
185
+ extraction gate (one complete read/edit/commit/reconnect slice), and the journal (step 5.2)
186
+ before the hosted second writer. Decision 6 must be settled before accounts and scopes.
187
+
188
+ ## Open decisions
189
+
190
+ | # | Decision | Blocks | Proposal |
191
+ |---|---|---|---|
192
+ | 1 | MCP hardening before the frame host | Steps 2–3 order | **Decided 2026-10-19:** yes, MCP is the agent half. A narrow WebKit fix can still ship as a patch |
193
+ | 2 | Version numbers and batch size | Every release | One minor per step, as above |
194
+ | 3 | Keep the `policy` singleton, `host-capability`, the command registry; ghost intents opt-in? | Step 4 | Decide before Wave 5 |
195
+ | 4 | Gate a release on native Copilot/WebKit, Windows, the Amp context pill or npm-installed execution? | Steps 2–3 | None gates 0.10; revisit for the hosted version |
196
+ | 5 | File-confinement default | Step 5.1 | Per-board allow-root list |
197
+ | 6 | Context vision: personal- or team-first wiki, personal-space owner, who publishes, default wiki entry, assistant defaults | Hosted accounts and scopes | Decide before hosted accounts |
198
+ | 7 | Move 6b, generated surfaces | Not blocking; 6a stands alone | Still undecided |
@@ -1,11 +1,25 @@
1
1
  # Vision extension: boards, personal wiki, and workspace context
2
2
 
3
- **Status:** Proposed for discussion, not an implementation commitment. **Superseded in part, 2026-09-23:** the maintainer decided that boards are the wiki and that the destination is "share this board" ([vision, move 0 and Part 3](product-vision-2026-09.md); reasoning in the [review](product-vision-review-2026-09.md#design-sketch-boards-are-the-wiki)). The separate entity and revision store, the personal wiki as its own surface, and working-versus-confirmed machinery are not planned; boards, cards and the journal play those roles. Still in force: the publication and audience rules and the threat-model corrections, which apply when sharing reaches a second writer (Part 3), and the validation experiment, run on linked boards instead of a wiki.
3
+ **Status:** Proposed for discussion, not an implementation commitment. **Superseded in part, 2026-09-23:** the maintainer decided that boards are the wiki and that the destination is "share this board" ([vision, move 0 and Part 3](product-vision-2026-09.md); since 2026-10-19 shared, account and team work is in the hosted version, vision Part 4; reasoning in the [review](product-vision-review-2026-09.md#design-sketch-boards-are-the-wiki)). The separate entity and revision store, the personal wiki as its own surface, and working-versus-confirmed machinery are not planned; boards, cards and the journal play those roles. Still in force: the publication and audience rules and the threat-model corrections, which apply when sharing reaches a second writer (Part 3), and the validation experiment, run on linked boards instead of a wiki.
4
4
  **Date:** 2026-09-06
5
5
  **Companions:** [Product review](product-review-2026-09.md), [product vision](product-vision-2026-09.md).
6
6
  **Request:** Review the existing vision and explore hosted users building their own wiki by describing their work, with their boards contributing context, and cross-cutting organizational context shared within a workspace. Reuse the logic of the personal/context-frame projects inside pmx-canvas's own store rather than depend on an external wiki.
7
7
  **Method:** Read both documents and current canvas context/provenance/caller contracts; research threads inspected both actual reference projects after user-authorized local-file transfers. The shared snapshot matched the previously inspected files; the personal transfer superseded its initially empty checkout. Reconsulted the oracle on private maintenance versus confirmation/publication using those findings. Static source analysis only: no reference services, onboarding, or promotion jobs were executed, and earlier audit tests/adoption measurements were not rerun. The public example is no longer the basis for this proposal.
8
8
 
9
+ ## Current delivery alignment, 2026-10-13
10
+
11
+ Linked boards, Home Folders/Map/Graph, explicit relation kinds/reasons, folder categories,
12
+ inherited card lifecycle and evidence-backed review/retirement are implemented locally;
13
+ the [main vision's current plan](product-vision-2026-09.md#current-plan) and
14
+ [plan 018](plans/plan-018-connected-memory-wave-2.md) own progress and verification.
15
+ Shared relation templates now live in Home alongside Categories. They are workspace settings,
16
+ not card classifications: applying a saved template is explicit, existing boards keep their
17
+ copied vocabulary, and each board filters only relation kinds actually present. Unclassified
18
+ lifecycle remains unknown. This local shared-settings library does not implement shared-audience
19
+ access, organizational authority, autonomous wiki maintenance or the curation evaluation.
20
+ The owner's acceptance and release approval remain separate from rehearsals and passing tests.
21
+ The proposal below remains historical where its header marks it superseded.
22
+
9
23
  ## Position
10
24
 
11
25
  **Work visually with your agents, build understanding as you go, and bring the right knowledge into whatever comes next.**
@@ -191,6 +205,8 @@ Adopt clean destination-scoped synthesis, preserve tentative/rejected/accepted s
191
205
 
192
206
  ## Validation and sequence
193
207
 
208
+ **Sequencing superseded 2026-10-19** ([plan 019](plans/plan-019-post-0.9-roadmap.md)): the experiments in steps 1–2 are retained but run with the evaluations at plan 019 step 6, not before the local foundation work, and they gate nothing earlier. Step 4's roles and shared retrieval are built in the hosted version (vision Part 4).
209
+
194
210
  **Exercise the spatial promise too:** within the same task, deliberately change a pin, annotation, or meaningful relationship and inspect how the next brief and agent response reflect that curation. Compare with the uncurated result. Do not count a changed board layout alone as evidence of better agent behavior, or interpret incidental camera motion as a command.
195
211
 
196
212
  1. **Now: test the knowledge loop without building hosting.** Use one small wiki and two named conceptual boards across three real non-canvas PM sessions. Delegate private maintenance once; let the assistant update source-linked working pages during tasks without compulsory review. Separate personal/shared source packets manually. Include a synthetic private fact, a completed decision, a rejected option, and contradictory newer evidence. Use a clean agent to answer fixed questions in the next session from labeled drafts plus confirmed/shared context.