Extends Open Design from web-only to a multi-modal creation tool. The
unifying contract is one code-agent loop driven by skills + project
metadata + prompt constraints; for non-web surfaces the agent shells
out to a single dispatcher (`od media generate`) that the daemon
routes per (surface, model).
- Types: new Surface union, MediaAspect / AudioKind, image/video/audio
ProjectKind + ProjectMetadata fields, video/audio ProjectFileKind.
- NewProjectPanel: top-level surface picker + Image / Video / Audio
forms with model, aspect, length, duration, voice, audio-kind pickers.
- ExamplesTab + DesignSystemsTab: surface filter row that scopes
before mode / scenario / category filters.
- FileViewer / FileWorkspace: native <video> and <audio> previews and
matching tab icons.
- Daemon: parses `od.surface` and `> Surface:` blockquotes; recognises
mp4 / webm / mov / mp3 / wav / ogg / m4a / flac extensions; spawns
agents with OD_BIN / OD_DAEMON_URL / OD_PROJECT_ID / OD_PROJECT_DIR
env so any code-agent CLI with shell access can call the dispatcher.
- daemon/media.js + daemon/media-models.js: surface-agnostic dispatcher
with stub providers that emit deterministic placeholder bytes
(1x1 PNG, valid mp4 ftyp, mp3 frame / silent WAV) so the framework
works without API keys; real provider integrations slot in later.
- daemon/cli.js: `od media generate --surface ... --model ...`
subcommand routes to POST /api/projects/:id/media/generate and
prints one JSON line for the agent to parse.
- prompts/media-contract.ts: hard contract pinned LAST in the system
prompt for image/video/audio surfaces — env vars, exact invocation,
registered model IDs per surface, six workflow rules. system.ts
metadata block updated to point at the contract.
- Seed skills: image-poster, video-shortform, audio-jingle each ship a
SKILL.md with `mode/surface: image|video|audio` and a stylized
example.html preview, and instruct the agent to dispatch via the
contract.
Made-with: Cursor
- Created .gitignore to exclude build artifacts and dependencies.
- Added index.html as the main entry point for the application.
- Included LICENSE file with Apache 2.0 terms.
- Initialized package.json and package-lock.json for project dependencies.
- Added pnpm-lock.yaml for package management.
- Created QUICKSTART.md for setup instructions.
- Added README.md and README.zh-CN.md for project documentation in English and Chinese.