pmx-canvas 0.8.2 → 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 +49 -0
- package/Readme.md +131 -532
- package/dist/canvas/global.css +2724 -476
- package/dist/canvas/index.js +168 -107
- package/dist/canvas/mcp-app.html +2899 -596
- 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/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 +52 -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 +449 -16
- package/docs/environment.md +0 -1
- package/docs/evals/curation-effect.md +128 -0
- package/docs/http-api.md +459 -37
- package/docs/mcp.md +146 -18
- 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 +216 -42
- 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 +1 -0
- package/src/cli/commands/query.ts +34 -2
- package/src/cli/commands/record.ts +199 -48
- package/src/cli/index.ts +6 -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 +32 -0
- 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 +2724 -476
- 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.tsx +31 -0
- 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 +195 -83
- 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 +178 -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 +181 -11
- 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 +26 -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/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 +74 -25
- 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
package/docs/design.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Design: the system and when it gets built
|
|
2
2
|
|
|
3
|
-
*Updated 2026-10-
|
|
3
|
+
*Updated 2026-10-12. Companion to [the vision](product-vision-2026-09.md): the vision
|
|
4
4
|
says what the product does and in what order; this file says how it looks and which
|
|
5
5
|
design work ships with which part of that order. Design never ships ahead of the
|
|
6
6
|
function that produces its data, and function never ships with today's styling when
|
|
@@ -119,14 +119,24 @@ the same change.
|
|
|
119
119
|
| [`Tokens.dc.html`](design/Tokens.dc.html) | Typeface, type scale, radii, elevation, one meaning per colour | 0 |
|
|
120
120
|
| [`TokenSystem.dc.html`](design/TokenSystem.dc.html) | The token system today vs proposed: palette, meaning, scale | 0 |
|
|
121
121
|
| [`Themes.dc.html`](design/Themes.dc.html) | Meaning colours across all nine themes, proposed names | 0 |
|
|
122
|
-
| [`Chrome.dc.html`](design/Chrome.dc.html) | Rail at 690 px, node header (expand and context pin always visible, the rest under ⋯), section headings, floating chrome | 0 |
|
|
122
|
+
| [`Chrome.dc.html`](design/Chrome.dc.html) | Rail at 690 px, node header (expand and context pin always visible, the rest under ⋯), bounded reference footer, section headings, floating chrome | 0 |
|
|
123
|
+
| [`EmptyState.dc.html`](design/EmptyState.dc.html) | Empty board: Drop files here, Paste a link, Start a note with collaboration guidance, then a separate agent-first path | 0 |
|
|
123
124
|
| [`Context.dc.html`](design/Context.dc.html) | Nodes in context: every state, the count chip, the command bar | 0–1 |
|
|
124
125
|
| [`NearPin.dc.html`](design/NearPin.dc.html) | Near a pin: the dotted “near” chip on a pinned node's unpinned neighbours, tethers on hover, the moment of change, combinations, 600 px; ships with the brief carrying neighbours (title + summary, reason “near <pin>”) | 1 |
|
|
125
|
-
| [`
|
|
126
|
-
| [`
|
|
127
|
-
| [`
|
|
128
|
-
| [`
|
|
129
|
-
| [`
|
|
126
|
+
| [`ContextChip.dc.html`](design/ContextChip.dc.html), [`ContextChip600.dc.html`](design/ContextChip600.dc.html) | The one context chip (decided with the maintainer 2026-10-07: placement, near muted, quiet empty state, agent-pin dots, “N in context” at 600 px): top bar, right, replacing the floating ContextPinBar and the ContextBudget meter; at rest for cards, near, boards, agent-only pins, nothing pinned; opened into Cards (full, × unpin, clear all), Near (derived, title + summary, no ×, Pin to promote) and Boards (read state, × unpin). **A pinned board travels as a map** (decided 2026-10-07): folder, README summary, each pinned card's title + summary, links and backlinks; the agent pulls a card or board in full itself, so the chip shows no full / summary / not-sent state. **A cost, not a budget** (decided with the maintainer 2026-10-08): the chip shows what the brief costs as ≈ tokens, with no meter, share or clipped state; when the host reports its agent's token usage the panel names that count too (“Copilot’s whole context holds 42.8k tokens”). The brief's size limit stays internal as a page size. At rest it is the summary, always visible and right-aligned in the top bar at every width; the details open only on click. At ≤ 760 px the summary is “N in context” with no token text, and the bar gives way in this order: session id and counts; Export, Present, zoom and fit fold into ⋯; agent chip to its avatar, Start agent session to its icon; the board name truncates — the dot, board pin, summary and ⋯ never collapse. Harbor and Daylight, 600 px. Supersedes the chip wording on Context, NearPin and BoardPins | 1 (slices 4b, 5b) |
|
|
127
|
+
| [`LinksChanged.dc.html`](design/LinksChanged.dc.html) | Links that changed after the agent read a card (decided with the maintainer 2026-10-08: option C of LinksOptions): the mark sits on the edge, not on both cards — a person’s new or edited link says “not seen by <agent>” (muted, eye-off) until a read carries either end, an agent’s link says “by <agent>” (violet). <agent> is whichever agent is attached (Claude, Codex, Copilot, any other), never a fixed name; the drawing’s “Claude” is an example. Marks stay quiet on a board no agent has read; link authorship (built 2026-10-09 to [`LinkAuthorship.dc.html`](design/LinkAuthorship.dc.html)) stays until a person edits or relabels the link, as a violet ✦ before the label with who drew it and when in the hint — the agent today; another person's initial on shared boards (hosted version, Part 4) is not built; card text changes keep amber “changed” and win on the card; links-only changes show per card only in the context panel (“links changed”, neutral); relation inks never change; 600 px | 1 |
|
|
128
|
+
| [`LinksOptions.dc.html`](design/LinksOptions.dc.html), [`LinksOptions600.dc.html`](design/LinksOptions600.dc.html) | The connections question as three options on one board (one text edit, one link by you, one by the agent, plus the context panel rows): A as built (every change “changed”), B a separate amber “links changed” on both cards, C the mark on the connection (“not seen by <agent>”, neutral) — C decided with the maintainer 2026-10-08; A and B not chosen | 1 |
|
|
129
|
+
| [`HeaderMarks.dc.html`](design/HeaderMarks.dc.html) | A node header with more than one mark (decided 2026-10-08): the title keeps at least 140 px (all of it when shorter; only amber may push it to 80). “By <agent>” is authorship, not state, so it never takes a chip: a violet sparkle on the type icon at every width, its words in the icon's hint. The one state chip (near, or the read state) folds to its 22 px glyph and then into the icon's hint as the title needs the room; amber “changed” never folds. The icon's one hint holds the full title, the byline and any folded word — never other cards' titles. 260, 340 and 480 px, Harbor and Daylight. Supersedes the byline chip on AgentContext. Read state shows on pinned cards only (decided 2026-10-08: "read" only accumulates and spans boards, so on unpinned cards it would mark everything; the receipt and lens say what was read) — the near + read cases are superseded | 1 |
|
|
130
|
+
| [`LinkAuthorship.dc.html`](design/LinkAuthorship.dc.html) | Who drew a link (decided 2026-10-08): an agent's link carries a violet ✦ before its label until a person edits, retypes or relabels it — a read never clears it; another person on a shared board shows their initial (hosted version, Part 4); the board's only person shows no mark. “Not seen by <agent>” follows, behind a hairline, on a person's new link until the next read; it folds to its glyph on a short line or below 60 % zoom, and below 35 % labels go and only marks stay. The hint names who drew it and when, and who took it over. Harbor and Daylight | 1 |
|
|
131
|
+
| [`SeeChange.dc.html`](design/SeeChange.dc.html) | Built locally (2026-10-10): Before above After (the receipt stays 290 px), changed words marked (removed struck through and muted, added in a violet tint), excerpts cut with “…”, Undo this card and its states (✓ Undone · You edited it since · Open its board to undo), the Edited row’s Undo (Undone · Kept your edits). Long scroll boxes start at the first changed word with context above it; the receipt uses opaque `--c-panel` so underlying marks do not bleed through. At ≤ 760 px the agent's initial has its violet ring and phase dot; clicking opens live counts, the dim-untouched switch and Open session panel (ContextChip600 wins over Pane600). Checked at 600/1024/1920 in all nine themes | 1 |
|
|
132
|
+
| [`AgentContext.dc.html`](design/AgentContext.dc.html) | What the agent did: read, created, edited, suggested, out of date; lens and receipt. Built (2026-10-10) with two placements of our own: the live "Claude · this session" counts sit in the top bar's agent chip ("2 read · 1 edited", press to dim untouched cards; Pane600's wording), because the bottom of the canvas belongs to the command bar; "see change" lives on the receipt's Edited lines, not on the card, which has no meta line — its open view is now built to SeeChange. The drawing's Suggested state is dropped (maintainer, 2026-10-10: the agent changes the canvas directly; asks and suggestions go through the composer) | 1 |
|
|
133
|
+
| [`BoardPins.dc.html`](design/BoardPins.dc.html) | Board pins: where you pin a board, the tiered brief, the context chip across boards; each pinned board carries its category glyph and review state (due count, the brief’s “review due” / “lifecycle unknown” lines) | 1 |
|
|
134
|
+
| [`Home.dc.html`](design/Home.dc.html) | Home — Folders: library tree, pinned boards, README, board details. Folders carry no colour (the 2026-10-07 decision supersedes the drawing's hues); the folder's README line waits until folders have a README. Map and Graph are now available. A card selects the board into details; Open board (or a double-click) opens it | 1, 2 |
|
|
135
|
+
| [`CategoryEditor.dc.html`](design/CategoryEditor.dc.html), [`Uses.dc.html`](design/Uses.dc.html), [`Home.dc.html`](design/Home.dc.html), [`Lifecycle.dc.html`](design/Lifecycle.dc.html), [`Lifecycle600.dc.html`](design/Lifecycle600.dc.html) | Selected 2026-10-14: C1 compact category inspector; R2 read-only chooser then separate preset editor; H2 individual-card Home Review queue; V2 real card beside a docked review drawer, lower dock at 600 px. Supersedes earlier category full-form and review-modal geometry; retains inheritance, evidence guards and independent clocks | Implemented; owner acceptance pending, no release claim |
|
|
136
|
+
| [`HomeMap.dc.html`](design/HomeMap.dc.html), [`HomeGraph.dc.html`](design/HomeGraph.dc.html) | Home — Map and Graph views of the library; implemented with the wave-2 deviations below | 2 |
|
|
137
|
+
| [`HomeTeam.dc.html`](design/HomeTeam.dc.html) | Home on a team server: workspace and personal libraries, per-user pins, moving a board into the workspace, locked links, folder categories and due counts in both libraries (look ahead) | Later (hosted version, Part 4) |
|
|
138
|
+
| [`Categories.dc.html`](design/Categories.dc.html), [`CategoryEditor.dc.html`](design/CategoryEditor.dc.html), [`Lifecycle.dc.html`](design/Lifecycle.dc.html), [`Lifecycle600.dc.html`](design/Lifecycle600.dc.html) | Knowledge categories as a folder property (glyph + word, no colour; set here vs `↳` inherited; dashed “unknown”), folder settings, the one workspace list with lifecycle defaults and templates (org/team/personal is one option), a solo-research workspace; on cards: lifecycle override (never category), the four clocks, review outcomes with evidence, the board's review list, the brief. Review due is amber **outlined** with ⧗ as the card's bottom line, only while due; changed-since-read stays amber **filled** with △ in the header. 600 px | For review (move 13: local categories and lifecycle are implemented; shared scopes come with the hosted version, Part 4) |
|
|
139
|
+
| [`LifecycleVariants.dc.html`](design/LifecycleVariants.dc.html), [`Restore.dc.html`](design/Restore.dc.html) | Where lifecycle shows: variant A (review due on the card while due) vs B (only in the ⋯ menu, a count on the board), with the shared ⋯ → Lifecycle entry; retiring and restoring a card: dimmed in place, Retired filter, search, Restore in the Lifecycle tab, Undo toast, history with who and when | A chosen 2026-10-07; restore confirmed |
|
|
130
140
|
| [`Relations.dc.html`](design/Relations.dc.html) | Relations on a research board, today vs proposed; edge anatomy; relation inks | 3 |
|
|
131
141
|
| [`Flows.dc.html`](design/Flows.dc.html) | Data lineage with staleness, what a finding rests on, opening a group | 3, 5 |
|
|
132
142
|
| [`Uses.dc.html`](design/Uses.dc.html) | One relation layer for research, dependencies, decisions and agent flows | 3 |
|
|
@@ -135,6 +145,116 @@ the same change.
|
|
|
135
145
|
| [`Pane600.dc.html`](design/Pane600.dc.html) | Home and a board at the narrow end, 600 px | all |
|
|
136
146
|
| [`Vision.dc.html`](design/Vision.dc.html) | How each design area maps to the vision, and the open decisions | — |
|
|
137
147
|
|
|
148
|
+
**Empty-board onboarding (owner decision, 2026-10-17).** Keep both starting paths visible:
|
|
149
|
+
Drop files here, Paste a link, and Start a note, each with a short explanation. The note
|
|
150
|
+
invites the person to ask their agent to help develop the idea. A separate “Or start with
|
|
151
|
+
your agent” section says “Give your agent a task and ask it to work on this board.” This is
|
|
152
|
+
guidance, not an agent-launch button, and remains visible with Agent sessions (Beta) off.
|
|
153
|
+
With the beta on, the existing Start agent session action sits below that guidance.
|
|
154
|
+
The existing panel, type and colour tokens stay; actions form one readable column, and
|
|
155
|
+
short windows scroll the guide rather than cutting off either starting path.
|
|
156
|
+
|
|
157
|
+
**Canvas mouse gestures (owner decision, 2026-10-19).** Right-click on empty canvas
|
|
158
|
+
opens the existing creation menu on release. Holding the right button and moving more
|
|
159
|
+
than 5 screen pixels pans; releasing after a drag never opens a menu, even when the
|
|
160
|
+
pointer returns to its starting point. Small hand jitter remains a click. Cancelled
|
|
161
|
+
gestures open nothing. Right-drag over cards, middle-button drag, Space-drag and the
|
|
162
|
+
existing node and background double-click menus remain available. Right-clicking a
|
|
163
|
+
connection line or label opens its menu on release instead of double-click; dragging
|
|
164
|
+
from either still pans without opening a menu. Menu appearance is unchanged.
|
|
165
|
+
|
|
166
|
+
**Workspace UI opt-ins (owner decision, 2026-10-16).** Main rail **Settings** contains
|
|
167
|
+
**Agent sessions (Beta)** and **Knowledge lifecycle (Beta)**, each with a small switch,
|
|
168
|
+
both **OFF by default**. These preferences persist workspace-wide across reloads and
|
|
169
|
+
board changes: they are library-wide settings, never board snapshot state. Restoring a
|
|
170
|
+
board snapshot must not change them. Chrome §7 is the chosen settings drawing; this
|
|
171
|
+
decision gates the session and lifecycle surfaces described elsewhere in this guide.
|
|
172
|
+
|
|
173
|
+
Every main Settings item (including existing actions and both opt-ins) has an explanatory,
|
|
174
|
+
nonnative tooltip on pointer hover and keyboard focus. Tooltips render outside the scrolling
|
|
175
|
+
menu in an overlay, stay within the viewport, and do not clip at the menu boundary. Do not
|
|
176
|
+
use native `title` tooltips; associate the explanation with its control for assistive technology.
|
|
177
|
+
The lifecycle explanation leads with context lifecycle and boards/cards decaying as their
|
|
178
|
+
relevance fades, before naming its tools and explaining that turning it off preserves data.
|
|
179
|
+
Keep the menu scrollable in short windows and all items keyboard-reachable. Saving a switch
|
|
180
|
+
uses `aria-disabled` with an action guard, not native disabling that drops keyboard focus;
|
|
181
|
+
the focused switch announces its new state, and board shortcuts never own menu keys.
|
|
182
|
+
Trace uses the same inline switch, without a Beta label or submenu. Clear trace stays a
|
|
183
|
+
separate Settings action while capture is enabled or recorded trace cards remain.
|
|
184
|
+
Relation filters sit 8 px below the canvas top when lifecycle is off, regardless of the
|
|
185
|
+
session opt-in. Reserve the lifecycle row's space only while its filters are visible.
|
|
186
|
+
|
|
187
|
+
- **Agent sessions OFF** hides session chips, Start agent session, timeline, work items,
|
|
188
|
+
composer and receipts. It does not end or detach attached agents. Normal writer visibility
|
|
189
|
+
remains, and approvals, scope fences, human edit locks and veto protections still apply;
|
|
190
|
+
required approval decisions must remain reachable outside the hidden session UI. Restore
|
|
191
|
+
the bottom-center **N nodes in context** pill for pinned cards on the current board, with
|
|
192
|
+
Clear all and its styled tooltip, independently of attachment or lifecycle. Hide it on Home
|
|
193
|
+
and when no cards are pinned. Keep the top-bar context summary unchanged. The selection
|
|
194
|
+
toolbar wraps within the canvas above the pill; at narrow widths a visible minimap sits
|
|
195
|
+
10 px above the toolbar's measured height, or above the pill if nothing is selected. Fit
|
|
196
|
+
and focus reserve the pill's screen-space bounds. ContextChip shows this footer exception
|
|
197
|
+
to the earlier one-chip decision; enabling sessions gives the footer back to the composer.
|
|
198
|
+
Footer collision layout uses the actual canvas width, including space taken by Review or
|
|
199
|
+
session panels: at 1200 px or less the minimap sits above the measured composer/selection
|
|
200
|
+
stack, with a 10 px gap even when the minimap magnifies on hover. Hidden composers reserve
|
|
201
|
+
no space. Wider canvases keep the minimap in the bottom-right corner.
|
|
202
|
+
- **Knowledge lifecycle OFF** hides Home Review, card Review, review-policy and category
|
|
203
|
+
management, lifecycle filters, due marks and retired marks/dimming. Saved policies,
|
|
204
|
+
categories and review records remain intact. Open lifecycle drafts are suspended without
|
|
205
|
+
saving or discarding them and resume when enabled again. Ordinary folders, boards, pins
|
|
206
|
+
and relations remain available; hiding lifecycle never removes their ordinary controls.
|
|
207
|
+
- These are **UI opt-ins**, not backend security boundaries or API disables. Background
|
|
208
|
+
agents and API operations retain their contracts and protections. Retirement still excludes
|
|
209
|
+
retired content from agent context even while retired marks and lifecycle controls are hidden.
|
|
210
|
+
Context counts and nearby-context marks exclude retired cards regardless of the opt-in;
|
|
211
|
+
raw pin membership remains saved, so restoring a retired card restores its active pin.
|
|
212
|
+
Clear all removes all saved pins, including retired cards excluded from the displayed count.
|
|
213
|
+
A successful review save is acknowledged even if its dock is suspended before the reply:
|
|
214
|
+
clear the saved draft, reload its preconditions, and retain retirement Undo on resume.
|
|
215
|
+
|
|
216
|
+
**Near cards distance (owner decision, 2026-10-14).** Near means an edge-to-edge
|
|
217
|
+
gap of at most 600 canvas pixels, not distance between centres. Large cards do
|
|
218
|
+
not need to overlap to qualify. Keep the five nearest unpinned cards per pin;
|
|
219
|
+
the brief, chip distances, tether numbering and nearest-pin drag preview use the
|
|
220
|
+
same gap. The dotted boundary expands the whole pinned rectangle by 600 pixels,
|
|
221
|
+
with rounded corners, rather than drawing a circle around its centre.
|
|
222
|
+
|
|
223
|
+
**Escape cancels selection (owner decision, 2026-10-14).** Escape returns board
|
|
224
|
+
relation and To review / Retired filters to All, and clears selected cards or
|
|
225
|
+
links. In Home it clears the selected board/card in Folders, Map or Graph
|
|
226
|
+
without leaving that view or resetting its camera; the Review queue's search
|
|
227
|
+
and source-warning filter also clear. Open menus/dialogs consume Escape first, and typing in a
|
|
228
|
+
text editor or search field does not silently reset the underlying selection.
|
|
229
|
+
Category and relation-preset dialogs retain Escape ownership after a busy save/apply
|
|
230
|
+
disables the focused control and focus falls back to the page body; nested menus and
|
|
231
|
+
unsaved-change confirmations still dismiss first without discarding drafts.
|
|
232
|
+
Agent session popovers accept Escape immediately on opening, consume it before underlying
|
|
233
|
+
selection and return focus to their initial button without scrolling the canvas.
|
|
234
|
+
|
|
235
|
+
**Authorship simplification (owner decision, 2026-10-12).** Remove the violet stars from
|
|
236
|
+
card type icons and relation pills. The type-icon hint still names who wrote or edited the
|
|
237
|
+
card; the relation hint still names who drew it and when, including later takeover.
|
|
238
|
+
Bare lines also expose that hint, so removing an unlabelled link's star does not remove its
|
|
239
|
+
authorship information. This supersedes the star treatment in HeaderMarks, LinkAuthorship
|
|
240
|
+
and LinksChanged above. Blue context pins, violet read-state marks and the agent's activity
|
|
241
|
+
lens remain separate and unchanged.
|
|
242
|
+
|
|
243
|
+
**See change runtime bounds (2026-10-10).** In short windows the whole receipt scrolls inside
|
|
244
|
+
the canvas region, keeping Undo and History reachable. The Edited row follows individual restores
|
|
245
|
+
as well as bulk Undo. On another board, View diff becomes Open <board> to compare, even when the
|
|
246
|
+
session only added or removed cards; snapshot ownership checks stay unchanged.
|
|
247
|
+
|
|
248
|
+
**Viewer refresh handoff (2026-10-10).** Keep the painted embedded JSON/graph viewer visible
|
|
249
|
+
while its replacement loads and restores tab-local state. After React commits, the replacement
|
|
250
|
+
advances its own rendering cycle through two animation frames before acknowledging readiness.
|
|
251
|
+
Authenticate that acknowledgement by node ID, nonce and source window, then wait two parent
|
|
252
|
+
animation frames before promotion. The replacement renders behind the old opaque iframe, inert
|
|
253
|
+
and excluded from accessibility until promotion; `visibility:hidden` would suppress rendering.
|
|
254
|
+
Keep the iframe stack's z-indices local. An obsolete replacement cannot promote after a newer
|
|
255
|
+
source arrives.
|
|
256
|
+
Standalone viewers and HTML/artifact viewers retain their existing load path; no new styling.
|
|
257
|
+
|
|
138
258
|
## Principles
|
|
139
259
|
|
|
140
260
|
- **One meaning per colour, the same in every theme.** Blue = in the agent's
|
|
@@ -144,8 +264,9 @@ the same change.
|
|
|
144
264
|
three. Each theme keeps its own surfaces and accent; the meaning colours keep
|
|
145
265
|
their hue and are tuned only for lightness. A token test keeps them apart in all
|
|
146
266
|
nine themes.
|
|
147
|
-
- **Context pins at two levels, one look.** A card pin
|
|
148
|
-
|
|
267
|
+
- **Context pins at two levels, one look.** A card pin puts that card first in the agent's
|
|
268
|
+
map (title, summary, relations; the agent pulls the full text when it decides to); a board
|
|
269
|
+
pin brings the whole board into the agent's working set as a map, from anywhere in the library
|
|
149
270
|
([vision move 0a](product-vision-2026-09.md#0a-board-pins-a-working-set-across-boards-sm)).
|
|
150
271
|
Both use the outline pin (not in context) and the filled blue badge (in context), and the
|
|
151
272
|
context chip counts both: "4 cards · 3 boards in context".
|
|
@@ -164,7 +285,41 @@ the same change.
|
|
|
164
285
|
README, close) appear on hover under ⋯ and ×. Their slots stay reserved while
|
|
165
286
|
hidden, so hover or keyboard focus cannot move the pin onto another action.
|
|
166
287
|
Section labels are a heading display of the markdown node. Rarely used tools
|
|
167
|
-
live in one settings menu on the rail
|
|
288
|
+
live in one settings menu on the rail (built 2026-10-08: theme, snapshots, minimap,
|
|
289
|
+
shortcuts, trace, feedback; now also Agent sessions (Beta) and Knowledge lifecycle (Beta),
|
|
290
|
+
both initially off, with library-wide persistence and explanatory hover/focus tooltips.
|
|
291
|
+
Theme and Trace open in place with a "‹ Settings" row). The
|
|
292
|
+
Eraser stays beside Text note — it is the only way to remove an annotation — so the rail
|
|
293
|
+
has 13 tools (Chrome.dc.html §7, updated to match).
|
|
294
|
+
- **Kinds and knowledge categories carry no colour** (categories confirmed with the
|
|
295
|
+
maintainer 2026-10-07). A node kind and a folder's category are told by glyph and word
|
|
296
|
+
only; no hue is spent on them, so every colour on the board keeps a meaning. This
|
|
297
|
+
settles the old Home folder-hue question: folders show their category tag, never a
|
|
298
|
+
coloured square.
|
|
299
|
+
- **Retire is reversible** (confirmed 2026-10-07). "Retire from active context" only takes
|
|
300
|
+
a card out of the brief; the card and its history stay. A retired card is dimmed in
|
|
301
|
+
place, found by the board's Retired filter and by search, and restored from its
|
|
302
|
+
Review dialog; the restore is recorded with who and when, and is not a validation.
|
|
303
|
+
- **Lifecycle lives in menus; only "review due" reaches the card** (decided with the
|
|
304
|
+
maintainer 2026-10-07, variant A in `LifecycleVariants.dc.html`). While a review is due a
|
|
305
|
+
card shows one bottom line, `⧗ review due` (amber, outlined) with a short reason; a healthy
|
|
306
|
+
card shows no lifecycle line. Rate, decay type, inherited or set, the four clocks and the
|
|
307
|
+
outcome history live under ⋯ → Review → Settings and history, folder settings and Home.
|
|
308
|
+
"No review policy" appears in Home's selected-folder summary, never on a card. Why: the brief tells the agent
|
|
309
|
+
to doubt a due card, so the human sees that on the card too.
|
|
310
|
+
**Freshness correction, 2026-10-18:** newly authored cards have no warning until
|
|
311
|
+
their effective decay policy or an actual source invalidation requires review.
|
|
312
|
+
Creation is not evidence validation. Historical imports and undated existing cards
|
|
313
|
+
do not gain a new freshness clock; edits never restart it. Navigation groups and
|
|
314
|
+
portals skip inherited factual decay unless explicitly assigned a card policy.
|
|
315
|
+
An explicitly due group's same outlined footer sits below its children in the
|
|
316
|
+
group frame, never as the empty body's expanding first child. The Lifecycle
|
|
317
|
+
artboards' warning tokens, glyph, copy and compact row remain unchanged.
|
|
318
|
+
- **A portal's pin is its board's pin** (decided with the maintainer 2026-10-07). On a
|
|
319
|
+
portal card the header pin, in the usual place, pins the linked board into the agent's
|
|
320
|
+
working set (README and pinned cards in full, on every board); there is no separate card
|
|
321
|
+
pin, which would only send the portal's summary while this board is open. Every other
|
|
322
|
+
card keeps its card pin.
|
|
168
323
|
- **Relations are the edge layer, not node types.** Design work adds no node type;
|
|
169
324
|
the vision's own `ask` node (move 3) is separate.
|
|
170
325
|
- **Any size, from a side pane to a full window.** The workbench lives in narrow agent-host
|
|
@@ -176,18 +331,55 @@ the same change.
|
|
|
176
331
|
## Build plan
|
|
177
332
|
|
|
178
333
|
Each wave pairs a vision move with the design that shows it. A wave is done only
|
|
179
|
-
when both halves pass its check.
|
|
180
|
-
|
|
334
|
+
when both halves pass its check. **Current progress, 2026-10-12:** the implemented
|
|
335
|
+
Wave 2/3 scope and acceptance fixes are pushed in the
|
|
336
|
+
[combined implementation](https://github.com/pskoett/pmx-canvas/commit/11dc311732d8c12acc86dda12b269539df8fa5b3)
|
|
337
|
+
and [stabilization follow-up](https://github.com/pskoett/pmx-canvas/commit/fd63c3c611e680864d444532ca3ef7bb79cd171e).
|
|
338
|
+
Home Map/Graph now have live updates, counted filters and selection details; Graph
|
|
339
|
+
follows the topology-driven navigation acceptance revision below. Explicit library browsing survives agent
|
|
340
|
+
board switches, preserving camera, selection and gestures until the human opens a target.
|
|
341
|
+
Wave 3 implements per-board relation vocabularies, provenance, source-driven review and
|
|
342
|
+
[knowledge categories and context lifecycle](plans/plan-017-knowledge-categories-and-lifecycle.md).
|
|
343
|
+
The final [stabilization record](plans/plan-018-connected-memory-wave-2.md#delivered-checkpoint-2026-10-12)
|
|
344
|
+
has 1,444 unit, 306 client and 276 headed browser tests, 20 repeated save-race cases,
|
|
345
|
+
fresh headed CLI E2E and live human/real-agent transport checks. Widths and all nine themes
|
|
346
|
+
were inspected; independent board vocabularies persist across switching/reload. All five
|
|
347
|
+
[CI jobs](https://github.com/pskoett/pmx-canvas/actions/runs/38218734543) pass. These gates
|
|
348
|
+
do not establish complete drawing parity or replace the owner's acceptance.
|
|
349
|
+
|
|
350
|
+
**Remaining acceptance:** the owner's test pass since 0.8.2 remains open. The real-agent
|
|
351
|
+
curation evaluation moved to the end of the plan on 2026-10-19; the post-0.9.0 order of
|
|
352
|
+
Waves 4 and 5 is in [plan 019](plans/plan-019-post-0.9-roadmap.md). The actual Amp embedded context-pill opening, native Copilot/WebKit,
|
|
353
|
+
native Windows UI and registry-installed execution remain unverified. Dense Fit labels need
|
|
354
|
+
selection/local focus for detail, not a claim of large-library readability. The sketch gaps
|
|
355
|
+
below remain implementation work. The [release gates](RELEASE.md) still apply before a release;
|
|
356
|
+
the owner authorized review, testing and release of 0.9.0 on 2026-10-22. The release
|
|
357
|
+
candidate includes the acceptance fixes, but that authorization does not turn qualified
|
|
358
|
+
native-host checks or deferred sketch parity into completed work.
|
|
359
|
+
|
|
360
|
+
**Sketch parity, clarified 2026-10-11.** `Relations`, `Flows` and `Uses` remain the
|
|
361
|
+
vision's target designs, not screenshots of the shipped workbench. The Wave-3
|
|
362
|
+
foundation does not implement every interaction pictured in them. It provides
|
|
363
|
+
per-board vocabularies, semantic inks, separate endpoint slots, authored reasons,
|
|
364
|
+
evidence/source/use queries, downstream review qualification and view-only
|
|
365
|
+
highlights. Parallel-pair count badges, cycle/affected counts, the compact inline
|
|
366
|
+
edge editor, amber stale-lineage strokes and the Show lineage / Show on canvas
|
|
367
|
+
actions are not implemented. The current editor is a context menu with text
|
|
368
|
+
dialogs; source changes appear as review-due card footers, not recoloured edges.
|
|
369
|
+
Group drill-in with breadcrumbs and outside endpoint stubs belongs to Wave 5.
|
|
370
|
+
The sketches' suggested-link Accept/Dismiss treatment was superseded by the
|
|
371
|
+
2026-10-10 direct-edit decision recorded above; it is not a pending acceptance
|
|
372
|
+
workflow. A demo of existing features must not be used to claim full sketch parity.
|
|
181
373
|
|
|
182
374
|
| Wave | Vision | Function (build) | Design (proposal boards) | Done when |
|
|
183
375
|
|---|---|---|---|---|
|
|
184
|
-
| **0. Foundation
|
|
185
|
-
| **1. Context made visible** —
|
|
186
|
-
| **2. Connected memory views** —
|
|
376
|
+
| **0. Foundation**: shipped in 0.8.0; remaining foundation gaps ship with plan 019 step 3 | Moves 5, 9, 10 | Bundle Plex; controls inherit the font; type/radius/shadow tokens; meaning tokens per theme; theme renames (`dark` → Harbor, `light` → Daylight, neutral; no aliases); pin style that survives selection and attention; violet header bar replaces amber halos and focus fields | Today / Proposed, Tokens, Themes, Rail and node header, Nodes in context | No control renders in a fallback font; token test passes for all nine themes; reference cases pass at 600, 1024 and 1920 px; demo board regenerated |
|
|
377
|
+
| **1. Context made visible** — its curation evaluation moved to the end of the plan (2026-10-19) | Part 1 bet, moves 0a, 2, 7 | Surface `context_reads` (already recorded since 0.7.0: who read, which nodes were delivered) per node and per board as read / not read / changed since read, using revisions; who pinned; activity lens and session receipt from presence activity and revisions; board pins (`board_pins`, tiered brief, `canvas_board pin/unpin`) and Home's pinned-boards section | What the agent did with context, Nodes in context, Board pins, Home (Folders) | From the board alone, a person can answer "did the agent read what I pinned, and is its copy current?" The evaluation in `docs/evals/` reads the same data |
|
|
378
|
+
| **2. Connected memory views** — implemented, verification gates apply | Moves 0, 14 | One board/card projection for Home, links/backlinks, brief discovery and `canvas://graph{?focus,depth}`; saved wiki ID bindings, direct cross-board card edges, previous-board chains, persisted Map positions | Home Map, Home Graph (deviations below) | Map and Graph are generated from the library; orphans visible; works at 600 px and in a full window |
|
|
187
379
|
| **3. Relations layer** | Moves 0, 1, 13 | Edge `reason` and an open `kind` with a per-board vocabulary; relations carried in the brief's text form; "derived from" with staleness from provenance and recipes; relation queries for the inspector | Relations, Lineage, One relation layer | Hovering a node explains each link; a changed source turns downstream nodes amber; the agent's brief includes relations |
|
|
188
380
|
| **4. Frame host and viewers** | Moves 5, 9 | One frame host passing the full theme tokens; json-render defaults to the canvas theme with an opt-out for design experiments; zoomed-out cards for unmounted frames | Node types 1–3, Zoomed out | No viewer draws its own background; 20 portals mount no more frames than none; fit-all is readable |
|
|
189
381
|
| **5. Agent output and groups as pages** | Moves 3, 0 | Work items, gates and asks as nodes; make board / inline board; opening a group keeps its outside links | One relation layer (agent flow), Lineage (open a group) | Agent output is styled by the same shell and tokens; a group opened as a board shows its outside stubs |
|
|
190
|
-
| **Later
|
|
382
|
+
| **Later: hosted version** | Part 4 (moved from Part 3, 2026-10-19) | Read-only link, comments, second writer, accounts and roles; org → team → personal scopes with configurable categories and per-user pins; built once for the ChatGPT Sites and later Cloudflare editions | HomeTeam is the earlier two-root look ahead; updated scope/category drawings are required before building, retaining explicit publication and locked cards for unreadable boards | Exports and shared views inherit the tokens; a viewer sees the same meaning colours; nothing personal reaches a wider audience without explicit publication |
|
|
191
383
|
|
|
192
384
|
**Folders and portals (decided 2026-10-06).** Home uses folders as the visible hierarchy (where a
|
|
193
385
|
board lives, one place); portals and links are how boards relate: a many-to-many graph the agent
|
|
@@ -195,6 +387,247 @@ navigates through links and backlinks on `canvas://boards`, and that Map and Gra
|
|
|
195
387
|
replaces the review's portal-derived levels as the navigation tree. Where a board's folder and its
|
|
196
388
|
links disagree, the Map shows it (folders as regions) rather than forcing them to match.
|
|
197
389
|
|
|
390
|
+
**Home Map/Graph acceptance revision (2026-10-18, owner-authorized Claude/Oracle agreement).**
|
|
391
|
+
Graph is one zoomable, topology-driven **Library > Board > Card** explorer. The canonical
|
|
392
|
+
`HomeGraph.dc.html` draws all three levels with actual relationships. This is the acceptance
|
|
393
|
+
target, not a claim that UI implementation or owner verification is complete. Folder paths
|
|
394
|
+
remain metadata and filters; they never determine Graph geometry.
|
|
395
|
+
|
|
396
|
+
- **Library:** named board nodes connected by neutral, undirected, counted bundles of
|
|
397
|
+
original evidence for each unordered board pair. Combining directions and kinds does not
|
|
398
|
+
invent a board-to-board fact. Internal counts and missing targets are separately qualified.
|
|
399
|
+
- **Board:** the board's internal card-relation topology, alongside external neighbor boards.
|
|
400
|
+
Membership alone draws no evidence edge; there is no central ownership hub dictating layout.
|
|
401
|
+
- **Card:** the focused card with exact one-hop qualified neighbors, incoming on the left and
|
|
402
|
+
outgoing on the right. Keep board identity on every endpoint, original direction and the
|
|
403
|
+
source-board vocabulary. Undirected `related` has no arrow; `depends-on` points from dependent
|
|
404
|
+
to prerequisite. Opposite authored directions remain separate facts, including when the same
|
|
405
|
+
qualified neighbor participates on both sides.
|
|
406
|
+
|
|
407
|
+
Ordinary node **click, Enter or Space drills** into that board or card's graph, including
|
|
408
|
+
external neighbors. An **edge selects its exact evidence** in the existing bottom inspector;
|
|
409
|
+
a bundle exposes its constituent facts, never a synthetic reason. **Back** restores the prior
|
|
410
|
+
scene, camera, query, filters and selection. The breadcrumb instead goes up the ownership
|
|
411
|
+
hierarchy: Library, owning Board, Card; it is not traversal history. **Open board/card** is
|
|
412
|
+
separate and opens content, never an implicit consequence of drilling or inspecting evidence.
|
|
413
|
+
|
|
414
|
+
Unconnected boards and cards occupy a **labelled, clickable tray**, not invented links.
|
|
415
|
+
Large connected sets use bounded initial display with search and explicit reveal actions;
|
|
416
|
+
show displayed, total, filtered and hidden counts so omissions are never mistaken for absence.
|
|
417
|
+
Search can reveal a hidden target without shrinking every label. Entry and reveal preserve
|
|
418
|
+
readable scale at 100%; explicit Fit may show a dense extent. The header separately counts
|
|
419
|
+
drawn nodes outside the usable viewport, filtered nodes and nodes beyond the display limit.
|
|
420
|
+
Card entry centers the focused card; mutual and undirected neighbors start below it, not below
|
|
421
|
+
the deepest side bank. Display bounds do not truncate inspector evidence or change the graph
|
|
422
|
+
API. No unverified numeric display limit is a design constant.
|
|
423
|
+
|
|
424
|
+
Initial layout uses a **deterministic bounded force solve** and caches the settled positions.
|
|
425
|
+
Owner interaction follow-up (2026-10-18): **dragging reheats the graph** at every exploration
|
|
426
|
+
level. The held node follows the pointer through occupied space; nearby nodes repel and real
|
|
427
|
+
links pull their neighbors. After release the dropped node stays put while the rest cools and
|
|
428
|
+
settles, then animation stops. Canceling restores the whole pre-drag layout. Card directions
|
|
429
|
+
start in left/right banks; manual rearrangement never changes the authored arrows.
|
|
430
|
+
Dense-graph follow-up: each node shares a gentler weighted pull across its links, rather than
|
|
431
|
+
accumulating full-strength springs with its degree. Keep breathing room instead of packing
|
|
432
|
+
connected nodes against their collision stops. Initial Card banks use the same spacing rule.
|
|
433
|
+
Live updates alone keep existing nodes anchored and preserve camera and selection; place
|
|
434
|
+
additions without globally reshuffling the scene. Graph positions remain view-local, not saved
|
|
435
|
+
board coordinates. Use the existing stack, with no new framework or dependencies. Graph and
|
|
436
|
+
Map retain separate view owners, sharing projection loading and the inspector shell only.
|
|
437
|
+
Server/API `focus` and `depth` contracts remain unchanged; these are not Graph navigation controls.
|
|
438
|
+
|
|
439
|
+
Graph nodes use one 220 × 96 px outlined footprint, with glyph, title and metadata inside it.
|
|
440
|
+
Collision clearance, boundary ports, obstacle-avoiding routes and Fit share those bounds.
|
|
441
|
+
The 64 px node-spacing gap reserves breathing room and a corridor outside each node's 8 px route clearance;
|
|
442
|
+
settling separates rectangles instead of allowing springs to close those corridors. Hover
|
|
443
|
+
emphasizes a node's incident links without fading unrelated connections.
|
|
444
|
+
External boards use dashed outlines. Count/type labels reserve their own non-overlapping
|
|
445
|
+
rectangles outside node bodies; Fit includes those rectangles. The view permits line crossings,
|
|
446
|
+
not paths through titles. No old slot grid, ring or pair-only navigation remains alongside it.
|
|
447
|
+
|
|
448
|
+
Graph's full-width bottom inspector starts **collapsed and compact**, below the view and legend,
|
|
449
|
+
separate from filters. Selecting evidence exposes it in that dock; expanding/restoring retains
|
|
450
|
+
selection and camera. Map retains its existing behavior and **280 px default dock**, not a
|
|
451
|
+
redesign. In the existing docking shell, drag the separator or use Up/Down and Home/End to
|
|
452
|
+
resize. The upper bound reserves 160 px for the graph when the window has room. Collapse
|
|
453
|
+
retains the selection/action header; restore keeps height, selection and camera.
|
|
454
|
+
The relation list scrolls internally. A reserved dock keeps selecting a card from shifting
|
|
455
|
+
the view, and the same bottom layout remains usable with the narrow filter overlay closed.
|
|
456
|
+
The fixed action header has 8 px bottom spacing and a divider before the scrolling list;
|
|
457
|
+
the empty heading reserves the collapse control's full 36 px height above the help text.
|
|
458
|
+
Owner readability follow-up uses 14 px relation text and controls (36 px minimum height),
|
|
459
|
+
15 px headings and 13 px secondary text. Inspector chrome never scales with canvas zoom.
|
|
460
|
+
Owner follow-up (2026-10-17): Map matches this inspector visually, not functionally. Map
|
|
461
|
+
retains board tiles, persisted positions, Reset position and connection Open actions; it does
|
|
462
|
+
not inherit Graph drill navigation or Back. Both narrow filter toggles say Filters, and a
|
|
463
|
+
selection never opens that overlay just to show relations in the separate bottom dock.
|
|
464
|
+
Map nests and collapses neutral folder regions; dragging persists top-left `mapPosition`
|
|
465
|
+
in SQLite and a refused write rolls back. Both views update from the shared projection
|
|
466
|
+
without resetting the camera or selection. An agent opening a board does not eject a human
|
|
467
|
+
browsing Map/Graph; explicit Open board/card returns to the board. Board-edit shortcuts and
|
|
468
|
+
controls are unavailable while that library view is active. Its context chip lists all
|
|
469
|
+
workspace board pins, including the agent's active board, without hidden-board card controls.
|
|
470
|
+
|
|
471
|
+
**Remaining drawing deviations.** No synthetic Home board, portal-derived hierarchy, or
|
|
472
|
+
category hues: later folder/meaning-colour decisions override those marks. Map board tiles
|
|
473
|
+
use consistent dimensions rather than count-based sizes, and no unqualified age fading or
|
|
474
|
+
token estimate is shown. Both sidebars contain filters only and overlay the view at 600 px;
|
|
475
|
+
selection details stay in the shared bottom dock. Graph positions/display settings
|
|
476
|
+
are view-local, not saved board coordinates. Folders remain independent of links. Remote card
|
|
477
|
+
connections use the source footer and human More-menu picker, not remote canvas
|
|
478
|
+
lines; auto-arrange remains local and static export retains explicit external
|
|
479
|
+
connection evidence.
|
|
480
|
+
|
|
481
|
+
**Reference-footer correction (2026-10-18).** Chrome's footer keeps every remote
|
|
482
|
+
connection inside one keyboard-focusable scroll region, capped at 40% of the card
|
|
483
|
+
body and 132 world pixels. Short lists retain their natural height; long lists
|
|
484
|
+
cannot consume the document or its actions. Unmodified wheel and navigation keys
|
|
485
|
+
scroll references instead of moving the canvas. No graph data is collapsed or removed.
|
|
486
|
+
Reading expanded Markdown, closing it or following a link without input preserves
|
|
487
|
+
the exact source and revision. Pending real edits still finish before navigation.
|
|
488
|
+
|
|
489
|
+
**Owner-guide fixes (2026-10-20).** The same reference list follows cards into focus
|
|
490
|
+
mode, above the provenance strip, capped at 132 screen pixels there. It retains every
|
|
491
|
+
target without displacing the document. A refused Markdown save keeps the reader and
|
|
492
|
+
its draft open instead of navigating away. Hidden connection handles do not receive
|
|
493
|
+
pointer hits; their enlarged grab areas activate with the visible handles on hover,
|
|
494
|
+
selection or keyboard focus. Flow-action hints fit the native card or expanded panel,
|
|
495
|
+
whichever actually contains them. The shared Map/Graph inspector reserves one trailing
|
|
496
|
+
pixel so integer scroll extents do not cut the last row's fractional border.
|
|
497
|
+
The guide uses the current Library → Board → Card explorer described above, not the
|
|
498
|
+
removed stationary expansion controls. Dense Fit remains an overview, and unfinished
|
|
499
|
+
Relations/Flows/Uses drawings and unavailable platform checks remain separate from fixes.
|
|
500
|
+
|
|
501
|
+
**Interaction follow-up (2026-10-21).** Visible connection handles keep their 32-screen-pixel
|
|
502
|
+
grab areas outside the card, with the dots still on its edge, so low-zoom headers and pins
|
|
503
|
+
retain their hit targets. Grab areas yield to every card, including neighboring cards,
|
|
504
|
+
but outrank connection labels and lines. Group interiors still select and open their menus,
|
|
505
|
+
below child ports and labels; the frames and labels keep their existing visual stacking.
|
|
506
|
+
Expanded flow documents put Source in a separate row above the reader, clear of the
|
|
507
|
+
bottom dock's action hints; ordinary documents keep their bottom-right Source button.
|
|
508
|
+
Hovering a flow action temporarily
|
|
509
|
+
hides another action's keyboard hint without moving focus; leaving restores the focused hint.
|
|
510
|
+
Card checkbox clicks address parsed Markdown tasks, not fenced/indented examples or raw
|
|
511
|
+
HTML inputs, and change only the selected marker. Polling requests have a ten-second
|
|
512
|
+
headers-and-body deadline, including hosted transports, before the existing reconnect retry;
|
|
513
|
+
recovery does not reload the workbench or discard an unsaved draft. These fixes do not
|
|
514
|
+
establish the cause of the earlier ordinary-checkbox or reconnect incidents.
|
|
515
|
+
|
|
516
|
+
**Acceptance follow-up (2026-10-13).** ContextChip600's collapse order also applies when
|
|
517
|
+
agent names/counts fill a wider bar: fold actions into More before compacting sessions to
|
|
518
|
+
their existing initials and popovers. More owns keyboard focus as soon as it opens and
|
|
519
|
+
stays reachable through resize or count changes until it closes.
|
|
520
|
+
At extra-narrow widths with multiple attached sessions, compact spacing tightens and the
|
|
521
|
+
board name may ellipsize below its usual minimum; the status dot, board pin, context summary,
|
|
522
|
+
agent initials and More remain reachable. The switcher button must shrink with its wrapper,
|
|
523
|
+
not retain its intrinsic text width behind clipped controls.
|
|
524
|
+
External writers follow the same compact step, keeping their avatars, activity button and
|
|
525
|
+
accessible identity while giving the context summary room. At narrow widths, retained Updates
|
|
526
|
+
tracks the measured bottom of the Map/Graph toolbar, including wrapped tabs/counts, not a
|
|
527
|
+
fixed offset. It stays clear of Filters in both sidebar states; while filters are
|
|
528
|
+
open it compacts to an icon beside the sidebar rather than covering search.
|
|
529
|
+
The open session drawer sits above retained canvas receipts so its controls remain
|
|
530
|
+
reachable. Expanded Markdown uses the same wiki navigation as the card preview, after its
|
|
531
|
+
rich-editor blur save finishes. Missing-board creation captures that saved source; later peer
|
|
532
|
+
changes still refuse binding rather than overwrite the source. Medium
|
|
533
|
+
review policies require an explicit cadence; whitespace alone is not a revalidation method.
|
|
534
|
+
HTML viewer replacements acknowledge mount and paint before replacing the healthy document,
|
|
535
|
+
matching the existing JSON/graph handoff without changing the sandbox permissions.
|
|
536
|
+
|
|
537
|
+
**Wave-3 implementation decisions and deviations.** The relation legend uses the six fixed
|
|
538
|
+
inks and open kinds. Owner clarification (2026-10-13) moves editable Research/Dependencies/
|
|
539
|
+
Decision/Flow templates into **Home → Relation presets**, shared across the workspace like
|
|
540
|
+
Categories. Applying a saved preset explicitly copies its vocabulary to a selected board;
|
|
541
|
+
later template edits/deletion do not rewrite existing boards or connections. The board's
|
|
542
|
+
24 px dropdown is now a view-only filter: All relations plus kinds actually on that board,
|
|
543
|
+
with counts, never a preset name or “Custom vocabulary”. Rounded count chips remain.
|
|
544
|
+
The legend stays below the lifecycle filters, outside the
|
|
545
|
+
scrollable canvas. Relation categories wrap instead of using a horizontal scrollbar, including
|
|
546
|
+
long custom names; Fit reserves the legend's rendered height as well as the lifecycle filters.
|
|
547
|
+
Parallel links
|
|
548
|
+
receive separate endpoint slots. Hover explains endpoints, kind and reason; the expanded
|
|
549
|
+
card's Relations view uses the same qualified graph as agents, with navigable targets and a
|
|
550
|
+
pointer to shared Home settings. Connections are grouped into Evidence for/against, Sources, Used by and
|
|
551
|
+
other Connections. Reasons stay in the hint/inspector, not long pills covering both endpoints.
|
|
552
|
+
Owner correction (2026-10-16): relation dimming follows clicked focus, selection, or an
|
|
553
|
+
explicit relation filter, never pointer hover. Selecting a group keeps all its descendants
|
|
554
|
+
readable, including nested groups. Moving the pointer does not change that focus; clicking
|
|
555
|
+
blank canvas clears it. This supersedes the hover-triggered focus in the Relations drawing.
|
|
556
|
+
Research highlights evidence; Dependencies follows explicit downstream impact; Decision traces
|
|
557
|
+
option/if/chosen links backward from the selected outcome; with focus active, Flow reads existing AX step status.
|
|
558
|
+
Custom vocabularies use the local neighborhood. These are view-only, not a decision or execution engine. Remote cards
|
|
559
|
+
remain footer links, not long lines across boards.
|
|
560
|
+
|
|
561
|
+
Owner selection (2026-10-14): **C1 compact category inspector, R2 choose then customize,
|
|
562
|
+
H2 dedicated Home Review queue, V2 docked card review drawer**. These are implemented
|
|
563
|
+
directions in the current acceptance batch; owner acceptance is pending, with no release claim. The selected
|
|
564
|
+
drawings are CategoryEditor, Uses, Home, Lifecycle and Lifecycle600; they supersede earlier
|
|
565
|
+
full-form category editing and standalone review-modal geometry.
|
|
566
|
+
The owner-approved naming is **Review** in Home navigation, **Knowledge review** as the
|
|
567
|
+
queue page heading, and **Review card** in the drawer, followed by the actual card title.
|
|
568
|
+
Review concerns the context's reliability, not task completion or automatic validation.
|
|
569
|
+
|
|
570
|
+
C1 keeps a searchable neutral glyph-and-word category list beside **Basics / Review policy /
|
|
571
|
+
Usage** tabs, templates behind disclosure, and Save/Cancel with a dirty guard on leaving.
|
|
572
|
+
The Add category button stays 8 px below the search field, rather than touching its border.
|
|
573
|
+
Basics offers the starter glyphs as visible, neutral choices alongside the custom glyph input.
|
|
574
|
+
Choosing a glyph changes only that draft's glyph, not its name or review policy; Save commits it.
|
|
575
|
+
Folder inheritance, card-only lifecycle overrides and assigned-category deletion protections
|
|
576
|
+
remain. R2 starts with a read-only relation preview; **Customize preset** opens a separate editor.
|
|
577
|
+
Save changes the workspace template only. **Use on board** explicitly copies the saved vocabulary
|
|
578
|
+
to one selected board; existing edges and other boards stay unchanged, with no later auto-sync.
|
|
579
|
+
Opening before the workspace catalog arrives must still select the first saved preset when it
|
|
580
|
+
loads. An explicit new/deleted selection stays empty instead of silently choosing another preset.
|
|
581
|
+
|
|
582
|
+
V2 docks **Review card** beside the real rendered card, reachable from More, a due footer or the
|
|
583
|
+
expanded-card Review button; it does not substitute a text excerpt for the card. The 380 px
|
|
584
|
+
side dock becomes a lower dock at narrow widths, keeping content visible above. It asks for
|
|
585
|
+
one short check note and offers **Checked, still correct** or **Not now**.
|
|
586
|
+
The camera fits the reviewed card into the actual remaining canvas on opening, reopening
|
|
587
|
+
and resize. Keyboard focus must not add a native scroll offset beneath that camera;
|
|
588
|
+
the canvas clips overflow without becoming a scroll container.
|
|
589
|
+
Fit preserves the card boundary, not visibility of its entire body: expand or resize a
|
|
590
|
+
compact card to read content beyond its body viewport.
|
|
591
|
+
Not now writes nothing and leaves the current review state alone. **Settings and history**
|
|
592
|
+
discloses the policy, four clocks, advanced outcomes, recipes and retirement controls.
|
|
593
|
+
Four clock tiles stay separate; only read delivery is violet. New
|
|
594
|
+
review metadata clears the evidence draft and applied checkbox. Stale content/source observations
|
|
595
|
+
refuse validation; dirty Markdown must save, reload and be rechecked first. Close/Escape also
|
|
596
|
+
dismiss without writing. Retire/Restore are audited;
|
|
597
|
+
the post-retirement toast offers Undo. Filters dim nonmatches rather than deleting their spatial
|
|
598
|
+
context. Due footers use variant A, including collapsed cards; healthy cards gain no badge.
|
|
599
|
+
Home's tree is navigation only. The selected-folder summary reports category and actionable
|
|
600
|
+
**Review needed** counts, explicitly including descendants; **No review policy** is informational,
|
|
601
|
+
not a task. The summary opens H2's dedicated **Review** tab with individual cards, authoritative
|
|
602
|
+
card and board titles, reasons, last checked and **Open review**. Scope is the selected folder
|
|
603
|
+
plus descendants or the whole library. Search and Source warnings only narrow the queue;
|
|
604
|
+
long descendant options must not push the scope border or arrow outside the main pane,
|
|
605
|
+
including at 390 px. Check the pane and queue scroll widths, not only the root document.
|
|
606
|
+
Refresh retries unavailable observations. Nonretired cards with due or source warnings count
|
|
607
|
+
once, even with both; unknown policy alone is neutral, but explicit warnings still qualify.
|
|
608
|
+
Opening focuses the real card and dock and never validates it.
|
|
609
|
+
Board details prioritize Open board; agent README and link dumps belong in agent reads or Map/Graph,
|
|
610
|
+
not the human's opening flow. Categories and folder settings reuse themed ChoiceMenus and compact
|
|
611
|
+
controls; unused category deletion is confirmed inline, assigned categories name blocking folders.
|
|
612
|
+
Presets add only missing starter
|
|
613
|
+
entries and never overwrite edits. Medium cadence is an explicit required day count, never
|
|
614
|
+
inferred from the category name. Unknown stays unknown.
|
|
615
|
+
|
|
616
|
+
The `Flows` source-qualification extension distinguishes a portal's source warning from its
|
|
617
|
+
own lifecycle and labels cached observations. A durable dashboard does not suppress warnings
|
|
618
|
+
from a fast source. Dependency direction is source → dependent for derived-from/contradicts/
|
|
619
|
+
supersedes, dependent → prerequisite for depends-on. Only explicit dependencies propagate review.
|
|
620
|
+
Recipe refresh is a human-requested steering broadcast; Canvas does not execute the named tool.
|
|
621
|
+
|
|
622
|
+
**Context lifecycle (direction added 2026-10-07).** [Vision move 13](product-vision-2026-09.md#13-context-lifecycle-and-recipe-cards-m-then-later-classification)
|
|
623
|
+
extends Wave 3's source-change warning into evidence-backed review: decay type/rate, triggers,
|
|
624
|
+
validation evidence and review outcomes. Amber means needs review, not false. Read receipts,
|
|
625
|
+
content revisions, evidence validation and task relevance remain separate. Categories, Lifecycle,
|
|
626
|
+
Lifecycle600 and Restore supply the review-state drawings beyond Lineage. This adds no Wave 1 prerequisite and leaves the
|
|
627
|
+
curation evaluation after its remaining features. Local categories and lifecycle data work
|
|
628
|
+
without a model; Jev-style classification is optional longer-term assistance, not a dependency
|
|
629
|
+
of Wave 3 or the org/team/personal structure.
|
|
630
|
+
|
|
198
631
|
## Definition of done for any design work
|
|
199
632
|
|
|
200
633
|
1. It is drawn in the proposal canvas first, at 600 px and at full-window width.
|
package/docs/environment.md
CHANGED
|
@@ -22,7 +22,6 @@ optional; defaults are listed.
|
|
|
22
22
|
| `PMX_CANVAS_BLOB_THRESHOLD_BYTES` | server | Node payloads above this many JSON bytes are stored as blobs (default `2048`). |
|
|
23
23
|
| `PMX_CANVAS_AGENT_SOURCE` | MCP transport, CLI | Names the agent behind this transport for presence (`codex`, `claude-code`, …) so its writes, attach and cursor share one identity; default is the transport label (`mcp` / `cli`). |
|
|
24
24
|
| `PMX_CANVAS_GATE_TTL_MS` | server | Default TTL for approval gates before the unattended-approval policy auto-holds them (default `300000` = 5 min, clamped to 1 s – 24 h). |
|
|
25
|
-
| `PMX_CANVAS_CONTEXT_BUDGET_TOKENS` | server | `budget.total` in agent presence — the ceiling the top bar's **Pins** meter measures the pinned-context token estimate against (default `32000`). It is not the agent's context window; a host reports that on the presence as `contextUsage`, and the meter then reads **Context**. |
|
|
26
25
|
|
|
27
26
|
## Server behavior
|
|
28
27
|
|