Open Design 0.21.0 — Reliable, Start to Finish
- Support for DeepSeek Harness release line in agent connections
- DeepSeek V4 Flash Vision Exp is unlimited on Go, Plus, Pro and Max plans
- OD_MCP_STDIO_IDLE_EXIT_MS environment variable configures the stdio MCP idle lifetime; 0 keeps the process alive until the client disconnects and values up to 24 hours are supported
- Coding Plan model availability and unlimited badges now follow the live, authenticated entitlement list instead of a hard-coded tier snapshot
- The public Pricing page follows the signed-in subscription's interval and state, disables moves checkout would reject, and makes plan and model details easier to expand and compare
- Go is marked sold out for new purchases and the client no longer shows its old campaign badge or welcome modal
- Every community entry now leads to Discord, including Chinese desktop, site and documentation surfaces that previously split the community across Feishu and Discord
- The account avatar menu pins open on first click and closes explicitly on second click, Escape, outside press or navigation
- Empty Skills sources disappear from the filter and return automatically when they contain something to browse
- Multi-file Electron previews resolve relative scripts, styles, images, modules, imports and requests; active previews stay warm across project, file and Code/Preview switches instead of navigating into a white frame
- The viewport menu closes when the preview itself is clicked and presentation mode has a working exit control
- Agent connections no longer fail when an earlier executable on PATH is stale; OpenDesign continues searching and provides diagnostic and repair actions when nothing can launch
- Kimi now works on version 0.37 and newer by sending only the transports each Kimi build accepts instead of stdio MCP transport
- Relaunching the app recovers from a stale local engine left behind by a crash that could hold the app's socket
- The daemon and web processes shut down with the desktop app instead of persisting and haunting the next launch
- AI Optimize runs once instead of twice when the action is clicked multiple times; the client stops duplicates before they start and the daemon enforces the single-run boundary across tabs and external clients
- Website Clone no longer leaves its localized prompt behind when navigating to other creation modes
From open-design
🌟 Codename: Reliable, Start to Finish
🛡️ 42 PRs · 13 contributors · 4 days — From Agent connections to live HTML previews and app relaunches, Open Design 0.21.0 makes the entire creation experience more reliable—and easier to recover when something goes wrong. 🚀
🔥 Highlights
-
🖼️ HTML previews stay visible, live and correctly wired. Multi-file artifacts keep their scripts, styles, images, modules and relative requests; switching projects, files or Code/Preview no longer sends Electron through the navigation races that could leave a complete document painted as a white frame. Presentation mode also gains a dependable way out, and clicking the preview dismisses its viewport menu like clicking anywhere else. (#7336, #7358) Thanks @lefarcen.
-
🧰 A working agent no longer disappears behind a broken shim. OpenDesign keeps searching when an earlier executable on PATH is stale, leaves a real diagnostic and repair action when nothing can launch, and supports the DeepSeek Harness release line users actually receive. The one-line installer finishes instead of getting trapped in dependency resolution. (#7153, #7339) Thanks @lefarcen.
-
🌙 Kimi works again on 0.37 and newer. Those releases stopped accepting the stdio MCP transport that OpenDesign attached to every session, turning nearly every run into an opaque handshake error. OpenDesign now sends only the transports each Kimi build accepts, so a message produces a streamed reply again instead of failing before the work begins. (#7313) Thanks @lefarcen.
-
🚪 Relaunching the app recovers from a stale local engine. A web sidecar left behind by a crash could hold the app's socket and make every later launch quit at startup. OpenDesign now reclaims that stale owner safely, and its daemon and web processes shut down with the desktop app instead of haunting the next launch. (#7279) Thanks @mrcfps.
-
🤖 Coding Plan model access follows the account you are actually signed into. The model picker and unlimited-use badges now read the authenticated entitlement list instead of relying on a hard-coded tier snapshot. DeepSeek V4 Flash Vision Exp also joins the unlimited lineup across paid Personal plans, with clearer activation guidance when an older client has not picked up the entitlement yet. (#7289, #7250) Thanks @Siri-Ray.
-
🧠 AI Optimize runs once, even when the click happens twice. Two entry points could start the same hidden design-system refinement within milliseconds, charging twice and racing to rewrite the same files. The client now stops the duplicate before it leaves, and the daemon enforces the same single-run boundary across tabs and external clients. (#7271) Thanks @lefarcen.
-
💳 Pricing actions now tell the truth before checkout does. Current interval, pending changes, cancellation state, unavailable moves and Team billing all appear where the decision is made. Go is clearly sold out, its old in-app campaign is gone, and the remaining DeepSeek campaign gives paid and unpaid users one consistent path instead of competing promotions. (#7228, #7239, #7240, #7352, #7361) Thanks @Siri-Ray.
-
🌐 Website Clone leaves its prompt behind when you leave the tab. The localized “clone this site” scaffold no longer follows you into Slide Deck, Image, Document, HyperFrames, Video or Audio. Add your own URL and the draft is still yours; leave the guide untouched and the next creation mode starts clean. (#7344) Thanks @lefarcen.
-
🔌 Long-running MCP sessions can stay alive as long as the work requires. The familiar 30-minute idle behavior remains the default, while
OD_MCP_STDIO_IDLE_EXIT_MScan choose a longer boundary — up to 24 hours — or disable idle exit for clients that deliberately keep a session quiet between calls. (#7288) Thanks @huytdps13400.
✨ Added
🧠 Agents, runtimes and automation
OD_MCP_STDIO_IDLE_EXIT_MSconfigures the stdio MCP idle lifetime;0keeps the process alive until the client disconnects. (#7288) Thanks @huytdps13400.
🔑 Models, plans and media
- Coding Plan model availability and unlimited badges now follow the live, authenticated entitlement list. (#7289) Thanks @Siri-Ray.
- DeepSeek V4 Flash Vision Exp is unlimited on Go, Plus, Pro and Max, and the Pricing page explains how to refresh a delayed entitlement on older clients. (#7250)
🔁 Changed
- The public Pricing page follows the signed-in subscription's interval and state, disables moves checkout would reject, restores the account entry where billing context matters, and makes plan/model details easier to expand and compare. (#7228, #7239, #7240) Thanks @Siri-Ray.
- Go remains visible to existing subscribers but is marked sold out for new purchases; the client no longer shows its old campaign badge or welcome modal. (#7352, #7361) Thanks @Siri-Ray.
- Every community entry now leads to Discord, including the Chinese desktop, site and documentation surfaces that previously split the community across Feishu and Discord. (#7295) Thanks @joeylee12629-star.
- The account avatar's first click now pins its menu open; a second click, Escape, an outside press or navigation closes it explicitly. (#7330) Thanks @Siri-Ray.
- Empty Skills sources disappear from the filter and return automatically when they contain something to browse. (#7298) Thanks @nettee.
🐛 Fixed
🎨 Studio, previews and export
- Multi-file Electron previews resolve relative scripts, styles, images, modules, imports and requests; active previews stay warm across project, file and Code/Preview switches instead of navigating into a white frame. (#7336) Thanks @lefarcen.
- The viewport menu closes when the preview itself is clicked, presentation mode has an exit control that still works after focus enters the slide, and version history says clearly when a preview opens in a new window. (#7358) Thanks @lefarcen.
- Headless and container deployments no longer offer a PPTX export path that their daemon cannot render; desktop keeps the export, and connection failures stop masquerading as missing capability. (#7224) Thanks @jiulongche.
- The Website Clone starter text returns the composer to empty when untouched, stays when the user adds a URL, and is localized across the supported creation surfaces. (#7344) Thanks @lefarcen.
🧠 Agents, runtimes and conversations
- DeepSeek Harness detection walks past broken PATH shims, keeps unusable agents
visible with a diagnostic and repair action, and accepts the current
0.1.1-rc.xline. (#7153, #7339) Thanks @lefarcen. - Kimi 0.37+ sessions omit the stdio MCP transport those builds reject, restoring normal ACP startup and streamed replies. (#7313) Thanks @lefarcen.
- Antigravity receives the real user prompt instead of a literal
-. (#7205) Thanks @mturac. - Native resume and transcript replay now share one cross-agent safety decision: resume only when the stored session still matches the visible conversation; otherwise clear the stale handle and reseed once with the full transcript. (#5269) Thanks @alucero270.
- ACP usage, session-info and command metadata no longer leak into the visible conversation as raw status text. (#7309) Thanks @helsome.
- An ACP stage timeout keeps the real silence duration and names the watchdog that ended the run, making a costly stall diagnosable instead of looking like the user interrupted it. (#7310) Thanks @lefarcen.
- Design-system AI Optimize admits one active refinement per conversation, so a double click, another tab or an external client cannot create a duplicate billed run against the same files. (#7271) Thanks @lefarcen.
🖥️ Desktop, navigation and interface polish
- Packaged clients reclaim an unresponsive web sidecar during startup and clean up their daemon and web children when the desktop owner exits. (#7279) Thanks @mrcfps.
- Foreground failures no longer raise a redundant system notification while the result is already on screen; background notifications and enabled completion sounds keep their existing behavior. (#7329) Thanks @Siri-Ray.
- The account menu remains open after its avatar is clicked, Local CLI choices align consistently during onboarding, and empty Skills source filters stay out of the way. (#7330, #7338, #7298) Thanks @Siri-Ray, @lefarcen, @nettee.
- DeepSeek campaigns use the official provider mark with an accessible, readable fallback when the image cannot load. (#7326) Thanks @Siri-Ray.
💳 Plans and campaigns
- Pricing actions follow the real subscription state and interval before sending anyone to checkout; pending, canceling, unavailable and downgrade states are explicit. (#7239) Thanks @Siri-Ray.
- Model ordering, plan copy, recommendation colors and campaign colors now stay consistent between Pricing and the homepage. (#7228) Thanks @Siri-Ray.
- Go no longer offers a checkout after inventory closed, and the local client stops surfacing its retired campaign alongside the active DeepSeek offer. (#7352, #7361) Thanks @Siri-Ray.
🙏 Thanks to everyone who shipped 0.21.0
@alucero270 · @helsome · @huytdps13400 · @jiulongche · @joeylee12629-star · @lefarcen · @mrcfps · @mturac · @nettee · @OctoBored · @PerishCode · @Siri-Ray · @UnknownObject777