1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/db843d5308715b0d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/57a7821a27a2c3c6.js"/>
1<script src="/_next/static/chunks/c64ff71af5c28fdf.js" async=""></script>
1<script src="/_next/static/chunks/0ddc073e96f04faa.js" async=""></script>
1<script src="/_next/static/chunks/c0a6b4e4b524b14e.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-f46330525102a1b1.js" async=""></script>
1<script src="/_next/static/chunks/d587964c0368e81b.js" async=""></script>
1<script src="/_next/static/chunks/2a1b2a6eb0a33ae8.js" async=""></script>
1<script src="/_next/static/chunks/bed1c58b2e289ce6.js" async=""></script>
1<script src="/_next/static/chunks/83f857d57711cbfe.js" async=""></script>
1<link rel="preload" href="/js/script.outbound-links.js" as="script"/><meta name="next-size-adjust" content=""/><title>Changelog | Overlay Studio</title><meta name="description" content="Latest updates, improvements, and fixes for Overlay Studio."/><link rel="canonical" href="https://overlay.studio/changelog"/><meta property="og:title" content="Overlay Studio"/><meta property="og:description" content="Design with your codebase - A User Interface design editor integrated with Visual Studio Code."/><meta property="og:image" content="https://www.overlay.studio/_next/static/media/og_image.abcaa27a.png"/><meta property="og:image:alt" content="Overlay Studio - Design with your codebase"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Overlay Studio"/><meta name="twitter:description" content="Design with your codebase - A User Interface design editor integrated with Visual Studio Code."/><meta name="twitter:image" content="https://www.overlay.studio/_next/static/media/og_image.abcaa27a.png"/><meta name="twitter:image:alt" content="Overlay Studio - Design with your codebase"/><link rel="icon" href="/_next/static/media/logo-bg.1b5701b4.png"/>
1<script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script>
1</head><body class="inter_dd475d0c-module__9A3jha__variable geist_mono_b4d4e0d7-module__vc6T-a__variable font-sans antialiased bg-background"><div hidden=""><!--$--><!--/$--></div>
1<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script>
1<nav aria-label="Main navigation" aria-hidden="false" class="fixed top-4 left-1/2 z-50 w-[calc(100%-2rem)] -translate-x-1/2 overflow-hidden rounded-[1.75rem] border bg-background/80 px-4 backdrop-blur-sm transition-[opacity,translate] duration-300 ease-out motion-reduce:transition-none min-[700px]:w-max min-[700px]:max-w-[calc(100%-2rem)] translate-y-0 opacity-100"><div class="flex h-14 items-center"><a aria-label="Overlay Studio home" class="shrink-0" href="/"><img alt="" width="649" height="165" decoding="async" data-nimg="1" class="block h-11 w-auto" style="color:transparent" src="/_next/static/media/logotype.6e6ede62.svg"/></a><span class="w-4 grow min-[700px]:w-20 min-[700px]:grow-0 min-[700px]:shrink-0"></span><div class="hidden shrink-0 items-center min-[700px]:flex"><a data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 gap-1.5 px-3 has-[>svg]:px-2.5" href="/changelog">Changelog</a><a target="_blank" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 gap-1.5 px-3 has-[>svg]:px-2.5" href="https://docs.overlay.studio">Docs<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right w-4 h-4 inline -ml-1"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a><button data-slot="dialog-trigger" class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-foreground text-background shadow-xs hover:bg-foreground
1/90 h-8 gap-1.5 px-3 has-[>svg]:px-2.5 ml-4" type="button" aria-haspopup="dialog" aria-expanded="false" data-state="closed">Install Overlay</button></div><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 min-[700px]:hidden" aria-label="Open navigation menu" aria-controls="mobile-navigation-links" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div><div id="mobile-navigation-links" aria-hidden="true" inert="" class="grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none min-[700px]:hidden grid-rows-[0fr] opacity-0"><div class="overflow-hidden"><div class="flex flex-col gap-1 border-t pb-3 pt-2"><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-9 px-4 py-2 has-[>svg]:px-3" href="/changelog">Changelog</a><a target="_blank" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-9 px-4 py-2 has-[>svg]:px-3" href="https://docs.overlay.studio">Docs<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right inline -ml-1"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a><button data-slot="dialog-trigger" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-foreground text-background shadow-xs hover:bg-foreground
1/90 h-9 px-4 py-2 has-[>svg]:px-3 mt-1 w-full" type="button" aria-haspopup="dialog" aria-expanded="false" data-state="closed">Install Overlay</button></div></div></div></nav><main class="min-h-svh [background-image:radial-gradient(#e3e3dd_1px,transparent_1px)] [background-size:24px_24px]"><div class="mx-auto flex w-full max-w-5xl flex-col gap-12 px-6 pt-28 pb-16"><header class="space-y-4"><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left size-4 inline-block"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg>Back</a><div class="flex flex-col gap-3"><h1 class="text-3xl font-bold tracking-tight md:text-4xl">Changelog</h1><p class="text-lg text-muted-foreground">Product releases, improvements, and fixes from the Overlay app.</p></div></header><div class="flex flex-col divide-y divide-border"><article id="v0-9" class="grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [&:target_h2]:text-primary"><div class="flex flex-col gap-1 text-sm"><span class="font-semibold text-primary">v<!-- -->0.9</span><time class="text-muted-foreground" dateTime="2026-08-31">August 31, 2026</time></div><div class="flex flex-col gap-5"><h2 class="text-2xl font-bold tracking-tight">One-command project setup & a guided start</h2><div class="prose prose-neutral max-w-none"><p>Getting a whole codebase ready for Overlay now takes one prompt instead of many, and new projects open with a guided setup artboard instead of a blank canvas.</p> 2<h3>One-command project setup</h3> 3<p>The new <code>/overlay/init-project</code> MCP prompt configures an entire project for Overlay in one pass: it finds your design system, writes the config files, registers your components and icon library, and wires up your token stylesheet and fonts. Previously you had to run <code>register-component</code> once per component â now it's a single prompt.</p> 4<h3>A guided start for new projects</h3> 5<p>Brand-new projects no longer open on an empty grid. They open on a getting-started artboard that walks you through the three things worth setting up first: connecting an AI agent over MCP, registering your components, and pointing Overlay at your design tokens. If you installed before this release and haven't added anything to your canvas yet, you'll see it too the next time you open the project.</p> 6<h3>Improvements</h3> 7<ul> 8<li>A new button next to the editor tabs takes you back to the welcome screen â where agent setup and helpful links live â without closing your canvas, with a matching button to
8jump right back to the editor.</li> 9<li>AI agents can now reliably discover and read the annotations you draw on the canvas, even outside Overlay's own web chat (Claude Code, Cursor, Codex, and other MCP hosts included) â the clear button is now a pill showing how many are waiting for the agent.</li> 10<li>Fixed copy, cut, and paste not working while editing text inside a text node.</li> 11<li>Fixed AI agents' edits sometimes snapping an absolutely positioned element back into the surrounding auto-layout flow instead of leaving it in place.</li> 12<li>Fixed the editor panels sometimes not following your VS Code color theme correctly.</li> 13</ul></div></div></article><article id="v0-8" class="grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [&:target_h2]:text-primary"><div class="flex flex-col gap-1 text-sm"><span class="font-semibold text-primary">v<!-- -->0.8</span><time class="text-muted-foreground" dateTime="2026-08-11">August 11, 2026</time></div><div class="flex flex-col gap-5"><h2 class="text-2xl font-bold tracking-tight">Import from your codebase, and VS Code shortcuts that behave</h2><div class="prose prose-neutral max-w-none"><p>Bring existing components and pages onto the canvas as editable designs, get keyboard shortcuts that finally play nice with VS Code, and enjoy smoother zooming and agent workflows along the way.</p> 14<h3>Added MCP shortcut to import components into the canvas</h3> 15<p>You can now use the MCP prompt <code>/overlay/import-component @component-path</code> to point an AI agent at a file in your codebase and it can bring that component, or an entire page, onto the canvas as fully editable nodes â not just referenced, but expanded into real elements you can select and restyle. Components already registered in your design system come in as reusable instances, so nothing gets duplicated; anything else gets rebuilt natively from its source. It's the fastest way to get an existing screen into Overlay and keep iterating on it. 16Note: this differs from the <code>/register-component</code> prompt, which imports the chosen component without as a non-editable React node (aside from its props).</p> 17<h3>Keyboard shortcuts stop fighting VS Code</h3> 18<p>A batch of fixes lands here: opacity shortcuts, copy/paste, undo/redo, and select-all now work reliably no matter where your focus is â inside the canvas, inside a nested frame, or in a properties-panel field. Previously some of these chords fought VS Code's own keybindings (Cmd+B while editing text, for instance, used to also toggle VS Code's sidebar), or did nothing at all when the browser's native clipboard handling got in the way. Now the editor claims exactly the keys it needs and leaves everything else to the host, so nothing overlaps and nothing goes missing.</p> 19<h3>Improvements</h3> 20<ul> 21<li>Fixed the canvas zoom occasionally drifting away from your content instead of staying centered on it.</li> 22<li>Fixed the canvas freezing briefly while an AI agent captured a screenshot.</li> 23<li>Improved agent guidelines. AI agents now more reliably load the full set of design rules before generating components, reducing failed imports in some hosts.</li> 24</ul></div></div></article><article id="v0-7" class="grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [&:target_h2]:text-primary"><div class="flex flex-col gap-1 text-sm"><span class="font-semibold text-primary">v<!-- -->0.7</span><time class="text-muted-foreground" dateTime="2026-08-03">August 3, 2026</time></div><div class="flex flex-col gap-5"><h2 class="text-2xl font-bold tracking-tight">Steadier zoom & graceful missing components</h2><div class="prose prose-neutral max-w-none"><h3>Selection stays precise, no matter your zoom level</h3> 25<p>We fixed a critical bug, whereby dragging or resizing a selected element could drift slightly out of alignment depending on your canvas zoom, your browser's zoom, or â inside VS Code â your editor window's zoom setting. All three are now accounted for, so the selection box lands exactly where you'd expect regardless of how zoomed in or out you are.</p> 26<h3>When a component can't render, your layout doesn't fall apart</h3> 27<p>If a component's key is missing from your registry, its build failed, or it crashes at runtime, Overlay used to leave you guessing â sometimes with no indication anyw
27here that something was wrong. Now every broken state is clearly flagged in the layers tree and the properties panel, with an explanation of what happened and, where possible, a prompt you can hand to an AI agent to fix it. The placeholder that stands in for the missing component also keeps the size it last rendered at, so the rest of your layout doesn't jump around while you sort it out.</p> 28<h3>Improvements</h3> 29<ul> 30<li>Added support for importing composite shadcn/ui components â components made of several parts, like Avatar's image and fallback, Card's header/content/footer, or Sidebar's header/content/footer â as a single coherent component with real default content, instead of an empty shell or scattered duplicate parts.</li> 31<li>Undo now correctly reverts your first edit to a freshly inserted or imported component instead of deleting it entirely.</li> 32<li>Screenshot capture (used by AI agents to see your canvas) no longer hangs indefinitely when an image fails to load.</li> 33<li>Added a documentation link to the left panel for quick access.</li> 34</ul></div></div></article><article id="v0-6" class="grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [&:target_h2]:text-primary"><div class="flex flex-col gap-1 text-sm"><span class="font-semibold text-primary">v<!-- -->0.6</span><time class="text-muted-foreground" dateTime="2026-07-27">July 27, 2026</time></div><div class="flex flex-col gap-5"><h2 class="text-2xl font-bold tracking-tight">Selection precision, consistent theming & a friendlier error page</h2><div class="prose prose-neutral max-w-none"><p>Selecting and dragging on the canvas feels steadier this release, your theme now sticks where it should, and a failed load gets an actual explanation instead of a blank panel.</p> 35<h3>Smoother selection and dragging in autolayout nodes</h3> 36<p>Multi-selecting autolayout elements and dragging them around is more predictable now â transform handles land where you'd expect. Shift-clicking overlapping elements selects exactly the one you clicked instead of grabbing whatever's underneath, and absolutely positioned elements no longer get reflowed into a parent's autolayout when you didn't ask for that. You can also alt-drag a component to duplicate it, just like any other node.</p> 37<h3>A more reliable start</h3> 38<p>If the editor ever failed to load, you used to just get a blank panel with no explanation. Now you get a clear error page that tells you what went wrong. We also fixed an underlying packaging issue that could cause the production extension to fail loading in the first place.</p> 39<h3>Theming that sticks</h3> 40<p>Your canvas color scheme now persists across editor reloads instead of resetting to default, and dark-mode color tokens follow the canvas scheme properly wherever they're used. Text selection highlighting and switch toggles now match your theme too, instead of looking out of place.</p> 41<h3>Improvements</h3> 42<ul> 43<li>Press Option+1 (Mac) to reveal the Overlay left panel from anywhere.</li> 44<li>Project fonts now load reliably from your config when you open the editor.</li> 45</ul></div></div></article><article id="v0-5" class="grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [&:target_h2]:text-primary"><div class="flex flex-col gap-1 text-sm"><span class="font-semibold text-primary">v<!-- -->0.5</span><time class="text-muted-foreground" dateTime="2026-07-20">July 20, 2026</time></div><div class="flex flex-col gap-5"><h2 class="text-2xl font-bold tracking-tight">Browse and drop in icons, plus multi-window support</h2><div class="prose prose-neutral max-w-none"><p>Find any icon in seconds and drop it straight onto the canvas â plus support for working across multiple windows.</p> 46<h3>An Icons tab for your whole icon library</h3> 47<p>Icons now have their own tab in the left panel, so you can browse a whole package visually and drop any icon onto the canvas â no need to remember its name. Point Overlay at a popular pack like lucide-react, Tabler, Phosphor, Feather, or Radix and it comes with sensible presets out of the box, or register a folder of your own SVGs as a custom library. If you work in a monorepo, icon libraries can now resolve from a specific package, so they load correctly no matter where your icons live.</p> 48<h3>Work across multiple windows</h3> 49<p>You can now open more than one Overlay window at a time and have your AI agent connect to the right one. The MCP connection hands off cleanly between windows, so agent tools keep working as you move between projects instead of getting stuck on a stale c
49onnection.</p> 50<h3>Improvements</h3> 51<ul> 52<li>You can now search the Components tab to filter down to the component or icon you want instead of scrolling â and components are always on now, no flag to flip.</li> 53<li>Boolean component props now render as a switch instead of a text field, so toggling them is one click.</li> 54<li>Long prop names no longer overflow the panel â they truncate, and you can hover to see the full name.</li> 55<li>Selecting a node on the canvas now reveals and scrolls to it in the left-panel layer list.</li> 56<li>The left panel is now resizable, so you can give your layers and components more room.</li> 57<li>Fixed a background image re-request loop that could keep the editor busy while idle, making the canvas cooler and snappier.</li> 58</ul></div></div></article></div><nav class="flex items-center justify-between pt-6 text-sm font-medium" aria-label="Changelog pagination"><span></span><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3" href="/changelog?page=2">Older entries</a></nav></div></main><!--$--><!--/$--><footer class="py-6 text-center text-sm text-muted-foreground underline-offset-4">© <!-- -->2026<!-- --> Overlay Studio <!-- --> · <a class="hover:underline" href="/privacy">Privacy</a> · <a class="hover:underline" href="/imprint">Imprint</a></footer>
58<script src="/_next/static/chunks/57a7821a27a2c3c6.js" id="_R_" async=""></script>
58<script>(self.__next_f=self.__next_f||[]).push([0])</script>
58<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[88160,[\"/_next/static/chunks/d587964c0368e81b.js\",\"/_next/static/chunks/2a1b2a6eb0a33ae8.js\"],\"Providers\"]\n3:I[39683,[\"/_next/static/chunks/d587964c0368e81b.js\",\"/_next/static/chunks/2a1b2a6eb0a33ae8.js\"],\"Navbar\"]\n4:I[42470,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"default\"]\n5:I[56612,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"default\"]\n6:I[33611,[\"/_next/static/chunks/d587964c0368e81b.js\",\"/_next/static/chunks/2a1b2a6eb0a33ae8.js\"],\"\"]\n8:I[27682,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[27682,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"ViewportBoundary\"]\nd:I[27682,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"MetadataBoundary\"]\nf:I[43649,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"default\"]\n10:I[43048,[\"/_next/static/chunks/bed1c58b2e289ce6.js\",\"/_next/static/chunks/83f857d57711cbfe.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/db843d5308715b0d.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.29207c2f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
58<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"VkI0-FtICSdJZCgBy9pY6\",\"c\":[\"\",\"changelog\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"changelog\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/db843d5308715b0d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/d587964c0368e81b.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2a1b2a6eb0a33ae8.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"inter_dd475d0c-module__9A3jha__variable geist_mono_b4d4e0d7-module__vc6T-a__variable font-sans antialiased bg-background\",\"children\":[[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"footer\",null,{\"className\":\"py-6 text-center text-sm text-muted-foreground underline-offset-4\",\"children\":[\"© \",2026,\" Overlay Studio \",\" · \",[\"$\",\"$L6\",null,{\"href\":\"/privacy\",\"className\":\"hover:underline\",\"children\":\"Privacy\"}],\" · \",[\"$\",\"$L6\",null,{\"href\":\"/imprint\",\"className\":\"hover:underline\",\"children\":\"Imprint\"}]]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L7\",null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":false}\n"])</script>
58<script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
58<script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"Changelog | Overlay Studio\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Latest updates, improvements, and fixes for Overlay Studio.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://overlay.studio/changelog\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Overlay Studio\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Design with your codebase - A User Interface design editor integrated with Visual Studio Code.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"https://www.overlay.studio/_next/static/media/og_image.abcaa27a.png\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image:alt\",\"content\":\"Overlay Studio - Design with your codebase\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:title\",\"content\":\"Overlay Studio\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:description\",\"content\":\"Design with your codebase - A User Interface design editor integrated with Visual Studio Code.\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:image\",\"content\":\"https://www.overlay.studio/_next/static/media/og_image.abcaa27a.png\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:image:alt\",\"content\":\"Overlay Studio - Design with your codebase\"}],[\"$\",\"link\",\"13\",{\"rel\":\"icon\",\"href\":\"/_next/static/media/logo-bg.1b5701b4.png\"}],[\"$\",\"$L10\",\"14\",{}]]\n"])</script>
58<script>self.__next_f.push([1,"a:null\n"])</script>
58<script>self.__next_f.push([1,"7:[\"$\",\"main\",null,{\"className\":\"min-h-svh [background-image:radial-gradient(#e3e3dd_1px,transparent_1px)] [background-size:24px_24px]\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex w-full max-w-5xl flex-col gap-12 px-6 pt-28 pb-16\",\"children\":[[\"$\",\"header\",null,{\"className\":\"space-y-4\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-arrow-left size-4 inline-block\",\"children\":[[\"$\",\"path\",\"1l729n\",{\"d\":\"m12 19-7-7 7-7\"}],[\"$\",\"path\",\"x3x0zl\",{\"d\":\"M19 12H5\"}],\"$undefined\"]}],\"Back\"],\"data-slot\":\"button\",\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:pointer-events-none [\u0026_svg:not([class*='size-'])]:size-4 shrink-0 [\u0026_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[\u003esvg]:px-3\",\"ref\":null}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-3\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-3xl font-bold tracking-tight md:text-4xl\",\"children\":\"Changelog\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-muted-foreground\",\"children\":\"Product releases, improvements, and fixes from the Overlay app.\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col divide-y divide-border\",\"children\":[[\"$\",\"article\",\"0.9\",{\"id\":\"v0-9\",\"className\":\"grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [\u0026:target_h2]:text-primary\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-1 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-primary\",\"children\":[\"v\",\"0.9\"]}],[\"$\",\"time\",null,{\"className\":\"text-muted-foreground\",\"dateTime\":\"2026-08-31\",\"children\":\"August 31, 2026\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold tracking-tight\",\"children\":\"One-command project setup \u0026 a guided start\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-neutral max-w-none\",\"children\":[[\"$\",\"p\",\"p-0\",{\"children\":\"Getting a whole codebase ready for Overlay now takes one prompt instead of many, and new projects open with a guided setup artboard instead of a blank canvas.\"}],\"\\n\",[\"$\",\"h3\",\"h3-0\",{\"children\":\"One-command project setup\"}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":[\"The new \",[\"$\",\"code\",\"code-0\",{\"children\":\"/overlay/init-project\"}],\" MCP prompt configures an entire project for Overlay in one pass: it finds your design system, writes the config files, registers your components and icon library, and wires up your token stylesheet and fonts. Previously you had to run \",[\"$\",\"code\",\"code-1\",{\"children\":\"register-component\"}],\" once per component â now it's a single prompt.\"]}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"A guided start for new projects\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"Brand-new projects no longer open on an empty grid. They open on a getting-started artboard that walks you through the three things worth setting up first: connecting an AI agent over MCP, registering your components, and pointing Overlay at your design tokens. If you installed before this release and haven't added anything to your canvas yet, you'll see it too the next time you open the project.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"Improvements\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"A new button next to the editor tabs takes you back to the welcome screen â where agent setup and helpful links live â without closing your canvas, with a matching button to
58jump right back to the editor.\"}],\"\\n\",\"$L11\",\"\\n\",\"$L12\",\"\\n\",\"$L13\",\"\\n\",\"$L14\",\"\\n\"]}]]}]]}]]}],\"$L15\",\"$L16\",\"$L17\",\"$L18\"]}],\"$L19\"]}]}]\n"])</script>
58<script>self.__next_f.push([1,"11:[\"$\",\"li\",\"li-1\",{\"children\":\"AI agents can now reliably discover and read the annotations you draw on the canvas, even outside Overlay's own web chat (Claude Code, Cursor, Codex, and other MCP hosts included) â the clear button is now a pill showing how many are waiting for the agent.\"}]\n12:[\"$\",\"li\",\"li-2\",{\"children\":\"Fixed copy, cut, and paste not working while editing text inside a text node.\"}]\n13:[\"$\",\"li\",\"li-3\",{\"children\":\"Fixed AI agents' edits sometimes snapping an absolutely positioned element back into the surrounding auto-layout flow instead of leaving it in place.\"}]\n14:[\"$\",\"li\",\"li-4\",{\"children\":\"Fixed the editor panels sometimes not following your VS Code color theme correctly.\"}]\n"])</script>
58<script>self.__next_f.push([1,"15:[\"$\",\"article\",\"0.8\",{\"id\":\"v0-8\",\"className\":\"grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [\u0026:target_h2]:text-primary\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-1 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-primary\",\"children\":[\"v\",\"0.8\"]}],[\"$\",\"time\",null,{\"className\":\"text-muted-foreground\",\"dateTime\":\"2026-08-11\",\"children\":\"August 11, 2026\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold tracking-tight\",\"children\":\"Import from your codebase, and VS Code shortcuts that behave\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-neutral max-w-none\",\"children\":[[\"$\",\"p\",\"p-0\",{\"children\":\"Bring existing components and pages onto the canvas as editable designs, get keyboard shortcuts that finally play nice with VS Code, and enjoy smoother zooming and agent workflows along the way.\"}],\"\\n\",[\"$\",\"h3\",\"h3-0\",{\"children\":\"Added MCP shortcut to import components into the canvas\"}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":[\"You can now use the MCP prompt \",[\"$\",\"code\",\"code-0\",{\"children\":\"/overlay/import-component @component-path\"}],\" to point an AI agent at a file in your codebase and it can bring that component, or an entire page, onto the canvas as fully editable nodes â not just referenced, but expanded into real elements you can select and restyle. Components already registered in your design system come in as reusable instances, so nothing gets duplicated; anything else gets rebuilt natively from its source. It's the fastest way to get an existing screen into Overlay and keep iterating on it.\\nNote: this differs from the \",[\"$\",\"code\",\"code-1\",{\"children\":\"/register-component\"}],\" prompt, which imports the chosen component without as a non-editable React node (aside from its props).\"]}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"Keyboard shortcuts stop fighting VS Code\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"A batch of fixes lands here: opacity shortcuts, copy/paste, undo/redo, and select-all now work reliably no matter where your focus is â inside the canvas, inside a nested frame, or in a properties-panel field. Previously some of these chords fought VS Code's own keybindings (Cmd+B while editing text, for instance, used to also toggle VS Code's sidebar), or did nothing at all when the browser's native clipboard handling got in the way. Now the editor claims exactly the keys it needs and leaves everything else to the host, so nothing overlaps and nothing goes missing.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"Improvements\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Fixed the canvas zoom occasionally drifting away from your content instead of staying centered on it.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Fixed the canvas freezing briefly while an AI agent captured a screenshot.\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Improved agent guidelines. AI agents now more reliably load the full set of design rules before generating components, reducing failed imports in some hosts.\"}],\"\\n\"]}]]}]]}]]}]\n"])</script>
58<script>self.__next_f.push([1,"16:[\"$\",\"article\",\"0.7\",{\"id\":\"v0-7\",\"className\":\"grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [\u0026:target_h2]:text-primary\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-1 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-primary\",\"children\":[\"v\",\"0.7\"]}],[\"$\",\"time\",null,{\"className\":\"text-muted-foreground\",\"dateTime\":\"2026-08-03\",\"children\":\"August 3, 2026\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold tracking-tight\",\"children\":\"Steadier zoom \u0026 graceful missing components\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-neutral max-w-none\",\"children\":[[\"$\",\"h3\",\"h3-0\",{\"children\":\"Selection stays precise, no matter your zoom level\"}],\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":\"We fixed a critical bug, whereby dragging or resizing a selected element could drift slightly out of alignment depending on your canvas zoom, your browser's zoom, or â inside VS Code â your editor window's zoom setting. All three are now accounted for, so the selection box lands exactly where you'd expect regardless of how zoomed in or out you are.\"}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"When a component can't render, your layout doesn't fall apart\"}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":\"If a component's key is missing from your registry, its build failed, or it crashes at runtime, Overlay used to leave you guessing â sometimes with no indication anywhere that something was wrong. Now every broken state is clearly flagged in the layers tree and the properties panel, with an explanation of what happened and, where possible, a prompt you can hand to an AI agent to fix it. The placeholder that stands in for the missing component also keeps the size it last rendered at, so the rest of your layout doesn't jump around while you sort it out.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"Improvements\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Added supp
58ort for importing composite shadcn/ui components â components made of several parts, like Avatar's image and fallback, Card's header/content/footer, or Sidebar's header/content/footer â as a single coherent component with real default content, instead of an empty shell or scattered duplicate parts.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Undo now correctly reverts your first edit to a freshly inserted or imported component instead of deleting it entirely.\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Screenshot capture (used by AI agents to see your canvas) no longer hangs indefinitely when an image fails to load.\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":\"Added a documentation link to the left panel for quick access.\"}],\"\\n\"]}]]}]]}]]}]\n"])</script>
58<script>self.__next_f.push([1,"17:[\"$\",\"article\",\"0.6\",{\"id\":\"v0-6\",\"className\":\"grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [\u0026:target_h2]:text-primary\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-1 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-primary\",\"children\":[\"v\",\"0.6\"]}],[\"$\",\"time\",null,{\"className\":\"text-muted-foreground\",\"dateTime\":\"2026-07-27\",\"children\":\"July 27, 2026\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold tracking-tight\",\"children\":\"Selection precision, consistent theming \u0026 a friendlier error page\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-neutral max-w-none\",\"children\":[[\"$\",\"p\",\"p-0\",{\"children\":\"Selecting and dragging on the canvas feels steadier this release, your theme now sticks where it should, and a failed load gets an actual explanation instead of a blank panel.\"}],\"\\n\",[\"$\",\"h3\",\"h3-0\",{\"children\":\"Smoother selection and dragging in autolayout nodes\"}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":\"Multi-selecting autolayout elements and dragging them around is more predictable now â transform handles land where you'd expect. Shift-clicking overlapping elements selects exactly the one you clicked instead of grabbing whatever's underneath, and absolutely positioned elements no longer get reflowed into a parent's autolayout when you didn't ask for that. You can also alt-drag a component to duplicate it, just like any other node.\"}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"A more reliable start\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"If the editor ever failed to load, you used to just get a blank panel with no explanation. Now you get a clear error page that tells you what went wrong. We also fixed an underlying packaging issue that could cause the production extension to fail loading in the first place.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"Theming that sticks\"}],\"\\n\",[\"$\",\"p\",\"p-3\",{\"children\":\"Your canvas color scheme now persists across editor reloads instead of resetting to default, and dark-mode color tokens follow the canvas scheme properly wherever they're used. Text selection highlighting and switch toggles now match your theme too, instead of looking out of place.\"}],\"\\n\",[\"$\",\"h3\",\"h3-3\",{\"children\":\"Improvements\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Press Option+1 (Mac) to reveal the Overlay left panel from anywhere.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Project fonts now load reliably from your config when you open the editor.\"}],\"\\n\"]}]]}]]}]]}]\n"])</script>
58<script>self.__next_f.push([1,"18:[\"$\",\"article\",\"0.5\",{\"id\":\"v0-5\",\"className\":\"grid gap-6 py-10 md:grid-cols-[180px_1fr] scroll-mt-28 [\u0026:target_h2]:text-primary\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-1 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-primary\",\"children\":[\"v\",\"0.5\"]}],[\"$\",\"time\",null,{\"className\":\"text-muted-foreground\",\"dateTime\":\"2026-07-20\",\"children\":\"July 20, 2026\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold tracking-tight\",\"children\":\"Browse and drop in icons, plus multi-window support\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-neutral max-w-none\",\"children\":[[\"$\",\"p\",\"p-0\",{\"children\":\"Find any icon in seconds and drop it straight onto the canvas â plus support for working across multiple windows.\"}],\"\\n\",[\"$\",\"h3\",\"h3-0\",{\"children\":\"An Icons tab for your whole icon library\"}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":\"Icons now have their own tab in the left panel, so you can browse a whole package visually and drop any icon onto the canvas â no need to remember its name. Point Overlay at a popular pack like lucide-react, Tabler, Phosphor, Feather, or Radix and it comes with sensible presets out of the box, or register a folder of your own SVGs as a custom library. If you work in a monorepo, icon libraries can now resolve from a specific package, so they load correctly no matter where your icons live.\"}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"Work across multiple windows\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"You can now open more than one Overlay window at a time and have your AI agent connect to the right one. The MCP connection hands off cleanly between windows, so agent tools keep working as you move between projects instead of getting stuck on a stale c
58onnection.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"Improvements\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"You can now search the Components tab to filter down to the component or icon you want instead of scrolling â and components are always on now, no flag to flip.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Boolean component props now render as a switch instead of a text field, so toggling them is one click.\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Long prop names no longer overflow the panel â they truncate, and you can hover to see the full name.\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":\"Selecting a node on the canvas now reveals and scrolls to it in the left-panel layer list.\"}],\"\\n\",[\"$\",\"li\",\"li-4\",{\"children\":\"The left panel is now resizable, so you can give your layers and components more room.\"}],\"\\n\",[\"$\",\"li\",\"li-5\",{\"children\":\"Fixed a background image re-request loop that could keep the editor busy while idle, making the canvas cooler and snappier.\"}],\"\\n\"]}]]}]]}]]}]\n"])</script>
58<script>self.__next_f.push([1,"19:[\"$\",\"nav\",null,{\"className\":\"flex items-center justify-between pt-6 text-sm font-medium\",\"aria-label\":\"Changelog pagination\",\"children\":[[\"$\",\"span\",null,{}],[\"$\",\"$L6\",null,{\"href\":\"/changelog?page=2\",\"children\":\"Older entries\",\"data-slot\":\"button\",\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:pointer-events-none [\u0026_svg:not([class*='size-'])]:size-4 shrink-0 [\u0026_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[\u003esvg]:px-3\",\"ref\":null}]]}]\n"])</script>
58<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"43d96b9708ca425fae6e60a74971510f","r":1,"spa":2}' crossorigin="anonymous"></script>
58 59</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.