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 4
Make find_nodes results say which screen they are in, and what a kinds filter hid (DRA-552)
A search for "Run card" came back with four hits that only named their
parent, so the agent searched each content root separately to learn which
screen each was on. Every result now carries the rootId and rootName of the
content root or component it sits in (nothing on a root itself), and rootId
can be passed straight back to narrow a search.
A search limited with kinds that found nothing read as "no match" even when
the query matched layers of other kinds, as when "Pages 11 to 20" was looked
for among elements but was a text layer. The reply now says, for example,
"No element layers match. 1 text layer does."
Also trims a few words from the find_nodes description.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let the large-file measurement run in the test container
The container runner now passes the measurement's DRAFTLY_MEASURE_ and
DRAFTLY_BENCH_ settings through, so it can be run there rather than
opening windows on the desktop. Agent worktrees under .claude are left
out of the image, since a run from the main checkout otherwise sent all
of them to Docker.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Fix three Electron specs that failed in the Linux test container (DRA-544)
The Layers panel now opens with its rows closed, so the suggested-prompt
spec opens them before looking for a layer's row.
The packaged-port spec builds an app with electron-builder, which reads
the update feed address from DRAFTLY_BACKEND_URL and failed without it.
The spec now gives the feed a dummy address, since nothing here updates.
The Artboard tool spec pressed A the moment the new artboard appeared,
while the size menu was still closing. In that moment the key goes to
the menu's item, and the app ignores it there. Under load this lost the
key about one run in four, so the spec now waits for the menu to close.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let live-link viewers in one place share the room's answer for a second
Every two-second poll from every viewer of a live link checked the link in
the database twice and then asked the file's room. A link with a crowd on it
would have kept the room busy for the people editing, and put the same load
on the one shared database.
Viewers in the same Cloudflare data centre now share what the room last said
for a second, through the Worker's cache. The first viewer in that second
checks the link and reads the room; the rest are answered from the copy. The
copy carries the room's tag, so viewers who are up to date still get a 304,
and when only the tag of an unchanged file was asked about, the tag alone is
kept so that case is shared too. A copy is found only by the link's own token
and is made only after the link has been checked, so turning a link off
reaches viewers within that second.
Published files are left as they are. Each is fetched once per visit rather
than polled, the bytes come from R2, and a copy that lasted long enough to
help would keep serving a page after it was unpublished.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Change the zoom percentage without laying out anything around it (DRA-545)
During a zoom the percentage was drawn again by React on every change,
and since its text sat directly in a flex item, each change laid the
window out again from its root. Its text is now changed in place, inside
a box as wide as the widest percentage that contains its own layout and
paint, so React draws nothing and nothing is restyled. On the benchmark
file a change now lays out 2 objects in about 0.05 ms instead of 15 in
0.27 ms, and frames where it changes spend about 0.25 ms less in script.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Change the zoom percentage without laying out anything around it (DRA-545)
During a zoom the percentage was drawn again by React on every change,
and since its text sat directly in a flex item, each change laid the
window out again from its root. Its text is now changed in place, inside
a box as wide as the widest percentage that contains its own layout and
paint, so React draws nothing and nothing is restyled. On the benchmark
file a change now lays out 2 objects in about 0.05 ms instead of 15 in
0.27 ms, and frames where it changes spend about 0.25 ms less in script.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let a Mac runner finish its build before it restarts (DRA-538)
Reinstalling checked GitHub for whether a runner was busy and then stopped it,
but a job could land on the runner in between, and stopping it failed that
build. The installer now checks this Mac directly and waits while a job is
running, and a runner asked to stop lets its job finish before it exits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With one runner, builds queued behind each other during bursts of pushes, some
for a quarter of an hour. The Mac now keeps eight runners, and reinstalling
restarts each one only once it's idle, so it never cancels a build.
The runners share one user, so each job now installs pnpm into its own temp
folder instead of ~/setup-pnpm, and each runner keeps its own Electron
downloads. The signing keychain no longer goes into the user's search list,
which concurrent jobs would be rewriting at the same time; electron-builder is
handed the keychain directly and signing works without it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let generate_image make several images at once, and say what failures cost (DRA-546)
Agents asking for many images made one call each, and clients that run
tool calls one at a time made them wait in turn. generate_image now takes
items, each the same as a single call, and starts them all together, up
to what the account may make at once. Every item is checked before any
starts, so one bad item refuses the call with each bad item named and
nothing paid for. The reply gives each item's image, or its job id while
it is still going, or why it failed.
A generation that is declined or fails now says whether it used one of
today's generations and how many are left, and get_generations marks the
same on failed jobs. A prompt over the limit says how long it was and by
how much, and the limit is in the tool's description, where the schema
leaves it out.
start_agent lists the generations that ended after the last call of an
earlier agent with the same name, as facts. They are kept in memory, as
get_generations already keeps them, so a restart of Draftly clears them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds OpenAI's gpt-image-2.5-sunburst beside GPT Image, which stays the
first choice when a picture is given to work from. Precise has the same
settings (quality, transparent) and takes pictures as references, and it
is reached through OpenAI directly like GPT Image, so its drafts stream.
The agent notes for GPT Image said it draws up to 2560 pixels a side,
but its long side is held to 2048, so that is corrected.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds OpenAI's gpt-image-2.5-sunburst beside GPT Image, which stays the
first choice when a picture is given to work from. Precise has the same
settings (quality, transparent) and takes pictures as references, and it
is reached through OpenAI directly like GPT Image, so its drafts stream.
The agent notes for GPT Image said it draws up to 2560 pixels a side,
but its long side is held to 2048, so that is corrected.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Let create_image take styles in the same undo step (DRA-547)
Every placed image was followed by a patch_styles call for its position,
object-fit and max-width. create_image now takes the same styles patch,
checked the same way, and writes it with the new layer as one undo step.
A style that is refused places no layer. The reply names any declaration
the new image already had, such as max-width.
The agent tool list grows by about 140 characters, so its size limit in
the tool list test moves from 56,400 to 56,600.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Show pictures only until each artboard is drawn (DRA-541)
Artboards no longer stay pictures while they're shown too small to read.
They draw live in turn as they did before pictures, and a picture stands
in for each one only until its live design is on screen. That removes
the pointer resting on an artboard or a row in Layers asking for its
live design, the sharpness rule, and the tuning that went with them.
Pressing an artboard still draws it ahead of the rest.
The tests now hold kept pictures back to show that a pressed artboard
draws first, and check that each artboard shows its picture until it's
drawn, never a stale one, and that an edit takes a picture down before
the next frame. The large-file measurement counts any picture towards
the canvas looking complete.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Show pictures only until each artboard is drawn (DRA-541)
Artboards no longer stay pictures while they're shown too small to read.
They draw live in turn as they did before pictures, and a picture stands
in for each one only until its live design is on screen. That removes
the pointer resting on an artboard or a row in Layers asking for its
live design, the sharpness rule, and the tuning that went with them.
Pressing an artboard still draws it ahead of the rest.
The tests now hold kept pictures back to show that a pressed artboard
draws first, and check that each artboard shows its picture until it's
drawn, never a stale one, and that an edit takes a picture down before
the next frame. The large-file measurement counts any picture towards
the canvas looking complete.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No public downloads available for this build.
Name the agent window's limit for the files it holds, now that agents share them (DRA-537)