Desktop builds from every branch. Check the branch and result, expand any commit notes, then choose a download.
Filters search the full history. Enter an exact branch name, or click a branch below.
About these downloads
Choose notarized macOS builds when available. Signed builds may still be awaiting notarization. Downloads are ZIP archives, retained for 14 days. Only installers uploaded after October 2, 2026 at 16:37 UTC are public. A failed build can still have a usable installer from a successful packaging job.
PR, commit, and log links open GitHub and may require repository access. Notes are the commit author's description.
459 matching builds · Page 7
Leave an artboard alone when an override outlives the layer it changes (DRA-491)
An instance can keep an override for a component layer that has since
been deleted. Checking that override asked the store for the missing
layer, which ties the artboard to every record added or removed in the
file, so it was worked out again for edits anywhere. The layer tree is
now asked first, and it follows just that one layer until it comes back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Publish desktop releases to the update feed (DRA-508)
The packaged app now knows where to look for updates, and the macOS
build produces the signed zip that updates install from alongside the
dmg. Each run numbers its build after the run, so there is always a
higher version to update to.
Running the Desktop builds workflow from main with Publish ticked
uploads the signed zip, the Linux package and their manifests to the
release bucket with Wrangler and the existing Cloudflare token,
manifests last so the feed never names a file that isn't there. Without
that, builds are made and signed as before and nothing is published.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Publish desktop releases to the update feed (DRA-508)
The packaged app now knows where to look for updates, and the macOS
build produces the signed zip that updates install from alongside the
dmg. Each run numbers its build after the run, so there is always a
higher version to update to.
Running the Desktop builds workflow from main with Publish ticked
uploads the signed zip, the Linux package and their manifests to the
release bucket with Wrangler and the existing Cloudflare token,
manifests last so the feed never names a file that isn't there. Without
that, builds are made and signed as before and nothing is published.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Invite people to try Whisk rather than follow it (DRA-509)
The homepage buttons now talk about what the visitor gets to do: "Try
Whisk" in the header and closing, and "Start prototyping with your
agents" in the hero. The closing heading becomes "Start your next
prototype in Whisk". Also restores a missing word in the HTML section:
"That means agents already know how to use it".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Use the writing mode to decide whether logical and physical styles clash (DRA-500)
`padding-top` with `padding-inline` was refused because the two meet in some writing mode, though
they never meet in the horizontal one most designs are in. Which edge a logical style means is now
worked out from the writing mode and direction written on the element and the elements around it
(their inline styles and dir attribute, and for write_html the layers above where the HTML goes),
horizontal and left to right when nothing says otherwise. Two styles are refused for their order
only if they meet in that flow, and a pair that can never meet, such as `padding-bottom` and
`padding-block-start`, is never refused. A writing mode that can't be read, such as one from a
variable, counts as every mode.
Styles are stored without an order and drawn in a fixed one, so they can't keep the order they were
written in when the writing mode changes later. A logical style is now drawn before a physical one
of the same breadth, so the edge named outright keeps its value in any writing mode the element is
put in afterwards, and the logical style sets the rest. This reorders a few existing pairs that
were drawn the other way round: `bottom` against `inset-block-end`, and the bottom corners against
their logical names.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Say why a joining window can take the room's copy of a file unchecked
An artboard that hugs its content only had its stored height updated when a window drew it, or
when an agent took a screenshot or measured it. So an agent building on a page nobody had open
left the height stale for the web viewer, listings and exports.
After the reply to an agent's call is on its way, the agent window now works out which hugging
artboards the call changed, including through undo and redo, draws each once and writes the
height back. Calls that come close together share the work, and artboards the call didn't touch
are not drawn.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Trim AGENTS.md down to the product rules that still guide work
A font's category was stored in the file when the font was added, so
fonts added before serif detection improved, like Kleisch LL Preview, kept
reading as sans-serif. The font catalog now looks at the kept font file
when it describes an uploaded font, using the same judging as when a font
is added, and only falls back to the stored category when no copy of the
file is kept on this computer. Nothing is rewritten in the file, so there
is no stale value to clean up later. add_font also writes the fallback
for the category it just read, not the one stored for the family.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Drop the longer waits from the import lanes test now its real cause is fixed (DRA-502)
The longer waits went in before the race was found. With the store's writes queued as in the
app, the default waits pass every time, so the extra time was only hiding slowness.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Add a one-off cleanup for published copies that deleted files left behind (DRA-498)
Deleting a file now removes its published copies from storage, but files
deleted earlier still have theirs, and once the hourly cleanup drops such
a file's records nothing in the database points at them any more.
The script lists the publication folders in the bucket whose publication
has no record or whose file was deleted, and shows how many objects and
how much space they take. It removes them only when run with --apply.
Folders that belong to a file still being deleted are left for that
deletion, and so are folders that don't look like a publication's.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let delete_token and the theme override tools take a token's CSS name (DRA-507)
update_token already accepts a token's CSS name, but delete_token,
set_theme_override and clear_theme_override still needed the id for a file
token, so agents had to look it up first. They now take either, resolving
the name the same way update_token does and refusing a name that matches
no token or more than one.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The limit it described is out of date, and new windows now load large files from a snapshot
rather than one message, so the note no longer explains how the app works.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Measure a file's size a little at a time while the window is idle (DRA-515)
The window already measured the file after it loaded, in an idle callback,
but that callback was one stretch of about 100 ms at 80,000 layers, long
enough to be felt by anyone who started working just then. The measure now
goes through the records in steps of 500, taking as many as the idle time
allows and at least one, then adds in whatever was edited meanwhile. If the
size is read first, as when the first edit comes before the measuring is
done, that read measures everything at once and the steps stop.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Keep the main process's compiled modules between runs
Loading the main process's code and its dependencies took about 380 ms before the
first window could be made, much of it compiling. Node can keep what it compiled in
the account's data folder, which takes about 50 ms off every start after the first.
That has to be switched on before the app's modules load, so the file Electron starts
now only does that and then loads the app, which moves to app.ts.
DRA-510
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Expect the short names generated images now get (DRA-504)
A generated image is named for what its prompt asks for, so "A red paper boat" becomes "Red paper
boat". The prompt field still shows what was typed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Check where main posts uploads, and an agent's large write end to end (DRA-489)
Main only posts a window's upload to its own backend, for the file the window
names; a test now holds it to that. The person-and-agent test also has the
agent write a page too large for one socket message, which reaches the server
and the person, and then undo it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Follow an artboard's name in its frame's title after a rename (DRA-514)
The frame is memoised and read the name once, so after a rename its title, which screen readers
announce, kept the old one until something else made it render again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Drop the kept-layer option from shownChildren now that nothing passes it
The layer model filters its own children now, so the option it used to pass to
keep a selected blank text in the list has no callers left.
DRA-514
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Skip layers under a locked parent when Tab moves between layer names
Locking a layer moves nothing in the layer tree, so since the tree began
following each change (DRA-492) it keeps the same object, and the layer
list built from it kept the lock state it had when it was built. Tab in a
layer name then stopped at layers that were locked through a parent, and
their rows kept their lock, hide and drag controls enabled.
Locks above a layer are now read from the file when a row is drawn or Tab
looks for the next name, instead of being kept in the list rows.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>