openplanr 2.2641.2 → 3.0.1
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/CHANGELOG.md +33 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +19 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +15 -11
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/error-boundary.d.ts.map +1 -1
- package/dist/cli/error-boundary.js +2 -1
- package/dist/cli/error-boundary.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-DI_TKz9J.js → index-n08LJ6bK.js} +2 -2
- package/dist/dashboard/assets/{index-DI_TKz9J.js.map → index-n08LJ6bK.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +8 -8
- package/dist/dashboard/index.html +1 -1
- package/dist/services/claude-plugin-service.d.ts +9 -0
- package/dist/services/claude-plugin-service.d.ts.map +1 -1
- package/dist/services/claude-plugin-service.js +12 -0
- package/dist/services/claude-plugin-service.js.map +1 -1
- package/dist/services/runtime-change-summary.d.ts +4 -0
- package/dist/services/runtime-change-summary.d.ts.map +1 -1
- package/dist/services/runtime-change-summary.js +7 -0
- package/dist/services/runtime-change-summary.js.map +1 -1
- package/dist/services/runtime-manager/doctor.js +1 -1
- package/dist/services/runtime-manager/doctor.js.map +1 -1
- package/dist/services/runtime-manager/runtime-package.d.ts +15 -0
- package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
- package/dist/services/runtime-manager/runtime-package.js +50 -10
- package/dist/services/runtime-manager/runtime-package.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts +11 -0
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +88 -16
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/upgrade-report.d.ts +2 -2
- package/dist/services/upgrade-report.d.ts.map +1 -1
- package/dist/services/upgrade-report.js +14 -2
- package/dist/services/upgrade-report.js.map +1 -1
- package/dist/services/upgrade-service.d.ts +22 -2
- package/dist/services/upgrade-service.d.ts.map +1 -1
- package/dist/services/upgrade-service.js +108 -20
- package/dist/services/upgrade-service.js.map +1 -1
- package/docs/CLI.md +4 -1
- package/docs/TROUBLESHOOTING.md +9 -6
- package/install.ps1 +3 -3
- package/install.sh +3 -3
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +2 -2
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +21 -21
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +238 -68
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/references/capsule-contract.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +3 -3
- package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +4 -1
- package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +8 -0
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +2 -2
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +20 -20
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/capsule-contract.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +3 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +4 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +2 -2
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +238 -68
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +20 -20
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +238 -68
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
- package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/references/capsule-contract.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +3 -3
- package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +4 -1
- package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +8 -0
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +2 -2
- package/lib/node-runtime.d.mts +1 -1
- package/lib/node-runtime.mjs +2 -7
- package/package.json +5 -6
- package/bin/planr.js +0 -7
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "manifest.json",
|
|
15
|
-
"digest": "sha256:
|
|
15
|
+
"digest": "sha256:88a81a0ac3186a2647ad0ed0be1219bd6538d4cde06531e4a9f86679ada9dbba"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"path": "rules/planr-artifact.mdc",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
"path": "rules/planr-delegate.mdc",
|
|
119
|
-
"digest": "sha256:
|
|
119
|
+
"digest": "sha256:4a44b4094f6ec174abe2eae83b38aeaf1a21c2e626612e557de4be0ddb9c513c"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"path": "rules/planr-delegate/references/adapter-protocol.md",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
"path": "rules/planr-delegate/references/capsule-contract.md",
|
|
127
|
-
"digest": "sha256:
|
|
127
|
+
"digest": "sha256:22e5daac9ad9cb0951222fef4d0f45ae35de4a6b7ee2b47d660cc6b672188fff"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"path": "rules/planr-delegate/references/integration-review.md",
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
"path": "rules/planr-delegate/scripts/run-preparation.mjs",
|
|
231
|
-
"digest": "sha256:
|
|
231
|
+
"digest": "sha256:746630b00e1c252cae6dd7e78cde4b2d6c65e75f1ef19a092111e1e4de5152e3"
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
"path": "rules/planr-delegate/scripts/run-record.mjs",
|
|
@@ -276,7 +276,7 @@
|
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
"path": "rules/planr-design-loop/references/utilities.md",
|
|
279
|
-
"digest": "sha256:
|
|
279
|
+
"digest": "sha256:cedeae549cda5434a768846dc3d83a1baddfa74940276485db6fba1c649301b5"
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
282
|
"path": "rules/planr-design-loop/schemas/design-document.schema.json",
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
},
|
|
333
333
|
{
|
|
334
334
|
"path": "rules/planr-design-review/references/utilities.md",
|
|
335
|
-
"digest": "sha256:
|
|
335
|
+
"digest": "sha256:cedeae549cda5434a768846dc3d83a1baddfa74940276485db6fba1c649301b5"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "rules/planr-design-review/schemas/design-document.schema.json",
|
|
@@ -388,7 +388,7 @@
|
|
|
388
388
|
},
|
|
389
389
|
{
|
|
390
390
|
"path": "rules/planr-design/references/utilities.md",
|
|
391
|
-
"digest": "sha256:
|
|
391
|
+
"digest": "sha256:cedeae549cda5434a768846dc3d83a1baddfa74940276485db6fba1c649301b5"
|
|
392
392
|
},
|
|
393
393
|
{
|
|
394
394
|
"path": "rules/planr-design/schemas/design-document.schema.json",
|
|
@@ -428,11 +428,11 @@
|
|
|
428
428
|
},
|
|
429
429
|
{
|
|
430
430
|
"path": "rules/planr-doctor.mdc",
|
|
431
|
-
"digest": "sha256:
|
|
431
|
+
"digest": "sha256:328ce5775b54d9b7f7c23bc6be9082004c3f734f5a78c5522b4feb66b31ce377"
|
|
432
432
|
},
|
|
433
433
|
{
|
|
434
434
|
"path": "rules/planr-doctor/references/upgrade.md",
|
|
435
|
-
"digest": "sha256:
|
|
435
|
+
"digest": "sha256:b137e82d63ceeecef4e5c1cac72acbaaa2edbc29798214507ab9613d16088fde"
|
|
436
436
|
},
|
|
437
437
|
{
|
|
438
438
|
"path": "rules/planr-investigate.mdc",
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
},
|
|
461
461
|
{
|
|
462
462
|
"path": "rules/planr-plan.mdc",
|
|
463
|
-
"digest": "sha256:
|
|
463
|
+
"digest": "sha256:952f63ebe7ad028043e1c25e12737f2e56db6216efa09346fd6bd14f071a5223"
|
|
464
464
|
},
|
|
465
465
|
{
|
|
466
466
|
"path": "rules/planr-plan/references/artifact-contract.md",
|
|
@@ -684,7 +684,7 @@
|
|
|
684
684
|
},
|
|
685
685
|
{
|
|
686
686
|
"path": "runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css",
|
|
687
|
-
"digest": "sha256:
|
|
687
|
+
"digest": "sha256:514295a7c32cf8359385de2cdf8369aa41ccc6b119c93daad757182099067661"
|
|
688
688
|
},
|
|
689
689
|
{
|
|
690
690
|
"path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json",
|
|
@@ -724,11 +724,11 @@
|
|
|
724
724
|
},
|
|
725
725
|
{
|
|
726
726
|
"path": "runtime/design/scripts/runtime/packages/design/package.json",
|
|
727
|
-
"digest": "sha256:
|
|
727
|
+
"digest": "sha256:f1bd16719287e54ade15a9d4e6f889dd3385b6f1a8bf851332992533475cf3b5"
|
|
728
728
|
},
|
|
729
729
|
{
|
|
730
730
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css",
|
|
731
|
-
"digest": "sha256:
|
|
731
|
+
"digest": "sha256:bdb55a9464e96fba112aad73354d54b6ccb8ac5d9bc100a90b51df4633ff11f7"
|
|
732
732
|
},
|
|
733
733
|
{
|
|
734
734
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/handoff-center.css",
|
|
@@ -744,11 +744,11 @@
|
|
|
744
744
|
},
|
|
745
745
|
{
|
|
746
746
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.css",
|
|
747
|
-
"digest": "sha256:
|
|
747
|
+
"digest": "sha256:75ca0c3036d5c281e60a4155765ad8c2e9373bd39d34d4facebfe9bf26278c88"
|
|
748
748
|
},
|
|
749
749
|
{
|
|
750
750
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json",
|
|
751
|
-
"digest": "sha256:
|
|
751
|
+
"digest": "sha256:fb0d23636597168f9f139c21ce9c5af63e225ad765231b1f0b7c2af2675d8cb6"
|
|
752
752
|
},
|
|
753
753
|
{
|
|
754
754
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js",
|
|
@@ -796,7 +796,7 @@
|
|
|
796
796
|
},
|
|
797
797
|
{
|
|
798
798
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js",
|
|
799
|
-
"digest": "sha256:
|
|
799
|
+
"digest": "sha256:9e2ac3d6b99028c7335aacf548f9e04fdf709d15f889db3e35bbebc389631000"
|
|
800
800
|
},
|
|
801
801
|
{
|
|
802
802
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js",
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
},
|
|
813
813
|
{
|
|
814
814
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js",
|
|
815
|
-
"digest": "sha256:
|
|
815
|
+
"digest": "sha256:81af29a6a5a15fd4f0ef41fc48e1eca63c30b3745fd1d92830ba83f7cf2ba603"
|
|
816
816
|
},
|
|
817
817
|
{
|
|
818
818
|
"path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js",
|
|
@@ -820,7 +820,7 @@
|
|
|
820
820
|
},
|
|
821
821
|
{
|
|
822
822
|
"path": "runtime/design/scripts/runtime/packages/protocol/package.json",
|
|
823
|
-
"digest": "sha256:
|
|
823
|
+
"digest": "sha256:ad2e601d993087146fcd4d049ddd1cf7e06f7102eb178e2c65017624a2252393"
|
|
824
824
|
},
|
|
825
825
|
{
|
|
826
826
|
"path": "runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -940,12 +940,12 @@
|
|
|
940
940
|
},
|
|
941
941
|
{
|
|
942
942
|
"path": "runtime/plan/scripts/runtime/packages/protocol/package.json",
|
|
943
|
-
"digest": "sha256:
|
|
943
|
+
"digest": "sha256:ad2e601d993087146fcd4d049ddd1cf7e06f7102eb178e2c65017624a2252393"
|
|
944
944
|
},
|
|
945
945
|
{
|
|
946
946
|
"path": "runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json",
|
|
947
947
|
"digest": "sha256:b4db7b75b694c2aef2a37be2128e4635302f3473e09236aa1f37a33dcf3590b4"
|
|
948
948
|
}
|
|
949
949
|
],
|
|
950
|
-
"contentDigest": "sha256:
|
|
950
|
+
"contentDigest": "sha256:39df236c01e03df234b336a8ffd951ed7330e3d5f84695f3083b98fb46c21c6d"
|
|
951
951
|
}
|
package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/capsule-contract.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Delegation context capsule v1
|
|
2
2
|
|
|
3
|
-
`context.mjs` is an internal, Node
|
|
3
|
+
`context.mjs` is an internal, Node 22+ package resource. It gathers **work context** only. It does not select a profile, grant a writable path, launch an agent, or authorize publication. The orchestrator must show `previewContextCapsule` alongside the selected writable repository, native engine/model selection, configuration trust and known provider or native-managed routing before dispatch.
|
|
4
4
|
|
|
5
5
|
## API
|
|
6
6
|
|
|
@@ -58,7 +58,7 @@ async function inspectWorktreeDependencies(worktreePath) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export async function probeDelegateHost({ repositoryRoot, env = process.env } = {}) {
|
|
61
|
-
const nodeReady = Number(process.versions.node.split('.')[0]) >=
|
|
61
|
+
const nodeReady = Number(process.versions.node.split('.')[0]) >= 22;
|
|
62
62
|
const options = {
|
|
63
63
|
env: { PATH: env.PATH, HOME: env.HOME, USER: env.USER, TMPDIR: env.TMPDIR },
|
|
64
64
|
cwd: repositoryRoot,
|
|
@@ -128,7 +128,7 @@ export async function probeDelegateHost({ repositoryRoot, env = process.env } =
|
|
|
128
128
|
}
|
|
129
129
|
return {
|
|
130
130
|
ready: nodeReady && gitReady,
|
|
131
|
-
node: { ready: nodeReady, minimumMajor:
|
|
131
|
+
node: { ready: nodeReady, minimumMajor: 22 },
|
|
132
132
|
git: { ready: gitReady, ...(gitDiagnostic ? { diagnostic: gitDiagnostic } : {}) },
|
|
133
133
|
repository,
|
|
134
134
|
engines,
|
|
@@ -167,7 +167,7 @@ export async function prepareDelegateRun({
|
|
|
167
167
|
if (!host.ready || !host.repository?.ready)
|
|
168
168
|
throw new DelegateRunError(
|
|
169
169
|
'E_DELEGATE_PREREQUISITE',
|
|
170
|
-
'Node
|
|
170
|
+
'Node 22+, Git, and a repository with a commit are required before task collection.',
|
|
171
171
|
null,
|
|
172
172
|
host,
|
|
173
173
|
);
|
|
@@ -15,7 +15,7 @@ Ordinary implementation remains with `planr-ship`.
|
|
|
15
15
|
Resolve [runner.mjs](planr-delegate/scripts/runner.mjs) from this installed skill. Call it through
|
|
16
16
|
Node as `node <installed-skill>/scripts/runner.mjs <action>`, with one JSON object
|
|
17
17
|
on stdin. Alternatively, include `action` in that object and omit the command-line
|
|
18
|
-
action; conflicting actions are rejected. `probe` discovers Node
|
|
18
|
+
action; conflicting actions are rejected. `probe` discovers Node 22+, Git, installed
|
|
19
19
|
CLIs and optional profiles; an OpenPlanr checkout or public CLI command is not
|
|
20
20
|
needed. Reuse normal signed-in authentication. Preserve selection precedence:
|
|
21
21
|
explicit engine/profile, saved choice, then a sole compatible native choice; ask
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Run the linked design helper from the skill entrypoint relative to the skill's
|
|
4
4
|
directory. It contains deterministic operations and all required assets. It needs
|
|
5
|
-
Node
|
|
5
|
+
Node.js 22.13 or later, with no global CLI, provider credentials or runtime downloads.
|
|
6
6
|
Use `--help` to inspect the installed command interface before writing documents
|
|
7
7
|
or invoking operations; the installed contract is authoritative.
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Run the linked design helper from the skill entrypoint relative to the skill's
|
|
4
4
|
directory. It contains deterministic operations and all required assets. It needs
|
|
5
|
-
Node
|
|
5
|
+
Node.js 22.13 or later, with no global CLI, provider credentials or runtime downloads.
|
|
6
6
|
Use `--help` to inspect the installed command interface before writing documents
|
|
7
7
|
or invoking operations; the installed contract is authoritative.
|
|
8
8
|
|
package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Run the linked design helper from the skill entrypoint relative to the skill's
|
|
4
4
|
directory. It contains deterministic operations and all required assets. It needs
|
|
5
|
-
Node
|
|
5
|
+
Node.js 22.13 or later, with no global CLI, provider credentials or runtime downloads.
|
|
6
6
|
Use `--help` to inspect the installed command interface before writing documents
|
|
7
7
|
or invoking operations; the installed contract is authoritative.
|
|
8
8
|
|
|
@@ -52,6 +52,10 @@ Shape (the fields this skill reads):
|
|
|
52
52
|
- `upgrade-available` or `incompatible` → act. First **record the `installed`
|
|
53
53
|
block as the before state** — the honest diff at the end depends on it. When
|
|
54
54
|
only `nextSteps` is non-empty, skip to step 3.
|
|
55
|
+
- `agents-behind` → the CLI is current and a coding agent's OpenPlanr install
|
|
56
|
+
needs updating. Record the `installed` block, then skip to step 3.
|
|
57
|
+
- `aligned` with non-empty `nextSteps` → the versions match, but an install needs
|
|
58
|
+
the `openplanr doctor` commands listed. Skip to step 3.
|
|
55
59
|
|
|
56
60
|
## 2. Upgrade the CLI and obtain the next steps
|
|
57
61
|
|
|
@@ -90,6 +94,10 @@ this file.** Other shapes:
|
|
|
90
94
|
`openplanr upgrade status --json` and use its `nextSteps`.
|
|
91
95
|
- An `openplanr doctor` command: planning that agent's update failed, and `detail`
|
|
92
96
|
says why. Relay it and run `openplanr doctor --json`.
|
|
97
|
+
- An `openplanr doctor --fix` command: a file in that agent's runtime package was
|
|
98
|
+
changed outside OpenPlanr, and `detail` names it. Run it, show the user the
|
|
99
|
+
repair preview, and rerun it with `--yes` only after they confirm. The changed
|
|
100
|
+
files are backed up before they are replaced.
|
|
93
101
|
|
|
94
102
|
`pluginHalfCommands` repeats the commands for older readers; read `nextSteps`.
|
|
95
103
|
|
|
@@ -36,7 +36,10 @@ skill's job, then reporting what actually changed — never what was merely
|
|
|
36
36
|
attempted.
|
|
37
37
|
|
|
38
38
|
1. **Decide.** Run `openplanr upgrade status --json` and read `status`. If it is
|
|
39
|
-
`aligned` or `unknown`, there is nothing to drive —
|
|
39
|
+
`aligned` or `unknown` with empty `nextSteps`, there is nothing to drive —
|
|
40
|
+
report it and stop. If it is `agents-behind`, or `aligned` with `nextSteps`,
|
|
41
|
+
the CLI is already current: run its `nextSteps` commands in order, as step 3
|
|
42
|
+
describes, without upgrading the CLI.
|
|
40
43
|
Record the reported `installed` versions; that is the before state.
|
|
41
44
|
2. **Own half, prescribe half.** If `status` is `upgrade-available` or
|
|
42
45
|
`incompatible`, confirm with the user (this upgrades the npm CLI), then run
|
|
@@ -117,8 +117,8 @@ instead of repeating every path in chat.
|
|
|
117
117
|
- **Checks:** frontmatter, ID and acceptance coverage checks actually performed.
|
|
118
118
|
- **Issues:** unresolved inputs or material assumptions, with their impact and recovery step; omit when empty.
|
|
119
119
|
- **Next:** the exact ready task selector and a copy-ready host-native
|
|
120
|
-
invocation such as
|
|
121
|
-
|
|
120
|
+
invocation such as `/planr:ship T-NNN` (Claude Code), `$planr:ship T-NNN`
|
|
121
|
+
(Codex/ChatGPT) or the `planr-ship` rule (Cursor).
|
|
122
122
|
|
|
123
123
|
Mention the planning layout or consulted lenses only when they explain a material
|
|
124
124
|
choice. Different summary wording never requires another planning run.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* generated by scripts/typescript/compile-sources.mjs from studio-shell.source.css */
|
|
2
|
-
.studio-toolbar{min-width:0;min-height:54px;gap:12px;font:400 13px / 1.4 var(--planr-font-body, "DM Sans", sans-serif);box-sizing:border-box;display:flex;align-items:center;flex-wrap:nowrap;padding:0 16px;width:100%}.studio-toolbar .planr-brand{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.studio-toolbar .planr-mark{display:inline-flex;flex:none;width:28px;height:28px;color:var(--planr-color-primary)}.studio-toolbar .planr-mark svg{display:block;width:100%;height:100%}.studio-toolbar .design-wordmark{font-weight:500;white-space:nowrap;font-size:13px;color:var(--planr-color-text)}.studio-toolbar .design-wordmark>span{font-weight:600;color:var(--planr-color-primary)}.studio-toolbar .planr-title-block{display:flex;align-items:center;gap:7px;min-width:0}.studio-chrome-mount,.studio-panel-mount{display:contents}.studio-toolbar-leading,.studio-toolbar-trailing{min-width:0;display:flex;align-items:center;gap:8px}.studio-toolbar-leading{flex:1}.studio-toolbar-trailing{justify-content:flex-end}.studio-identity{min-width:0}.studio-toolbar .planr-title-block strong{max-width:min(25vw,300px)}.studio-subtitle,.studio-hierarchy{display:block;overflow:hidden;color:var(--planr-color-text-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.studio-hierarchy a{color:inherit}.studio-type-badge{display:inline-flex;flex:none;align-items:center;padding:2px 5px;border:1px solid var(--planr-color-rule);border-radius:var(--planr-radius-small, 5px);color:var(--planr-color-text-muted);font:500 10px / 1.2 var(--planr-font-body);white-space:nowrap}.studio-button,.studio-menu-content,.studio-tooltip,.studio-panel-dialog{border:1px solid var(--planr-color-rule);background:var(--planr-color-panel);color:var(--planr-color-text)}.studio-button{min-height:32px;display:inline-flex;justify-content:center;align-items:center;gap:6px;border-radius:var(--planr-radius-medium, 8px);padding:0 9px;font:500 13px / 1 var(--planr-font-body);cursor:pointer}.studio-button-ghost{background:transparent;border-color:transparent}.studio-button-primary{background:var(--planr-color-primary);border-color:var(--planr-color-primary);color:var(--planr-color-background)}.studio-button:not(:disabled):hover,.studio-button[aria-pressed=true],.studio-button[aria-expanded=true]{background:var(--planr-color-raised);color:var(--planr-color-primary)}.studio-button:disabled,.studio-menu-item[data-disabled]{opacity:0.45;cursor:not-allowed}.studio-button:focus-visible,.studio-menu-item:focus-visible{outline:2px solid var(--planr-color-primary);outline-offset:2px}.studio-menu{display:inline-flex}.studio-menu-content{min-width:180px;max-width:min(320px,calc(100vw - 16px));max-height:var(--radix-dropdown-menu-content-available-height);overflow-y:auto;padding:5px;z-index:160;border-radius:var(--planr-radius-medium, 8px);box-shadow:0 12px 30px color-mix(in srgb,var(--planr-color-background) 60%,transparent)}.studio-menu-item{width:100%;min-height:34px;padding:8px 10px;display:flex;align-items:center;text-align:left;border:0;border-radius:var(--planr-radius-small, 5px);background:transparent;color:inherit;font:500 13px / 1.3 var(--planr-font-body);cursor:pointer}.studio-menu-item[data-highlighted]{background:var(--planr-color-raised);outline:none;color:var(--planr-color-primary)}.studio-menu-group-start{border-top:1px solid var(--planr-color-rule);border-radius:0}.studio-tooltip{z-index:180;padding:6px 8px;border-radius:var(--planr-radius-small, 5px);font:12px / 1.4 var(--planr-font-body)}.studio-status{min-width:0;display:inline-flex;align-items:center;gap:4px;color:var(--planr-color-text-muted);font:10px / 1.3 var(--planr-font-body)}.studio-status[data-tone=error]{color:var(--planr-color-danger)}.studio-status .studio-button{width:24px;min-height:24px;padding:0}.studio-panel-overlay{position:absolute;inset:0;z-index:170;background:color-mix(in srgb,var(--planr-color-background) 72%,transparent)}.studio-panel-dialog{position:absolute;top:env(safe-area-inset-top,0px);bottom:env(safe-area-inset-bottom,0px);z-index:180;width:min(350px,calc(100% - 32px));box-shadow:0 8px 30px color-mix(in srgb,var(--planr-color-background) 50%,transparent)}.studio-panel-left{left:0}.studio-panel-right{right:0}.studio-panel-close{position:absolute;right:8px;top:8px;z-index:2;width:32px}.studio-panel-content{height:100%;min-height:0}.studio-panel-dialog .design-navigator,.studio-panel-dialog .planr-review-rail,.studio-panel-dialog .diagram-outline{position:static!important;width:100%!important;height:100%!important;max-height:100%!important;transform:none!important;overflow-y:auto;padding-top:42px;border:0}@media(max-width:680px){.studio-toolbar{gap:6px;padding-inline:8px}.studio-toolbar .planr-title-block strong{max-width:30vw}.studio-toolbar .design-wordmark{display:none}.studio-toolbar .design-button-label{display:none}.studio-toolbar .studio-status{max-width:90px}.studio-button{min-height:36px;padding-inline:8px}}.planr-shell[data-studio-framework=react]{--planr-toolbar-height: 60px;grid-template-rows:auto minmax(0,1fr)}.planr-shell[data-studio-framework=react] :is(.design-toolbar,.diagram-toolbar){display:flex;grid-template-columns:none;flex-wrap:wrap;min-height:var(--planr-toolbar-height);height:auto;padding-block:4px;overflow:visible}.planr-shell[data-studio-framework=react] .planr-brand{display:flex;gap:8px;max-width:none;min-width:min-content}.planr-shell[data-studio-framework=react] .studio-toolbar-leading{flex:1;min-width:min-content}.planr-shell[data-studio-framework=react] .studio-toolbar-trailing{flex:0 0 auto;flex-wrap:wrap;max-width:100%}.planr-shell[data-studio-framework=react] .design-toolbar .design-view-picker{display:inline-flex;width:auto;margin:0;border:0}.planr-shell[data-studio-framework=react] .design-export>button{display:inline-flex;width:auto;padding:0 9px}.planr-shell[data-studio-framework=react] .studio-menu-content{position:relative}.planr-shell[data-studio-framework=react] .planr-title-block{display:flex}.planr-shell[data-studio-framework=react]>.planr-workspace{position:relative}@media(max-width:680px){.planr-shell[data-studio-framework=react] .studio-toolbar.planr-toolbar{gap:2px;padding-inline:4px}.planr-shell[data-studio-framework=react] .studio-toolbar-leading,.planr-shell[data-studio-framework=react] .studio-toolbar-trailing{gap:2px}.planr-shell[data-studio-framework=react] .planr-brand{overflow:hidden}.planr-shell[data-studio-framework=react] .studio-identity{display:block;overflow:hidden}.planr-shell[data-studio-framework=react] .planr-mark{width:22px;height:22px}.planr-shell[data-studio-framework=react] .design-view-picker{height:44px;gap:0}.planr-shell[data-studio-framework=react] .design-view-picker button{width:44px;height:100%;padding:0}.planr-shell[data-studio-framework=react] .studio-button{min-width:44px;min-height:44px}.planr-shell[data-studio-framework=react] :is(.design-save-state,.design-preview-state){display:none}.planr-shell[data-studio-framework=react] :is(.design-export,.diagram-export)>button{font-size:0;width:44px;padding:0}.planr-shell[data-studio-framework=react] :is(.design-export,.diagram-export)>button span{font-size:16px}}@media(max-width:960px){.planr-shell[data-studio-framework=react] .design-wordmark{display:none}.planr-shell[data-studio-framework=react] .planr-workspace>:is(.design-navigator,.planr-review-rail){top:0;max-height:100%}}@media(max-width:1240px){.planr-shell[data-studio-framework=react] .planr-title-block{flex-direction:column;align-items:flex-start;gap:1px}.planr-shell[data-studio-framework=react] .planr-title-block strong{max-width:100%;line-height:1.1}.planr-shell[data-studio-framework=react] .design-preview-state{max-width:48px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.planr-diagram-editor[data-studio-framework=react]{--de-bar-height: 60px;grid-template-rows:auto minmax(0,1fr)}.planr-diagram-editor[data-studio-framework=react] .de-bar{display:block;padding:0;height:auto;overflow:visible;border-bottom:0}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar{min-height:60px;height:auto;flex-wrap:wrap;padding:4px 16px;border:0;border-bottom:1px solid var(--de-rule);background:var(--de-panel)}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar-leading{flex:1;min-width:min-content}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar :is(.de-command-group,.studio-toolbar-trailing){flex:none}.planr-diagram-editor[data-studio-framework=react] .planr-brand{min-width:min-content;overflow:hidden}.planr-diagram-editor[data-studio-framework=react] .de-title{max-width:25vw;line-height:1.35}.planr-diagram-editor[data-studio-framework=react] .studio-subtitle .de-subtitle{line-height:1.3}.planr-diagram-editor[data-studio-framework=react] .de-alert{grid-row:2;top:var(--de-space-3)}.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .design-wordmark,.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .studio-subtitle{display:none}.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .planr-title-block{flex-direction:column;align-items:flex-start;gap:1px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-toolbar{padding:4px 8px;gap:8px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-toolbar-trailing{gap:4px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-menu:has([data-studio-palette-menu]){display:none}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .de-more-menu{top:calc(100% + var(--de-space-2))}[data-studio-framework=react]{position:relative}[data-studio-framework=react] .studio-toolbar .studio-type-badge{display:inline-flex}[data-studio-framework=react] .studio-identity{flex:1;min-width:min-content}[data-studio-framework=react] .studio-toolbar .planr-title-block strong{contain:inline-size;display:block;align-self:stretch;width:auto;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-studio-framework=react] .studio-subtitle{contain:inline-size}[data-studio-framework=react]:has(.studio-panel-dialog) [data-planr-close-feedback],[data-studio-framework=react]:has(.studio-panel-dialog) .planr-review-rail [data-planr-close-feedback]{display:none}.studio-panel-dialog .design-nav-close,.studio-panel-dialog .studio-panel-content .planr-review-rail [data-planr-close-feedback]{display:none}.studio-preserved-control{display:contents}.studio-toolbar fieldset.planr-segment{margin:0;padding:0;min-inline-size:0}.diagram-shell[data-present=true] .studio-toolbar-trailing>:not([data-action=present]):not(.studio-menu){display:none}.diagram-shell[data-studio-framework=react] .diagram-presentation-nav button{color:var(--planr-color-text);background:var(--planr-color-panel)}.diagram-shell[data-studio-framework=react] .diagram-presentation-nav button:enabled:hover{background:var(--planr-color-raised)}@media(max-width:680px){.studio-panel-close{width:44px;min-height:44px}}@media(max-width:700px){.diagram-shell[data-present=true] .studio-toolbar-leading{flex:none}.diagram-shell[data-present=true] .diagram-presentation-nav{min-width:0;flex:1;gap:4px}.diagram-shell[data-present=true] .diagram-presentation-nav>div{min-width:0}}@media(min-width:681px)and (max-width:960px){.diagram-shell[data-studio-framework=react] .studio-toolbar-trailing{gap:4px}}@media(max-width:480px){.studio-toolbar .planr-mark{display:none}}
|
|
2
|
+
.studio-toolbar{min-width:0;min-height:54px;gap:12px;font:400 13px / 1.4 var(--planr-font-body, "DM Sans", sans-serif);box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;flex-wrap:nowrap;padding:0 16px;width:100%}.studio-toolbar .planr-brand{display:flex;align-items:center;gap:8px;min-width:0;max-width:none;flex:1}.studio-toolbar .planr-mark{display:inline-flex;flex:none;width:28px;height:28px;color:var(--planr-color-primary)}.studio-toolbar .planr-mark svg{display:block;width:100%;height:100%}.studio-toolbar .design-wordmark{font-weight:500;white-space:nowrap;font-size:13px;color:var(--planr-color-text)}.studio-toolbar .design-wordmark>span{font-weight:600;color:var(--planr-color-primary)}.studio-toolbar .planr-title-block{display:flex;align-items:center;gap:7px;min-width:0}.studio-toolbar[data-studio-react-chrome=true]{display:grid;padding-inline:16px}.studio-chrome-mount,.studio-panel-mount{display:contents}.studio-toolbar-leading,.studio-toolbar-trailing{min-width:0;display:flex;align-items:center;gap:8px}.studio-toolbar-leading{min-width:0}.studio-toolbar-trailing{justify-content:flex-end;justify-self:end;width:max-content;max-width:100%}.studio-toolbar-center{min-width:0;width:max-content;max-width:100%;justify-self:center}.studio-toolbar[data-studio-react-chrome=true] .studio-toolbar-center .planr-segment{display:inline-flex}.studio-toolbar[data-studio-center=false] .studio-toolbar-center,.studio-toolbar-center:empty,.studio-toolbar-status:empty,.studio-toolbar-actions:empty{display:none}.studio-toolbar-status,.studio-toolbar-actions{display:flex;align-items:center;min-width:0;gap:8px}.studio-toolbar-status{max-width:128px}.studio-toolbar-status>:is(output,.studio-status){display:inline-flex;align-items:center;min-width:0;max-width:none;overflow-wrap:normal}.studio-identity{min-width:0;flex:1;overflow:hidden}.studio-toolbar .planr-title-block strong{max-width:min(25vw,300px);min-width:0;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.studio-toolbar[data-studio-react-chrome=true] .studio-type-badge{display:inline-flex}.studio-subtitle,.studio-hierarchy{display:block;overflow:hidden;color:var(--planr-color-text-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.studio-hierarchy a{color:inherit}.studio-type-badge{display:inline-flex;flex:none;align-items:center;padding:2px 5px;border:1px solid var(--planr-color-rule);border-radius:var(--planr-radius-small, 5px);color:var(--planr-color-text-muted);font:500 10px / 1.2 var(--planr-font-body);white-space:nowrap}.studio-button,.studio-menu-content,.studio-tooltip,.studio-panel-dialog,.studio-dialog{border:1px solid var(--planr-color-rule);background:var(--planr-color-panel);color:var(--planr-color-text)}.studio-button{min-height:32px;display:inline-flex;justify-content:center;align-items:center;gap:6px;border-radius:var(--planr-radius-medium, 8px);padding:0 9px;font:500 13px / 1.3 var(--planr-font-body);cursor:pointer}.studio-button-ghost{background:transparent;border-color:transparent}.studio-toolbar[data-studio-react-chrome=true] :is(.studio-button,.planr-toolbar-action){height:auto;min-height:32px;padding-block:4px;white-space:nowrap}.studio-button-primary{background:var(--planr-color-primary);border-color:var(--planr-color-primary);color:var(--planr-color-background)}.studio-button:not(:disabled):hover,.studio-button[aria-pressed=true],.studio-button[aria-expanded=true]{background:var(--planr-color-raised);color:var(--planr-color-primary)}.studio-button:disabled,.studio-menu-item[data-disabled]{opacity:0.45;cursor:not-allowed}.studio-button:focus-visible,.studio-menu-item:focus-visible{outline:2px solid var(--planr-color-primary);outline-offset:2px}.studio-menu{display:inline-flex}.studio-menu-content{min-width:180px;max-width:min(320px,calc(100vw - 16px));max-height:var(--radix-dropdown-menu-content-available-height);overflow-y:auto;padding:5px;z-index:160;border-radius:var(--planr-radius-medium, 8px);box-shadow:0 12px 30px color-mix(in srgb,var(--planr-color-background) 60%,transparent)}.studio-menu-item{width:100%;min-height:34px;padding:8px 10px;display:flex;align-items:center;text-align:left;border:0;border-radius:var(--planr-radius-small, 5px);background:transparent;color:inherit;font:500 13px / 1.3 var(--planr-font-body);cursor:pointer}.studio-menu-item[data-highlighted]{background:var(--planr-color-raised);outline:none;color:var(--planr-color-primary)}.studio-menu-group-start{border-top:1px solid var(--planr-color-rule);border-radius:0}.studio-tooltip{z-index:180;padding:6px 8px;border-radius:var(--planr-radius-small, 5px);font:12px / 1.4 var(--planr-font-body)}.studio-status{min-width:0;display:inline-flex;align-items:center;gap:4px;color:var(--planr-color-text-muted);font:10px / 1.3 var(--planr-font-body)}.studio-status[data-tone=error]{color:var(--planr-color-danger)}.studio-status .studio-button{width:24px;min-height:24px;padding:0}.studio-panel-overlay{position:absolute;inset:0;z-index:170;background:color-mix(in srgb,var(--planr-color-background) 72%,transparent)}.studio-panel-dialog{position:absolute;top:env(safe-area-inset-top,0px);bottom:env(safe-area-inset-bottom,0px);z-index:180;width:min(350px,calc(100% - 32px));box-shadow:0 8px 30px color-mix(in srgb,var(--planr-color-background) 50%,transparent)}.studio-panel-left{left:0}.studio-panel-right{right:0}.studio-panel-close{position:absolute;right:8px;top:8px;z-index:2;width:32px}.studio-dialog-overlay{position:fixed;inset:0;z-index:170;background:color-mix(in srgb,var(--planr-color-background) 72%,transparent)}.studio-dialog{position:fixed;z-index:180;inset:50% auto auto 50%;transform:translate(-50%,-50%);box-sizing:border-box;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border-radius:var(--planr-radius-large, 12px);box-shadow:0 8px 30px color-mix(in srgb,var(--planr-color-background) 50%,transparent);font:400 13px / 1.5 var(--planr-font-body)}.studio-dialog-title{margin:0 32px 12px 0;font:600 20px / 1.3 var(--planr-font-display)}.studio-dialog-description{color:var(--planr-color-text-muted)}.studio-panel-content{height:100%;min-height:0}.studio-panel-dialog .design-navigator,.studio-panel-dialog .planr-review-rail,.studio-panel-dialog .diagram-outline{position:static!important;width:100%!important;height:100%!important;max-height:100%!important;transform:none!important;overflow-y:auto;padding-top:42px;border:0}@media(max-width:680px){.studio-toolbar{gap:6px;padding-inline:8px}.studio-toolbar .planr-title-block strong{max-width:30vw}.studio-toolbar .design-wordmark{display:none}.studio-toolbar .design-button-label{display:none}.studio-toolbar .studio-status{max-width:90px}.studio-button{min-height:36px;padding-inline:8px}}.planr-shell[data-studio-framework=react]{--planr-toolbar-height: 60px;grid-template-rows:auto minmax(0,1fr)}.planr-shell[data-studio-framework=react] :is(.design-toolbar,.diagram-toolbar){display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:var(--planr-toolbar-height);height:auto;padding-block:4px;overflow:visible}.planr-shell[data-studio-framework=react] .planr-brand{display:flex;gap:8px;max-width:none;min-width:0}.planr-shell[data-studio-framework=react] .studio-toolbar-leading{min-width:0}.planr-shell[data-studio-framework=react] .studio-toolbar-trailing{max-width:100%}.planr-shell[data-studio-framework=react] .design-toolbar .design-view-picker{display:inline-flex;width:auto;height:auto;min-height:32px;margin:0;border:0}.planr-shell[data-studio-framework=react] .design-export>button{display:inline-flex;width:auto;padding:0 9px}.planr-shell[data-studio-framework=react] .studio-menu-content{position:relative}.planr-shell[data-studio-framework=react] .planr-title-block{display:flex}.planr-shell[data-studio-framework=react]>.planr-workspace{position:relative}@media(max-width:680px){.planr-shell[data-studio-framework=react] .studio-toolbar.planr-toolbar{gap:2px;padding-inline:4px}.planr-shell[data-studio-framework=react] .studio-toolbar-leading,.planr-shell[data-studio-framework=react] .studio-toolbar-trailing{gap:2px}.planr-shell[data-studio-framework=react] .planr-brand{overflow:hidden}.planr-shell[data-studio-framework=react] .studio-identity{display:block;overflow:hidden}.planr-shell[data-studio-framework=react] .planr-mark{width:22px;height:22px}.planr-shell[data-studio-framework=react] .design-view-picker{height:auto;min-height:44px;gap:0}.planr-shell[data-studio-framework=react] .design-view-picker button{width:44px;height:auto;padding:0}.planr-shell[data-studio-framework=react] .studio-button{min-width:44px;min-height:44px}.planr-shell[data-studio-framework=react] :is(.design-export,.diagram-export)>button{font-size:0;width:44px;padding:0}.planr-shell[data-studio-framework=react] :is(.design-export,.diagram-export)>button span{font-size:16px}}@media(max-width:960px){.planr-shell[data-studio-framework=react] .design-wordmark{display:none}.planr-shell[data-studio-framework=react] .planr-workspace>:is(.design-navigator,.planr-review-rail){top:0;max-height:100%}}@media(max-width:1240px){.planr-shell[data-studio-framework=react] .planr-title-block{flex-direction:column;align-items:flex-start;gap:1px}.planr-shell[data-studio-framework=react] .planr-title-block strong{max-width:100%;line-height:1.1}.planr-shell[data-studio-framework=react] .design-preview-state{max-width:48px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.planr-diagram-editor[data-studio-framework=react]{--de-bar-height: 60px;grid-template-rows:auto minmax(0,1fr)}.planr-diagram-editor[data-studio-framework=react] .de-bar{display:block;padding:0;min-height:0;height:auto;overflow:visible;border-bottom:0}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar{min-height:60px;height:auto;padding:4px 16px;border:0;border-bottom:1px solid var(--de-rule);background:var(--de-panel)}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar-leading{min-width:0}.planr-diagram-editor[data-studio-framework=react] .studio-toolbar :is(.de-command-group,.studio-toolbar-trailing){flex:none}.planr-diagram-editor[data-studio-framework=react] .planr-brand{min-width:0;overflow:hidden}.planr-diagram-editor[data-studio-framework=react] .de-title{max-width:25vw;line-height:1.35}.planr-diagram-editor[data-studio-framework=react] .studio-subtitle .de-subtitle{line-height:1.3}.planr-diagram-editor[data-studio-framework=react] .de-alert{grid-row:2;top:var(--de-space-3)}.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .design-wordmark,.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .studio-subtitle{display:none}.planr-diagram-editor[data-studio-framework=react][data-layout~=drawer] .planr-title-block{flex-direction:column;align-items:flex-start;gap:1px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-toolbar{padding:4px 8px;gap:8px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-toolbar-trailing{gap:4px}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .studio-menu:has([data-studio-palette-menu]){display:none}.planr-diagram-editor[data-studio-framework=react][data-layout~=compact] .de-more-menu{top:calc(100% + var(--de-space-2))}[data-studio-framework=react]{position:relative}[data-studio-framework=react] .studio-toolbar .studio-type-badge{display:inline-flex}[data-studio-framework=react] .studio-identity{flex:1;min-width:0}[data-studio-framework=react] .studio-toolbar .planr-title-block strong{contain:inline-size;display:block;align-self:stretch;width:auto;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-studio-framework=react] .studio-subtitle{contain:inline-size}[data-studio-framework=react]:has(.studio-panel-dialog) [data-planr-close-feedback],[data-studio-framework=react]:has(.studio-panel-dialog) .planr-review-rail [data-planr-close-feedback]{display:none}.studio-panel-dialog .design-nav-close,.studio-panel-dialog .studio-panel-content .planr-review-rail [data-planr-close-feedback]{display:none}.studio-preserved-control{display:contents}.studio-toolbar fieldset.planr-segment{margin:0;padding:0;min-inline-size:0}.diagram-shell[data-present=true] .studio-toolbar-actions>:not([data-action=present]):not(.studio-menu){display:none}.diagram-shell[data-studio-framework=react] .diagram-presentation-nav button{color:var(--planr-color-text);background:var(--planr-color-panel)}.diagram-shell[data-studio-framework=react] .diagram-presentation-nav button:enabled:hover{background:var(--planr-color-raised)}@media(max-width:680px){.studio-panel-close{width:44px;min-height:44px}}@media(max-width:700px){.diagram-shell[data-present=true] .studio-toolbar-leading{flex:none}.diagram-shell[data-present=true] .diagram-presentation-nav{min-width:0;flex:1;gap:4px}.diagram-shell[data-present=true] .diagram-presentation-nav>div{min-width:0}}@media(min-width:681px)and (max-width:960px){.diagram-shell[data-studio-framework=react] .studio-toolbar-trailing{gap:4px}}@media(max-width:480px){.studio-toolbar .planr-mark{display:none}}.studio-toolbar[data-studio-center=true],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-center=true]{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:auto;row-gap:4px;padding-block:4px}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-leading{grid-column:1;grid-row:1;width:100%}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-trailing{grid-column:1;grid-row:2;width:100%;flex-wrap:wrap}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-actions{justify-content:flex-end;flex-wrap:wrap;max-width:100%}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-center{grid-column:1;grid-row:3}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-status{max-width:100%;width:100%;flex-basis:100%;flex-wrap:wrap;justify-content:flex-end}:is(.studio-toolbar[data-studio-layout=compact],.planr-shell[data-studio-framework=react] .studio-toolbar[data-studio-layout=compact]) .studio-toolbar-status>:is(output,.studio-status,.design-preview-state){max-width:100%;white-space:normal;overflow:visible;overflow-wrap:normal}.studio-toolbar[data-studio-density=narrow]{gap:4px;padding-inline:8px}.studio-toolbar[data-studio-density=narrow] .design-wordmark,.studio-toolbar[data-studio-density=narrow] .design-button-label,.studio-toolbar[data-studio-density=narrow] .planr-mark{display:none}.studio-toolbar[data-studio-density=narrow] .studio-button,.studio-toolbar[data-studio-density=narrow] .planr-toolbar-action,.studio-toolbar[data-studio-density=narrow] .design-view-picker button{min-height:44px;min-width:44px}.studio-toolbar[data-studio-density=narrow] .design-view-picker{height:auto;gap:0}.studio-toolbar[data-studio-density=narrow] .design-view-picker button{width:44px;height:auto;padding:0}.studio-toolbar[data-studio-density=narrow] .studio-toolbar-actions{gap:4px}.studio-toolbar[data-studio-density=narrow] .studio-toolbar-status{font-size:10px}.studio-toolbar[data-studio-density=narrow] :is(.design-export,.diagram-export)>button{font-size:0;width:44px;padding:0}.studio-toolbar[data-studio-density=narrow] :is(.design-export,.diagram-export)>button span{font-size:16px}@media(max-width:680px),(pointer:coarse){.studio-button,.studio-menu-item{min-width:44px;min-height:44px}}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar{grid-template-columns:minmax(0,1fr) auto auto}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .planr-title-block strong{max-width:none}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .studio-toolbar-leading{grid-column:1;grid-row:1}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .studio-toolbar-center{display:none}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .studio-toolbar-secondary{grid-column:3;grid-row:1;display:flex;align-items:center;gap:4px;min-width:0}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .studio-toolbar-trailing{grid-column:2;grid-row:1;width:auto}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .studio-toolbar-actions{flex-wrap:nowrap}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar .de-icon-button{min-width:44px;min-height:44px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar button,.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar a{border-radius:8px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar button svg,.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar a svg{width:18px;height:18px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar [data-action=outline]{background:transparent;border-color:transparent}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact]{grid-template-columns:minmax(0,1fr) auto;gap:0 8px;padding-block:0}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .studio-toolbar-leading{grid-column:1;grid-row:1;width:auto}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .studio-toolbar-trailing{grid-column:2;grid-row:1;flex-wrap:nowrap;width:auto}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .studio-toolbar-secondary{grid-column:1 / -1;grid-row:2;border-top:0;padding-top:0}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .de-save-state{display:inline-block;flex:1;max-width:none;overflow:visible;white-space:normal;font-size:12px;line-height:1.3}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .planr-brand{flex:1}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .de-title{max-width:none;font-size:14px;font-weight:600;line-height:1.3}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .studio-type-badge{font-size:10px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact] .studio-toolbar-actions{flex-wrap:nowrap}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]){position:relative;isolation:isolate;min-width:44px;min-height:44px;padding:0;border-color:transparent;background:transparent;box-shadow:none}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem])::before{content:"";position:absolute;z-index:-1;inset:6px;border:1px solid transparent;border-radius:8px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]):is(:hover,[aria-expanded=true],[aria-pressed=true])::before{background:var(--de-raised);border-color:var(--de-rule)}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]).de-primary:not(:disabled)::before{background:var(--de-primary);border-color:var(--de-primary)}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]).de-primary:hover:not(:disabled)::before{background:var(--de-primary-hover);border-color:var(--de-primary-hover)}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]).de-primary:disabled::before{background:var(--de-raised);border-color:var(--de-rule)}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]):focus-visible{outline:none}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] :is(.de-icon-button,button:has(>svg),a:has(>svg)):not([role=menuitem]):focus-visible::before{outline:2px solid var(--de-primary);outline-offset:1px}.planr-diagram-editor[data-studio-framework=react] .diagram-authoring-toolbar[data-studio-layout=compact][data-studio-density=narrow] .de-save-state{font-size:11px}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openplanr/design",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Canonical OpenPlanr design helpers and design-loop engine",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"LICENSE"
|
|
44
44
|
],
|
|
45
45
|
"engines": {
|
|
46
|
-
"node": ">=
|
|
46
|
+
"node": ">=22.13.0"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@openplanr/artifact": "0.6.
|
|
50
|
-
"@openplanr/protocol": "0.
|
|
49
|
+
"@openplanr/artifact": "0.6.7",
|
|
50
|
+
"@openplanr/protocol": "0.12.0"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"test": "node --test --test-concurrency=2 tests/*.test.mjs",
|
|
@@ -267,8 +267,13 @@ html[data-design-theme="light"] .design-export > div { box-shadow:0 12px 30px #1
|
|
|
267
267
|
|
|
268
268
|
/* A shared sizing contract keeps captions, tools and service status from
|
|
269
269
|
overlapping. It belongs to the shell; iframe documents inherit none of it. */
|
|
270
|
-
[data-design-studio] .design-stage-context { height:var(--design-stage-context-height); }
|
|
271
|
-
[data-design-studio] .
|
|
270
|
+
[data-design-studio] .design-stage-context { height:auto; min-height:var(--design-stage-context-height); flex-wrap:wrap; }
|
|
271
|
+
[data-design-studio] .design-stage-context > div:first-child { flex:1 1 220px; max-width:100%; }
|
|
272
|
+
[data-design-studio] .design-stage-context > .design-stage-actions { flex:0 1 auto; flex-wrap:wrap; max-width:100%; }
|
|
273
|
+
[data-design-studio] .design-frame-picker { min-width:0; max-width:100%; }
|
|
274
|
+
[data-design-studio] .design-frame-picker select { min-width:0; flex:1 1 auto; appearance:none; line-height:1.3; min-height:32px; padding-inline-end:26px; background-image:linear-gradient(45deg,transparent 50%,var(--planr-color-text) 50%),linear-gradient(135deg,var(--planr-color-text) 50%,transparent 50%); background-position:calc(100% - 12px) 50%,calc(100% - 8px) 50%; background-size:4px 4px; background-repeat:no-repeat; }
|
|
275
|
+
[data-design-studio] .design-guidance > summary { height:auto; min-height:30px; padding-block:4px; line-height:1.3; white-space:nowrap; }
|
|
276
|
+
[data-design-studio] .planr-shell:not([data-design-presentation="true"]) .planr-stage-scroll { inset-block-start:var(--design-stage-context-measured-height,var(--design-stage-context-height)); }
|
|
272
277
|
[data-design-studio] .planr-shell[data-design-view="prototype"]:not([data-design-presentation="true"]) .planr-stage-scroll { bottom:calc(var(--design-tools-space) + var(--design-status-space)); }
|
|
273
278
|
[data-design-studio] .planr-shell[data-design-view="walkthrough"]:not([data-design-presentation="true"]) .planr-stage-scroll { bottom:calc(var(--design-tools-space) + var(--design-caption-height) + var(--design-status-space)); }
|
|
274
279
|
[data-design-studio] .design-walkthrough-caption { height:var(--design-caption-height); min-height:var(--design-caption-height); max-height:var(--design-caption-height); bottom:var(--design-status-space); }
|
|
@@ -286,14 +291,14 @@ html[data-design-theme="light"] .design-export > div { box-shadow:0 12px 30px #1
|
|
|
286
291
|
font-size:var(--design-type-control); line-height:1.4; min-height:var(--design-touch-target);
|
|
287
292
|
min-width:0; max-width:100%; border-radius:8px; padding:10px 12px; scroll-margin-block:16px;
|
|
288
293
|
}
|
|
289
|
-
:root[data-design-studio] body select { height:var(--design-touch-target); }
|
|
294
|
+
:root[data-design-studio] body select { height:auto; min-height:var(--design-touch-target); }
|
|
290
295
|
:root[data-design-studio] body :is(button:not(.planr-pin):not(.design-minimap-close),.design-export > summary,.design-tools-menu > summary,.design-guidance > summary) {
|
|
291
296
|
min-height:var(--design-touch-target); min-width:var(--design-touch-target); touch-action:manipulation;
|
|
292
297
|
}
|
|
293
298
|
:root[data-design-studio] body :is(.design-dialog-close,.design-nav-close,.planr-rail-close,.planr-composer-header button) {
|
|
294
299
|
width:var(--design-touch-target); height:var(--design-touch-target); flex-basis:var(--design-touch-target);
|
|
295
300
|
}
|
|
296
|
-
:root[data-design-studio] .design-canvas-tools button { height:var(--design-touch-target); white-space:nowrap; }
|
|
301
|
+
:root[data-design-studio] .design-canvas-tools button { height:auto; min-height:var(--design-touch-target); white-space:nowrap; }
|
|
297
302
|
:root[data-design-studio] :is(.design-dialog-content,.design-inspector,.planr-thread-comment,.planr-reply) { font-size:var(--design-type-body); }
|
|
298
303
|
:root[data-design-studio] :is(.design-profile-form > label,.planr-annotation-composer label,.planr-identity label,.design-profile-form legend) { font-size:var(--design-type-label); }
|
|
299
304
|
:root[data-design-studio] :is(.design-muted,.design-profile-form > .design-muted,.design-dialog-status) { font-size:var(--design-type-label); }
|
|
@@ -365,6 +370,11 @@ html[data-design-theme="light"] .design-export > div { box-shadow:0 12px 30px #1
|
|
|
365
370
|
:root[data-design-studio] .planr-shell { height:var(--design-frozen-shell-height,100%); }
|
|
366
371
|
:root[data-design-studio] .design-toolbar { grid-template-columns:auto minmax(0,1fr) auto; grid-template-rows:52px; padding:0 max(8px,env(safe-area-inset-right,0px)) 0 max(8px,env(safe-area-inset-left,0px)); }
|
|
367
372
|
:root[data-design-studio] .design-toolbar .planr-brand { display:none; }
|
|
373
|
+
:root[data-design-studio] .planr-shell[data-studio-framework="react"] .design-toolbar[data-studio-layout="compact"] { grid-template-columns:auto minmax(0,1fr); }
|
|
374
|
+
:root[data-design-studio] .planr-shell[data-studio-framework="react"] .design-toolbar[data-studio-layout="compact"] .studio-toolbar-leading { grid-column:1; grid-row:1; width:auto; }
|
|
375
|
+
:root[data-design-studio] .planr-shell[data-studio-framework="react"] .design-toolbar[data-studio-layout="compact"] .studio-toolbar-trailing { grid-column:2; grid-row:1; width:auto; flex-wrap:nowrap; }
|
|
376
|
+
:root[data-design-studio] .planr-shell[data-studio-framework="react"] .design-toolbar[data-studio-layout="compact"] .studio-toolbar-center { grid-column:1 / -1; grid-row:2; }
|
|
377
|
+
:root[data-design-studio] .planr-shell[data-studio-framework="react"] .design-toolbar[data-studio-layout="compact"] .studio-toolbar-status { width:auto; flex-basis:auto; max-width:128px; }
|
|
368
378
|
:root[data-design-studio] .design-toolbar-trailing { grid-column:3; }
|
|
369
379
|
:root[data-design-studio] .design-view-picker { grid-column:2; grid-row:1; }
|
|
370
380
|
:root[data-design-studio] .design-stage-context { flex-wrap:nowrap; padding:4px 12px; }
|
|
@@ -506,6 +506,11 @@
|
|
|
506
506
|
transform: translateX(-50%);
|
|
507
507
|
display: flex;
|
|
508
508
|
align-items: center;
|
|
509
|
+
flex-wrap: wrap;
|
|
510
|
+
justify-content: center;
|
|
511
|
+
width: max-content;
|
|
512
|
+
max-width: calc(100% - 32px);
|
|
513
|
+
box-sizing: border-box;
|
|
509
514
|
gap: 2px;
|
|
510
515
|
padding: 4px;
|
|
511
516
|
border: 1px solid var(--planr-color-rule);
|
|
@@ -514,22 +519,26 @@
|
|
|
514
519
|
box-shadow: 0 8px 28px #0006;
|
|
515
520
|
}
|
|
516
521
|
.design-canvas-tools button {
|
|
517
|
-
height:
|
|
522
|
+
height: auto;
|
|
523
|
+
min-height: 28px;
|
|
518
524
|
min-width: 28px;
|
|
519
|
-
|
|
525
|
+
flex: none;
|
|
526
|
+
padding: 4px 8px;
|
|
520
527
|
border: 0;
|
|
521
528
|
border-radius: 4px;
|
|
522
529
|
background: transparent;
|
|
523
530
|
font-size: 11px;
|
|
531
|
+
line-height: 1.3;
|
|
532
|
+
white-space: nowrap;
|
|
524
533
|
cursor: pointer;
|
|
525
534
|
}
|
|
526
535
|
.design-canvas-tools [data-design-zoom="reset"] {
|
|
527
|
-
flex: 0 0
|
|
528
|
-
width:
|
|
536
|
+
flex: 0 0 auto;
|
|
537
|
+
width: auto;
|
|
529
538
|
min-width: 56px;
|
|
530
539
|
font-variant-numeric: tabular-nums;
|
|
531
540
|
}
|
|
532
|
-
.design-interaction-picker { height:30px; padding:0; border:0; background:transparent; }
|
|
541
|
+
.design-interaction-picker { height:auto; min-height:30px; flex:none; padding:0; border:0; background:transparent; }
|
|
533
542
|
.design-interaction-picker button { display:flex; align-items:center; gap:6px; }
|
|
534
543
|
.design-interaction-picker .design-button-label { display:none; }
|
|
535
544
|
.design-canvas-tools .design-interaction-picker button[aria-pressed="true"] { background:var(--planr-color-raised); color:var(--planr-color-primary); }
|
|
@@ -2307,6 +2307,33 @@ ${fence}`;
|
|
|
2307
2307
|
);
|
|
2308
2308
|
content.append(value, reason, save);
|
|
2309
2309
|
}
|
|
2310
|
+
function installStageContextGeometry() {
|
|
2311
|
+
const context = q(".design-stage-context", root);
|
|
2312
|
+
if (!context) return;
|
|
2313
|
+
let frame = 0;
|
|
2314
|
+
const measure = () => {
|
|
2315
|
+
frame = 0;
|
|
2316
|
+
if (disposed) return;
|
|
2317
|
+
const height = Math.ceil(context.getBoundingClientRect().height);
|
|
2318
|
+
const value = `${height}px`;
|
|
2319
|
+
if (height && root.style.getPropertyValue("--design-stage-context-measured-height") !== value)
|
|
2320
|
+
root.style.setProperty("--design-stage-context-measured-height", value);
|
|
2321
|
+
};
|
|
2322
|
+
const schedule = () => {
|
|
2323
|
+
if (!frame && !disposed) frame = requestAnimationFrame(measure);
|
|
2324
|
+
};
|
|
2325
|
+
const observer = typeof ResizeObserver === "function" ? new ResizeObserver(schedule) : null;
|
|
2326
|
+
observer?.observe(context);
|
|
2327
|
+
on(window, "resize", schedule);
|
|
2328
|
+
on(root, "planr:design-render", schedule);
|
|
2329
|
+
void document.fonts?.ready.then(schedule);
|
|
2330
|
+
measure();
|
|
2331
|
+
destroyers.push(() => {
|
|
2332
|
+
observer?.disconnect();
|
|
2333
|
+
cancelAnimationFrame(frame);
|
|
2334
|
+
root.style.removeProperty("--design-stage-context-measured-height");
|
|
2335
|
+
});
|
|
2336
|
+
}
|
|
2310
2337
|
function installCanvas() {
|
|
2311
2338
|
const tools = q(".design-canvas-tools");
|
|
2312
2339
|
const more = node("details", "", { class: "design-tools-menu" });
|
|
@@ -3494,6 +3521,7 @@ ${fence}`;
|
|
|
3494
3521
|
installComposerCategory();
|
|
3495
3522
|
installInspector();
|
|
3496
3523
|
installCanvas();
|
|
3524
|
+
installStageContextGeometry();
|
|
3497
3525
|
installThumbnails();
|
|
3498
3526
|
installPersonalDrafts();
|
|
3499
3527
|
about(true);
|