cozyclay 1.10.0 → 2.0.2
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 +193 -0
- package/bin/agent/agent-routes.mjs +82 -72
- package/bin/agent/agent-runner.mjs +10 -3
- package/bin/agent/motion-runtime.mjs +32 -260
- package/bin/agent/providers.mjs +46 -3
- package/bin/agent/session-store.mjs +41 -5
- package/bin/agent/studio-prompt.mjs +1 -1
- package/bin/agent/studio-tools.mjs +48 -11
- package/bin/codex-auth.mjs +2 -1
- package/bin/cozyclay.mjs +38 -11
- package/bin/live/cli.mjs +22 -3
- package/bin/mcp-runtime.mjs +45 -20
- package/bin/telemetry-state.mjs +5 -2
- package/bin/update-check.mjs +15 -0
- package/dist/app/index.html +6 -6
- package/dist/assets/analytics-MVZOEW8O.js +1 -0
- package/dist/assets/app-BxBLC6GT.js +4876 -0
- package/dist/assets/app-CJdxvnrl.css +1 -0
- package/dist/assets/{demo-B-eg1CT8.js → demo-ByeYp-dY.js} +1 -1
- package/dist/assets/{first-shot-handoff-CGgnvNu8.js → first-shot-handoff-DgT28ZiV.js} +1 -1
- package/dist/assets/{landing-IbRp3FnQ.js → landing-BaXkpFip.js} +1 -1
- package/dist/assets/shot-prompt-CbqWcWYi.css +1 -0
- package/dist/assets/shot-prompt-hN0j_O-p.js +17 -0
- package/dist/assets/{ticket-BgIzOBOf.js → ticket-BcmsnHn5.js} +1 -1
- package/dist/assets/workflow-B5XZwVfe.js +179 -0
- package/dist/assets/workflow-DRdwoDBT.css +1 -0
- package/dist/cozyclay-package.json +1 -1
- package/dist/fonts/IBM-Plex-Sans-OFL.txt +92 -0
- package/dist/fonts/JetBrains-Mono-OFL.txt +93 -0
- package/dist/fonts/README.md +13 -9
- package/dist/fonts/ibm-plex-sans-400-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-500-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-600-latin.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-400-latin.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-500-latin.woff2 +0 -0
- package/dist/index.html +7 -7
- package/dist/privacy/index.html +13 -8
- package/dist/sitemap.xml +2 -2
- package/dist/workflow/index.html +5 -5
- package/mcp/live-hub.mjs +35 -93
- package/mcp/mesh-file.mjs +48 -0
- package/mcp/server.mjs +6 -77
- package/mcp/tool-handlers.mjs +219 -376
- package/package.json +2 -1
- package/src/App.jsx +1275 -9086
- package/src/analytics.js +393 -9
- package/src/app-context.js +211 -0
- package/src/app-stage.jsx +25 -24
- package/src/ardy/auto-fix-panel.css +108 -0
- package/src/ardy/fix-collisions.js +10 -66
- package/src/ardy/ik-drag.js +101 -0
- package/src/ardy/ik-key-json.js +43 -0
- package/src/ardy/ik.js +97 -67
- package/src/ardy/physics-panel.css +2 -0
- package/src/ardy/physics-panel.jsx +17 -5
- package/src/ardy/platform-fit-panel.css +64 -0
- package/src/ardy/platform-fit-panel.jsx +40 -0
- package/src/ardy/platform-fit.js +326 -0
- package/src/ardy/playback.js +166 -20
- package/src/ardy/range-pin.js +299 -0
- package/src/ardy/timeline-coordinates.js +26 -0
- package/src/ardy/timeline.css +1214 -0
- package/src/ardy/timeline.jsx +152 -41
- package/src/ardy/waypoints.js +3 -3
- package/src/asset-pane.css +462 -0
- package/src/asset-pane.jsx +461 -232
- package/src/camera-tutorial.jsx +38 -18
- package/src/command-bus.js +349 -0
- package/src/commands/ai.js +31 -0
- package/src/commands/cast.js +140 -0
- package/src/commands/elements/character.js +13 -0
- package/src/commands/elements/motion.js +14 -0
- package/src/commands/elements/object.js +22 -0
- package/src/commands/elements/scene.js +16 -0
- package/src/commands/elements/shot.js +9 -0
- package/src/commands/elements/stage.js +11 -0
- package/src/commands/elements.js +155 -0
- package/src/commands/export.js +20 -0
- package/src/commands/index.js +40 -0
- package/src/commands/motion.js +231 -0
- package/src/commands/objects.js +174 -0
- package/src/commands/project.js +53 -0
- package/src/commands/scene.js +81 -0
- package/src/commands/shared.js +19 -0
- package/src/commands/shot.js +103 -0
- package/src/commands/stage.js +17 -0
- package/src/commands/view.js +42 -0
- package/src/document-store.js +144 -0
- package/src/domains/cast.js +1007 -0
- package/src/domains/motion.js +3219 -0
- package/src/domains/objects.js +932 -0
- package/src/domains/scenes.js +823 -0
- package/src/domains/shots.js +404 -0
- package/src/domains/stage.js +93 -0
- package/src/dualview.jsx +113 -57
- package/src/facing-marks.js +3 -0
- package/src/first-success-guide.jsx +14 -14
- package/src/grid-view.js +18 -5
- package/src/hierarchy-panel.css +386 -0
- package/src/hierarchy-panel.jsx +88 -19
- package/src/{fal-motion-client.js → i2v-motion-client.js} +13 -13
- package/src/i2v-motion-studio.jsx +180 -0
- package/src/ik-camera.js +3 -0
- package/src/main.jsx +6 -0
- package/src/motion/generation.js +105 -0
- package/src/motion-readiness-ui.jsx +4 -4
- package/src/motion-readiness.js +11 -0
- package/src/motion-trail.js +366 -9
- package/src/object-gizmo.jsx +7 -1
- package/src/panels/CameraPanel.jsx +60 -0
- package/src/panels/CharacterTransformPanel.jsx +48 -0
- package/src/panels/EnvironmentPanel.jsx +40 -0
- package/src/panels/Foldout.jsx +32 -0
- package/src/panels/LightPanel.jsx +24 -0
- package/src/panels/ObjectTransformPanel.jsx +554 -0
- package/src/panels/PosePanel.jsx +97 -0
- package/src/panels/ProjectPanel.jsx +33 -0
- package/src/panels/PromptBlocksPanel.jsx +442 -0
- package/src/panels/PropsPanel.jsx +70 -0
- package/src/panels/ReferenceImageField.jsx +91 -0
- package/src/panels/RigControlPanel.jsx +78 -0
- package/src/panels/RigPanel.jsx +37 -0
- package/src/panels/SubjectBox.jsx +47 -0
- package/src/panels/SubjectsPanel.jsx +39 -0
- package/src/panels/VideoCapturePanel.jsx +180 -0
- package/src/panels/details.css +1171 -0
- package/src/panels/motion.css +197 -0
- package/src/panels/pose.css +39 -0
- package/src/planview.jsx +60 -31
- package/src/posestudio.jsx +59 -4
- package/src/project-browser.css +1073 -0
- package/src/project-browser.jsx +288 -123
- package/src/range-pin-object-transform.js +19 -0
- package/src/range-pin-panel.css +518 -0
- package/src/range-pin-panel.jsx +344 -0
- package/src/result-modal.jsx +5 -5
- package/src/room.jsx +79 -51
- package/src/scenes.js +9 -8
- package/src/semantic-edit.js +2 -0
- package/src/settings-menu.jsx +39 -105
- package/src/shell/BottomDock.jsx +450 -0
- package/src/shell/DetailsSlot.jsx +513 -0
- package/src/shell/LibrarySlot.jsx +86 -0
- package/src/shell/MenuBar.jsx +601 -0
- package/src/shell/OutlinerSlot.jsx +50 -0
- package/src/shell/PreferencesDialog.jsx +538 -0
- package/src/shell/PreferencesSlot.jsx +40 -0
- package/src/shell/StatusBar.jsx +125 -0
- package/src/shell/StudioShell.jsx +92 -0
- package/src/shell/TopBar.jsx +129 -0
- package/src/shell/ViewportToolbar.jsx +656 -0
- package/src/shell/agent-glass.css +296 -0
- package/src/shell/dock.css +93 -0
- package/src/shell/glass-regions.css +985 -0
- package/src/shell/glass.css +687 -0
- package/src/shell/log-store.js +52 -0
- package/src/shell/mode.css +9 -0
- package/src/shell/preferences.css +651 -0
- package/src/shell/shell.css +282 -0
- package/src/shell/studio-shell-context.js +19 -0
- package/src/shell/topbar.css +435 -0
- package/src/shell/viewport.css +451 -0
- package/src/store/authored-intent.js +22 -0
- package/src/store/runtime-adapters.js +92 -0
- package/src/store/scene-stage.js +21 -0
- package/src/store/use-document-store.js +14 -0
- package/src/studio-actions.js +210 -0
- package/src/studio-agent-commands.js +38 -268
- package/src/studio-agent-context.js +38 -9
- package/src/studio-agent-motion.js +122 -378
- package/src/studio-agent-protocol.js +66 -30
- package/src/studio-app-binding.js +379 -0
- package/src/studio-contact-sheet.js +73 -0
- package/src/studio-elements.js +58 -51
- package/src/styles/themes.css +200 -0
- package/src/styles/tokens.css +69 -0
- package/src/styles.css +456 -1748
- package/src/theme.js +44 -0
- package/src/timeline-extent.js +16 -0
- package/src/timeline-fps.js +13 -0
- package/src/trail-key-conflicts.js +39 -0
- package/src/trail-pick.js +59 -0
- package/src/ui.jsx +8 -8
- package/src/use-case-question.jsx +66 -0
- package/src/workflow/AgentPanel.jsx +86 -71
- package/src/workflow/agent-client.js +12 -2
- package/src/workflow/agent-panel.css +34 -32
- package/src/workflow/cozy-scene-node.css +2 -0
- package/src/workflow/workflow.css +2 -0
- package/tools/ardy/bridge.mjs +164 -146
- package/tools/ardy/visual-qa.mjs +5 -5
- package/tools/bench/EXP3.md +61 -0
- package/tools/bench/cclay_bench_extract_incam.py +125 -0
- package/tools/bench/cclay_bench_extract_obs.py +204 -0
- package/tools/bench/cclay_bench_runner.py +42 -0
- package/tools/bench/cube-contact.mjs +162 -0
- package/tools/bench/exp3.mjs +152 -0
- package/tools/bench/extract-bench-lib.mjs +216 -0
- package/tools/bench/extract-bench.mjs +302 -0
- package/tools/bench/fal-generate.mjs +88 -0
- package/tools/bench/fit/README.md +189 -0
- package/tools/bench/fit/camera.mjs +59 -0
- package/tools/bench/fit/contact.mjs +419 -0
- package/tools/bench/fit/footlock.mjs +234 -0
- package/tools/bench/fit/motion.mjs +85 -0
- package/tools/bench/fit/pin.mjs +27 -0
- package/tools/bench/fit/remote.mjs +105 -0
- package/tools/bench/fit-bench.mjs +126 -0
- package/tools/bench/fit-sanity.mjs +45 -0
- package/tools/bench/metrics.mjs +313 -0
- package/tools/bench/obs/depth.mjs +258 -0
- package/tools/bench/obs/extrinsics.mjs +175 -0
- package/tools/bench/obs/fit_mannequin_betas.py +340 -0
- package/tools/bench/obs/ground.mjs +294 -0
- package/tools/bench/obs/heading.mjs +151 -0
- package/tools/bench/obs/ladder.mjs +555 -0
- package/tools/bench/obs/mannequin-betas.json +124 -0
- package/tools/bench/obs/remote.mjs +83 -0
- package/tools/bench/obs/rest_joints.py +52 -0
- package/tools/bench/obs/ybot-targets.mjs +49 -0
- package/tools/bench/obs-bench.mjs +520 -0
- package/tools/bench/score.mjs +343 -0
- package/tools/bench/summarize.mjs +86 -0
- package/tools/dev/pages/privacy.html +13 -8
- package/tools/gt-render/browser.mjs +159 -0
- package/tools/gt-render/camera-math.mjs +276 -0
- package/tools/gt-render/page.mjs +267 -0
- package/tools/gt-render/render.mjs +514 -0
- package/tools/gt-render/scene-box.mjs +31 -0
- package/tools/gt-render/take-transform.mjs +87 -0
- package/tools/qa/css-rule-usage.mjs +283 -0
- package/tools/qa/studio-control-count.mjs +70 -32
- package/tools/run-tests.mjs +60 -3
- package/tools/track/DESIGN.md +513 -0
- package/tools/track/backfill-provenance.mjs +116 -0
- package/tools/track/budget.mjs +8 -0
- package/tools/track/check-rig.mjs +209 -0
- package/tools/track/diagnostics.schema.json +60 -0
- package/tools/track/export-rig.mjs +256 -0
- package/tools/track/fallback.mjs +7 -0
- package/tools/track/fk-parity-fixture.mjs +161 -0
- package/tools/track/gate.mjs +349 -0
- package/tools/track/masks.mjs +318 -0
- package/tools/track/metrics.mjs +201 -0
- package/tools/track/publish-obs.mjs +108 -0
- package/tools/track/py/check_env.py +61 -0
- package/tools/track/py/eval_lr.py +229 -0
- package/tools/track/py/lr_viterbi.py +294 -0
- package/tools/track/py/masks.py +405 -0
- package/tools/track/py/objective.py +382 -0
- package/tools/track/py/rig.py +508 -0
- package/tools/track/py/scene.py +326 -0
- package/tools/track/py/test_joint_indices.py +123 -0
- package/tools/track/py/test_lr_viterbi.py +195 -0
- package/tools/track/py/test_masks.py +229 -0
- package/tools/track/py/test_rig.py +288 -0
- package/tools/track/py/test_scene.py +354 -0
- package/tools/track/py/test_track.py +328 -0
- package/tools/track/py/track.py +411 -0
- package/tools/track/remote.mjs +140 -0
- package/tools/track/rig-dump.mjs +227 -0
- package/tools/track/run-box-tests.mjs +14 -0
- package/tools/track/run-box.mjs +168 -0
- package/tools/track/setup-box.sh +59 -0
- package/tools/track/study-2d.mjs +728 -0
- package/dist/assets/analytics-B1hnH66c.js +0 -1
- package/dist/assets/app-Cu1cexZR.css +0 -1
- package/dist/assets/app-Dxdh8kds.js +0 -4861
- package/dist/assets/shot-prompt-C_g2BHVc.css +0 -1
- package/dist/assets/shot-prompt-HVJRP4Gr.js +0 -17
- package/dist/assets/workflow-CJd-PDtV.js +0 -179
- package/dist/assets/workflow-DsudxKHF.css +0 -1
- package/src/fal-motion-studio.jsx +0 -180
- package/src/scene-history.js +0 -129
- package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.react-flow{direction:ltr}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background:#1a192b;border:1px solid #fff;border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-top{top:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{top:50%;right:-4px;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{background:#ffffff80;margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{color:#222;text-align:center;background-color:#fff;border:1px solid #1a192b;border-radius:3px;width:150px;padding:10px;font-size:12px}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;width:4px;height:4px;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}@layer legacy{:root{color:#edf0fb;font-synthesis:none;background:#101116;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#101116;min-width:900px;margin:0}#workflow-root{height:100vh}.workflow-app{color:#edf0fb;background:#101116;flex-direction:column;height:100vh;display:flex}.workflow-topbar{background:#171921;border-bottom:1px solid #292d38;justify-content:space-between;align-items:center;height:58px;padding:0 22px;display:flex}.workflow-brand{color:#afb4c6;align-items:center;gap:9px;font-size:14px;display:flex}.workflow-brand strong{color:#f5f7ff;font-size:14px}.workflow-brand-mark{color:#fff;background:linear-gradient(135deg,#ef759d,#6c7cff);border-radius:7px;place-items:center;width:23px;height:23px;font-size:12px;font-weight:800;display:grid}.workflow-divider{color:#555b70;margin-left:3px}.workflow-top-actions{align-items:center;gap:9px;display:flex}.workflow-top-actions button,.workflow-sidebar-bottom button,.workflow-sidebar-bottom a{color:#c8ccdb;font:inherit;cursor:pointer;background:#20232d;border:1px solid #353a4a;border-radius:6px;padding:7px 12px;font-size:12px;text-decoration:none}.workflow-top-actions button:hover,.workflow-sidebar-bottom button:hover,.workflow-sidebar-bottom a:hover{background:#2b3040;border-color:#606b9a}.workflow-status{color:#7f879e;align-items:center;gap:7px;margin-right:8px;font-size:11px;display:flex}.workflow-status i{background:#4dcda4;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #4dcda4}.workflow-main{flex:1;min-height:0;display:flex}.workflow-sidebar{background:#171921;border-right:1px solid #292d38;flex-direction:column;flex:none;width:232px;padding:22px 14px;display:flex}.workflow-sidebar-title{letter-spacing:.08em;text-transform:uppercase;color:#f3f5fd;font-size:12px;font-weight:700}.workflow-sidebar-copy{color:#737b92;margin:8px 6px 18px 0;font-size:11px;line-height:1.5}.workflow-node-menu{flex-direction:column;gap:5px;display:flex}.workflow-add-node{color:#bcc2d4;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:10px;padding:9px 10px;font-size:12px;display:flex}.workflow-add-node:hover{color:#f5f7ff;background:#222631;border-color:#373d50}.workflow-add-node span:nth-child(2){flex:1}.workflow-sidebar-bottom{flex-direction:column;gap:8px;margin-top:auto;display:flex}.workflow-sidebar-bottom button,.workflow-sidebar-bottom a{text-align:center;font-size:11px}.workflow-canvas{flex:1;min-width:0;position:relative}.workflow-canvas .react-flow{background:#11141c}.workflow-canvas .react-flow__controls{bottom:22px;left:20px;box-shadow:0 5px 18px #0005}.workflow-canvas .react-flow__controls-button{fill:#aeb5c9;color:#aeb5c9;background:#20242e;border-bottom:1px solid #323744;width:28px;height:28px}.workflow-canvas .react-flow__minimap{border:1px solid #353a49;border-radius:7px;bottom:20px;right:20px;overflow:hidden}.workflow-canvas-panel{margin:14px}.workflow-canvas-panel button{color:#e7eaff;font:inherit;cursor:pointer;background:#27304a;border:1px solid #454d70;border-radius:6px;align-items:center;gap:6px;padding:8px 11px;font-size:11px;display:flex}.workflow-node{color:#e5e8f5;background:#20232d;border:1px solid #3c4152;border-radius:9px;width:230px;position:relative;overflow:visible;box-shadow:0 10px 30px #0004}.workflow-node:hover{border-color:#6877bd}.workflow-node-header{background:#252935;border-bottom:1px solid #343946;border-radius:9px 9px 0 0;align-items:center;gap:8px;padding:10px 11px;font-size:12px;display:flex}.workflow-node-icon{color:#aeb8ff;background:#303648;border-radius:6px;place-items:center;width:23px;height:23px;display:grid}.workflow-node-image .workflow-node-icon{color:#67d8b6}.workflow-node-video .workflow-node-icon{color:#eca56e}.workflow-node-upload .workflow-node-icon{color:#c4a8ef}.workflow-node-concat .workflow-node-icon{color:#e3c969}.workflow-node-scene .workflow-node-icon{color:#ef82a7}.workflow-node-id{color:#6c7389;margin-left:auto;font:10px ui-monospace,monospace}.workflow-node-body{flex-direction:column;gap:7px;padding:11px;display:flex}.workflow-node label{color:#8d95ab;font-size:10px}.workflow-node input,.workflow-node textarea,.workflow-node select{color:#e5e8f5;width:100%;font:inherit;resize:vertical;background:#171a21;border:1px solid #3a3f4e;border-radius:5px;outline:0;padding:7px 8px;font-size:11px}.workflow-node input:focus,.workflow-node textarea:focus,.workflow-node select:focus{border-color:#707dce}.workflow-textarea{height:65px}.workflow-node-foot{color:#737b92;justify-content:space-between;align-items:center;margin-top:3px;font-size:10px;display:flex}.workflow-mini-button,.workflow-run-button{color:#e6e9ff;font:inherit;cursor:pointer;background:#303b71;border:1px solid #4c5aab;border-radius:5px;align-items:center;gap:4px;padding:5px 8px;font-size:10px;display:flex}.workflow-dropzone{color:#78819c;text-align:center;border:1px dashed #49516a;border-radius:6px;justify-content:center;align-items:center;gap:7px;height:74px;font-size:10px;display:flex}.workflow-upload{color:#a89ce4;cursor:pointer;border:1px dashed #525b79;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:5px;height:90px;display:flex;position:relative}.workflow-upload input{opacity:0;cursor:pointer;position:absolute;inset:0}.workflow-schema-fields{border-top:1px solid #323746;flex-direction:column;gap:6px;padding-top:4px;display:flex}.workflow-schema-title{color:#8d95ab;text-transform:uppercase;letter-spacing:.08em;font-size:9px}.workflow-schema-fields label{flex-direction:column;gap:4px;display:flex}.workflow-schema-check{align-items:center;flex-direction:row!important;gap:6px!important;display:flex!important}.workflow-schema-check input{width:auto}.workflow-node-cost{color:#78d9b0;margin-left:4px}.workflow-hint{color:#666e83;margin:0;font-size:9px;line-height:1.35}.workflow-scene-preview{color:#7b849e;background:#171a23;border:1px solid #3d4357;border-radius:6px;justify-content:center;align-items:center;height:80px;font-size:10px;display:flex;position:relative;overflow:hidden}.workflow-scene-grid{opacity:.32;background-color:#0000;background-image:linear-gradient(135deg,#0000 46%,#687090 47%,#0000 49%),linear-gradient(45deg,#0000 46%,#687090 47%,#0000 49%);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:22px 22px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:absolute;inset:0}.workflow-scene-preview span{position:relative}.workflow-scene-controls{gap:4px;display:flex}.workflow-scene-controls button{color:#9da5ba;font:inherit;cursor:pointer;background:#292d39;border:1px solid #3b4050;border-radius:4px;flex:1;padding:5px 2px;font-size:9px}.workflow-handle{background:#8994ff;border:2px solid #20232d;width:9px;height:9px}.workflow-handle.target{background:#4c566f}.workflow-node-image .workflow-handle{background:#44c2a4}.workflow-node-video .workflow-handle{background:#d9955b}.workflow-node-scene .workflow-handle{background:#ef759d}.workflow-node-upload .workflow-handle{background:#a88cdb}.workflow-video-preview{background:#11141c;border:1px solid #3d4357;border-radius:6px;width:100%;max-height:150px;display:block}.workflow-provider-hint{color:#737b92;margin-top:-3px;font-size:9px}.workflow-node-search{color:#e5e8f5;width:100%;font:inherit;background:#11141b;border:1px solid #353a4a;border-radius:6px;outline:0;margin:0 0 8px;padding:8px 9px;font-size:11px}.workflow-node-search:focus{border-color:#707dce}.workflow-model-results{background:#12151d;border:1px solid #303545;border-radius:6px;flex-direction:column;gap:2px;margin:0 0 7px;padding:4px;display:flex}.workflow-model-results .workflow-hint{padding:6px}.workflow-node-motion-input .workflow-node-icon{color:#79b5ed}.workflow-motion-upload{height:70px}.workflow-node-motion-input .workflow-handle{background:#79b5ed}.workflow-agent-toggle{position:relative}.workflow-main{position:relative;overflow:hidden}.workflow-image-preview{object-fit:contain;background:#11141c;border:1px solid #3d4357;border-radius:6px;width:100%;max-height:150px;display:block}.workflow-error{color:#ef759d;font-size:9px;line-height:1.35}.workflow-preservation-ok{color:#78d9b0}.workflow-preservation-failed{background:#3a202c;border:1px solid #8b405d;border-radius:5px;padding:6px 7px}.workflow-versions{flex-direction:column;gap:5px;display:flex}.workflow-ab-toggle{cursor:pointer;border-color:#67d8b6;box-shadow:0 0 0 1px #67d8b64d}.workflow-version-bar{align-items:center;gap:4px;display:flex}.workflow-version-bar button{color:#9da5ba;font:inherit;cursor:pointer;background:#292d39;border:1px solid #3b4050;border-radius:4px;padding:4px 7px;font-size:9px;line-height:1}.workflow-version-bar button:hover:not(:disabled){color:#e5e8f5;border-color:#606b9a}.workflow-version-bar button:disabled{opacity:.4;cursor:default}.workflow-version-count{text-align:center;color:#78d9b0;flex:1;font:10px ui-monospace,monospace}.workflow-version-ab.active{color:#78d9b0;background:#25443c;border-color:#4c8f7c}.workflow-version-compare{color:#8d95ab;align-items:center;gap:6px;font-size:9px;flex-direction:row!important;display:flex!important}.workflow-version-compare select{flex:1;width:auto}.workflow-version-pin{color:#8d95ab;font-size:9px}.workflow-version-reuse{color:#e6e9ff;font:inherit;cursor:pointer;background:#303b71;border:1px solid #4c5aab;border-radius:5px;padding:5px 8px;font-size:10px}.workflow-version-reuse:hover{background:#3a468a;border-color:#7180d6}.workflow-node-shot-prompt .workflow-node-icon{color:#8fd4b0}.workflow-node-shot-prompt .workflow-handle{background:#8fd4b0}.workflow-shot-prompt-text{color:#cfe6da;height:92px;font:11px ui-monospace,monospace}.workflow-shot-prompt-copy{color:#a9e6c8;font:inherit;cursor:pointer;background:#25443c;border:1px solid #4c8f7c;border-radius:5px;justify-content:center;align-items:center;gap:5px;padding:5px 8px;font-size:10px;display:flex}.workflow-shot-prompt-copy:hover{background:#2e564b;border-color:#6fc0a2}.workflow-warning{color:#e8c78c;background:#2b2419;border:1px solid #8d6b3d;border-radius:5px;margin:0;padding:6px 7px;font-size:9px;line-height:1.35}.cozy-scene-node{color:#e4e9ef;background:#202631;border:1px solid #3b4756;border-radius:10px;width:318px;font:12px/1.35 Inter,system-ui,sans-serif;position:relative;overflow:visible;box-shadow:0 12px 28px #00000052}.cozy-scene-node.is-selected{border-color:#79b7e8;box-shadow:0 0 0 2px #79b7e842,0 12px 28px #00000052}.cozy-scene-node-header,.cozy-scene-node-footer{justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.cozy-scene-node-kicker{color:#78a9d3;letter-spacing:.14em;font-size:9px;font-weight:800}.cozy-scene-node h3{margin:2px 0 0;font-size:14px;font-weight:700}.cozy-scene-node-status{color:#aebccc;text-align:right;max-width:112px;font-size:10px}.cozy-scene-node-status.has-pack{word-break:break-word;max-width:178px}.status-running{color:#f0c979}.status-complete{color:#8dd5b1}.status-error{color:#f08d8d}.cozy-scene-preview{background:linear-gradient(145deg,#32475d,#121820 70%);border:1px solid #3c4b5d;border-radius:6px;height:134px;margin:0 10px;position:relative;overflow:hidden}.cozy-scene-canvas{position:absolute;inset:0}.cozy-scene-live-frame{transform-origin:0 0;background:#111722;border:0;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.cozy-scene-world-image{filter:saturate(.78)brightness(.82);background-image:url(/media/cozyclay-demo-poster.jpg);background-position:0;background-repeat:no-repeat;background-size:auto 250%;position:absolute;inset:0}.cozy-scene-world-tint{pointer-events:none;background:linear-gradient(#090f160a,#090f169e);position:absolute;inset:0}.cozy-scene-render-thumb{background:#111722;border:1px solid #3c4b5d;border-radius:5px;width:76px;margin:0;position:absolute;bottom:8px;left:8px;overflow:hidden;box-shadow:0 4px 10px #00000057}.cozy-scene-render-thumb img{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.cozy-scene-render-thumb figcaption{color:#9eb0c2;letter-spacing:.08em;text-transform:uppercase;background:#121722db;padding:2px 5px;font-size:9px;font-weight:800}.cozy-scene-grid{background:repeating-linear-gradient(90deg,#0000 0 19px,#85b4da2e 20px 21px),repeating-linear-gradient(0deg,#0000 0 17px,#85b4da24 18px 19px);position:absolute;inset:45% -25% -55%;transform:perspective(80px)rotateX(58deg)}.cozy-scene-stage-mark{background:#79b7e82e;border:2px solid #b4d7f1b8;border-radius:8px;width:78px;height:78px;position:absolute;top:25px;left:50%;transform:translate(-50%)rotate(45deg)}.cozy-scene-stage-mark span{background:#527c9d;border:1px solid #c3e5ff;border-radius:50%;width:8px;height:8px;position:absolute}.cozy-scene-stage-mark span:first-child{top:-5px;left:-5px}.cozy-scene-stage-mark span:nth-child(2){top:-5px;right:-5px}.cozy-scene-stage-mark span:nth-child(3){bottom:-5px;right:-5px}.cozy-scene-preview-copy{color:#d7e4ef;text-align:right;background:#121722c7;border-radius:5px;gap:1px;padding:4px 7px;display:grid;position:absolute;bottom:8px;right:8px}.cozy-scene-preview-copy strong{font-size:11px}.cozy-scene-preview-copy span{color:#9eb0c2;font-size:10px}.cozy-scene-controls{gap:8px;padding:11px 13px 9px;display:grid}.cozy-scene-control-row{gap:6px;display:flex}.cozy-scene-button,.cozy-scene-send,.cozy-scene-video,.cozy-scene-run,.cozy-scene-camera-row button{color:#d8e5f0;font:inherit;cursor:pointer;background:#2c3846;border:1px solid #465668;border-radius:5px;padding:5px 8px}.cozy-scene-button:hover,.cozy-scene-camera-row button:hover{background:#344658}.cozy-scene-run{background:#35658c;border-color:#5f96c3;margin-left:auto}.cozy-scene-run:disabled,.cozy-scene-send:disabled{cursor:wait;opacity:.7}.cozy-scene-send{color:#cfe6f8;background:#2a4256;border-color:#4d6c88}.cozy-scene-send:hover:not(:disabled){background:#33506a}.cozy-scene-handoff{align-items:center;gap:8px;display:flex}.cozy-scene-video{color:#cfe6f8;background:#2a4256;border-color:#4d6c88;flex:none}.cozy-scene-video:hover{background:#33506a}.cozy-scene-hint{color:#8799aa;margin:0;font-size:10px;line-height:1.3}.cozy-scene-frame-control{color:#acbbc9;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;font-size:10px;display:grid}.cozy-scene-frame-control input{accent-color:#79b7e8;width:100%}.cozy-scene-frame-control output{color:#dce7f1;text-align:right;min-width:40px;font-family:ui-monospace,monospace}.cozy-scene-camera-row{color:#9eafbf;justify-content:center;align-items:center;gap:8px;font-size:10px;display:flex}.cozy-scene-camera-row button{padding:2px 7px}.cozy-scene-node-footer{color:#8799aa;border-top:1px solid #33404e;font-size:10px}.cozy-scene-node-footer span+span{margin-left:auto}.cozy-scene-node-inputs,.cozy-scene-node-outputs{pointer-events:none;width:12px;position:absolute;top:0;bottom:0}.cozy-scene-node-inputs{left:-7px}.cozy-scene-node-outputs{right:-7px}.cozy-scene-handle{pointer-events:auto;background:#243443;border:2px solid #a9d1f0;border-radius:50%;width:10px;height:10px;display:block;position:absolute}.cozy-scene-handle-target{left:0}.cozy-scene-handle-source{right:0}.cozy-scene-handle-asset{top:85px}.cozy-scene-handle-motion{top:115px}.cozy-scene-handle-render{top:108px}.cozy-scene-handle-scene{top:140px}.cozy-scene-reactflow-handle{z-index:5}.cozy-scene-reactflow-handle-asset{top:85px!important}.cozy-scene-reactflow-handle-motion{top:115px!important}.cozy-scene-reactflow-handle-render{top:108px!important}.cozy-scene-reactflow-handle-scene{top:140px!important}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"payload":"{\"distribution\":\"npm\",\"package\":\"cozyclay\",\"version\":\"
|
|
1
|
+
{"payload":"{\"distribution\":\"npm\",\"package\":\"cozyclay\",\"version\":\"2.0.2\",\"repository\":\"NomaDamas/CozyClay\",\"content_sha256\":\"6b21f4b8112041967b14ed57d28da217b04fae78e0adeb9dd0da143622814822\"}","signature":"72GMEbX6c47ZRDJrLMi7FipjXz9cKt/piGTYyzGUXpUtNNPx3WCkP6GWJp4PoXZdVoaB9mOrEA71YGN9TEktAA=="}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
-----------------------------------------------------------
|
|
8
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
9
|
+
-----------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
PREAMBLE
|
|
12
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
13
|
+
development of collaborative font projects, to support the font creation
|
|
14
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
15
|
+
open framework in which fonts may be shared and improved in partnership
|
|
16
|
+
with others.
|
|
17
|
+
|
|
18
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
19
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
20
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
21
|
+
redistributed and/or sold with any software provided that any reserved
|
|
22
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
23
|
+
however, cannot be released under any other type of license. The
|
|
24
|
+
requirement for fonts to remain under this license does not apply
|
|
25
|
+
to any document created using the fonts or their derivatives.
|
|
26
|
+
|
|
27
|
+
DEFINITIONS
|
|
28
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
29
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
30
|
+
include source files, build scripts and documentation.
|
|
31
|
+
|
|
32
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
33
|
+
copyright statement(s).
|
|
34
|
+
|
|
35
|
+
"Original Version" refers to the collection of Font Software components as
|
|
36
|
+
distributed by the Copyright Holder(s).
|
|
37
|
+
|
|
38
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
39
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
40
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
41
|
+
new environment.
|
|
42
|
+
|
|
43
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
44
|
+
writer or other person who contributed to the Font Software.
|
|
45
|
+
|
|
46
|
+
PERMISSION & CONDITIONS
|
|
47
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
48
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
49
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
50
|
+
Software, subject to the following conditions:
|
|
51
|
+
|
|
52
|
+
1) Neither the Font Software nor any of its individual components,
|
|
53
|
+
in Original or Modified Versions, may be sold by itself.
|
|
54
|
+
|
|
55
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
56
|
+
redistributed and/or sold with any software, provided that each copy
|
|
57
|
+
contains the above copyright notice and this license. These can be
|
|
58
|
+
included either as stand-alone text files, human-readable headers or
|
|
59
|
+
in the appropriate machine-readable metadata fields within text or
|
|
60
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
61
|
+
|
|
62
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
63
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
64
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
65
|
+
presented to the users.
|
|
66
|
+
|
|
67
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
68
|
+
Software shall not be used to promote, endorse or advertise any
|
|
69
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
70
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
71
|
+
permission.
|
|
72
|
+
|
|
73
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
74
|
+
must be distributed entirely under this license, and must not be
|
|
75
|
+
distributed under any other license. The requirement for fonts to
|
|
76
|
+
remain under this license does not apply to any document created
|
|
77
|
+
using the Font Software.
|
|
78
|
+
|
|
79
|
+
TERMINATION
|
|
80
|
+
This license becomes null and void if any of the above conditions are
|
|
81
|
+
not met.
|
|
82
|
+
|
|
83
|
+
DISCLAIMER
|
|
84
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
85
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
86
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
87
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
88
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
89
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
90
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
91
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
92
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
package/dist/fonts/README.md
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
# Bundled fonts
|
|
2
2
|
|
|
3
3
|
The `.woff2` files in this directory are redistributed with CozyClay under the
|
|
4
|
-
SIL Open Font License 1.1
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
SIL Open Font License 1.1. Each family has its upstream OFL text beside the
|
|
5
|
+
font files. The existing Inter and Instrument Serif files remain until their
|
|
6
|
+
later cleanup todo.
|
|
7
7
|
|
|
8
|
-
|
|
|
9
|
-
| --- | --- | --- | --- |
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
8
|
+
| Files | Family | Upstream release | Copyright | Licence |
|
|
9
|
+
| --- | --- | --- | --- | --- |
|
|
10
|
+
| `ibm-plex-sans-400-latin.woff2`, `ibm-plex-sans-500-latin.woff2`, `ibm-plex-sans-600-latin.woff2` | IBM Plex Sans | [`@ibm/plex-sans@1.1.0`](https://github.com/IBM/plex/releases/tag/%40ibm/plex-sans%401.1.0) ([asset](https://github.com/IBM/plex/releases/download/%40ibm/plex-sans%401.1.0/ibm-plex-sans.zip)) | Copyright (c) 2017 IBM Corp. with Reserved Font Name "Plex" | [OFL-1.1](IBM-Plex-Sans-OFL.txt) |
|
|
11
|
+
| `jetbrains-mono-400-latin.woff2`, `jetbrains-mono-500-latin.woff2` | JetBrains Mono | [`v2.304`](https://github.com/JetBrains/JetBrainsMono/releases/tag/v2.304) ([asset](https://github.com/JetBrains/JetBrainsMono/releases/download/v2.304/JetBrainsMono-2.304.zip)) | Copyright 2020 The JetBrains Mono Project Authors | [OFL-1.1](JetBrains-Mono-OFL.txt) |
|
|
12
|
+
| `inter-latin.woff2` | [Inter](https://github.com/rsms/inter) | existing bundle | Copyright (c) 2016 The Inter Project Authors | [OFL-1.1](Inter-OFL.txt) |
|
|
13
|
+
| `instrument-serif-latin.woff2`, `instrument-serif-italic-latin.woff2` | [Instrument Serif](https://github.com/Instrument/instrument-serif) | existing bundle | Copyright 2022 The Instrument Serif Project Authors | [OFL-1.1](InstrumentSerif-OFL.txt) |
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
The IBM Plex Sans files are the upstream Latin1 webfont subsets. Korean text
|
|
16
|
+
continues through the Pretendard and Noto Sans KR fallbacks in `--sans`.
|
|
17
|
+
Under the OFL, a modified copy may not use the Reserved Font Name, so if a
|
|
18
|
+
subset is ever renamed or edited beyond subsetting, check clause 3 before
|
|
15
19
|
shipping it.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/index.html
CHANGED
|
@@ -272,9 +272,9 @@
|
|
|
272
272
|
header.site nav { gap: 14px; width: 100%; margin-left: 0; padding-bottom: 10px; }
|
|
273
273
|
}
|
|
274
274
|
</style>
|
|
275
|
-
<script type="module" crossorigin src="/assets/landing-
|
|
276
|
-
<link rel="modulepreload" crossorigin href="/assets/analytics-
|
|
277
|
-
<link rel="modulepreload" crossorigin href="/assets/first-shot-handoff-
|
|
275
|
+
<script type="module" crossorigin src="/assets/landing-BaXkpFip.js"></script>
|
|
276
|
+
<link rel="modulepreload" crossorigin href="/assets/analytics-MVZOEW8O.js">
|
|
277
|
+
<link rel="modulepreload" crossorigin href="/assets/first-shot-handoff-DgT28ZiV.js">
|
|
278
278
|
</head>
|
|
279
279
|
<body>
|
|
280
280
|
<header class="site">
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
<a class="btn ghost" href="https://github.com/NomaDamas/CozyClay">View on GitHub</a>
|
|
332
332
|
</div>
|
|
333
333
|
<p class="note">
|
|
334
|
-
Or run it on your machine: <code>npx cozyclay</code>. No Blender, no Unity. Open a saved <code>.cclayproject</code> from the first dialog.
|
|
334
|
+
Or run it on your machine: <code>npx cozyclay --via site</code>. No Blender, no Unity. Open a saved <code>.cclayproject</code> from the first dialog.
|
|
335
335
|
</p>
|
|
336
336
|
</div>
|
|
337
337
|
|
|
@@ -343,7 +343,7 @@
|
|
|
343
343
|
<button class="playground-cover" id="playground-start" type="button" aria-label="Start the playground">
|
|
344
344
|
<span class="btn primary">Play with the scene</span>
|
|
345
345
|
<small>Loads the studio in this box (about 2 MB)</small>
|
|
346
|
-
<span class="playground-phone">Needs a mouse and keyboard. Come back on a computer, or run <code>npx cozyclay</code>.</span>
|
|
346
|
+
<span class="playground-phone">Needs a mouse and keyboard. Come back on a computer, or run <code>npx cozyclay --via site</code>.</span>
|
|
347
347
|
</button>
|
|
348
348
|
<div class="playground-loading">Loading the studio…</div>
|
|
349
349
|
<div class="tutorial-card" id="tutorial-card" aria-live="polite">
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
<div class="playground-bar">
|
|
355
355
|
<div class="tutorial-done" id="tutorial-done" hidden>
|
|
356
356
|
<p>Take your shot with you. Video export is not offered in this embedded Playground.</p>
|
|
357
|
-
<p>Download your edited project, run <code>npx cozyclay</code>, and open the downloaded <code>.cclayproject</code> in the local Studio. Use its existing Export menu for video.</p>
|
|
357
|
+
<p>Download your edited project, run <code>npx cozyclay --via playground</code>, and open the downloaded <code>.cclayproject</code> in the local Studio. Use its existing Export menu for video.</p>
|
|
358
358
|
<button type="button" id="playground-download" class="copy">Download my project</button>
|
|
359
359
|
<button type="button" id="playground-handoff-dismiss">Continue editing</button>
|
|
360
360
|
</div>
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
<section id="start">
|
|
393
393
|
<h2>Quick start</h2>
|
|
394
394
|
<p class="sub">Node.js 22.13+ and a Chromium browser.</p>
|
|
395
|
-
<pre class="with-copy"><code>npx cozyclay</code><button type="button" class="copy" data-copy="npx cozyclay">Copy</button></pre>
|
|
395
|
+
<pre class="with-copy"><code>npx cozyclay --via site</code><button type="button" class="copy" data-copy="npx cozyclay --via site">Copy</button></pre>
|
|
396
396
|
<p class="sub">Or from source:</p>
|
|
397
397
|
<pre><code>git clone https://github.com/NomaDamas/CozyClay.git
|
|
398
398
|
cd CozyClay
|
package/dist/privacy/index.html
CHANGED
|
@@ -85,6 +85,8 @@
|
|
|
85
85
|
CLI restarts, ports and browser storage resets. The browser's memory-only SDK starts with this
|
|
86
86
|
anonymous ID on each launch. Independent state files receive independent random IDs, without
|
|
87
87
|
fingerprinting, account linking or cross-device matching; do not copy the state file between users.
|
|
88
|
+
A copied start command such as <code>npx cozyclay --via site</code> stores that one source label
|
|
89
|
+
with the first-launch receipt instead of asking where you heard about CozyClay.
|
|
88
90
|
Prompt text, asset names,
|
|
89
91
|
file names, project content, local paths and any user-entered text are never collected. Session
|
|
90
92
|
duration and action counts are bucketed. Source checkouts, forks, development servers, CI and tests
|
|
@@ -129,20 +131,20 @@ cclay telemetry on</code></pre>
|
|
|
129
131
|
<table>
|
|
130
132
|
<thead><tr><th>Event</th><th>Purpose</th></tr></thead>
|
|
131
133
|
<tbody>
|
|
132
|
-
<tr><td>install:first_launch, app:session_started, app:session_ended</td><td>Counting installs and sessions; duration and action counts are bucketed</td></tr>
|
|
133
|
-
<tr><td>feature:used</td><td>One signal per feature per session</td></tr>
|
|
134
|
+
<tr><td>install:first_launch, app:session_started, app:session_ended</td><td>Counting installs and sessions; duration and action counts are bucketed. install:first_launch may carry heard_from (x, hn, reddit, github, friend, other, site or playground), from the first-launch prompt or a copied <code>npx cozyclay --via</code> command. app:session_ended also carries per-session edit gesture counts in five groups, pose_edit_bucket, camera_edit_bucket, object_edit_bucket, shot_edit_bucket and prompt_edit_bucket, each bucketed (0, 1-3, 4-10 or gte11); never what was edited</td></tr>
|
|
135
|
+
<tr><td>feature:used</td><td>One signal per feature per session: a fixed feature name such as pose_edit (a real bone or pose change), pose_save (saving a pose to the library), fal_motion_open (opening the AI video A/B card), camera_fly or export_video</td></tr>
|
|
134
136
|
<tr><td>$pageview, scene:created, scene:loaded, craft:first_action, activation:completed</td><td>Funnel and drop-off analysis</td></tr>
|
|
135
137
|
<tr><td>craft:first_edit</td><td>First successful Studio authoring change per editor mount; only a fixed edit-kind label and definition version 1 (not camera navigation, playback, loading, restore, or undo/redo)</td></tr>
|
|
136
138
|
<tr><td>playground:first_edit</td><td>The same versioned first-edit definition for Playground, counted separately from Studio; no prompts or scene contents</td></tr>
|
|
137
139
|
<tr><td>project:saved, project:opened</td><td>Whether people keep their work (object counts and ages are bucketed; never names or paths)</td></tr>
|
|
138
140
|
<tr><td>motion:backend_state</td><td>Session capability baseline: backend (none, local_kimodo or hosted) and boolean host_configured, never a host address</td></tr>
|
|
139
|
-
<tr><td>motion:generate_requested</td><td>Explicit generation intent, not prompt-block editing: initiating surface (timeline, line_edit, trail or
|
|
140
|
-
<tr><td>motion:preflight_blocked</td><td>Request readiness refusal: request_id, surface and normalized reason (unconfigured, unreachable or
|
|
141
|
-
<tr><td>motion:preflight_passed</td><td>Request readiness accepted, before job start: request_id, surface and backend (none, local_kimodo or
|
|
141
|
+
<tr><td>motion:generate_requested</td><td>Explicit generation intent, not prompt-block editing: initiating surface (timeline, line_edit, trail, mcp, fal_card or agent), input_mode (prompt, pose, edit, a_to_b or still) and an ephemeral random request_id</td></tr>
|
|
142
|
+
<tr><td>motion:preflight_blocked</td><td>Request readiness refusal: request_id, surface and normalized reason (unconfigured, unreachable, unsupported_route, locked or missing_input). locked means the AI video route is not enabled for the account yet; missing_input means the A/B captures were incomplete</td></tr>
|
|
143
|
+
<tr><td>motion:preflight_passed</td><td>Request readiness accepted, before job start: request_id, surface and backend (none, local_kimodo, hosted or fal)</td></tr>
|
|
142
144
|
<tr><td>motion:job_started</td><td>Generation execution started: request_id, backend and input_mode</td></tr>
|
|
143
145
|
<tr><td>motion:job_succeeded</td><td>Generation completed before result application: request_id, backend, input_mode and bucketed duration_bucket (lt1s, 1-3s, 3-10s, 10-30s or gte30s)</td></tr>
|
|
144
|
-
<tr><td>motion:job_failed</td><td>Generation failure or real cancellation: request_id, backend, input_mode, duration_bucket and normalized error_code (aborted, unsupported_route, generation_failed or unknown), never raw error messages</td></tr>
|
|
145
|
-
<tr><td>motion:result_applied</td><td>A generated result was applied to its requesting character: request_id and backend. Job success alone does not prove application.</td></tr>
|
|
146
|
+
<tr><td>motion:job_failed</td><td>Generation failure or real cancellation: request_id, backend, input_mode, duration_bucket and normalized error_code (aborted, unsupported_route, generation_failed, quota or unknown), never raw error messages</td></tr>
|
|
147
|
+
<tr><td>motion:result_applied</td><td>A generated result was applied to its requesting character: request_id and backend. For the fal AI video route, applied means the generated clip was loaded into the Studio for extraction. Job success alone does not prove application.</td></tr>
|
|
146
148
|
<tr><td>workflow:run_requested</td><td>Workflow execution requests: surface (workflow), ephemeral run_id and node_count_bucket (0, 1-3, 4-10 or gte11). No graph contents, node labels or outputs.</td></tr>
|
|
147
149
|
<tr><td>workflow:run_succeeded, workflow:run_failed, workflow:run_cancelled</td><td>Workflow outcomes paired by run_id, with duration_bucket (lt1s, 1-3s, 3-10s, 10-30s or gte30s); failures and actual cancellations also include failure_code (aborted, capture_failed, generation_failed or unknown). Starting another run does not imply cancellation.</td></tr>
|
|
148
150
|
<tr><td>workflow:result_applied</td><td>Captured or generated image/video output was written to the Workflow canvas: run_id only, at most once per run, independently of a later failure. No image bytes or output contents.</td></tr>
|
|
@@ -157,6 +159,9 @@ cclay telemetry on</code></pre>
|
|
|
157
159
|
<tr><td>export:attempt_started, export:attempt_succeeded, export:attempt_failed, export:attempt_cancelled</td><td>Export attempts and outcomes, paired by an ephemeral random attempt_id; export_kind (video, depth_video, frame or keyframe_pack), format (mp4, png or zip) and initiating surface (studio, workflow or embed). Terminal events include a bucketed duration_bucket; failures and real cancellations include only a normalized failure_code (unsupported_codec, encode_failed, render_failed, aborted or unknown), never raw error messages, filenames, URLs, paths, prompts or scene content. Success means pipeline completion or download handoff, not confirmation that the OS saved a file.</td></tr>
|
|
158
160
|
<tr><td>export:keyframe_pack</td><td>Legacy Workflow pack handoffs, with numeric entries count and source=workflow; not an additional export attempt</td></tr>
|
|
159
161
|
<tr><td>playground:opened, playground:first_action</td><td>Whether the home-page playground gets used</td></tr>
|
|
162
|
+
<tr><td>app:error</td><td>Uncaught errors and unhandled promise rejections, at most ten distinct per session: error_kind (error or unhandled_rejection), error_type (a built-in name such as TypeError or DOMException, other or non_error), error_source (app, extension, external or unknown) and, only for the app's own scripts, error_file (the bundle file name), error_line and error_col. Never the error message, stack text, URLs, query strings, paths, prompts or scene content.</td></tr>
|
|
163
|
+
<tr><td>device:profile</td><td>Once per session, whether the studio can run smoothly: gpu_vendor (nvidia, amd, intel, apple, qualcomm, arm, software, other or unknown), gpu_class (discrete, integrated, software or unknown), webgl (webgl2, webgl1 or none), cpu_bucket (1-4, 5-8, 9-16, gte17 or unknown), memory_bucket (lt4, 4-7, gte8 or unknown) and frame_rate_bucket (lt20, 20-40, 40-55, gte55 or unknown) from one three-second sample. The GPU renderer string and exact hardware values never leave the browser.</td></tr>
|
|
164
|
+
<tr><td>survey:use_case</td><td>An optional question shown at most once after a successful export, only while telemetry is on: use_case (animation, film, game, ad_mv, personal, other or skip) and team (team, solo or skip). Closed choices only; no free text.</td></tr>
|
|
160
165
|
<tr><td>hosted:composer_viewed, hosted:login_started, hosted:ticket_created, hosted:result_opened, hosted:opened_in_studio</td><td>Hosted demo funnel</td></tr>
|
|
161
166
|
<tr><td>tutorial:started</td><td>Camera tutorial attempts on surface (studio or playground), with numeric tutorial_version 1 and start_source (query, settings or landing). Restarting starts a new attempt; no tutorial attempt identifier or user text is sent.</td></tr>
|
|
162
167
|
<tr><td>tutorial:step_entered, tutorial:dismissed</td><td>Entered steps and explicit dismissal of an unfinished tutorial; surface (studio or playground), numeric tutorial_version 1 and step_kind (fly, walk, dolly, orbit, shot, rail or play). Missing completion can indicate abandonment or missing telemetry; browser close does not promise a dismissal event.</td></tr>
|
|
@@ -166,7 +171,7 @@ cclay telemetry on</code></pre>
|
|
|
166
171
|
</table>
|
|
167
172
|
</div>
|
|
168
173
|
<p class="note">Motion request_id values are fresh random 32-character hexadecimal values, held only for one request; they are not persisted or derived from prompts, hosts, credentials, project content or other identifiers. The ambiguous motion:generate_blocked event stopped being emitted in the September 15, 2026 issue #273 contract. Historical events are not relabeled and are excluded from the new explicit-demand metric. Automatic line previews and prompt-block edits are not explicit Generate requests.</p>
|
|
169
|
-
<p class="note">Every regular app event and session-end beacon carries the same distribution (npm or hosted), app_version when available, origin_kind (local or hosted), internal_qa boolean, coarse operating-system label and, for npm sessions, install_kind (npx or global). PostHog's free plan retains events for one year.</p>
|
|
174
|
+
<p class="note">Every regular app event and session-end beacon carries the same distribution (npm or hosted), app_version when available, origin_kind (local or hosted), internal_qa boolean, coarse operating-system label and, for npm sessions, install_kind (npx or global) and update_status (latest, outdated or unknown), read from the package's own cached update check. PostHog's free plan retains events for one year.</p>
|
|
170
175
|
<p class="note">Workflow run_id, Agent turn_id and MCP request_id values are fresh random 32-character hexadecimal values held only for one execution. Execution telemetry contains only closed categories, outcomes and elapsed-time buckets; missing telemetry is left unknown, and a disconnected MCP editor is not backfilled.</p>
|
|
171
176
|
</section>
|
|
172
177
|
|
package/dist/sitemap.xml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
3
3
|
<url>
|
|
4
4
|
<loc>https://cozyclay.org/</loc>
|
|
5
|
-
<lastmod>2026-
|
|
5
|
+
<lastmod>2026-10-01</lastmod>
|
|
6
6
|
</url>
|
|
7
7
|
<url>
|
|
8
8
|
<loc>https://cozyclay.org/greybox-to-video/</loc>
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
</url>
|
|
23
23
|
<url>
|
|
24
24
|
<loc>https://cozyclay.org/privacy/</loc>
|
|
25
|
-
<lastmod>2026-
|
|
25
|
+
<lastmod>2026-10-01</lastmod>
|
|
26
26
|
</url>
|
|
27
27
|
</urlset>
|
package/dist/workflow/index.html
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
<meta name="theme-color" content="#101116" />
|
|
9
9
|
<meta name="description" content="CozyClay visual workflow builder" />
|
|
10
10
|
<title>CozyClay Workflow</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/workflow-
|
|
11
|
+
<script type="module" crossorigin src="/assets/workflow-B5XZwVfe.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/analytics-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/shot-prompt-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/shot-prompt-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/workflow-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/analytics-MVZOEW8O.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/shot-prompt-hN0j_O-p.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/shot-prompt-CbqWcWYi.css">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/workflow-DRdwoDBT.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
<div id="workflow-root"></div>
|