openplanr 2.2640.4 → 2.2640.5
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 +43 -0
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +44 -21
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-CaX9EJp4.js → index-BqFEZO-9.js} +2 -2
- package/dist/dashboard/assets/{index-CaX9EJp4.js.map → index-BqFEZO-9.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +8 -8
- package/dist/dashboard/index.html +1 -1
- package/dist/services/diagram-artifact-service.d.ts +28 -1
- package/dist/services/diagram-artifact-service.d.ts.map +1 -1
- package/dist/services/diagram-artifact-service.js +64 -1
- package/dist/services/diagram-artifact-service.js.map +1 -1
- package/docs/ARTIFACT_REVIEW.md +38 -2
- package/docs/CLI.md +12 -2
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +2 -2
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +33 -25
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +14 -4
- package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +51 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-share.mjs +805 -574
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-share.mjs +805 -574
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-share.mjs +805 -574
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +13 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +51 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-share.mjs +805 -574
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +32 -24
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +51 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +14 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-share.mjs +805 -574
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-share.mjs +805 -574
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-share.mjs +805 -574
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +51 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +13 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-share.mjs +805 -574
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +5 -1
- 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 +35 -27
- package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +14 -4
- package/lib/host-packages/openai/openplanr/skills/artifact/agents/openai.yaml +2 -2
- package/lib/host-packages/openai/openplanr/skills/artifact/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +51 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-share.mjs +805 -574
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-share.mjs +805 -574
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-share.mjs +805 -574
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +13 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +51 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-artifact-shell.mjs +127 -123
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-review-handoff.mjs +4 -3
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-share.mjs +805 -574
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
.design-share-dialog{width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 48px);padding:22px;border:1px solid var(--planr-color-rule);border-radius:14px;background:var(--planr-color-panel);color:var(--planr-color-text);box-shadow:0 28px 90px #15202730;font:13px/1.5 var(--planr-font-body);overflow:auto}.design-share-dialog::backdrop{background:#18212b3d;backdrop-filter:blur(5px)}.design-share-dialog header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.design-share-dialog h2{font-size:20px;font-family:var(--planr-font-display);letter-spacing:-.025em;margin:0}.design-share-dialog button{font:inherit;cursor:pointer;border:1px solid var(--planr-color-rule);border-radius:7px;padding:7px 11px;background:var(--planr-color-panel);color:inherit;white-space:nowrap}.design-share-dialog button:hover{background:var(--planr-color-raised)}.design-share-dialog button:disabled{opacity:.55;cursor:wait}.design-share-dialog button:focus-visible,.design-share-dialog input:focus-visible,.design-share-dialog summary:focus-visible{outline:2px solid var(--planr-color-primary);outline-offset:3px}.design-share-dialog dl{display:grid;grid-template-columns:80px minmax(0,1fr);gap:6px 12px;padding:14px;border-radius:8px;background:var(--planr-color-background)}.design-share-dialog dt{color:var(--planr-color-text-muted)}.design-share-dialog dd{margin:0;overflow-wrap:anywhere}.design-share-dialog p{color:var(--planr-color-text-muted)}.design-share-copy-row{display:flex;align-items:center;gap:10px;margin:14px 0}.design-share-copy-row>span{flex:1;color:var(--planr-color-text-muted)}.design-share-dialog input{box-sizing:border-box;width:100%;min-width:0;font:12px/1.5 ui-monospace,monospace;border:1px solid var(--planr-color-rule);border-radius:7px;padding:8px;color:var(--planr-color-text);background:var(--planr-color-background)}.design-share-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.design-share-dialog .design-share-primary{background:var(--planr-color-primary);color:var(--planr-color-background);border-color:var(--planr-color-primary)}.design-share-dialog .design-share-danger{color:var(--planr-color-danger)}.design-share-dialog summary{cursor:pointer;color:var(--planr-color-text-muted);padding:8px 0}.design-share-dialog [data-share-message]{min-height:20px;margin:16px 0 0;overflow-wrap:anywhere}.design-share-dialog [data-share-message][data-error=true]{color:var(--planr-color-danger)}@media(max-width:480px){.design-share-copy-row{align-items:stretch;flex-direction:column}}
|
|
1
|
+
.design-share-dialog{width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 48px);padding:22px;border:1px solid var(--planr-color-rule);border-radius:14px;background:var(--planr-color-panel);color:var(--planr-color-text);box-shadow:0 28px 90px #15202730;font:13px/1.5 var(--planr-font-body);overflow:auto}.design-share-dialog::backdrop{background:#18212b3d;backdrop-filter:blur(5px)}.design-share-dialog header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.design-share-dialog h2{font-size:20px;font-family:var(--planr-font-display);letter-spacing:-.025em;margin:0}.design-share-dialog button{font:inherit;cursor:pointer;border:1px solid var(--planr-color-rule);border-radius:7px;padding:7px 11px;background:var(--planr-color-panel);color:inherit;white-space:nowrap}.design-share-dialog button:hover:not(:disabled){background:var(--planr-color-raised)}.design-share-dialog button:disabled{opacity:.55;cursor:wait}.design-share-dialog button:focus-visible,.design-share-dialog input:focus-visible,.design-share-dialog summary:focus-visible{outline:2px solid var(--planr-color-primary);outline-offset:3px}.design-share-dialog dl{display:grid;grid-template-columns:80px minmax(0,1fr);gap:6px 12px;padding:14px;border-radius:8px;background:var(--planr-color-background)}.design-share-dialog dt{color:var(--planr-color-text-muted)}.design-share-dialog dd{margin:0;overflow-wrap:anywhere}.design-share-dialog p{color:var(--planr-color-text-muted)}.design-share-copy-row{display:flex;align-items:center;gap:10px;margin:14px 0}.design-share-copy-row>span{flex:1;color:var(--planr-color-text-muted)}.design-share-dialog input{box-sizing:border-box;width:100%;min-width:0;font:12px/1.5 ui-monospace,monospace;border:1px solid var(--planr-color-rule);border-radius:7px;padding:8px;color:var(--planr-color-text);background:var(--planr-color-background)}.design-share-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.design-share-dialog .design-share-primary{background:var(--planr-color-primary);color:var(--planr-color-on-primary);border-color:var(--planr-color-primary)}.design-share-dialog .design-share-primary:is(:hover,:active,:focus-visible):not(:disabled){background:var(--planr-color-primary-strong);color:var(--planr-color-on-primary);border-color:var(--planr-color-primary-strong)}.design-share-dialog .design-share-danger{color:var(--planr-color-danger)}.design-share-dialog summary{cursor:pointer;color:var(--planr-color-text-muted);padding:8px 0}.design-share-dialog [data-share-message]{min-height:20px;margin:16px 0 0;overflow-wrap:anywhere}.design-share-dialog [data-share-message][data-error=true]{color:var(--planr-color-danger)}@media(max-width:480px){.design-share-copy-row{align-items:stretch;flex-direction:column}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openplanr/protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Canonical OpenPlanr schemas, registries, typed errors, and portable contract validation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,6 +87,10 @@
|
|
|
87
87
|
"./diagram-authoring-contracts": {
|
|
88
88
|
"types": "./src/diagram-authoring-contracts.d.mts",
|
|
89
89
|
"import": "./src/diagram-authoring-contracts.mjs"
|
|
90
|
+
},
|
|
91
|
+
"./diagram-review-contracts": {
|
|
92
|
+
"types": "./src/diagram-review-contracts.d.mts",
|
|
93
|
+
"import": "./src/diagram-review-contracts.mjs"
|
|
90
94
|
}
|
|
91
95
|
},
|
|
92
96
|
"files": [
|
package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs
CHANGED
|
@@ -760,6 +760,131 @@ function embedJson(value) {
|
|
|
760
760
|
return JSON.stringify(value ?? null).replace(JSON_HTML_RE, (ch) => JSON_HTML_ESCAPES[ch]);
|
|
761
761
|
}
|
|
762
762
|
|
|
763
|
+
// packages/artifact/lib/artifact/ui/annotation-styles.mjs
|
|
764
|
+
var ARTIFACT_ANNOTATION_CSS = `.planr-annotation-layer { position: absolute; z-index: 6; inset: 0; }
|
|
765
|
+
.planr-shell[data-planr-review-mode="interact"] .planr-annotation-layer { pointer-events: none; }
|
|
766
|
+
.planr-shell[data-planr-review-mode="comment"] .planr-annotation-layer { cursor: crosshair; touch-action: none; }
|
|
767
|
+
.planr-shell[data-planr-review-mode="comment"] .planr-frame iframe { pointer-events: none; }
|
|
768
|
+
.planr-region-selection {
|
|
769
|
+
position: absolute;
|
|
770
|
+
min-width: 2px;
|
|
771
|
+
min-height: 2px;
|
|
772
|
+
border: 2px solid var(--planr-color-primary);
|
|
773
|
+
border-radius: var(--planr-radius-small);
|
|
774
|
+
background: color-mix(in srgb, var(--planr-color-primary) 14%, transparent);
|
|
775
|
+
pointer-events: none;
|
|
776
|
+
}
|
|
777
|
+
.planr-pin {
|
|
778
|
+
position: absolute;
|
|
779
|
+
z-index: 8;
|
|
780
|
+
width: 44px;
|
|
781
|
+
height: 44px;
|
|
782
|
+
min-width: 44px;
|
|
783
|
+
min-height: 44px;
|
|
784
|
+
translate: -50% -50%;
|
|
785
|
+
display: grid;
|
|
786
|
+
place-items: center;
|
|
787
|
+
padding: 0;
|
|
788
|
+
border: 8px solid transparent;
|
|
789
|
+
border-radius: 50%;
|
|
790
|
+
background-clip: padding-box;
|
|
791
|
+
color: var(--planr-color-on-danger);
|
|
792
|
+
cursor: pointer;
|
|
793
|
+
pointer-events: auto;
|
|
794
|
+
font: 700 10px/1 var(--planr-font-mono);
|
|
795
|
+
box-shadow: 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent);
|
|
796
|
+
}
|
|
797
|
+
.planr-pin-fix { background-color: var(--planr-color-danger); }
|
|
798
|
+
.planr-pin-improve { background-color: var(--planr-color-primary-strong); color: var(--planr-color-on-improve); }
|
|
799
|
+
.planr-pin-question { background-color: var(--planr-color-question); color: var(--planr-color-on-question); }
|
|
800
|
+
.planr-pin-resolved, .planr-pin-addressed { background-color: var(--planr-color-resolved); color: var(--planr-color-on-resolved); }
|
|
801
|
+
.planr-pin-highlight { animation: planr-pin-highlight 1.2s ease-out; }
|
|
802
|
+
@keyframes planr-pin-highlight {
|
|
803
|
+
0%, 35% { box-shadow: 0 0 0 7px color-mix(in srgb, var(--planr-color-primary) 52%, transparent), 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent); }
|
|
804
|
+
100% { box-shadow: 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent); }
|
|
805
|
+
}
|
|
806
|
+
.planr-pin-region {
|
|
807
|
+
position: absolute;
|
|
808
|
+
z-index: 7;
|
|
809
|
+
min-width: 2px;
|
|
810
|
+
min-height: 2px;
|
|
811
|
+
border: 2px solid var(--planr-color-danger);
|
|
812
|
+
border-radius: var(--planr-radius-small);
|
|
813
|
+
background: color-mix(in srgb, var(--planr-color-danger) 12%, transparent);
|
|
814
|
+
pointer-events: none;
|
|
815
|
+
}
|
|
816
|
+
.planr-pin-region-improve { border-color: var(--planr-color-primary-strong); background: color-mix(in srgb, var(--planr-color-primary-strong) 12%, transparent); }
|
|
817
|
+
.planr-pin-region-question { border-color: var(--planr-color-question); background: color-mix(in srgb, var(--planr-color-question) 12%, transparent); }
|
|
818
|
+
.planr-pin-region-resolved, .planr-pin-region-addressed { border-color: var(--planr-color-resolved); background: color-mix(in srgb, var(--planr-color-resolved) 10%, transparent); }
|
|
819
|
+
.planr-annotation-composer {
|
|
820
|
+
position: fixed;
|
|
821
|
+
inset: auto;
|
|
822
|
+
z-index: 100;
|
|
823
|
+
box-sizing: border-box;
|
|
824
|
+
width: min(360px, calc(100vw - 24px));
|
|
825
|
+
max-height: min(620px, calc(100dvh - 24px));
|
|
826
|
+
margin: 0;
|
|
827
|
+
overflow: auto;
|
|
828
|
+
overscroll-behavior: contain;
|
|
829
|
+
translate: none;
|
|
830
|
+
transform: none;
|
|
831
|
+
padding: 14px;
|
|
832
|
+
border: 1px solid var(--planr-color-rule);
|
|
833
|
+
border-radius: var(--planr-radius-large);
|
|
834
|
+
background: var(--planr-color-panel);
|
|
835
|
+
color: var(--planr-color-text);
|
|
836
|
+
box-shadow: 0 18px 60px color-mix(in srgb, var(--planr-color-background) 58%, transparent);
|
|
837
|
+
cursor: default;
|
|
838
|
+
pointer-events: auto;
|
|
839
|
+
}
|
|
840
|
+
.planr-annotation-composer strong { display: block; margin: 0; font: 650 14px/1.2 var(--planr-font-display); }
|
|
841
|
+
.planr-composer-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
|
|
842
|
+
.planr-composer-header button { display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; padding: 0; border: 1px solid transparent; border-radius: var(--planr-radius-small); background: transparent; color: var(--planr-color-text-muted); font: 22px/1 var(--planr-font-body); cursor: pointer; }
|
|
843
|
+
.planr-composer-header button:hover { background: var(--planr-color-raised); color: var(--planr-color-text); }
|
|
844
|
+
.planr-annotation-composer :focus-visible { outline: 2px solid var(--planr-color-primary); outline-offset: 2px; }
|
|
845
|
+
.planr-annotation-composer::backdrop { background: transparent; pointer-events: none; }
|
|
846
|
+
.planr-annotation-composer label, .planr-identity label {
|
|
847
|
+
display: grid;
|
|
848
|
+
gap: 5px;
|
|
849
|
+
margin-bottom: 9px;
|
|
850
|
+
color: var(--planr-color-text-muted);
|
|
851
|
+
font-size: 11px;
|
|
852
|
+
}
|
|
853
|
+
.planr-annotation-composer input, .planr-annotation-composer textarea, .planr-identity input,
|
|
854
|
+
.planr-reply-form textarea {
|
|
855
|
+
width: 100%;
|
|
856
|
+
padding: 8px 9px;
|
|
857
|
+
border: 1px solid var(--planr-color-rule);
|
|
858
|
+
border-radius: var(--planr-radius-small);
|
|
859
|
+
background: var(--planr-color-chrome);
|
|
860
|
+
color: var(--planr-color-text);
|
|
861
|
+
}
|
|
862
|
+
.planr-annotation-composer textarea { min-height: 84px; resize: vertical; }
|
|
863
|
+
.planr-intent-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin-bottom: 9px; }
|
|
864
|
+
.planr-intent-picker button {
|
|
865
|
+
min-height: 30px;
|
|
866
|
+
border: 1px solid var(--planr-color-rule);
|
|
867
|
+
border-radius: var(--planr-radius-small);
|
|
868
|
+
background: transparent;
|
|
869
|
+
cursor: pointer;
|
|
870
|
+
font-size: 10px;
|
|
871
|
+
}
|
|
872
|
+
.planr-intent-picker [aria-checked="true"] { border-color: var(--planr-color-primary); background: var(--planr-color-raised); }
|
|
873
|
+
.planr-field-error { min-height: 16px; margin: 0; color: var(--planr-color-danger); font-size: 10px; }
|
|
874
|
+
.planr-composer-actions { display: flex; justify-content: flex-end; gap: 7px; margin-top: 8px; }
|
|
875
|
+
.planr-composer-actions button, .planr-thread button, .planr-reply-form button {
|
|
876
|
+
min-height: 30px;
|
|
877
|
+
padding: 0 10px;
|
|
878
|
+
border: 1px solid var(--planr-color-rule);
|
|
879
|
+
border-radius: var(--planr-radius-small);
|
|
880
|
+
background: transparent;
|
|
881
|
+
cursor: pointer;
|
|
882
|
+
font-weight: 700;
|
|
883
|
+
}
|
|
884
|
+
.planr-composer-actions [type="submit"], .planr-reply-form [type="submit"] { border-color: var(--planr-color-primary); background: var(--planr-color-primary); color: var(--planr-color-background); }
|
|
885
|
+
`;
|
|
886
|
+
var ARTIFACT_ANNOTATION_MOBILE_CSS = `@media (max-width: 600px) { .planr-annotation-composer input, .planr-annotation-composer textarea, .planr-annotation-composer select { font-size: 16px; } }`;
|
|
887
|
+
|
|
763
888
|
// packages/artifact/lib/artifact/ui/renderers.mjs
|
|
764
889
|
var ARTIFACT_SHELL_STATES = Object.freeze([
|
|
765
890
|
"ready",
|
|
@@ -1817,128 +1942,7 @@ button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-
|
|
|
1817
1942
|
font: 9px/1 var(--planr-font-mono);
|
|
1818
1943
|
pointer-events: none;
|
|
1819
1944
|
}
|
|
1820
|
-
.planr-
|
|
1821
|
-
.planr-shell[data-planr-review-mode="interact"] .planr-annotation-layer { pointer-events: none; }
|
|
1822
|
-
.planr-shell[data-planr-review-mode="comment"] .planr-annotation-layer { cursor: crosshair; touch-action: none; }
|
|
1823
|
-
.planr-shell[data-planr-review-mode="comment"] .planr-frame iframe { pointer-events: none; }
|
|
1824
|
-
.planr-region-selection {
|
|
1825
|
-
position: absolute;
|
|
1826
|
-
min-width: 2px;
|
|
1827
|
-
min-height: 2px;
|
|
1828
|
-
border: 2px solid var(--planr-color-primary);
|
|
1829
|
-
border-radius: var(--planr-radius-small);
|
|
1830
|
-
background: color-mix(in srgb, var(--planr-color-primary) 14%, transparent);
|
|
1831
|
-
pointer-events: none;
|
|
1832
|
-
}
|
|
1833
|
-
.planr-pin {
|
|
1834
|
-
position: absolute;
|
|
1835
|
-
z-index: 8;
|
|
1836
|
-
width: 44px;
|
|
1837
|
-
height: 44px;
|
|
1838
|
-
min-width: 44px;
|
|
1839
|
-
min-height: 44px;
|
|
1840
|
-
translate: -50% -50%;
|
|
1841
|
-
display: grid;
|
|
1842
|
-
place-items: center;
|
|
1843
|
-
padding: 0;
|
|
1844
|
-
border: 8px solid transparent;
|
|
1845
|
-
border-radius: 50%;
|
|
1846
|
-
background-clip: padding-box;
|
|
1847
|
-
color: var(--planr-color-on-danger);
|
|
1848
|
-
cursor: pointer;
|
|
1849
|
-
pointer-events: auto;
|
|
1850
|
-
font: 700 10px/1 var(--planr-font-mono);
|
|
1851
|
-
box-shadow: 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent);
|
|
1852
|
-
}
|
|
1853
|
-
.planr-pin-fix { background-color: var(--planr-color-danger); }
|
|
1854
|
-
.planr-pin-improve { background-color: var(--planr-color-primary-strong); color: var(--planr-color-on-improve); }
|
|
1855
|
-
.planr-pin-question { background-color: var(--planr-color-question); color: var(--planr-color-on-question); }
|
|
1856
|
-
.planr-pin-resolved, .planr-pin-addressed { background-color: var(--planr-color-resolved); color: var(--planr-color-on-resolved); }
|
|
1857
|
-
.planr-pin-highlight { animation: planr-pin-highlight 1.2s ease-out; }
|
|
1858
|
-
@keyframes planr-pin-highlight {
|
|
1859
|
-
0%, 35% { box-shadow: 0 0 0 7px color-mix(in srgb, var(--planr-color-primary) 52%, transparent), 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent); }
|
|
1860
|
-
100% { box-shadow: 0 4px 14px color-mix(in srgb, var(--planr-color-background) 38%, transparent); }
|
|
1861
|
-
}
|
|
1862
|
-
.planr-pin-region {
|
|
1863
|
-
position: absolute;
|
|
1864
|
-
z-index: 7;
|
|
1865
|
-
min-width: 2px;
|
|
1866
|
-
min-height: 2px;
|
|
1867
|
-
border: 2px solid var(--planr-color-danger);
|
|
1868
|
-
border-radius: var(--planr-radius-small);
|
|
1869
|
-
background: color-mix(in srgb, var(--planr-color-danger) 12%, transparent);
|
|
1870
|
-
pointer-events: none;
|
|
1871
|
-
}
|
|
1872
|
-
.planr-pin-region-improve { border-color: var(--planr-color-primary-strong); background: color-mix(in srgb, var(--planr-color-primary-strong) 12%, transparent); }
|
|
1873
|
-
.planr-pin-region-question { border-color: var(--planr-color-question); background: color-mix(in srgb, var(--planr-color-question) 12%, transparent); }
|
|
1874
|
-
.planr-pin-region-resolved, .planr-pin-region-addressed { border-color: var(--planr-color-resolved); background: color-mix(in srgb, var(--planr-color-resolved) 10%, transparent); }
|
|
1875
|
-
.planr-annotation-composer {
|
|
1876
|
-
position: fixed;
|
|
1877
|
-
inset: auto;
|
|
1878
|
-
z-index: 100;
|
|
1879
|
-
box-sizing: border-box;
|
|
1880
|
-
width: min(360px, calc(100vw - 24px));
|
|
1881
|
-
max-height: min(620px, calc(100dvh - 24px));
|
|
1882
|
-
margin: 0;
|
|
1883
|
-
overflow: auto;
|
|
1884
|
-
overscroll-behavior: contain;
|
|
1885
|
-
translate: none;
|
|
1886
|
-
transform: none;
|
|
1887
|
-
padding: 14px;
|
|
1888
|
-
border: 1px solid var(--planr-color-rule);
|
|
1889
|
-
border-radius: var(--planr-radius-large);
|
|
1890
|
-
background: var(--planr-color-panel);
|
|
1891
|
-
color: var(--planr-color-text);
|
|
1892
|
-
box-shadow: 0 18px 60px color-mix(in srgb, var(--planr-color-background) 58%, transparent);
|
|
1893
|
-
cursor: default;
|
|
1894
|
-
pointer-events: auto;
|
|
1895
|
-
}
|
|
1896
|
-
.planr-annotation-composer strong { display: block; margin: 0; font: 650 14px/1.2 var(--planr-font-display); }
|
|
1897
|
-
.planr-composer-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
|
|
1898
|
-
.planr-composer-header button { display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; padding: 0; border: 1px solid transparent; border-radius: var(--planr-radius-small); background: transparent; color: var(--planr-color-text-muted); font: 22px/1 var(--planr-font-body); cursor: pointer; }
|
|
1899
|
-
.planr-composer-header button:hover { background: var(--planr-color-raised); color: var(--planr-color-text); }
|
|
1900
|
-
.planr-annotation-composer :focus-visible { outline: 2px solid var(--planr-color-primary); outline-offset: 2px; }
|
|
1901
|
-
.planr-annotation-composer::backdrop { background: transparent; pointer-events: none; }
|
|
1902
|
-
.planr-annotation-composer label, .planr-identity label {
|
|
1903
|
-
display: grid;
|
|
1904
|
-
gap: 5px;
|
|
1905
|
-
margin-bottom: 9px;
|
|
1906
|
-
color: var(--planr-color-text-muted);
|
|
1907
|
-
font-size: 11px;
|
|
1908
|
-
}
|
|
1909
|
-
.planr-annotation-composer input, .planr-annotation-composer textarea, .planr-identity input,
|
|
1910
|
-
.planr-reply-form textarea {
|
|
1911
|
-
width: 100%;
|
|
1912
|
-
padding: 8px 9px;
|
|
1913
|
-
border: 1px solid var(--planr-color-rule);
|
|
1914
|
-
border-radius: var(--planr-radius-small);
|
|
1915
|
-
background: var(--planr-color-chrome);
|
|
1916
|
-
color: var(--planr-color-text);
|
|
1917
|
-
}
|
|
1918
|
-
.planr-annotation-composer textarea { min-height: 84px; resize: vertical; }
|
|
1919
|
-
.planr-intent-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin-bottom: 9px; }
|
|
1920
|
-
.planr-intent-picker button {
|
|
1921
|
-
min-height: 30px;
|
|
1922
|
-
border: 1px solid var(--planr-color-rule);
|
|
1923
|
-
border-radius: var(--planr-radius-small);
|
|
1924
|
-
background: transparent;
|
|
1925
|
-
cursor: pointer;
|
|
1926
|
-
font-size: 10px;
|
|
1927
|
-
}
|
|
1928
|
-
.planr-intent-picker [aria-checked="true"] { border-color: var(--planr-color-primary); background: var(--planr-color-raised); }
|
|
1929
|
-
.planr-field-error { min-height: 16px; margin: 0; color: var(--planr-color-danger); font-size: 10px; }
|
|
1930
|
-
.planr-composer-actions { display: flex; justify-content: flex-end; gap: 7px; margin-top: 8px; }
|
|
1931
|
-
.planr-composer-actions button, .planr-thread button, .planr-reply-form button {
|
|
1932
|
-
min-height: 30px;
|
|
1933
|
-
padding: 0 10px;
|
|
1934
|
-
border: 1px solid var(--planr-color-rule);
|
|
1935
|
-
border-radius: var(--planr-radius-small);
|
|
1936
|
-
background: transparent;
|
|
1937
|
-
cursor: pointer;
|
|
1938
|
-
font-weight: 700;
|
|
1939
|
-
}
|
|
1940
|
-
.planr-composer-actions [type="submit"], .planr-reply-form [type="submit"] { border-color: var(--planr-color-primary); background: var(--planr-color-primary); color: var(--planr-color-background); }
|
|
1941
|
-
.planr-stage-status {
|
|
1945
|
+
${ARTIFACT_ANNOTATION_CSS}.planr-stage-status {
|
|
1942
1946
|
position: absolute;
|
|
1943
1947
|
z-index: 20;
|
|
1944
1948
|
inset: 76px 0 0;
|
|
@@ -2069,7 +2073,7 @@ button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-
|
|
|
2069
2073
|
.planr-reply-hint { font-size: 11px; color: var(--planr-color-text-muted); }
|
|
2070
2074
|
.planr-reply-form .planr-reply-send { display: grid; place-items: center; flex: 0 0 30px; width: 30px; min-width: 30px; height: 30px; min-height: 30px; padding: 0; border-radius: 7px; }
|
|
2071
2075
|
.planr-reply-form .planr-reply-send:disabled { opacity: .35; cursor: not-allowed; }
|
|
2072
|
-
|
|
2076
|
+
${ARTIFACT_ANNOTATION_MOBILE_CSS}
|
|
2073
2077
|
.planr-decision-slot { padding: 12px; border-top: 1px solid var(--planr-color-rule); background: var(--planr-color-chrome); }
|
|
2074
2078
|
.planr-decision-slot label { display: block; margin-bottom: 6px; color: var(--planr-color-text-muted); font-size: 11px; }
|
|
2075
2079
|
.planr-decision-slot textarea {
|
package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-review-handoff.mjs
CHANGED
|
@@ -595,9 +595,10 @@ function createArtifactReviewServer({
|
|
|
595
595
|
const mediaTypes = {
|
|
596
596
|
document: "text/html",
|
|
597
597
|
runtime: "text/javascript",
|
|
598
|
-
stylesheet: "text/css"
|
|
598
|
+
stylesheet: "text/css",
|
|
599
|
+
font: "font/ttf"
|
|
599
600
|
};
|
|
600
|
-
if (!Object.hasOwn(mediaTypes, response.asset) || typeof response.body !== "string")
|
|
601
|
+
if (!Object.hasOwn(mediaTypes, response.asset) || (response.asset === "font" ? !Buffer.isBuffer(response.body) : typeof response.body !== "string"))
|
|
601
602
|
throw new Error("Invalid owner asset response.");
|
|
602
603
|
send(
|
|
603
604
|
res,
|
|
@@ -605,7 +606,7 @@ function createArtifactReviewServer({
|
|
|
605
606
|
response.body,
|
|
606
607
|
{
|
|
607
608
|
...parentHeaders(),
|
|
608
|
-
"content-type": `${mediaTypes[response.asset]}; charset=utf-8`,
|
|
609
|
+
"content-type": response.asset === "font" ? mediaTypes.font : `${mediaTypes[response.asset]}; charset=utf-8`,
|
|
609
610
|
"content-security-policy": "default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; font-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'"
|
|
610
611
|
},
|
|
611
612
|
{ head }
|