Commit Graph
193 Commits
Author SHA1 Message Date
zhouzheng 676b118822 fix(prototype): keep review and confirmation state coherent 2026-10-16 01:20:41 +08:00
zhouzheng deeffb6e77 fix(prototype): preserve dynamic controls and dialog visibility 2026-10-16 01:00:57 +08:00
zhouzheng 31115e81c8 fix(discovery): align local routes and live filter states 2026-10-16 00:18:32 +08:00
zhouzheng f5ab0b971d fix(prototype): preserve native hidden feedback states 2026-10-15 23:42:26 +08:00
zhouzheng 3583c3e7e2 fix(prototype): keep validation feedback selectors consistent 2026-10-15 22:32:32 +08:00
zhouzheng f923848f79 fix(preview): preserve local forms and hash routes in strict sandbox 2026-10-15 21:56:37 +08:00
zhouzheng d14414f320 fix(discovery): distinguish local state and tighten output adherence 2026-10-15 21:05:01 +08:00
zhouzheng 4dc9cae789 fix(discovery): stop opaque video failures without diagnostic generations 2026-10-15 16:54:43 +08:00
zhouzheng 9d2a87af6a fix(discovery): align with merged Motion export and preserve Query routing 2026-10-15 15:05:47 +08:00
open-design-crew[bot]GitHubbone3deep1962-collabWilliamopen-design-crew[bot] <4197780+open-design-crew[bot]@users.noreply.github.com>NJUHuaAmy
14fee234e6 feat: add motion design workflow and curated motion skills (#8619)
* feat: add Motion Design skill and OD Next task route

* fix(web): rename motion design entry and place it second

* fix(web): reconcile motion design catalog consumers

* feat(web): add motion design templates to Home and Community

Five motion design example templates (3D procedural island, explainer,
product launch, showreel, data story), chosen by community reach, under the
Home motion-design chip and a new Community "Motion design" type.

Each template follows the bundled example layout: an OD-generated
example.html with its runtime libraries under assets/, an HTML preview baked
by the existing preview pipeline, and a SKILL.md that carries example.html
as the reference when the card is picked on the OD Next motion-design route.
Home cards ship curated copy for every UI locale. Motion templates stay off
the Video and HyperFrames chips.

* fix(skills): keep motion-design procedural layers visible in video export

The MP4 exporter seeks timelines with callbacks suppressed
(renderSeek(t, { suppressEvents: true })), so content drawn only from a GSAP
onUpdate callback is missing from exported video. Recommend a per-frame draw
loop that reads the timeline clock, and state that visible content must not
depend on timeline callbacks. The OD Next task asset is re-synced with
scripts/sync-motion-design-skill.ts.

* fix(motion): preserve reference assets and exported animation frames

* feat(skills): integrate curated motion helpers with complete runtime files

* feat(skills): add Huashu, Oil Motion and Motion.Lab adapters

* test: classify animate design guidance in narration guard

* feat(motion): refine five community templates and portable previews

* fix(motion): refine launch transitions and center gallery previews

* fix: allow free-form briefs on automatic motion task route

* feat(motion): add template soundtracks and audio export

* fix(motion): require rendered MP4 alongside editable video source

* test(motion): align strategy activation expectation with package version

* fix: scope motion delivery and make editable sources playable

* fix(motion): bundle source dependencies and valid closing protocol

* feat(motion): rebuild the five templates on the most-viewed community posts

Re-select topics by single-post views in the latest awesome-opus-5.5-video
snapshot and anchor each template to the top eligible post of its genre:
camera-focus explainer, showreel, product launch, procedural island and a
new wordless animated short that replaces the data story.

All five example.html files are hand-authored canvas/Three.js films drawn by
one render(t) from the GSAP master timeline, so preview, scrubbing and MP4
export produce identical frames. Each ships an original procedural
soundtrack, updated SKILL.md and 19-locale copy; Home order follows reach.

* fix(plugins): load bundled fonts in plugin previews

Plugin previews blocked every bundled font: the preview CSP had no font-src,
and relative url() references inside inline <style> blocks kept pointing at
the preview URL instead of the plugin folder. Allow same-origin fonts, map
inline-style url() references through the existing asset route (escapes,
absolute and data: URLs stay untouched), and serve font files with font
MIME types.

* feat(community): make motion template Use match the Home example pick

Community 「做同款」 on a motion design template now binds it as that type's
own example card, carrying the type's project metadata, so the run takes the
same OD Next motion-design route as a pick from Home's motion design list and
delivers the MP4 together with the editable source. Other task types keep
the existing plugin-pinning hand-off.

Community use clicks now record use_source (card | detail_modal) and
use_action (use | use_with_query); the details modal Use is tracked for the
first time. The Home hand-off no longer records a second community_gallery
click for uses Community already tracked.

* fix(plugins): count the five motion templates in the official registry metadata

* fix(media): keep HyperFrames audio filters compatible with FFmpeg 4.1

CI's bundled Linux FFmpeg 4.1 rejects adelay all=1 and amix normalize=0.
Make each track stereo and delay both channels explicitly, skip amix for a
single track, and undo amix averaging with a gain for several tracks.

* fix(motion): keep template previews bakeable on slow CI renderers

CI's software-GL baker skipped the 3D island (preview readiness timeout):
under slow frames GSAP lag smoothing slowed the timeline, so the 8 s
poster frame never arrived within the baker's 15 s wait. Play every
template on the wall clock and move the island poster to 6 s. With
simulated 300 ms frames all five now report ready within 10 s.

* feat(motion): add the kinetic typography template

Template selection now follows the motion design spec's four content types
(brand and product films, kinetic typography, explainer animation, procedural
art). Kinetic typography takes the fifth slot, replacing the animated short.
The new template is a 15-second, 120 BPM type film with an original
soundtrack and 19-locale copy.

* fix(motion): let the project motion player fit template stages

Inside a project the motion source player wraps the composition, fits it and
adds its own controls. The templates also scaled their stage, so editable
sources from Remix and Community use rendered at a fraction of the preview.
Templates now keep their own fit and controls only outside that player.

* feat(motion): restage the 3D island as a midday lagoon

The island moves from golden hour to a bright tropical midday closer to its
anchor post: a shader lagoon coloured by a baked depth map with ripples,
shallow-water shimmer and shore foam, a wide white-sand beach, palms and
instanced bushes, a village with a pier, soft sun shadows and a lower
camera path. The CPU wave mesh is gone, so frames cost no more than before.
Copy is updated in all 19 locales.

* fix(motion): keep each soundtrack inside the composition root

A Community use regenerated the island source tail and dropped the root
<audio> element, so its MP4 had no sound. Templates now place the element
inside the composition root next to the stage.

* docs(motion): state the template selection rule as complete works

* fix(motion): enforce video clocks and bound content verification

* feat(motion): replace the motion templates with remakes of viral posts

The five Motion design templates are now frame-faithful remakes of viral
motion posts, so each preview shows the look users came for: the 15-second
motion designer showreel, a high-energy motion reel (copy set in English), a
one-shape UI motion piece, a pixel-art wizard and a 20-second electric-blue
tech reel. Each ships open-licensed fonts, an original soundtrack, the
creator's published prompt where one exists, and credits its source post.

The explainer, product launch, 3D island and kinetic type templates are
removed. Tests follow the new set; a backward-seek check now covers hidden
WebGL layers.

* feat(motion): feature The Future Is Already Here first and start preview sound with the film

* chore: ensure PR CI

* fix(motion): match The Future Is Already Here controls and reorder the motion templates

* fix(motion): make the one-shape UI preview controls legible

* fix(motion): hide The Future Is Already Here controls inside the project player

* fix(motion): plan suitable sound and synchronize source audio playback

* feat(motion): keep remake soundtracks by default and fade exported audio where it stops

* test(motion): cover audible source controls in Chromium

* fix(test): use explicit ESM imports in audio player regression

* fix(motion): align preview track discovery with video export

* feat(motion): autoplay looping HTML without a player bar

* fix(test): consume the built motion playback contract

* docs(motion): state explicit soundtrack rules for make-same and the music line in replies

* chore(motion): version the audible looping delivery profile

* docs(motion): let template sound rules lead the general policy and freeze the audio contract

* fix(motion): scope autoplay to declared video motion sources

* fix(motion): reject audible MP4s under an explicit silent contract

* docs(motion): drop the routine music note from make-same replies

* test(motion): align delivery regressions with looping source playback

* fix(motion): isolate preview and audio export from legacy HyperFrames

* test(motion): retain the existing desktop legacy audio limitation

* fix(motion): suspend audio when previews leave the active workspace

* feat(motion): replace two motion templates with a product promo and a visual lesson; sign the showreel as Open Design

* feat(motion): give the showreel the Open Design palette and a full-size stacked wordmark

* feat(motion): give the product promo a livelier mascot girl

* refactor(motion): rebuild The Future Is Already Here as readable, editable scene code

* fix(motion): pick gallery cover frames that survive the baker's capture delay

* feat(motion): sharpen the showreel opener, depth, truchet and end card

* feat(motion): make the product promo mascot talk, add a speaking score and the flow pop

* feat(motion): give the visual lesson the original's paper-collage texture

* fix(motion): bundle gallery covers for fresh branch checkouts

* feat(motion): feature and refine Bring Ideas to Life

Adapt the paper story around OpenDesign capabilities, with short rounded hands, clearer timing, continuous paper actions, and a larger audience invitation. Feature it first in Motion and synchronize localized names, metadata, cover, guidance, and regressions.

Keep product promo audio music-only with sparse percussion.

* fix(motion): stabilize artifact cards and capture declared covers

* fix(web): share creation type order with community

* test(motion): exercise audio controls through project UI lifecycle

* fix(motion): scope live cover behavior to actual video sources

* test(motion): use real HEAD responses in cover regressions

---------

Co-authored-by: bone3deep1962-collab <bone3deep1962@gmail.com>
Co-authored-by: William <zhouhaoran@refly.ai>
Co-authored-by: open-design-crew[bot] <4197780+open-design-crew[bot]@users.noreply.github.com>
Co-authored-by: NJUHua <113895241+NJUHua@users.noreply.github.com>
Co-authored-by: Amy <1184569493@qq.com>
2026-10-14 15:55:52 +00:00
zhouzheng 47c7cc4ded fix(discovery): retain required model provider and billing channel 2026-10-14 17:25:43 +08:00
zhouzheng d1710f5a03 fix(discovery): stop required-model attempts on authentication failure 2026-10-14 16:56:30 +08:00
zhouzheng 759df8a8c1 feat(discovery): integrate Motion delivery with marker continuation 2026-10-14 16:26:39 +08:00
zhouzheng c4440b0e92 fix(discovery): gate skill reads on current production authorization 2026-10-14 03:40:13 +08:00
zhouzheng 7318ce7f57 fix(discovery): complete authorized plans and verify audible delivery 2026-10-14 02:12:47 +08:00
zhouzheng ccd7601cb2 fix(discovery): retain WebGL intent and isolate reference-only skills 2026-10-14 01:49:26 +08:00
NJUHua 941b3a9781 fix(motion): stabilize artifact cards and capture declared covers 2026-10-14 00:24:48 +08:00
William 8a6a2df3ab feat(motion): feature and refine Bring Ideas to Life
Adapt the paper story around OpenDesign capabilities, with short rounded hands, clearer timing, continuous paper actions, and a larger audience invitation. Feature it first in Motion and synchronize localized names, metadata, cover, guidance, and regressions.

Keep product promo audio music-only with sparse percussion.
2026-10-13 20:36:21 +08:00
William ddbe0e813c fix(motion): bundle gallery covers for fresh branch checkouts 2026-10-13 18:54:20 +08:00
424f5c68cc fix(od-next): remove output-contract gates and unblock continuation (#8356)
* fix(od-next): continue plans with keyed markers and honor explicit deliverables

* fix(od-next): retire output contracts and hand off continued tasks

* fix(od-next): record round settlement and recover production cold

* fix(od-next): resume marker sessions with context deltas

* fix(od-next): separate completion facts and honor plan-only intent

* fix(od-next): preserve physical failures and legacy chat compatibility

* test(web): align run recovery fixtures and await campaign mount

* fix(od-next): tolerate terminal production marker formatting

* fix(od-next): unblock follow-ups after a stop or unreadable history (#8423)

Treat a previous task this build cannot read as absent so the follow-up starts a new task, and stop counting a Run with a pending cancel as holding its conversation. Add end-to-end coverage for the marker continuation flow and restore the remote Workspace directory gate cases.

* docs: clarify focused local validation

Keep local daemon and web validation scoped to affected files and integration boundaries. Reserve full suites for PR CI unless the user explicitly requests them.

* fix(web): scope folded task completion to its final run

Keep the final physical Run key and conclusion together when OD Next history is folded or accumulated live. Reuse the existing predecessor offsets while retaining the full display history and remaining Todo snapshot.

Add regression coverage for completed and unfinished production, live continuation, multiple Runs, legacy history, wrong and quoted markers, question handoff, and failed or canceled Runs.

Validated the parent regression before the fix, 165 focused Web tests, workspace typecheck, and guard.

* fix(od-next): compact historical context without restricting clarification

Reuse confirmed artifact summaries for old assistant history, preserve cross-agent plans and original requests, and represent earlier questionnaires as neutral historical information without inferring answers.

Keep user replies, skips, changed answers, unpersisted bodies, examples, and unfamiliar content intact. Do not add question repetition checks, output gates, repair rounds, or limits on clarification.

Validated red regressions, shared context and Web provider tests, focused handoff/resume/cold-production coverage, real server and fake CLI input, workspace typecheck, and guard. The repeated-question server fixture remains successful.

---------

Co-authored-by: bone3deep1962-collab <bone3deep1962@gmail.com>
Co-authored-by: Cheems <hihicheems@gmail.com>
Co-authored-by: Cheems <94773058+itscheems@users.noreply.github.com>
2026-10-13 10:32:45 +00:00
William 3de7852e4d feat(motion): give the visual lesson the original's paper-collage texture 2026-10-13 15:49:57 +08:00
zhouzheng b9288317c3 fix(discovery): distinguish video rendering from editable animation delivery 2026-10-13 15:29:00 +08:00
William 2e50fece5a feat(motion): make the product promo mascot talk, add a speaking score and the flow pop 2026-10-13 15:26:57 +08:00
zhouzheng 808dd9c736 fix(discovery): avoid implementation-only skills and false video delivery 2026-10-13 15:03:28 +08:00
William 27e791bd75 feat(motion): sharpen the showreel opener, depth, truchet and end card 2026-10-13 14:54:28 +08:00
William 108b5d3ef1 fix(motion): pick gallery cover frames that survive the baker's capture delay 2026-10-13 14:47:01 +08:00
William 03ccb720b8 refactor(motion): rebuild The Future Is Already Here as readable, editable scene code 2026-10-13 14:41:47 +08:00
William 37388b42a9 feat(motion): give the product promo a livelier mascot girl 2026-10-13 14:35:15 +08:00
William 7536d1e2fa feat(motion): give the showreel the Open Design palette and a full-size stacked wordmark 2026-10-13 14:14:25 +08:00
zhouzheng 402b609a86 fix(discovery): require skill reads before copying reference artifacts 2026-10-13 13:18:35 +08:00
zhouzheng 9ef277979f fix(discovery): distinguish reference recreation from new prototypes 2026-10-13 13:04:57 +08:00
William 27275f0bf2 Merge remote-tracking branch 'origin/feat/motion-design-skill' into william/motion-templates
# Conflicts:
#	plugins/_official/examples/motion-energy-reel/example.html
#	plugins/_official/examples/motion-pixel-wizard/example.html
2026-10-13 12:42:48 +08:00
William 144e6fe812 feat(motion): replace two motion templates with a product promo and a visual lesson; sign the showreel as Open Design 2026-10-13 12:42:19 +08:00
zhouzheng 820939f3bb fix(od-next): retain live list containers for empty source data 2026-10-12 19:51:34 +08:00
bone3deep1962-collab 6b2c8c7ff2 fix(motion): isolate preview and audio export from legacy HyperFrames 2026-10-12 19:50:14 +08:00
zhouzheng 7632116a51 fix(od-next): distinguish source refresh from preview reload 2026-10-12 19:43:02 +08:00
zhouzheng dcba43c8f1 fix(od-next): route refreshable sources and preserve live templates 2026-10-12 19:33:43 +08:00
William 75e4f62e37 docs(motion): drop the routine music note from make-same replies 2026-10-12 18:59:41 +08:00
William 5aee5ee636 Merge remote-tracking branch 'origin/feat/motion-design-skill' into william/motion-templates 2026-10-12 18:55:04 +08:00
bone3deep1962-collab 0210a28088 Merge commit 'refs/pull/8619/head' of https://github.com/nexu-io/open-design into feat/motion-design-skill 2026-10-12 18:33:52 +08:00
William 085cfb1cb5 docs(motion): let template sound rules lead the general policy and freeze the audio contract 2026-10-12 18:32:50 +08:00
bone3deep1962-collab 50c54bd918 chore(motion): version the audible looping delivery profile 2026-10-12 18:31:43 +08:00
William ea2e6e485f Merge remote-tracking branch 'origin/feat/motion-design-skill' into william/motion-templates 2026-10-12 18:28:46 +08:00
William 6e61ae5d74 docs(motion): state explicit soundtrack rules for make-same and the music line in replies 2026-10-12 18:28:44 +08:00
bone3deep1962-collab c58682ee4d feat(motion): autoplay looping HTML without a player bar 2026-10-12 18:16:03 +08:00
bone3deep1962-collab 074948229d Merge commit 'refs/pull/8619/head' of https://github.com/nexu-io/open-design into feat/motion-design-skill 2026-10-12 18:07:00 +08:00
zhouzheng 97af8c84bf fix(od-next): preserve planning intent and make agent CLI probes inert 2026-10-12 18:04:42 +08:00
William 3743b67ba5 feat(motion): keep remake soundtracks by default and fade exported audio where it stops 2026-10-12 17:57:47 +08:00
bone3deep1962-collab c57b789832 fix(motion): plan suitable sound and synchronize source audio playback 2026-10-12 17:51:20 +08:00
zhouzheng f6df446afd fix(od-next): maintain discovery prompt assets in English 2026-10-12 17:31:26 +08:00