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.
- package/.github/extensions/pmx-canvas/runtime.json +1 -1
- package/.github/extensions/pmx-canvas/tools.json +601 -22
- package/CHANGELOG.md +66 -0
- package/Readme.md +131 -532
- package/dist/canvas/global.css +2759 -510
- package/dist/canvas/index.js +168 -107
- package/dist/canvas/mcp-app.html +2936 -632
- package/dist/json-render/index.css +81 -1
- package/dist/json-render/index.js +20 -20
- package/dist/types/client/canvas/BarHint.d.ts +12 -2
- package/dist/types/client/canvas/BoardLinkDialog.d.ts +3 -1
- package/dist/types/client/canvas/BoardPinButton.d.ts +10 -0
- package/dist/types/client/canvas/BoardSwitcher.d.ts +1 -1
- package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
- package/dist/types/client/canvas/CommandBar.d.ts +3 -4
- package/dist/types/client/canvas/ConnectionBanner.d.ts +2 -1
- package/dist/types/client/canvas/ContextChip.d.ts +3 -0
- package/dist/types/client/canvas/CrossBoardReferences.d.ts +5 -0
- package/dist/types/client/canvas/EdgeLayer.d.ts +14 -3
- package/dist/types/client/canvas/EmptyState.d.ts +4 -4
- package/dist/types/client/canvas/HomeGraphView.d.ts +2 -0
- package/dist/types/client/canvas/HomeMapView.d.ts +1 -0
- package/dist/types/client/canvas/HomeReviewView.d.ts +6 -0
- package/dist/types/client/canvas/HomeView.d.ts +9 -7
- package/dist/types/client/canvas/KnowledgeDialog.d.ts +4 -0
- package/dist/types/client/canvas/LifecycleChrome.d.ts +5 -0
- package/dist/types/client/canvas/LifecycleFields.d.ts +7 -0
- package/dist/types/client/canvas/LifecyclePanel.d.ts +1 -0
- package/dist/types/client/canvas/MemoryInspector.d.ts +7 -0
- package/dist/types/client/canvas/NearPinLayer.d.ts +14 -0
- package/dist/types/client/canvas/NodeContextMark.d.ts +40 -7
- package/dist/types/client/canvas/RelationPresetsDialog.d.ts +4 -0
- package/dist/types/client/canvas/RelationsPanel.d.ts +4 -0
- package/dist/types/client/canvas/SessionPanel.d.ts +2 -0
- package/dist/types/client/canvas/canvas-area.d.ts +1 -1
- package/dist/types/client/canvas/graph-geometry.d.ts +27 -0
- package/dist/types/client/canvas/graph-model.d.ts +37 -0
- package/dist/types/client/canvas/memory-layout.d.ts +23 -0
- package/dist/types/client/canvas/use-chrome-height.d.ts +2 -0
- package/dist/types/client/canvas/use-focus-trap.d.ts +1 -0
- package/dist/types/client/canvas/use-memory-graph.d.ts +8 -0
- package/dist/types/client/canvas/use-pan-zoom.d.ts +4 -1
- package/dist/types/client/icons.d.ts +0 -10
- package/dist/types/client/nodes/AxStepControls.d.ts +1 -1
- package/dist/types/client/nodes/HtmlNode.d.ts +1 -0
- package/dist/types/client/nodes/InlineMarkdownEditor.d.ts +4 -4
- package/dist/types/client/nodes/MarkdownNode.d.ts +5 -1
- package/dist/types/client/nodes/McpAppNode.d.ts +4 -4
- package/dist/types/client/nodes/viewer-runtime-state.d.ts +1 -1
- package/dist/types/client/state/boards-store.d.ts +81 -9
- package/dist/types/client/state/canvas-store.d.ts +14 -1
- package/dist/types/client/state/context-chip-store.d.ts +22 -0
- package/dist/types/client/state/context-status-store.d.ts +35 -0
- package/dist/types/client/state/intent-bridge.d.ts +11 -8
- package/dist/types/client/state/knowledge-store.d.ts +22 -0
- package/dist/types/client/state/near-pin-store.d.ts +44 -1
- package/dist/types/client/state/presence-store.d.ts +4 -4
- package/dist/types/client/state/presentation.d.ts +28 -0
- package/dist/types/client/state/relation-store.d.ts +10 -0
- package/dist/types/client/state/session-store.d.ts +41 -2
- package/dist/types/client/state/workspace-settings.d.ts +7 -0
- package/dist/types/client/types.d.ts +13 -1
- package/dist/types/client/utils/keyboard.d.ts +2 -0
- package/dist/types/client/utils/time-ago.d.ts +4 -0
- package/dist/types/mcp/context-uri-template.d.ts +3 -1
- package/dist/types/server/agent-presence.d.ts +10 -3
- package/dist/types/server/ax-context.d.ts +1 -1
- package/dist/types/server/canvas-db.d.ts +30 -7
- package/dist/types/server/canvas-operations.d.ts +24 -2
- package/dist/types/server/canvas-provenance.d.ts +22 -2
- package/dist/types/server/canvas-serialization.d.ts +2 -0
- package/dist/types/server/canvas-state.d.ts +93 -15
- package/dist/types/server/canvas-validation.d.ts +1 -1
- package/dist/types/server/context-brief.d.ts +94 -6
- package/dist/types/server/context-reads.d.ts +33 -7
- package/dist/types/server/edit-summary.d.ts +20 -0
- package/dist/types/server/index.d.ts +71 -10
- package/dist/types/server/knowledge-lifecycle.d.ts +221 -0
- package/dist/types/server/lifecycle-status.d.ts +10 -0
- package/dist/types/server/memory-graph.d.ts +9 -0
- package/dist/types/server/mutation-history.d.ts +2 -0
- package/dist/types/server/operations/ops/ax-shared.d.ts +1 -1
- package/dist/types/server/operations/ops/boards.d.ts +2 -1
- package/dist/types/server/operations/ops/lifecycle.d.ts +2 -0
- package/dist/types/server/operations/ops/memory-graph.d.ts +2 -0
- package/dist/types/server/operations/ops/nodes.d.ts +5 -0
- package/dist/types/server/operations/ops/query.d.ts +23 -0
- package/dist/types/server/operations/registry.d.ts +1 -0
- package/dist/types/server/placement.d.ts +7 -0
- package/dist/types/server/scope-fence.d.ts +2 -1
- package/dist/types/server/spatial-analysis.d.ts +6 -3
- package/dist/types/server/tour-control.d.ts +32 -0
- package/dist/types/server/wiki-links.d.ts +14 -0
- package/dist/types/server/workbench-auth.d.ts +2 -0
- package/dist/types/shared/agent-context.d.ts +2 -0
- package/dist/types/shared/agent-presence.d.ts +15 -12
- package/dist/types/shared/auto-arrange.d.ts +1 -0
- package/dist/types/shared/boards.d.ts +4 -4
- package/dist/types/shared/knowledge-lifecycle.d.ts +41 -0
- package/dist/types/shared/knowledge-presets.d.ts +6 -0
- package/dist/types/shared/lifecycle-status.d.ts +24 -0
- package/dist/types/shared/memory-graph.d.ts +53 -0
- package/dist/types/shared/relations.d.ts +68 -0
- package/dist/types/shared/semantic-attention.d.ts +2 -0
- package/dist/types/shared/tour.d.ts +38 -0
- package/dist/types/shared/workspace-settings.d.ts +11 -0
- package/docs/RELEASE.md +21 -3
- package/docs/adr-001-bun-only-runtime.md +7 -1
- package/docs/adr-002-shared-product-separate-runtimes.md +93 -0
- package/docs/api-reference.md +109 -0
- package/docs/ax-host-adapter-contract.md +1 -1
- package/docs/ax-state-contract.md +5 -4
- package/docs/cli.md +153 -15
- package/docs/demos/pmx-canvas-demo.mp4 +0 -0
- package/docs/design/AgentContext.dc.html +3 -3
- package/docs/design/BoardPins.dc.html +37 -22
- package/docs/design/Categories.dc.html +208 -0
- package/docs/design/CategoryEditor.dc.html +33 -0
- package/docs/design/Chrome.dc.html +55 -9
- package/docs/design/ContextChip.dc.html +224 -0
- package/docs/design/ContextChip600.dc.html +136 -0
- package/docs/design/EmptyState.dc.html +45 -0
- package/docs/design/Flows.dc.html +23 -1
- package/docs/design/HeaderMarks.dc.html +183 -0
- package/docs/design/Home.dc.html +19 -1
- package/docs/design/HomeGraph.dc.html +86 -202
- package/docs/design/HomeMap.dc.html +23 -1
- package/docs/design/HomeTeam.dc.html +32 -14
- package/docs/design/Lifecycle.dc.html +22 -0
- package/docs/design/Lifecycle600.dc.html +18 -0
- package/docs/design/LifecycleVariants.dc.html +157 -0
- package/docs/design/LinkAuthorship.dc.html +139 -0
- package/docs/design/LinksChanged.dc.html +203 -0
- package/docs/design/LinksOptions.dc.html +137 -0
- package/docs/design/LinksOptions600.dc.html +134 -0
- package/docs/design/NearPin.dc.html +9 -10
- package/docs/design/Pane600.dc.html +4 -3
- package/docs/design/Relations.dc.html +3 -2
- package/docs/design/Restore.dc.html +152 -0
- package/docs/design/SeeChange.dc.html +267 -0
- package/docs/design/Uses.dc.html +12 -6
- package/docs/design/canvas.json +146 -19
- package/docs/design.md +454 -18
- package/docs/environment.md +0 -1
- package/docs/evals/curation-effect.md +128 -0
- package/docs/http-api.md +465 -38
- package/docs/mcp.md +150 -19
- package/docs/node-types.md +58 -3
- package/docs/plans/design-gaps-2026-10-08.md +53 -0
- package/docs/plans/plan-009-tech-debt-backlog.md +379 -0
- package/docs/plans/plan-016-context-made-visible-wave-1.md +150 -5
- package/docs/plans/plan-017-knowledge-categories-and-lifecycle.md +175 -0
- package/docs/plans/plan-018-connected-memory-wave-2.md +594 -0
- package/docs/plans/plan-019-post-0.9-roadmap.md +198 -0
- package/docs/product-context-vision-2026-09.md +17 -1
- package/docs/product-vision-2026-09.md +1082 -43
- package/docs/product-vision-review-2026-09.md +13 -1
- package/docs/screenshots/workbench-live-dark.png +0 -0
- package/docs/screenshots/workbench-live-light.png +0 -0
- package/docs/sdk.md +62 -2
- package/package.json +1 -1
- 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 +601 -22
- package/skills/pmx-canvas/SKILL.md +234 -43
- package/skills/pmx-canvas/evals/evals.json +62 -0
- package/skills/pmx-canvas/references/ax-html-control-surface.md +6 -0
- package/skills/pmx-canvas/references/full-reference.md +120 -21
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
- package/skills/pmx-canvas/references/importing-context.md +132 -0
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/skills/pmx-canvas/references/tours-and-recording.md +16 -1
- package/skills/pmx-canvas-testing/SKILL.md +20 -0
- package/src/cli/agent.ts +2 -0
- package/src/cli/commands/ax.ts +12 -0
- package/src/cli/commands/boards.ts +87 -11
- package/src/cli/commands/edges.ts +28 -0
- package/src/cli/commands/groups.ts +7 -0
- package/src/cli/commands/nodes.ts +4 -2
- package/src/cli/commands/query.ts +34 -2
- package/src/cli/commands/record.ts +199 -48
- package/src/cli/index.ts +7 -1
- package/src/client/App.tsx +177 -70
- package/src/client/canvas/AttentionHistory.tsx +0 -2
- package/src/client/canvas/BarHint.tsx +40 -2
- package/src/client/canvas/BoardCopyDialog.tsx +1 -1
- package/src/client/canvas/BoardFolderDialog.tsx +7 -7
- package/src/client/canvas/BoardLinkDialog.tsx +138 -33
- package/src/client/canvas/BoardPinButton.tsx +33 -0
- package/src/client/canvas/BoardSwitcher.tsx +26 -40
- package/src/client/canvas/CanvasNode.tsx +360 -237
- package/src/client/canvas/CanvasViewport.tsx +45 -7
- package/src/client/canvas/CommandBar.tsx +29 -23
- package/src/client/canvas/CommandPalette.tsx +5 -12
- package/src/client/canvas/ConnectionBanner.tsx +3 -3
- package/src/client/canvas/ContextChip.tsx +296 -0
- package/src/client/canvas/ContextMenu.tsx +63 -5
- package/src/client/canvas/CrossBoardReferences.tsx +60 -0
- package/src/client/canvas/EdgeLayer.tsx +339 -76
- package/src/client/canvas/EmptyState.tsx +33 -18
- package/src/client/canvas/ExpandedNodeOverlay.tsx +72 -40
- package/src/client/canvas/ExternalWriters.tsx +57 -42
- package/src/client/canvas/HomeGraphView.tsx +942 -0
- package/src/client/canvas/HomeMapView.tsx +641 -0
- package/src/client/canvas/HomeReviewView.tsx +167 -0
- package/src/client/canvas/HomeView.tsx +687 -160
- package/src/client/canvas/IntentLayer.tsx +19 -12
- package/src/client/canvas/KnowledgeDialog.tsx +488 -0
- package/src/client/canvas/LifecycleChrome.tsx +133 -0
- package/src/client/canvas/LifecycleFields.tsx +91 -0
- package/src/client/canvas/LifecyclePanel.tsx +533 -0
- package/src/client/canvas/MemoryInspector.tsx +104 -0
- package/src/client/canvas/Minimap.tsx +3 -3
- package/src/client/canvas/NearPinLayer.tsx +187 -0
- package/src/client/canvas/NodeContextMark.tsx +175 -97
- package/src/client/canvas/Presentation.tsx +23 -57
- package/src/client/canvas/RelationPresetsDialog.tsx +413 -0
- package/src/client/canvas/RelationsPanel.tsx +82 -0
- package/src/client/canvas/SelectionBar.tsx +3 -6
- package/src/client/canvas/SessionPanel.tsx +90 -50
- package/src/client/canvas/SessionReceipt.tsx +311 -39
- package/src/client/canvas/ShortcutOverlay.tsx +1 -1
- package/src/client/canvas/SnapshotPanel.tsx +27 -36
- package/src/client/canvas/ToolRail.tsx +367 -192
- package/src/client/canvas/TopBar.tsx +354 -124
- package/src/client/canvas/canvas-area.ts +10 -3
- package/src/client/canvas/graph-geometry.ts +195 -0
- package/src/client/canvas/graph-model.ts +254 -0
- package/src/client/canvas/memory-layout.ts +106 -0
- package/src/client/canvas/use-chrome-height.ts +20 -0
- package/src/client/canvas/use-focus-trap.ts +31 -5
- package/src/client/canvas/use-memory-graph.ts +58 -0
- package/src/client/canvas/use-node-drag.ts +2 -1
- package/src/client/canvas/use-pan-zoom.ts +64 -7
- package/src/client/icons.tsx +0 -63
- package/src/client/mcp-app/style.css +0 -6
- package/src/client/nodes/AxStepControls.tsx +74 -50
- package/src/client/nodes/BoardNode.tsx +5 -1
- package/src/client/nodes/ContextNode.tsx +18 -11
- package/src/client/nodes/ExtAppFrame.tsx +0 -1
- package/src/client/nodes/FileNode.tsx +46 -42
- package/src/client/nodes/HtmlNode.tsx +44 -2
- package/src/client/nodes/ImageNode.tsx +1 -1
- package/src/client/nodes/InlineFormatBar.tsx +6 -9
- package/src/client/nodes/InlineMarkdownEditor.tsx +56 -17
- package/src/client/nodes/MarkdownNode.tsx +377 -109
- package/src/client/nodes/McpAppNode.tsx +50 -20
- package/src/client/nodes/MdFormatBar.tsx +21 -18
- package/src/client/nodes/PromptNode.tsx +1 -1
- package/src/client/nodes/ResponseNode.tsx +1 -1
- package/src/client/nodes/viewer-runtime-state.ts +54 -22
- package/src/client/state/attention-bridge.ts +64 -15
- package/src/client/state/boards-store.ts +193 -39
- package/src/client/state/canvas-store.ts +99 -12
- package/src/client/state/context-chip-store.ts +70 -0
- package/src/client/state/context-status-store.ts +53 -0
- package/src/client/state/intent-bridge.ts +51 -30
- package/src/client/state/knowledge-store.ts +43 -0
- package/src/client/state/near-pin-store.ts +115 -6
- package/src/client/state/presence-store.ts +7 -10
- package/src/client/state/presentation.ts +91 -0
- package/src/client/state/relation-store.ts +81 -0
- package/src/client/state/session-store.ts +144 -18
- package/src/client/state/sse-bridge.ts +206 -29
- package/src/client/state/workspace-settings.ts +11 -0
- package/src/client/theme/global.css +2759 -510
- package/src/client/types.ts +12 -0
- package/src/client/utils/keyboard.ts +10 -0
- package/src/client/utils/time-ago.ts +14 -0
- package/src/json-render/renderer/index.css +6 -1
- package/src/json-render/renderer/index.tsx +31 -1
- package/src/mcp/canvas-app.ts +12 -2
- package/src/mcp/context-uri-template.ts +7 -4
- package/src/mcp/server.ts +63 -41
- package/src/mcp/workbench-app.ts +39 -6
- package/src/server/agent-presence.ts +128 -28
- package/src/server/ax-context.ts +27 -13
- package/src/server/board-export.ts +12 -1
- package/src/server/canvas-db.ts +331 -42
- package/src/server/canvas-operations.ts +196 -84
- package/src/server/canvas-provenance.ts +53 -22
- package/src/server/canvas-serialization.ts +2 -0
- package/src/server/canvas-state.ts +950 -122
- package/src/server/canvas-validation.ts +9 -2
- package/src/server/context-brief.ts +345 -38
- package/src/server/context-reads.ts +179 -30
- package/src/server/demo-state.json +355 -24
- package/src/server/edit-summary.ts +74 -0
- package/src/server/html-surface.ts +8 -1
- package/src/server/index.ts +203 -13
- package/src/server/knowledge-lifecycle.ts +304 -0
- package/src/server/lifecycle-status.ts +232 -0
- package/src/server/memory-graph.ts +166 -0
- package/src/server/mutation-history.ts +18 -6
- package/src/server/operations/composites.ts +32 -11
- package/src/server/operations/http.ts +7 -2
- package/src/server/operations/index.ts +4 -0
- package/src/server/operations/mcp.ts +32 -1
- package/src/server/operations/ops/ax-presence.ts +1 -1
- package/src/server/operations/ops/ax-read.ts +57 -6
- package/src/server/operations/ops/ax-timeline.ts +28 -2
- package/src/server/operations/ops/backup.ts +5 -3
- package/src/server/operations/ops/batch.ts +35 -4
- package/src/server/operations/ops/boards.ts +188 -47
- package/src/server/operations/ops/canvas-wire.ts +31 -1
- package/src/server/operations/ops/edges.ts +36 -2
- package/src/server/operations/ops/groups.ts +6 -1
- package/src/server/operations/ops/json-render.ts +5 -1
- package/src/server/operations/ops/lifecycle.ts +262 -0
- package/src/server/operations/ops/memory-graph.ts +45 -0
- package/src/server/operations/ops/nodes.ts +107 -24
- package/src/server/operations/ops/query.ts +281 -68
- package/src/server/operations/ops/snapshots.ts +73 -1
- package/src/server/operations/ops/validate.ts +5 -1
- package/src/server/operations/ops/viewport.ts +97 -3
- package/src/server/operations/registry.ts +77 -26
- package/src/server/placement.ts +29 -0
- package/src/server/scope-fence.ts +78 -6
- package/src/server/server.ts +115 -16
- package/src/server/spatial-analysis.ts +48 -23
- package/src/server/tour-control.ts +82 -0
- package/src/server/wiki-links.ts +137 -0
- package/src/server/workbench-auth.ts +11 -0
- package/src/shared/agent-context.ts +3 -0
- package/src/shared/agent-presence.ts +15 -15
- package/src/shared/auto-arrange.ts +2 -0
- package/src/shared/boards.ts +4 -4
- package/src/shared/knowledge-lifecycle.ts +22 -0
- package/src/shared/knowledge-presets.ts +80 -0
- package/src/shared/lifecycle-status.ts +26 -0
- package/src/shared/memory-graph.ts +74 -0
- package/src/shared/relations.ts +98 -0
- package/src/shared/semantic-attention.ts +15 -1
- package/src/shared/tour.ts +23 -5
- package/src/shared/workspace-settings.ts +13 -0
- package/dist/types/client/canvas/ContextPinBar.d.ts +0 -1
- package/dist/types/client/canvas/FocusFieldLayer.d.ts +0 -1
- package/dist/types/client/canvas/kind-colors.d.ts +0 -3
- package/dist/types/server/agent-context.d.ts +0 -22
- 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.
|