🌟 Codename: Steady by Design
🧭 51 PRs · 13 contributors · 5 days — Start in Prototype, navigate every
slide with previews and notes in sync, and export editable PowerPoint files with
fonts and line breaks intact. We’ve also fixed an issue that could cause
generated artifacts to open to a blank screen. 0.19 filled the menu of things
you can make; 0.20.0 is the release that makes each of them hold — from the first
click on Home to the file you hand off.
🔥 Highlights
-
🧪 Home starts where most people actually start: a prototype. A fresh
composer opens on Prototype, and the creation list is now a stable,
product-owned set — Prototype, Slide deck, Image, Document, HyperFrames,
Website clone, Video, Audio, Live artifact, WebGL — instead of a list that
shifted with whichever plugins happened to be installed. Landing / marketing,
Dashboards, Mobile app, Wireframe, Apps, Developer tools, Brand / design and
Docs / reports are always there under Prototype, in every language, and
Community filters lead with prototypes too. (#6914, #6975, #6906, #6980) Thanks @Siri-Ray. -
🎞️ Editable PowerPoint keeps the design you approved. Imported Google
Fonts now travel into the file, authored line breaks stay where you put them
instead of reflowing in PowerPoint or WPS, and layered slide backgrounds
survive the trip. Source-mode export works again across development runtimes,
and titles containing$-style replacement sequences export verbatim rather
than losing characters. (#6840, #6845, #6921, #6947) Thanks @Siri-Ray, @dcrtorres, @cactusrabbit. -
🖼️ A deck thumbnail takes you to the slide it shows. Thumbnails, the main
stage, the page counter, speaker notes and the previous/next controls now move
as one — across both legacy and current decks — instead of the sidebar
advancing while the stage stayed on slide one. Thumbnail layout keeps the real
slide proportions, and remixing a deck from Community gives you a working
preview immediately. (#6950, #7095, #6996) Thanks @lefarcen. -
🩹 Generated artifacts stop opening to a blank screen. Switching files,
toggling Code/Preview, or moving between projects could leave a permanently
white canvas when Chromium aborted a retained preview navigation. Previews now
stay mounted and reusable across those switches, recover on their own when a
navigation is dropped, and load their fonts instead of falling back to a bare
page. (#7128, #7055, #7007) Thanks @lefarcen, @Siri-Ray. -
🎬 HyperFrames renders video from the app, not from your npm cache. Video
compositions now scaffold through Open Design and render with the HyperFrames
runtime pinned and packaged alongside the daemon, so a stale native artifact in
a user's npm cache can no longer break generation — and Windows packaged builds
ship it correctly. (#7030, #7132) Thanks @Siri-Ray. -
🌐 Website Clone uses the browser you already have. Cloning a site used to
spend minutes installing Playwright into every generated project, often failing
outright. It now drives an installed Chrome, Edge, or Chromium through an
isolated temporary profile, leaves your project untouched, and works the same
from the UI or fromodwith no client window open. (#7000, #7066) Thanks @lefarcen. -
🧑🤝🧑 A Workspace hiccup no longer takes your project with it. Files already
on your machine stay editable, runnable and shareable when the cloud directory
is briefly unreachable, a newly invited teammate can open a shared project
before every byte has transferred, public file shares survive a daemon restart,
and the workspace you were last in is the one you come back to. (#7027, #6989,
#7002, #7067) Thanks @lefarcen, @Siri-Ray. -
⚡ Refresh a long run without paying for the whole history again. Multi-minute
sessions still stream thinking and text live, but the transcript is now written
in durable append-only batches: reloads stay responsive, active runs rebuild
cleanly, and finished conversations stop accumulating an ever-growing rewrite
cost. (#6952) Thanks @lefarcen. -
🧹 Run Open Design's anti-slop check anywhere. The artifact linter that
guards work inside the app is nowod lint. Point it at a file or pipe stdin,
pick a failure threshold, and get readable or JSON findings without starting a
model — so headless agents and CI can catch weak defaults before anything is
exported. (#6959) Thanks @DojoGenesis. -
🛑 A failed run stops looking like a finished one. Repeated OpenCode shell
errors — including the PowerShell failures that used to slip through as
completed tools — now reach the loop guard, so Open Design can warn, stop, and
keep the real failure instead of ending on a green-looking result. Claude runs
that exceed the context window are named as such rather than reported as a
generic execution failure. (#6933, #7044) Thanks @YUHAO-corn, @Siri-Ray. -
🖼️ A refused image says it was refused. When a content-safety policy turns
down an image request, the reply now says so and points at the prompt or
reference image you can actually change — instead of sending you off to wait
for an outage that will never recover. (#6993) Thanks @alchemistklk. -
🌍 Switching AMR environments moves the whole app. Balance, Workspace
context, upgrade links and settings destinations now follow the profile you
picked — prod, test, or feature-test — without a restart, and an unmapped
destination fails closed rather than quietly opening the wrong environment.
(#6991) Thanks @AmyShang-alt. -
👤 Recent projects look like your workspace, not an anonymous list. Your own
projects carry your signed-in name and avatar instead of a generic "Me", and a
row's overflow menu flips upward near the bottom of the screen so every action —
Delete included — stays reachable. (#6857, #6971) Thanks @lefarcen, @Siri-Ray. -
🛡️ BYOK media downloads draw a firmer line around your machine. Image and
video URLs returned by an external provider can no longer steer the daemon back
into localhost, including through DNS tricks. Deliberately configured local
provider gateways keep working; untrusted asset responses no longer get the same
privilege. (#6072) Thanks @CVE-Hunter-Leo.
✨ Added
🧠 Agents, runtimes and automation
od lint <file.html|->brings artifact quality checks to headless agents,
scripts and CI, with configurable failure thresholds, stdin input and
machine-readable JSON output. (#6959) Thanks @DojoGenesis.- A short experience survey can appear after Open Design delivers an artifact,
with an "other" answer for anything the preset options miss. (#6999, #7117)
🏠 Home, Community and the site
- The DeepSeek Harness design collection gains six more curated plugins,
illustrated covers and a fuller setup-to-design tutorial. (#6903, #6943, #6945) Thanks @xne998808-ai, @joeylee12629-star. - The site publishes the 0.19.1 release, offers direct installer downloads, adds
the Hong Kong event recap and features Shanghai on Events. (#6901) Thanks @xne998808-ai. - READMEs carry a refreshed product tour across locales and a Feishu community
link. (#6922)
🔁 Changed
- Prototype is the default creation type for a fresh Home composer; a saved
choice or an explicit handoff still wins. Prototype scenes no longer depend on
the installed plugin catalog. (#6975, #6914) Thanks @Siri-Ray. - Completion sound and desktop notifications are on by default for new clients.
(#7038) - The result summary lists only the files actually delivered. (#7006) Thanks @Siri-Ray.
- Media-only models no longer appear in the chat model picker. (#7123) Thanks @alchemistklk.
- The structured design-system runtime introduced in 0.19.2 has been rolled back,
together with its CLI and API surfaces. Design systems return to the previous
manifest and prompt behavior while that workflow is reworked. (#7110) Thanks @lefarcen.
🐛 Fixed
🎨 Decks, export and previews
- Editable PPTX export embeds compatible imported fonts, preserves authored line
breaks and layered slide backgrounds; source-mode export no longer fails when
the runtime exposes the exporter through a different module shape. (#6840,
#6845, #6921) Thanks @Siri-Ray, @dcrtorres. - Export titles containing replacement-pattern sequences stay verbatim in PDF,
image and example exports. (#6947) Thanks @cactusrabbit. - Deck thumbnails, stage, page counter, speaker notes and previous/next controls
stay synchronized across older and current slide markup, and thumbnails keep
the slide's real proportions. (#6950, #7095) Thanks @lefarcen. - HTML and slide previews survive file-tab, Code/Preview and project switches,
recover from aborted navigations, and load their fonts. (#7128, #7055) Thanks @lefarcen. - Community deck remixes preview reliably, HTML card thumbnails are no longer
double-scaled, and the Home examples rail stops shifting after a restart.
(#6996, #7007, #7037) Thanks @lefarcen, @Siri-Ray.
🧠 Agents, workspaces and reliability
- Long streamed conversations persist incrementally, reload from durable batches
and compact cleanly when the run ends. (#6952) Thanks @lefarcen. - OpenCode preserves failed tool results and non-zero exits so repeated failures
reach the loop guard instead of masquerading as successful work. (#6933) Thanks @YUHAO-corn. - Claude prompt-too-long failures are classified as such. (#7044) Thanks @Siri-Ray.
- Vela image safety refusals reach the client as a refusal rather than a generic
outage. (#6993) Thanks @alchemistklk. - Workspace-bound projects stay usable during a directory outage and on a new
member's first open; workspace authority derives from project bindings; public
file shares and the last selected workspace survive a daemon restart. (#7027,
#6989, #7002, #7067) Thanks @lefarcen, @Siri-Ray. - AMR balance, Workspace context, upgrade links and settings links follow the
selected environment and stop safely when that environment has no trusted
destination. (#6991) Thanks @AmyShang-alt. - Execution diagnostics keep runtime usage attribution. (#7076) Thanks @lefarcen.
- Trace object authority is routed through Vela. (#6986) Thanks @Siri-Ray.
- External BYOK asset URLs cannot resolve to loopback addresses, while explicitly
configured local provider endpoints keep working. (#6072) Thanks @CVE-Hunter-Leo. - HyperFrames scaffolding and rendering no longer depend on an ambient
npx
install, and Windows packaging declares its native dependencies per platform.
(#7030, #7132) Thanks @Siri-Ray. - Website Clone starts a system browser instead of installing Playwright into
each generated project, from the UI and fromodalike. (#7000, #7066) Thanks @lefarcen.
🖥️ Home, plugins and interface polish
- Recent-project cards show the signed-in account identity, and list-row menus
choose the direction that keeps every action on screen. (#6857, #6971) Thanks @lefarcen, @Siri-Ray. - The community plugin detail page scrolls, and its modal dims the full app
chrome — account and GitHub controls included — instead of letting those float
above it. (#7070, #6912) Thanks @lefarcen, @Siri-Ray. - The Message Center close button is back. (#6992) Thanks @Siri-Ray.
- The project update-ready indicator behaves again. (#7004) Thanks @Siri-Ray.
- The landing page no longer repeats a pricing capability block. (#6913) Thanks @mrcfps.
🙏 Thanks to everyone who shipped 0.20.0
@alchemistklk · @AmyShang-alt · @cactusrabbit · @CVE-Hunter-Leo · @dcrtorres ·
@DojoGenesis · @joeylee12629-star · @kokisanai · @lefarcen · @mrcfps ·
@Siri-Ray · @xne998808-ai · @YUHAO-corn