mirror of
https://github.com/nexu-io/open-design.git
synced 2026-05-31 19:04:39 +07:00
6 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e11e86d468
|
feat(hyperframes): land HTML-in-Canvas across web + skills (#866)
* 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> |
||
|
|
9d176ef12e
|
feat(prompt-templates): HyperFrames video previews + provider badge + source filter (#293)
* feat(prompt-templates): add 11 HyperFrames video prompts and surface media generation in README Adds eleven `hyperframes-*` prompt templates under `prompt-templates/video/`, each one a concrete brief with scene-by-scene timing, GSAP eases, palette, and the HyperFrames non-negotiables (deterministic, paused timelines, entrance-only motion, lint/inspect commands). Archetypes covered: - minimal product reveal (5s, 16:9) - SaaS product promo (30s, 16:9, Linear/ClickUp-style) - TikTok karaoke talking-head (9:16, TTS + word-synced captions) - brand sizzle reel (30s, beat-synced kinetic typography) - animated bar-chart race (NYT-style data infographic) - Apple-style flight map route (origin → destination) - 4s cinematic logo outro - $0 → $10K money counter hype (9:16) - 3-phone app showcase - 9:16 social overlay stack (X · Reddit · Spotify · Instagram) - 15s website-to-video pipeline Each template uses `model: "hyperframes-html"`, real catalog-block thumbnails from HeyGen's CDN as previewImageUrl, and source attribution to `heygen-com/hyperframes` (Apache-2.0). README also gets a new **Media generation** section between *Visual directions* and *Beyond chat*, plus a new row in the *At a glance* table. The section documents the three model families currently surfaced as templates (gpt-image-2, Seedance 2.0, HyperFrames) with example galleries — gpt-image-2 thumbnails, Seedance MP4-linked thumbnails, and the 11 HyperFrames tiles — and notes the wider model coverage (Kling, Veo, Sora, MiniMax, Suno, Udio, Lyria, TTS) already wired in `VIDEO_MODELS` / `AUDIO_MODELS_BY_KIND` and open for community templates. * i18n(de): register new HyperFrames templates, categories, tags Adds German titles/summaries for the 11 new hyperframes-* video templates plus the Product/Marketing/Data/Travel/Branding/Short Form categories and hyperframes/title-card/sizzle/etc. tags they introduce, so the German sync guarantees enforced by apps/web/src/i18n/content.test.ts hold. * docs(readme): sync Media generation section to de / ja / ko / zh-CN; bump counts to 93 (43 + 39 + 11) Mirrors the English Media generation row + section into the four locale READMEs (README.de.md, README.ja-JP.md, README.ko.md, README.zh-CN.md), translating prose / table headers / captions while keeping the gpt-image-2, Seedance MP4, and HyperFrames catalog-block thumbnails identical across all five locales so the galleries render the same images. Counts updated to reflect current main (after rebase): 43 gpt-image-2 + 39 Seedance + 11 HyperFrames = 93 prompts total. The English README's At-a-glance row, intro paragraph, and gallery sub-headers now read "sample of 43" / "sample of 39" / "11 ready-to-replicate templates" — locales follow. Resolves the Codex review's German-i18n flag end-to-end: README copy is in sync, and the German content map (DE_PROMPT_TEMPLATE_*) was already extended in the prior commit on this branch. * feat(prompt-templates): video previews + provider badge + source filter for HyperFrames - Add `previewVideoUrl` to all 11 HyperFrames video templates so the preview modal plays the real catalog clip instead of falling back to a static image. - Add a per-card provider badge (top-left thumbnail chip) keyed off `source.repo`. HyperFrames cards get a HeyGen-accent gradient so they are identifiable at a glance; other repos get a neutral pill. - Add a Source filter dropdown next to Category in PromptTemplatesTab, populated from the small enumerated repo set (HyperFrames, Seedance 2, GPT Image 2, Open Design). Auto-hides when only one source is present. The text search now also matches the provider name. - Wire i18n keys `promptTemplates.allSources` and `promptTemplates.sourceFilterAria` across all 9 locales. |
||
|
|
96db795d7d
|
docs: fix spelling mistakes in CLI comment, spec, and video prompt (#300)
* fix: correct cli typo comment * docs: fix spec typo * fix: correct video prompt typo |
||
|
|
266daf904f
|
feat(prompt-templates): add 11 HyperFrames video prompts + media generation README section (#227)
* feat(prompt-templates): add 11 HyperFrames video prompts and surface media generation in README Adds eleven `hyperframes-*` prompt templates under `prompt-templates/video/`, each one a concrete brief with scene-by-scene timing, GSAP eases, palette, and the HyperFrames non-negotiables (deterministic, paused timelines, entrance-only motion, lint/inspect commands). Archetypes covered: - minimal product reveal (5s, 16:9) - SaaS product promo (30s, 16:9, Linear/ClickUp-style) - TikTok karaoke talking-head (9:16, TTS + word-synced captions) - brand sizzle reel (30s, beat-synced kinetic typography) - animated bar-chart race (NYT-style data infographic) - Apple-style flight map route (origin → destination) - 4s cinematic logo outro - $0 → $10K money counter hype (9:16) - 3-phone app showcase - 9:16 social overlay stack (X · Reddit · Spotify · Instagram) - 15s website-to-video pipeline Each template uses `model: "hyperframes-html"`, real catalog-block thumbnails from HeyGen's CDN as previewImageUrl, and source attribution to `heygen-com/hyperframes` (Apache-2.0). README also gets a new **Media generation** section between *Visual directions* and *Beyond chat*, plus a new row in the *At a glance* table. The section documents the three model families currently surfaced as templates (gpt-image-2, Seedance 2.0, HyperFrames) with example galleries — gpt-image-2 thumbnails, Seedance MP4-linked thumbnails, and the 11 HyperFrames tiles — and notes the wider model coverage (Kling, Veo, Sora, MiniMax, Suno, Udio, Lyria, TTS) already wired in `VIDEO_MODELS` / `AUDIO_MODELS_BY_KIND` and open for community templates. * i18n(de): register new HyperFrames templates, categories, tags Adds German titles/summaries for the 11 new hyperframes-* video templates plus the Product/Marketing/Data/Travel/Branding/Short Form categories and hyperframes/title-card/sizzle/etc. tags they introduce, so the German sync guarantees enforced by apps/web/src/i18n/content.test.ts hold. * docs(readme): sync Media generation section to de / ja / ko / zh-CN; bump counts to 93 (43 + 39 + 11) Mirrors the English Media generation row + section into the four locale READMEs (README.de.md, README.ja-JP.md, README.ko.md, README.zh-CN.md), translating prose / table headers / captions while keeping the gpt-image-2, Seedance MP4, and HyperFrames catalog-block thumbnails identical across all five locales so the galleries render the same images. Counts updated to reflect current main (after rebase): 43 gpt-image-2 + 39 Seedance + 11 HyperFrames = 93 prompts total. The English README's At-a-glance row, intro paragraph, and gallery sub-headers now read "sample of 43" / "sample of 39" / "11 ready-to-replicate templates" — locales follow. Resolves the Codex review's German-i18n flag end-to-end: README copy is in sync, and the German content map (DE_PROMPT_TEMPLATE_*) was already extended in the prior commit on this branch. |
||
|
|
0e2085e361
|
feat(prompt-templates): add three Three Kingdoms ARPG Seedance 2.0 video templates (#212)
Adds three curated first-party video prompt templates to `prompt-templates/video/`, each with a matching MP4 preview and a first-frame poster JPG under `assets/prompt-templates/video/`. These are the direct video companions to the three image templates opened in PR #207 (Three Kingdoms ARPG screenshot set). Each video clip is a ~10-12s in-engine cinematic action beat that brings the corresponding still to life; the two surfaces can be served as a pair (still → video). ### New templates 1. `video-seedance-three-kingdoms-lyubu-yuanmen-archery.json` ~10s. Lyu Bu (吕布) at the yuanmen between two armies — draws, holds, releases one gold-qi arrow toward a distant halberd. Companion to image template `game-screenshot-three-kingdoms-lyubu-yuanmen-archery`. 2. `video-seedance-three-kingdoms-guanyu-slaying-yanliang.json` ~10s. Guan Yu (关羽) on Red Hare — charges, raises the Green Dragon Crescent Blade, executes a single clean diagonal cleave past Yan Liang. No blood on-screen (the strike is implied by a short gold-into-jade qi flash). Companion to image template `game-screenshot-three-kingdoms-guanyu-slaying-yanliang`. 3. `video-seedance-three-kingdoms-zhaoyun-cradle-escape.json` ~12s. Zhao Yun (赵云) at Changban — rides with the infant A Dou cradled in a red silk sling on his chest, parries one incoming saber with a clean PERFECT DODGE, vaults a fallen war-chariot and clears a path. Hard safety rail in the prompt: the infant must stay visible, peaceful and obviously unharmed in every frame. Companion to image template `game-screenshot-three-kingdoms-zhaoyun-cradle-escape`. Each template is tuned for `seedance-2.0`, aspect `16:9`, category `Cinematic` (reuses the existing category — 17 templates already live there). Every prompt is explicitly in-engine camera-disciplined (single continuous beat, no cuts, no slow-motion ramps, no whip pans) and HUD-free (the companion image template carries the HUD), so reviewers and downstream users can treat the still + clip as a matched production pair. Each template exposes 5-7 `{argument}` slots (reference_image / environment / hero / weapon / target / mount / qi_color / parry_color / infant / attacker as appropriate) so users can restyle the same shot scaffold for any Three Kingdoms (or, with heavier edits, any historical battlefield) scene. ### Assets | File | Size | | --- | --- | | `video-seedance-three-kingdoms-lyubu-yuanmen-archery.mp4` | 7.6 MB | | `video-seedance-three-kingdoms-guanyu-slaying-yanliang.mp4` | 10.3 MB | | `video-seedance-three-kingdoms-zhaoyun-cradle-escape.mp4` | 11.7 MB | | 3 × first-frame `-poster.jpg` | 445-527 KB each | Total: ~30 MB across 3 MP4s, each well under GitHub's 100 MB single-file limit. Hosted in-repo on `raw.githubusercontent.com` for a fully self-contained first-party contribution — no external CDN dependency. ### Verification - `node -e "JSON.parse(...)"` passes on all three new templates. - Slugs do not collide with any existing video template on `main`. - `previewImageUrl` (poster) and `previewVideoUrl` (mp4) both point at the new in-repo asset paths. - `source.repo = nexu-io/open-design`, `license = Apache-2.0`, `author = open-design contributors`, so the first-party guard in `scripts/import-prompt-templates.mjs` (added in #187) preserves these across importer re-runs. ### Why The companion image PR (#207) gives users a beautiful Three Kingdoms ARPG still they can generate via gpt-image-2; this PR closes the loop by letting them turn that still into a believable ~10s in-engine clip via seedance-2.0 — the exact production flow behind the Black-Myth-Wukong-style ARPG demo reel this workstream is pitching. Paired still + video templates also double as a clean reference for how first-party `open-design` contributors should structure a matched set across the two surfaces (same slug suffix, `companion-to-image` tag, cross-referenced `reference_image` argument, same hero / environment language, no HUD in the video so HUD can be sourced from the still). Co-authored-by: Tuola Ge <gexingli@refly.ai> |
||
|
|
3f266103b0
|
feat(media): port generation workflow onto main (#12)
Co-authored-by: Elian <elian@EliandeMacBook-Pro.local> |