pmx-canvas 0.9.2 → 0.9.3
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/extension.mjs +9 -3
- package/.github/extensions/pmx-canvas/runtime.json +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/canvas/global.css +12 -17
- package/dist/canvas/index.js +58 -58
- package/dist/canvas/mcp-app.html +75 -80
- package/dist/types/client/canvas/submit-without-navigation.d.ts +3 -0
- package/dist/types/client/state/intent-bridge.d.ts +0 -3
- package/dist/types/client/state/presence-store.d.ts +3 -3
- package/dist/types/client/types.d.ts +1 -1
- package/dist/types/server/canvas-state.d.ts +2 -0
- package/dist/types/server/index.d.ts +2 -2
- package/dist/types/server/knowledge-lifecycle.d.ts +11 -2
- package/dist/types/server/lifecycle-status.d.ts +3 -1
- package/dist/types/server/tour-control.d.ts +6 -3
- package/docs/cli.md +10 -1
- package/docs/design/Chrome.dc.html +1 -0
- package/docs/design.md +3 -1
- package/docs/mcp.md +5 -1
- package/docs/node-types.md +3 -0
- package/docs/plans/plan-019-post-0.9-roadmap.md +68 -9
- package/docs/sdk.md +7 -0
- package/package.json +1 -1
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/extension.mjs +9 -3
- 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/skills/pmx-canvas/SKILL.md +4 -4
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/src/client/canvas/BoardCopyDialog.tsx +2 -1
- package/src/client/canvas/KnowledgeDialog.tsx +3 -0
- package/src/client/canvas/LifecyclePanel.tsx +4 -0
- package/src/client/canvas/RelationPresetsDialog.tsx +2 -0
- package/src/client/canvas/submit-without-navigation.ts +14 -0
- package/src/client/state/canvas-store.ts +12 -24
- package/src/client/state/intent-bridge.ts +0 -6
- package/src/client/state/presence-store.ts +3 -3
- package/src/client/state/sse-bridge.ts +11 -6
- package/src/client/theme/global.css +12 -17
- package/src/server/canvas-state.ts +10 -0
- package/src/server/index.ts +10 -30
- package/src/server/knowledge-lifecycle.ts +66 -0
- package/src/server/lifecycle-status.ts +79 -7
- package/src/server/operations/ops/lifecycle.ts +3 -7
- package/src/server/operations/ops/nodes.ts +2 -5
- package/src/server/operations/ops/viewport.ts +3 -7
- package/src/server/server.ts +13 -10
- package/src/server/tour-control.ts +17 -8
|
@@ -312,7 +312,11 @@ async function startPanelServer(instanceId, ctx, pmx) {
|
|
|
312
312
|
jsonResponse(res, 400, { ok: false, error: "prompt is required" });
|
|
313
313
|
return;
|
|
314
314
|
}
|
|
315
|
-
|
|
315
|
+
if (!copilotSession) {
|
|
316
|
+
jsonResponse(res, 503, { ok: false, error: "Copilot session is unavailable." });
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
await copilotSession.send({ prompt: body.prompt, mode: "immediate" });
|
|
316
320
|
// Explicit user instruction from the panel → mirror onto the AX
|
|
317
321
|
// timeline as a steering message (fire-and-forget).
|
|
318
322
|
const target = await verifiedEntryTarget(entry);
|
|
@@ -635,7 +639,8 @@ const pmxCanvas = createCanvas({
|
|
|
635
639
|
handler: async (ctx) => {
|
|
636
640
|
const prompt = typeof ctx.input?.prompt === "string" ? ctx.input.prompt.trim() : "";
|
|
637
641
|
if (!prompt) throw new CanvasError("prompt_required", "prompt is required");
|
|
638
|
-
|
|
642
|
+
if (!copilotSession) throw new CanvasError("copilot_unavailable", "Copilot session is unavailable.");
|
|
643
|
+
await copilotSession.send({ prompt, mode: "immediate" });
|
|
639
644
|
// Mirror the explicit user instruction onto the AX timeline as a
|
|
640
645
|
// steering message (fire-and-forget). This is an explicit action
|
|
641
646
|
// flow, never a sync from the prompt hook.
|
|
@@ -867,7 +872,8 @@ sessionWorkspaceRoot = resolve((await copilotSession.rpc.metadata.snapshot()).wo
|
|
|
867
872
|
steeringDeliveryPump = createSteeringDeliveryPump({
|
|
868
873
|
consumer: "copilot",
|
|
869
874
|
claim: claimCopilotSteering,
|
|
870
|
-
|
|
875
|
+
// The SDK defaults to enqueue; canvas steering must target the active turn.
|
|
876
|
+
send: async (message) => await copilotSession.send({ prompt: message, mode: "immediate" }),
|
|
871
877
|
mark: markCopilotSteering,
|
|
872
878
|
getPresence: getCopilotPresence,
|
|
873
879
|
setPresence: async (patch) => await postPresence(sessionWorkspaceRoot, patch),
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ All notable changes to `pmx-canvas` are documented here. This project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.9.3] - 2026-10-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Expanded Markdown keeps Source clear of the text at narrow widths and while scrolling.
|
|
13
|
+
- Knowledge review, category, relation preset and board-copy forms work in script-only hosted workbenches without extra sandbox permissions.
|
|
14
|
+
- Delayed startup reads no longer hide active agent sessions or bring ended sessions back into the top bar.
|
|
15
|
+
- Copilot instructions request delivery during the active turn instead of defaulting to the next-turn queue.
|
|
16
|
+
- Agent camera moves no longer rewrite every card's position and size, and tour navigation avoids loading card contents.
|
|
17
|
+
- Saved Markdown skips repeated link parsing while preserving images and saved link targets.
|
|
18
|
+
- Single-card lifecycle checks avoid unrelated boards, and review queues no longer load every card's full audit history.
|
|
19
|
+
|
|
8
20
|
## [0.9.2] - 2026-10-23
|
|
9
21
|
|
|
10
22
|
### Fixed
|
package/dist/canvas/global.css
CHANGED
|
@@ -4050,8 +4050,14 @@ kbd.toolbar-menu-hint {
|
|
|
4050
4050
|
}
|
|
4051
4051
|
|
|
4052
4052
|
/* ── Markdown reader mode (expanded view) ──────────────────── */
|
|
4053
|
+
.md-expanded-document {
|
|
4054
|
+
display: flex;
|
|
4055
|
+
flex-direction: column;
|
|
4056
|
+
}
|
|
4057
|
+
|
|
4053
4058
|
.md-reader {
|
|
4054
|
-
|
|
4059
|
+
flex: 1;
|
|
4060
|
+
min-height: 0;
|
|
4055
4061
|
overflow-y: auto;
|
|
4056
4062
|
display: flex;
|
|
4057
4063
|
justify-content: center;
|
|
@@ -4205,11 +4211,11 @@ kbd.toolbar-menu-hint {
|
|
|
4205
4211
|
background: var(--c-surface-subtle);
|
|
4206
4212
|
}
|
|
4207
4213
|
|
|
4208
|
-
/* Source
|
|
4214
|
+
/* Source stays below the scroll viewport, never over the document text. */
|
|
4209
4215
|
.md-edit-fab {
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4216
|
+
align-self: flex-end;
|
|
4217
|
+
flex-shrink: 0;
|
|
4218
|
+
margin: 16px;
|
|
4213
4219
|
padding: 8px 18px;
|
|
4214
4220
|
font-size: 13px;
|
|
4215
4221
|
font-weight: 600;
|
|
@@ -5991,21 +5997,10 @@ html.is-node-resizing .ext-app-preview-catcher {
|
|
|
5991
5997
|
/* Its sticky/backdrop-filter context must paint hints above the Source FAB. */
|
|
5992
5998
|
z-index: 2;
|
|
5993
5999
|
}
|
|
5994
|
-
.expanded-overlay-panel:has(.ax-step-dock) .md-expanded-document {
|
|
5995
|
-
display: flex;
|
|
5996
|
-
flex-direction: column;
|
|
5997
|
-
}
|
|
5998
|
-
.expanded-overlay-panel:has(.ax-step-dock) .md-reader {
|
|
5999
|
-
flex: 1;
|
|
6000
|
-
min-height: 0;
|
|
6001
|
-
}
|
|
6002
6000
|
.expanded-overlay-panel:has(.ax-step-dock) .md-edit-fab {
|
|
6003
6001
|
/* Keep Source and the document out of the bottom dock's hint area. */
|
|
6004
|
-
position: static;
|
|
6005
6002
|
order: -1;
|
|
6006
|
-
|
|
6007
|
-
flex-shrink: 0;
|
|
6008
|
-
margin-bottom: 16px;
|
|
6003
|
+
margin: 0 0 16px;
|
|
6009
6004
|
}
|
|
6010
6005
|
.ax-step-dock:has(.toolbar-tooltip-anchor:hover) .toolbar-tooltip-anchor:not(:hover) > :focus-visible + .toolbar-tooltip {
|
|
6011
6006
|
/* Pointer exploration temporarily takes precedence without moving keyboard focus. */
|