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.
Files changed (49) hide show
  1. package/.github/extensions/pmx-canvas/extension.mjs +9 -3
  2. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  3. package/CHANGELOG.md +12 -0
  4. package/dist/canvas/global.css +12 -17
  5. package/dist/canvas/index.js +58 -58
  6. package/dist/canvas/mcp-app.html +75 -80
  7. package/dist/types/client/canvas/submit-without-navigation.d.ts +3 -0
  8. package/dist/types/client/state/intent-bridge.d.ts +0 -3
  9. package/dist/types/client/state/presence-store.d.ts +3 -3
  10. package/dist/types/client/types.d.ts +1 -1
  11. package/dist/types/server/canvas-state.d.ts +2 -0
  12. package/dist/types/server/index.d.ts +2 -2
  13. package/dist/types/server/knowledge-lifecycle.d.ts +11 -2
  14. package/dist/types/server/lifecycle-status.d.ts +3 -1
  15. package/dist/types/server/tour-control.d.ts +6 -3
  16. package/docs/cli.md +10 -1
  17. package/docs/design/Chrome.dc.html +1 -0
  18. package/docs/design.md +3 -1
  19. package/docs/mcp.md +5 -1
  20. package/docs/node-types.md +3 -0
  21. package/docs/plans/plan-019-post-0.9-roadmap.md +68 -9
  22. package/docs/sdk.md +7 -0
  23. package/package.json +1 -1
  24. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/extension.mjs +9 -3
  25. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  26. package/plugins/pmx-canvas/plugin.json +1 -1
  27. package/plugins/pmx-canvas/runtime.json +1 -1
  28. package/skills/pmx-canvas/SKILL.md +4 -4
  29. package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
  30. package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
  31. package/src/client/canvas/BoardCopyDialog.tsx +2 -1
  32. package/src/client/canvas/KnowledgeDialog.tsx +3 -0
  33. package/src/client/canvas/LifecyclePanel.tsx +4 -0
  34. package/src/client/canvas/RelationPresetsDialog.tsx +2 -0
  35. package/src/client/canvas/submit-without-navigation.ts +14 -0
  36. package/src/client/state/canvas-store.ts +12 -24
  37. package/src/client/state/intent-bridge.ts +0 -6
  38. package/src/client/state/presence-store.ts +3 -3
  39. package/src/client/state/sse-bridge.ts +11 -6
  40. package/src/client/theme/global.css +12 -17
  41. package/src/server/canvas-state.ts +10 -0
  42. package/src/server/index.ts +10 -30
  43. package/src/server/knowledge-lifecycle.ts +66 -0
  44. package/src/server/lifecycle-status.ts +79 -7
  45. package/src/server/operations/ops/lifecycle.ts +3 -7
  46. package/src/server/operations/ops/nodes.ts +2 -5
  47. package/src/server/operations/ops/viewport.ts +3 -7
  48. package/src/server/server.ts +13 -10
  49. 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
- await copilotSession?.send({ prompt: body.prompt });
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
- await copilotSession?.send({ prompt });
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
- send: async (message) => await copilotSession.send({ prompt: message }),
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),
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.9.2"
2
+ "version": "0.9.3"
3
3
  }
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
@@ -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
- height: 100%;
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-mode FAB in expanded document view */
4214
+ /* Source stays below the scroll viewport, never over the document text. */
4209
4215
  .md-edit-fab {
4210
- position: absolute;
4211
- bottom: 16px;
4212
- right: 16px;
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
- align-self: flex-end;
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. */