mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
* feat(hyperframes): land HTML-in-Canvas across web + skills Ships HTML-in-Canvas as a first-class HyperFrames video path: - 7 new video prompt templates (liquid glass, iPhone+MacBook, portal, shatter, magnetic, liquid background, text-cursor reveal). - skills/hyperframes/references/html-in-canvas.md, surfaced via SKILL.md description+triggers and the system-prompt pre-flight references list. - ChatPane starter prompts now branch by project kind and video model, so the hyperframes-html surface shows HTML-in-canvas-shaped prompts instead of the generic prototype trio. - NewProjectPanel propagates a picked template's model+aspect onto the project, and defaults videoModel to hyperframes-html when the hyperframes skill resolves for the video tab. Polish bundled in the same branch: - DesignFilesPanel empty state becomes a centered pill with a "New sketch" CTA; designFiles.empty copy simplified across 19 locales. - Topbar project title + meta render on one baseline row separated by a middot. - scripts/seed-test-projects.ts hardens daemon URL discovery against pnpm engine warnings on stdout. * fix(new-project): preserve explicit video model choice across tab revisits Latch a videoModelTouched guard once the user picks a model via the dropdown or via a template that declares one, so the hyperframes-html auto-default no longer silently overwrites the override when the Video tab is re-entered. Generated-By: looper 0.6.1 (runner=fixer, agent=claude-code) * fix(i18n): register hyperframes html-in-canvas templates, category, and tags Adds the seven new prompt-template ids, the "VFX / HTML-in-Canvas" category, and the new tag set to the de/ru/fr i18n bundles so the e2e localized-content coverage test passes. Generated-By: looper 0.6.1 (runner=fixer, agent=claude-code) * fix(daemon): inject html-in-canvas preflight for hyperframes runs The contracts-side derivePreflight() learned about references/html-in-canvas.md when this PR landed, but the daemon copy at apps/daemon/src/prompts/system.ts kept the older five-ref allowlist. server.ts:4138 wires composeSystemPrompt from the daemon copy into live chat runs, so the main HyperFrames flow this PR is meant to improve still wasn't auto-injecting the preflight directive in production. Mirror the html-in-canvas case into the daemon composer and lock it behind a daemon-side test so the two copies cannot drift again on this reference. The broader live-artifact preflight gap (artifact- schema / connector-policy / refresh-contract) is pre-existing drift and is intentionally out of scope here. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web): restyle designs empty state as centered card on grid backdrop Swap the horizontal pill for a stacked card and add a faint grid backdrop so the empty designs surface reads as an intentional canvas rather than a gap. Title now wraps instead of truncating; container is taller. * fix(new-project): pin skillId to hyperframes when videoModel is hyperframes-html When the Video tab resolves its skill it used to fall back to `list[0]?.id` if no skill declared `default_for: video`. That list is built from an unsorted `readdir()` in apps/daemon/src/skills.ts, so a freshly mounted project could land on `video-shortform` even when the user had explicitly chosen the HyperFrames-HTML model (or one of the new `hyperframes-html-in-canvas-*` templates). The agent then ran without the hyperframes SKILL body or its `references/html-in-canvas.md` preflight — the exact regression PR #866 was meant to land. `skillIdForTab` now pins to `hyperframes` whenever the current video model is `hyperframes-html`, regardless of discovery order. Added a unit test that mounts both `video-shortform` and `hyperframes` (with hyperframes last, simulating the bad readdir order) and asserts the create payload routes through `hyperframes`. --------- Co-authored-by: Cursor <cursoragent@cursor.com> |
||
|---|---|---|
| .. | ||
| prompts | ||
| runtimes | ||
| acp.test.ts | ||
| agent-runtime-env.test.ts | ||
| app-config.test.ts | ||
| app-version.test.ts | ||
| artifact-manifest.test.ts | ||
| browser-open.test.ts | ||
| chat-route.test.ts | ||
| claude-design-import.test.ts | ||
| comment-attachments.test.ts | ||
| composio-config.test.ts | ||
| composio-descriptions.test.ts | ||
| connection-test.test.ts | ||
| connectors-routes.test.ts | ||
| connectors-service.test.ts | ||
| craft.test.ts | ||
| critique-artifact-endpoint.test.ts | ||
| critique-artifact-writer.test.ts | ||
| critique-authority.test.ts | ||
| critique-boot-reconcile.test.ts | ||
| critique-composer.test.ts | ||
| critique-config.test.ts | ||
| critique-interrupt-endpoint.test.ts | ||
| critique-lifecycle.test.ts | ||
| critique-orchestrator.test.ts | ||
| critique-panel-prompt.test.ts | ||
| critique-persistence.test.ts | ||
| critique-run-registry.test.ts | ||
| critique-spawn-wiring.test.ts | ||
| critique-transcript.test.ts | ||
| cwd-aliases.test.ts | ||
| deploy-routes.test.ts | ||
| deploy.test.ts | ||
| design-system-showcase.test.ts | ||
| desktop-import-token-gate.test.ts | ||
| finalize-design.test.ts | ||
| finalize-route-abort.test.ts | ||
| folder-import-projects.test.ts | ||
| folder-import-route.test.ts | ||
| json-event-stream.test.ts | ||
| langfuse-bridge.test.ts | ||
| langfuse-trace.test.ts | ||
| legacy-data-migrator.test.ts | ||
| linked-dirs.test.ts | ||
| lint-artifact.test.ts | ||
| live-artifacts-routes.test.ts | ||
| live-artifacts-schema.test.ts | ||
| live-artifacts-store.test.ts | ||
| mcp-config.test.ts | ||
| mcp-daemon-url.test.ts | ||
| mcp-extract-refs.test.ts | ||
| mcp-get-artifact.test.ts | ||
| mcp-get-file.test.ts | ||
| mcp-install-info.test.ts | ||
| mcp-oauth.test.ts | ||
| mcp-resolve-project.test.ts | ||
| mcp-spawn.test.ts | ||
| mcp-tokens.test.ts | ||
| media-config.test.ts | ||
| media-nanobanana.test.ts | ||
| media-tasks-persistence.test.ts | ||
| media-tasks-routes.test.ts | ||
| native-folder-dialog.test.ts | ||
| orbit.test.ts | ||
| origin-validation.test.ts | ||
| parser.test.ts | ||
| pdf-export.test.ts | ||
| pi-rpc.test.ts | ||
| project-archive.test.ts | ||
| project-classifiers.test.ts | ||
| project-file-range.test.ts | ||
| project-file-rename.test.ts | ||
| project-status.test.ts | ||
| project-watchers.test.ts | ||
| projects-routes.test.ts | ||
| proxy-routes.test.ts | ||
| qoder-stream.test.ts | ||
| redact.test.ts | ||
| research-cli.test.ts | ||
| research-contract.test.ts | ||
| research.test.ts | ||
| resolve-data-dir.test.ts | ||
| routines.test.ts | ||
| runs.test.ts | ||
| sanitize-name.test.ts | ||
| server-cors.test.ts | ||
| server-paths.test.ts | ||
| setup.ts | ||
| sidecar-server.test.ts | ||
| sidecar-status-snapshot.test.ts | ||
| skill-asset-rewrite.test.ts | ||
| skill-id-aliases.test.ts | ||
| skills.test.ts | ||
| sse-response.test.ts | ||
| static-resource-routes.test.ts | ||
| structured-streams.test.ts | ||
| system-prompt-template.test.ts | ||
| telemetry-message-finalization.test.ts | ||
| tool-tokens.test.ts | ||
| tools-connectors-cli.test.ts | ||
| tools-live-artifacts-cli.test.ts | ||
| transcript-export.test.ts | ||
| version-route.test.ts | ||