[OPEND-4712] fix(desktop): refresh macOS window rendering after display and wake changes (#9295)
[OPEND-4712] fix(desktop): refresh macOS window rendering after display and wake changes
[OPEND-4712] fix(desktop): defer display refresh until window gestures settle
A scale change while dragging across displays was dropped because the window was busy. Keep those reasons and refresh once the gesture settles. Also clear busy after a gesture start that never produces move or resize events, so a title-bar click cannot disable the refresh.
- [OPEND-4712] fix(desktop): keep in-flight window transitions and normalize page zoom
- Restore the pulse bounds only while the window still has the bounds the pulse applied, so a maximize, fullscreen, or system resize landing during the frame interval is kept; vibrancy is still restored.
- Send the window’s page zoom with display refresh events and compare renderer DPR / zoom against the native scale with a small tolerance, so View > Zoom no longer reports scale_mismatch. Record page_zoom separately.
Co-authored-by: heggria bshengtao@gmail.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
OpenDesign: The 1st Collaborative AI Design Agent Workspace
Website · Download · OpenDesign Cloud · Discord · Follow @OpenDesignHQ
English · Español · Português · Deutsch · Français · 简体中文 · 繁體中文 · 한국어 · 日本語 · العربية · Русский · Українська · Türkçe · ภาษาไทย
What is OpenDesign
OpenDesign is the 1st collaborative AI design agent workspace. Start with a brief, then use your coding agent or OpenDesign Cloud to create a prototype that follows your design system. Share it with your team for feedback, and let your agent refine it in the same project.
That workflow is open and extensible. OpenDesign is licensed under Apache 2.0 and gives teams skills, design templates, design systems, and plugins they can inspect and adapt to their own process.
Product tour
Core pages
Home — start with a brief or an example.
All projects — revisit design systems, media, and prototypes.
Design Systems — inspect brand assets and refine them with an agent.
Plugins — find skills and launch them with
Try it.Studio — create and refine in one project
Prototype — build and refine interactive web experiences with your agent and live preview.
Slides — create decks, review slides and speaker notes, and export when ready.
Image — generate visual assets from the conversation, inspect the result, then download or open it.
HyperFrames — create motion graphics with your agent and export to MP4. Watch the video.
Platform Compatibility
od mcp install claudeod mcp install claude-desktopod mcp install codexod mcp install reasonixod agent setup deepseek-harnessod mcp install ravenod mcp install cursorod mcp install copilotod mcp install copilotod mcp install opencodeod mcp install openclawod mcp install antigravityod mcp install clineod mcp install traeod mcp install kimiod mcp install kirood mcp install piod mcp install vibeod mcp install hermesFor DeepSeek Harness, install the official
dshCLI first, then select it in OpenDesign or runod agent setup deepseek-harnessto install/repair OD’s connection component. For MCP integrations:od mcp install <agent> --printfor a dry-run preview ·--uninstallto remove · full list withod mcp install --help.¹ Automatic MCP configuration for Claude Desktop is currently supported on macOS and Windows only.
No CLI installed? The BYOK proxy at
POST /api/proxy/{anthropic,openai,azure,google,ollama,senseaudio}/streamgives you the same loop (no process spawn) — pastebaseUrl+apiKey+model, with presets for OpenAI, Atlas Cloud, Anthropic, Azure OpenAI, Google Gemini, Ollama, LM Studio, vLLM, or any OpenAI-compatible endpoint. Atlas Cloud useshttps://api.atlascloud.ai/v1with your own key and OpenAI-compatible model ids such asqwen/qwen3.5-flash. Per-target SSRF protection blocks internal IPs / link-local / CGNAT at the daemon edge.Runtime definitions live in
apps/daemon/src/runtimes/defs/, with registration and shared stream handling underapps/daemon/src/runtimes/. Seedocs/agent-adapters.mdfor the adapter contract.Demo
Four core product categories, all rendered by a coding agent running on your laptop. Click a thumbnail to see the real example.
1 · Prototypes — web · desktop · mobile
The default output surface. Single-page HTML artifacts that read your
DESIGN.mdand render in a sandboxed iframe.Web prototype — an editorial dashboard with scrollbars, KPIs, and charts. Rendered straight from
design-templates/dating-web/.Mobile app prototype — a three-screen gamified flow with XP ribbons and quest detail. Hand off straight to Cursor / Codex / Claude Code to turn into React/Next/Vue.
2 · Live artifacts & dashboards
Live dashboards, decision rooms, KPI walls — single-page artifacts that pull data through a tweaks panel and stay editable in place.
Live dashboard — an editable KPI wall whose tweaks panel surfaces the parameters worth nudging. The agent emits a manifest, and the iframe re-renders without a reload.
Decision room — a multi-source briefing artifact for product / research / ops meetings.
GitHub-style dashboard — repo metrics presented as a live artifact.
Flow live-dashboard template — a domain-specific KPI template, branded through the active
DESIGN.md.3 · Decks — magazine decks, weekly updates, pitches
Deck mode (guizang-ppt) — magazine layouts, WebGL hero, P0/P1/P2 checklists. Bundled verbatim from
op7418/guizang-ppt-skillwith its original license preserved.Swiss International-style deck — grid-anchored, monochrome accents. One of 15 deck templates and 36 themes under
design-templates/html-ppt-*/.Every deck exports to HTML (single file, inlined assets), PDF (browser print, deck-aware), PPTX (agent-driven skill), ZIP (archive), or Markdown.
4 · Images —
gpt-image-2, ImageRouter, custom APIIllustrated city food map
Hand-drawn editorial travel poster
Cinematic elevator scene
Single-frame editorial still
Cyberpunk portrait
Profile avatar — neon face text
3D stone staircase
Hewn-stone infographic
Glamorous portrait
Editorial studio shot
93 ready-to-replicate prompts live in
prompt-templates/— preview thumbnails, full prompt body, target model, aspect ratio, and source attribution. One click drops a brief into the composer.5 · Video & HyperFrames — agent-native motion graphics
HyperFrames is HeyGen’s open-source, agent-native video framework, integrated as a first-class citizen in OpenDesign. The agent writes HTML + CSS + GSAP, and HyperFrames renders it to a deterministic MP4 via headless Chrome + FFmpeg. Pair it with Seedance 2.0 for cinematic t2v / i2v, Veo 3 / Sora 2 / Kling 2 for routed model variants, and Suno v5 / Lyria 2 for the audio layer.
30s SaaS product promo · 16:9 · UI 3D reveals
TikTok karaoke talking-head · 9:16 · TTS + word-synced captions
30s brand sizzle reel · 16:9 · audio-reactive kinetic type
Bar chart race · 16:9 · NYT-style data infographic
Flight map · 16:9 · Apple-style route reveal
4s cinematic logo outro · 16:9 · piece-by-piece assembly + bloom
$0 → $10K money counter · 9:16 · Apple-style hype
Website-to-video · 16:9 · captures the site at 3 viewports
11 HyperFrames templates + 39 Seedance prompts ship with the repo. Catalog thumbnails © HeyGen; the framework is Apache-2.0. The OD-specific render workflow (composition cache, sandbox-exec workaround, MP4-as-chip) is detailed in
design-templates/hyperframes/.Why OpenDesign
claude/codex/cursor-agent/copilot/hermes/kimialready on yourPATHare the design engine. Swap with one click.DESIGN.mdas the core brand contract. 151 design-system packages ship with the repo; legacy packages may beDESIGN.md-only, while newer packages can addmanifest.json,tokens.css, components, assets, and provenance. Drop a folder in, the picker finds it.AGENTS.md→ Daemon data directory contract. This README MUST NOT restate it.gitrepo +DESIGN.mdto the agent and it refactors your real components to the brand spec.Quick start
🖥️ Download the desktop app (recommended — zero config)
The fastest way to use OpenDesign. No Node, no pnpm, no clone.
After install: the app auto-detects every coding-agent CLI on your
PATH, loads 100+ functional skills, the separate rendering-template catalog, and 151 design systems, and lets you type a brief in the entry view.🤖 Install into your coding agent (no UI)
You can use OpenDesign without ever opening the GUI — call it as a skill, plugin, or MCP server inside Claude Code, Codex, Cursor, Copilot, OpenClaw, Antigravity, Hermes, Kimi, and more.
If you installed the macOS desktop app via the DMG or Homebrew cask, your shell may still resolve
odto Apple’s built-in/usr/bin/odoctal-dump utility. In that case, open Settings → MCP server in the desktop app and copy the client-specific snippet; it uses absolute paths and does not rely on the bareodcommand.install.shis a thin shell wrapper aroundod mcp install; it exists so the hosted URL returns shell instead of the landing-page HTML fallback and fails fast if your shell resolves a non-Open-Designodbinary.Then, inside the agent:
In a filesystem-backed local CLI run, the agent composes the selected functional skill or design template with your
DESIGN.md, writes the canonical project files, and OpenDesign previews those files. A BYOK/plain-API run without filesystem tools instead returns one complete<artifact>block.🐳 Run with Docker
If the browser asks for credentials, use
open-designas the username and theOD_API_TOKENvalue fromdeploy/.envas the password. This keeps Docker bridge traffic authenticated without requiring host networking. API clients can keep usingAuthorization: Bearer <OD_API_TOKEN>.🚀 Deploy on Sealos
The Sealos App Store template runs the published OpenDesign Docker image with persistent workspace storage and Basic Auth on the public proxy. For custom public or shared Docker deployments, follow the reverse-proxy and
OPEN_DESIGN_ALLOWED_ORIGINSguidance indeploy/README.md.🧑💻 Run from source
Open the URL printed by
tools-dev; development ports are allocated dynamically unless you pass explicit port flags.Node
~24, pnpm10.33.x. WSL2 users, seedocs/wsl-setup.md; native Windows users, seedocs/windows-troubleshooting.md. Full quickstart, env vars, and packaged build flow →QUICKSTART.md.A full workflow — from brief to artifact
brief → plugin → direction → design system → artifact → handoff → memoryDESIGN.md.DESIGN.mdare bound. Filesystem-backed CLI runs write canonical project files and the preview follows them; BYOK/plain-API runs without file tools return one complete<artifact>block.Use OpenDesign from your coding agent
OpenDesign ships a stdio MCP server and per-agent install scripts. Any MCP-compatible agent in another repo can read files from your local OpenDesign projects directly — tokens CSS, JSX components, entry HTML — as a structured API queryable by name. The agent always sees the live file, not a stale export.
Why MCP? Exporting and re-attaching a zip every iteration breaks flow. MCP exposes the design source directly — the agent always sees the live file.
For an agent starting from scratch, the installer places
~/.config/<agent>/open-design.json(or the platform equivalent) plus a copy-paste MCP snippet. Cursor gets a one-click deeplink; Claude Code gets aclaude mcp add-jsonone-liner; every other agent gets JSON in the schema its config expects. On macOS desktop installs, prefer that Settings snippet over typing bareod mcp install <agent>in Terminal, because/usr/bin/odmay win on PATH. Full per-agent flow → Settings → MCP server in the desktop app, ordocs/agent-adapters.md.Security model. Read-only by default, the daemon binds to
127.0.0.1, and SSRF is blocked at the proxy edge. LAN exposure requires an explicitOD_BIND_HOSTplusOD_ALLOWED_ORIGINS. Connector credentials and live-artifact preview routes stay loopback-only regardless.Internally-hosted model endpoints. To prevent SSRF, the daemon blocks provider base URLs that resolve to private/internal address ranges (RFC1918, link-local, CGNAT, and cloud-metadata IPs) by default, surfacing
Internal IPs blocked. If you run an internally-hosted gateway (e.g. LiteLLM or Ollama on a VPN-only10.x/192.168.xaddress), opt that host out withOD_ALLOWED_INTERNAL_HOSTS=<host1>,<host2>,...— a comma- or whitespace-separated list of bare hostnames or IPs (10.0.0.5,litellm.internal.corp; ahost:portor full URL is accepted and reduced to its hostname; IPv6 must be bracketed, e.g.[fd00::1]). The allowlist is strict opt-in (empty by default), exact-host (no subdomain/substring matching), and applies only to provider endpoints you configure (connection test, model discovery, BYOK chat). It deliberately does not relax the guard on download URLs returned inside upstream responses, which stay blocked. A malformed entry — or CIDR notation, which is not supported — is dropped with a warning rather than silently trusted, so a typo never quietly widens (or fails to widen) the guard. Allowlisting a hostname trusts whatever it resolves to (likeOD_ALLOWED_ORIGINS); allowlist the resolved IP instead if you want the DNS-resolved address re-checked.Skills and design templates
100+ functional skills ship in
skills/. Each follows the Agent SkillsSKILL.mdconvention and supplies reusable agent behavior, references, or utilities. Renderable starters live separately indesign-templates/; they may also useSKILL.md, but they populate the design-template catalog rather than the functional-skill registry.Two modes anchor the design-template catalog:
prototype(web/mobile/desktop single-page artifacts) anddeck(horizontal-swipe presentations). Other templates coverimage,video,audio, and utility surfaces. Thescenariofield groups templates by audience:design·marketing·operation·engineering·product·finance·hr·sale·personal.web-prototypesaas-landingdashboardmobile-appmobile-onboardingsocial-carouselemail-marketingmagazine-postermotion-framessprite-animationpm-specteam-okrseng-runbookfinance-reporthr-onboardingguizang-ppthtml-ppt-*design-templates/html-ppt/)hyperframescritiquetweaksFull protocol and directory split →
docs/skills-protocol.md. Registry endpoints:GET /api/skillsfor functional skills andGET /api/design-templatesfor rendering templates.Design Systems
151 brand-grade design-system packages centered on
DESIGN.mdship with the repo. Legacy packages may contain only that Markdown contract; newer packages can also carrymanifest.json, compiledtokens.css, component fixtures, assets, and provenance evidence. The catalog mixes upstream-derived systems with project-owned additions;design-systems/README.mdrecords the package shape and provenance. Switch a system → the next render uses the new tokens.Full catalog (click to expand)
AI & LLM —
claude·cohere·mistral-ai·minimax·together-ai·replicate·runwayml·elevenlabs·ollama·x-aiDeveloper Tools —
cursor·vercel·linear-app·expo·clickhouse·mongodb·supabase·hashicorp·posthog·sentry·warp·sanity·mintlify·composio·opencode-ai·voltagentProductivity —
notion·miro·airtable·superhuman·intercom·zapier·cal·clay·raycastFintech —
stripe·coinbase·binance·kraken·mastercard·revolut·wiseE-commerce —
shopify·airbnb·uber·nike·starbucks·pinterestMedia —
spotify·playstation·wired·theverge·metaAutomotive —
tesla·bmw·ferrari·lamborghini·bugatti·renaultOther —
apple·ibm·nvidia·vodafone·resend·spacexStarters —
default(Neutral Modern) ·warm-editorialRe-import the library via
scripts/sync-design-systems.ts. Add your own brand → drop aDESIGN.mdintodesign-systems/<brand>/. Full guide →design-systems/README.md.Plugins
277 official plugins plus 183 remixable reference examples live in
plugins/_official/. Each entry is a portable plugin directory anchored byopen-design.jsonplus the payload required by its type: for exampleSKILL.mdfor agent workflows,template.jsonfor media templates, orDESIGN.mdfor design-system entries. Jump straight to a category:scenarios/od-default,od-design-refine,od-figma-migration,od-code-migration,od-react-export,od-nextjs-export,od-vue-export,od-media-generation,od-new-generation,od-tune-collab,od-plugin-authoring,od-share-to-community,od-web-effect-extractorimage-templates/video-templates/design-systems/DESIGN.mdwrapped as pluginsatoms/examples/Also
plugins/community/for community plugins andplugins/registry/for the publishing flow.What plugins can do
od-figma-migration.gitrepo +DESIGN.md, get a PR. Seeod-code-migration.Using plugins
Plugins are at full parity across the web UI and the
odCLI — same/api/pluginsendpoints, pick whichever fits.In the desktop / web app: open the Plugin page to browse the marketplace and click Install; inside a project’s Studio, plugins appear as composer chips you click to apply (with the inputs they declare).
On the command line (runs without a UI — this is the path external agents use):
Every command supports
--json, so you can pipe it throughjq/xargsinto automation.Building a plugin
An OpenDesign plugin requires
open-design.jsonplus the payload required by its type. A workflow skill or scenario also includesSKILL.md; manifest-only template and design-system entries use their own payloads instead:Core
open-design.jsonfields:specVersion(currently1.0.0),name(stable ID),version(semver), optionalcompat.agentSkills[].path(points at./SKILL.mdwhen the entry exposes an Agent Skill),od.kind(skill/scenario/atom/bundle),od.taskKind(new-generation/figma-migration/code-migration/tune-collab),od.mode(the output surface, e.g.prototype/deck/live-artifact/image/video/hyperframes/audio/design-system/scenario),od.capabilities[](declare the minimum — a restricted install grants onlyprompt:injectby default),od.inputs[](apply-time parameters).Scaffold + validate locally:
Full field set and runtime contract →
plugins/spec/SPEC.md; developing a plugin with a coding agent →plugins/spec/AGENT-DEVELOPMENT.md; copy-paste minimal templates →plugins/spec/examples/.Contributing a plugin
plugins/community/(third-party plugins), or — to ship it bundled with OpenDesign — into the matching tier ofplugins/_official/.od plugin validate,pnpm guard,pnpm --filter @open-design/plugin-runtime typecheck.plugins/spec/CONTRIBUTING.md(ID, version, lane, mode, capabilities, trigger examples; attach a screenshot / preview for visual plugins).plugins/spec/PUBLISHING-REGISTRIES.md.Plugin registry endpoint:
GET /api/plugins. Directory overview →plugins/README.md(简体中文).Architecture
better-sqlite3AGENTS.md→ Daemon data directory contract. This README MUST NOT restate it.<artifact>block into a sandboxedsrcdociframepnpm tools-dev(start / stop / run / status / logs / inspect / check)Full architecture →
docs/architecture.md. Skill protocol →docs/skills-protocol.md. Agent adapter contract →docs/agent-adapters.md.Roadmap
/api/proxy/{anthropic,openai,azure,google,ollama,senseaudio}/stream) with OpenAI-compatible presets including Atlas Cloud + SSRF guard/api/import/claude-design)DESIGN.mdsystemnpx od initto scaffold a project withDESIGN.mdod plugin {add,list,remove,test,publish}CLIDESIGN.md)Phased delivery →
docs/roadmap.md.Community
Real people behind every channel.
The
good-first-issueandhelp-wantedlabels are the easiest way in.Contributing
OpenDesign keeps moving because contributors — designers, engineers, prompt authors — keep showing up. Many of the most-used skills, design systems, and plugins were written by people outside the core team.
🎯 Where to start (max leverage, min change)
SKILL.md+ optionalassets/+references/skills/· spec indocs/skills-protocol.mdSKILL.mdbundledesign-templates/DESIGN.md; addmanifest.json,tokens.css, components, assets, or provenance when neededdesign-systems/<brand>/open-design.json+ the type-specific payload under a category folderplugins/community/· spec inplugins/spec/SPEC.md· agent dev guide inplugins/spec/AGENT-DEVELOPMENT.mdapps/daemon/src/runtimes/defs/good-first-issuelabelREADME.<lang>.mdfilesTRANSLATIONS.md🤖 Contributing as an agent
If you are the agent reading this, the fastest path is:
Full agent-friendly contribution flow, code style, and PR bar →
CONTRIBUTING.md(Deutsch · Français · 简体中文 · 日本語 · 한국어 · Português · ภาษาไทย).🏅 OpenDesign Fellow program
We’re recruiting OpenDesign Fellows around the world — Fellows shape the product alongside the core team, represent OpenDesign officially in their region, and grow the community locally, backed by funded support ($1,000 / MR), free LLM credits, and a direct review track. Details →
MAINTAINERS.mdand the announcement on Discord.Maintainers
They carry a lot of the load — daily maintenance, review, and community support.
@Nagendhra-web
Maintainer
@Sid-Qin
Maintainer
@YOMXXX
Maintainer
Maintainer rules, promotion criteria, and the exit protocol →
MAINTAINERS.md(also Deutsch · Français · 简体中文 · 日本語 · 한국어 · Português · ภาษาไทย).Contributors
Thanks to everyone who has taken part — code, docs, feedback, a sharp issue, a new skill, a new design system.
Repository activity
The SVG above is regenerated daily by
.github/workflows/metrics.ymlusinglowlighter/metrics.Star us
If this saved you thirty minutes, give it a ★. Stars don’t pay rent — but they tell the next designer, agent, and contributor that this experiment is worth their attention. One click, three seconds, a real signal.
References & lineage
alchaincyf/huashu-designop7418/guizang-ppt-skilldesign-templates/guizang-ppt/. Default for deck mode.lewislulu/html-ppt-skillOpenCoworkAI/open-codesignmultica-ai/multicaVoltAgent/awesome-design-mdDESIGN.mdschema and 70 upstream-derived systems; current packages may extend that baseline.bergside/awesome-design-skillsdesign-systems/.heygen-com/hyperframeshyperframes-htmlin OpenDesign.SKILL.mdconvention we adopt verbatim.Detailed provenance →
docs/references.md.License
Apache-2.0. Bundled skills and templates with their own
LICENSEfiles retain those licenses, includingdesign-templates/guizang-ppt/(MIT, @op7418),design-templates/html-ppt/(MIT, @lewislulu), andskills/web-clone/(MIT, @Jane-xiaoer).