Release notes
What changed in each release, written for humans — including anything worth
checking before you update. The commit-level list lives in
CHANGELOG.md; on the website these pages are
/docs/release-notes/ and /docs/changelog/.
Unreleased
Nothing yet.
v0.76.1 — 2026-09-02
Dragging a ring follows the mouse, whichever end it hugs. The ring at the far end of a pair of cables slid the opposite way to the pointer — drag it left and it ran right, all the way to the other device. Every ring in a stack of one, two or three now stays under the pointer as you drag it.
Mouse-wheel zoom glides. A notch of the wheel with ⌘/Ctrl held eases to its ×1.22 step over a fraction of a second instead of hopping there, and quick notches run together into one smooth zoom, with the point under the pointer held still. Trackpad pinch and scroll are unchanged, and a reduced-motion setting gets the plain step.
Considerations before you update: none.
v0.76.0 — 2026-09-02
Note: this release shipped without the usual pre-release QA pass — directed run only — docs/ai-qa/runs/2026-09-02-pre-v0.76.0-directed-run.md: every changed behaviour driven on the built bundle and looked at, the full 246-scenario pass not run
A set of cables carries one, two or three rings — and no more. Binding the same cables again used to put another ring on the midpoint every time, without limit. Now the button reads Add another ring, then Add a third ring — one in the middle, one at each end, or all three — and goes quiet at three with a line saying why.
Unbind removes the ring you meant. Press a ring on the canvas, or pick one in the Ring list, and Unbind takes that ring alone; the other rings those cables are in stay exactly as they were. It used to clear every ring the selected cables touched — three at once on an HA pair.
Rings stand square across their cables, and clear of the device. The end rings over a pair of cables were drawn tilted; every ring now sits perpendicular to the cables it holds. A ring that hugs a device is measured from the edge of its tile rather than its centre, so it no longer stands on the icon when a cable starts from the middle of a shape.
A new ring never wears another ring's name. Ring names, colours and positions are kept per document while ring ids were only unique per page, so a ring bound on a new page — or after every ringed cable had been deleted and the tab reloaded — could come up already named after a ring that no longer existed. Ids are now unique across the whole document, and deleting a ring's last cables takes its name with them.
Press C for the connector tool. The same toggle as the palette button: C arms it, C or Escape puts it away. A C typed into a search box or a label is still just a letter.
Mouse-wheel zoom is a step, not a leap. One notch of a mouse wheel with ⌘/Ctrl held was a ×2.7 jump — 50% to 250% in two clicks — while a trackpad felt fine, which is why it never reproduced on a Mac. A notch is now one ×1.22 step; trackpad pinch and scroll are unchanged.
"Skip this version" in the browser skips the version that is waiting, and only that one. Skipping while the release feed was unreachable used to hide every later release's marker for as long as that tab stayed on the same build — which, after a skip, was forever. The skip now covers the waiting build alone and lifts the moment the next one arrives. A tab left open through two releases also lights the marker for the second one again.
Considerations before you update: none — no file format, session or setting changes. A drawing that already carries more than three rings over one set of cables keeps them; the limit applies to new rings.
v0.75.0 — 2026-09-02
Note: this release shipped without the usual pre-release QA pass — directed run only — docs/ai-qa/runs/2026-09-02-pre-v0.75.0-directed-run.md: the embedded icons proven in the real draw.io through the compat spec and looked at in a prototype, plus the full automated gate; the full 246-scenario pass was not run
Your drawing looks the same in draw.io. A saved .drawio now carries each device's icon, so opening the file in draw.io shows the tile you drew — the icon in its colour, the name below — instead of a coloured box with a name. Custom icons come along too, and so do the legend's rows. draw.io treats the icon as part of the tile: move, copy or delete the tile there and the icon follows.
Considerations before you update: a file saved by this version grows by roughly 700 bytes per device for the embedded icons, and older Drawbridge versions ignore them. Nothing else changes on disk. A drawing you re-save gains its icons on that first save.
v0.74.1 — 2026-09-02
Port labels stay outside the device. A cable drawn to the middle of a device — every imported cable, and any you drew from a device's centre — could put its far-end port label inside the tile when it arrived from the side, across the icon and the name. The label is now placed from where the cable visibly meets the device, so it sits beside the tile. Cables that meet a device from above or below are drawn exactly as before.
The Share panel tells you when your tab is behind. If a newer build is waiting in your browser, the panel says so before you start sharing and offers to update on the spot, so everyone who joins runs the same build as you. Nothing is refused.
An AI assistant in a three-person session now names the right host. The agent reported the last guest it saw as the host and listed the host among the guests; it now keeps the host it actually connected to and lists the other guests.
Considerations before you update: none — no file format, session or setting changes.
v0.74.0 — 2026-09-02
Note: this release shipped without the usual pre-release QA pass — directed run only — docs/ai-qa/runs/2026-09-02-pre-v0.74.0-directed-run.md: the five shipping scenarios driven in Chrome against the built bundle plus the full automated gate; the full 244-scenario pass was not run
A pasted device list merges into the drawing you already have. Paste a neighbour table — CDP, LLDP, a FortiLink tree, a CSV — onto a page that already holds some of those devices and the import reuses them instead of drawing them twice: cables attach to the existing device, empty fields such as the management address are filled in, and nothing you have already set is overwritten. A cable already drawn between the same two ports is not added again. The preview says how many pasted devices are already on the page and how many are new before you press Import, and the whole paste is still one undo step. Each import is its own undo step, too: undoing a second paste no longer takes the first one with it.
FortiSwitch neighbours import as cables. Paste the output of diagnose switch-controller switch-info lldp neighbors-summary from a FortiGate and every port with a neighbour becomes a cable from the managed switch to that neighbour, with both port names on it — including the servers, access points and third-party gear the FortiLink tree does not show. Ports that are down are mentioned once in the preview rather than listed one by one. Together with merging, this is how you add cable terminations to a switch you drew from the FortiLink tree.
Cisco and Aruba LLDP output imports too. Paste show lldp neighbors detail from a Cisco IOS, IOS-XE, NX-OS or IOS-XR box, show lldp neighbor-info or show lldp neighbor-info detail from an Aruba CX switch, or show lldp info remote-device from an ArubaOS-Switch, and the neighbours arrive as devices and cables with the port names on both ends; a management address fills the device's management-IP field, and the advertised capabilities pick the icon. Cisco's plain show lldp neighbors table already worked. The device the command ran on comes in as a switch when the command only exists on one, and a device the output says nothing about takes its icon from its name — CORE-SW-01 is a switch, 6300-core an L3 switch, AP-LOBBY-01 an access point — while anything the output does state wins over the name.
Delete a legend row and it stays deleted. The legend still builds itself from what the page uses, but a row you delete is now remembered and does not come back on the next edit. Undo brings it back, and switching the legend off and on rebuilds every row.
Files open in draw.io without an arrowhead on every cable. draw.io draws an arrowhead on any connector whose style does not say otherwise, and our files never said otherwise, so a drawing opened there showed an arrow at the end of every cable. Cables now say so explicitly; flow arrows keep their heads. A file saved by an older version picks this up the first time you save it again.
For maintainers: the feedback relay watches its own tokens. It logs each token's expiry at start and daily, warns a month ahead, reports it on its internal health endpoint, and the publish script reads that before a release. It was added after a check found the attachment token four days from expiry.
Considerations before you update: a file saved by this version adds endArrow=none to every cable's draw.io style, and a drawbridgeLegendHidden attribute on the legend frame once you delete a row; older Drawbridge versions and draw.io ignore both. Importing now merges by name: a pasted device whose name is already on the page is reused rather than drawn again — rename the existing one first if you really want a second copy.
v0.73.0 — 2026-09-01
Note: this release shipped without the usual pre-release QA pass — directed run only — 13.11 verified live in Chrome (docs/ai-qa/runs/2026-09-01-pre-v0.73.0-directed-run.md) plus the full automated gate; the 239-scenario pass was not executed
Shapes now snap to the size of the shapes you already have. Drag a corner and, as the shape comes within a few pixels of another one's width or height, the drag sticks there and takes that measurement exactly — with a marked span drawn over the shape you are resizing and over the one it matched, so "the same size as that one" is something you can see while you do it. The two dimensions are decided separately, so a tile can take its width from one neighbour and its height from another. Only comparable shapes are offered — device tiles match device tiles, zones match zones — and anything the app sizes for you, like a rack or a rack unit, stays out of it. Keep dragging and the size comes free again; nothing is added to your drawing, and no export carries a trace of it.
Hold Shift while resizing to keep a shape's proportions. The shape scales as one — useful for a photo, a logo or any tile you want kept square — and the side you have pulled furthest leads. Shift can go down or come up in the middle of a drag and the shape follows immediately, without waiting for you to move the mouse. Size matching still works while it is held, so shift-dragging a tile onto a neighbour's width lands its height there too whenever the two were drawn in the same proportions.
On the website: documentation links land where they point. Opening a link to a particular heading on a narrow screen used to park that heading behind the sticky header, so the page appeared to open in the wrong place. The offset now measures the header instead of assuming its height, at every window width.
Considerations before you update: none — no file format, session or setting changes. Resizing without holding Shift behaves exactly as it did, with one addition: it now stops on a neighbour's size instead of only on the 8 px grid.
v0.72.1 — 2026-08-31
A damaged invite link now tells you what went wrong. Chat apps sometimes wrap or cut long links, and until now clicking a shortened invite did nothing at all — the app opened as if you had never been invited, with no way to know why. Now the join dialog opens by itself, showing the link that arrived and, in plain words, what is wrong with it — "this invite is incomplete, copy the whole link" — so you know to ask for it again rather than wondering whether sharing is broken. The link also stays in your address bar so you can send it back to the host and ask. (Tip that works today, on any version: the Copy code form of an invite survives chat apps better than the long link.)
The Share panel opens where you'd look for it. Opening Share… from the app menu used to drop the panel in the middle of the canvas, attached to nothing — it anchored to the menu entry you had just clicked, which vanished as the menu closed. It now opens at the toolbar's top right, under the menu button, exactly where the Live pill appears once you start sharing.
Considerations before you update: none — no file format, session or setting changes; invites made by older versions work unchanged.
v0.72.0 — 2026-08-30
Old draw.io files now just open. Files saved by older draw.io versions store their pages compressed, and until now those pages arrived locked — a read-only tab and advice to re-save the file elsewhere. Drawbridge now unpacks them itself: every page opens ready to edit, and saving writes it back as plain, readable XML. A page that is genuinely damaged still opens the safe way — preserved untouched, marked read-only — so nothing is ever lost to a bad byte.
PDF exports the whole document. Export → PDF now prints every page of your drawing, one sheet per page in tab order, each with its own title block naming the page. Want just one page? Use the print dialog's own Pages field — the sheets line up with your page tabs. Paper stays automatic and uniform: A4 landscape, and the whole book steps up to A3 when any one page needs the room. Empty pages don't waste a sheet.
A device can carry a link. Asset data has a sixth field, Link — put the device's NetBox page, management UI or runbook there. An Open button sits beside it (http and https only, so a link in a file someone sends you can never run anything), the HTML viewer export shows it as a real clickable link, the CSV inventory gets a Link column, and it is stored as draw.io's own link attribute, so the shape is clickable there too. Copies deliberately leave it behind, like the serial number — it names one particular box.
Your own icon on a device. Select a device and the inspector's new Icon section takes a PNG, JPEG or SVG of your choosing — a vendor logo, a product face — while the card, label, role band and colours stay Drawbridge's. Whatever you upload is stored as plain pixels, so nothing inside an SVG can ever run; copies keep the icon, the format painter deliberately doesn't paint it, and Reset brings the standard icon back. It shows everywhere the drawing does: canvas, minimap, and every picture export. (The one place it can't follow is a .vsdx — Visio interchange drops it.)
Considerations before you update: none — existing documents open and export exactly as before; single-page PDF output is unchanged.
v0.71.0 — 2026-08-30
Note: this release shipped without the usual pre-release QA pass — partial AI-QA run — 132 of 235 scenarios reached before the session hit its usage limit; report at docs/ai-qa/runs/2026-08-30-pre-v0.71.0-partial-run.md. Regression watchlist 26 PASS / 0 FAIL; the release's own new work verified by hand in a real browser. Human-gated and two-participant scenarios (most of file 11, incl. COLLAB-09's multi-participant steps) remain outstanding.
Drawbridge has a new licence: still free, now with one limit. Use Drawbridge for anything — at home, at work, commercially, for as long as you like, without paying and without asking. Copy it, share it, change it, run it on your own servers. Nothing about how you use it changes, and nothing costs money. The one thing the new licence does not allow is using Drawbridge to build a product that competes with Drawbridge.
The old licence, Apache 2.0, let anyone take the code, rebrand it and sell it
as their own. That was never the intent, so it has moved to the PolyForm
Shield License 1.0.0 — a short, plain-English licence you can read in about
two minutes. The full text is in the app under About → Licenses, and on the
website at /licenses/.
The name and the logo are trademarks and always were: the licence covers the
code, not the brand. A fork is welcome under its own name. The new
TRADEMARK.md spells out exactly what you can do without asking — and
"built with Drawbridge", "compatible with Drawbridge files" and screenshots
are all fine.
You can let a roomful of people in without standing at the door.
Ten people arriving at a workshop used to be twenty clicks — every one of them
knocking, and you clicking Allow. Now there is Let anyone in in the
Share popover: press it, and for the next twenty minutes anyone holding this
session's invite or view-only link walks straight in. The popover counts the
time down and offers End now, and the toolbar pill reads · open so you
can see from anywhere in the app that the door is standing open.
Then it shuts by itself, which is the half that makes it worth having. It is an action, not a mode: nothing is stored, there is nothing to find switched on next week, and every new sharing session starts with the door shut. The twenty minutes are not adjustable — a choice of durations would put a decision in front of you at the one moment you are busy letting people in. And it never applies to your personal link. That one is deliberately reusable and long-lived, so it is the one link that must never admit a stranger who saved it months ago; whoever uses it always waits for you, open door or not.
A shared link no longer leaves the secret sitting in your address bar. When you open an invite in a browser, the app now takes the invite out of the URL as soon as it has read it. It used to stay — visible in the address bar, saved into history, and captured by any bookmark you made of the page, which meant reloading the tab asked you to join all over again. A link that is not an invite is left exactly as it was, so nothing else that uses the address bar is affected.
Considerations before you update: none for how you use Drawbridge, and the
open door is off until you press it. Two things worth knowing. While it is
open, anyone holding that session's link joins without your approval — that is
what it is for — so end it early with End now if the room fills up sooner
than you expected; your personal link is never included either way. And on the
licence: if you redistribute Drawbridge or build on it, read the new LICENSE,
which ships in every download. That change is not retroactive — every release
up to and including v0.70.0 was published under Apache 2.0 and stays that way
permanently, so nothing you already have is affected.
v0.70.0 — 2026-08-28
An AI assistant can now join a live session and draw in it while you watch. Until now an assistant could only hand you a finished diagram: you asked, it generated, and anything you wanted changed meant asking for the whole thing again. It can now join a collaboration session as an ordinary participant instead. Press Share…, give it the ordinary invite link, and admit it from the lobby like anyone else — it turns up in People under a name of its own, with a colour, and everything it draws appears on your canvas as it happens. So you can say "no, put the firewall above the core" while the drawing is still in front of you. It behaves like any other collaborator from then on: your undo undoes your own work and never its, the pages bar shows which page it is working on, and Kick takes the diagram back whenever you want it.
It joins through the MCP server on your own machine. That is
Drawbridge --mcp, the local door, and it needs an ordinary editing invite — a
view-only link is refused in words rather than accepted and then quietly
ignored, which is how that mistake used to look from the assistant's side. The
hosted server at drawbridge.fortiknight.com deliberately cannot do this:
joining a session means holding the invite secret and sitting in the path of
every edit, and that secret is a password to your diagram. It stays on your
machine.
The manual's AI assistants page now starts with the thing most people want. Drawbridge has been reachable as a hosted MCP server for some time — one line of configuration and an assistant can read, render and generate your diagrams, with nothing to install and no account — but the page said so in a paragraph near the bottom, under a heading about running local models. It now opens on the two ways in, hosted first: the command that connects it, the configuration for assistants that take a URL, why a connection that is set up as the wrong kind of endpoint just hangs, and the limits stated plainly instead of left to be discovered. The chapter overview, the automation page and the website's front page point at it, so it is findable from where people actually land.
Considerations before you update: none — nothing changes unless you go looking for it, and an assistant can only reach a session you have started and admitted it to. One thing worth knowing before you do: an invite link is a password, so handing one to an assistant hands your diagram to whoever runs that assistant, exactly as handing it to a person does.
v0.69.0 — 2026-08-28
The hosted API and MCP door no longer runs out of renders. It had an hourly render budget, and it was charging things to it that were not renders: every time an assistant connected and asked what the tools were, that counted against the same allowance as actually drawing a diagram. A few sessions could therefore exhaust a budget of 120 drawings an hour having drawn perhaps thirty, and the only way out was to wait for the hour to roll over. Introductions are free now — and beyond that, the per-caller limits are switched off entirely for the beta. There is no requests-per-minute cap and no hourly ceiling: a long job is just a long job. The caps that protect the drawing itself are unchanged, so a single request still cannot ask for an unbounded amount of work: 2000 elements per diagram, 5 MB per request, and a hard stop on anything that runs too long.
If a burst does outrun the servers, retrying works. Where you would previously have been told the hour's budget was gone, you now get a "busy, try again shortly" that is true within seconds — and the service starts more containers when it sees callers being turned away, rather than adding one at a time and hoping. It also keeps more capacity warm than it used to, so a burst does not have to wait for a cold start before anything happens.
The MCP door no longer stalls under load. Sending several drawings at once used to put them in a queue nobody had asked for: with a busy server they would sit until they timed out a minute later, so the caller waited sixty seconds to be told nothing at all — and while it happened, the server reported itself as idle, so it never started the extra containers that would have cleared the backlog. Now it answers straight away, either with your drawing or with "busy, try again shortly", and the load is visible so more capacity actually arrives. The REST API always behaved this way; only the MCP door did not.
Considerations before you update: none. Nothing changes for the desktop or
browser app, and nothing changes for Drawbridge --mcp or --serve running on
your own machine — the limits described here only ever applied to the hosted
service at drawbridge.fortiknight.com.
v0.68.0 — 2026-08-26
A browser and the desktop app can now actually work in the same session. The last release said they could. They could not: the desktop was reaching the world through a public relay, the browser app is only allowed to talk to Drawbridge's own, and two people on different relays never find each other. So every invite the desktop produced was unjoinable from a browser, in any format, however you sent it. Both ends now meet on the same relay and it works in both directions — host on your desktop and let someone join in their browser, or the other way round.
The desktop hands out a link that opens anywhere. It used to give you a
nudge:// link and nothing else. That opens the installed app beautifully and
does absolutely nothing in a browser — no error, no tab, nothing — so there was
no way to invite anyone who had not already installed Drawbridge. The link in
the box is now an ordinary https:// one that opens on any machine, and
Copy app link is right underneath it for people who would rather it opened
the app they have. The browser app offers both too, which it never did either.
The share panel is a panel again, not a wall. It had grown to three link boxes, seven buttons and three paragraphs of explanation stacked in one narrow column. It is now one link with Invite, View-only and Personal tabs above it: you see one link, one sentence about that link, and that link's own buttons. Nothing was removed — the view-only and personal links live on their own tabs, with Regenerate and Reset where they belong.
Considerations before you update: when the desktop app cannot make a direct
connection between two machines, it now falls back to Drawbridge's relay rather
than to a public one run by n0 — the same relay browser sessions have used since
the last release. Your drawing is encrypted end to end either way and the relay
cannot read it, but the machine in the path is ours now, and the privacy page
says so. Direct connections between two desktops are unchanged and still go
straight between the machines. Both people need this version for a
browser-and-desktop session; if you self-host and would rather keep n0's public
relays, put {"relays": "n0"} in collab-relays.json.
v0.67.0 — 2026-08-26
Collaboration in the browser now runs through Drawbridge's own relay. Until now a browser session was carried by a public relay run by n0. It is now carried by one running on this site. Nothing about how you use it changes, and your drawing is still encrypted end to end between the participants — but the machine in the middle is ours now, and the privacy page says so plainly.
Why we did it: one address, one port. Everything the browser app touches is
now drawbridge.fortiknight.com over 443 — nothing else, no other hostname.
That is the difference between "works" and "does not work" on a corporate
network where somebody has to justify every firewall rule: there is now exactly
one to ask for. Previously the app also reached out to several relay hosts and a
discovery service, none of which a firewall team would have been told about.
The desktop app is unchanged — it still connects directly between machines where it can, and falls back to a public relay when it cannot. Desktop and browser can still work in the same session together, either way round.
Considerations before you update: if you self-host Drawbridge, browser collaboration now expects a relay on your own instance; without one it falls back to the public relays as before. Nothing to do for anyone using drawbridge.fortiknight.com.
v0.66.0 — 2026-08-26
Invite links are much shorter. A link to join a session used to run to
around 290 characters, which chat apps wrap, break across lines, or turn into a
half-clickable mess. The same invite is now about 172 — it survives being
pasted into a message. Nothing about how it works changed: the secret still sits
after the #, which your browser never sends to any server.
Links you have already shared keep working. The older, longer form is still understood, so an invite you sent yesterday is fine.
And the Join box now says what it actually accepts. It read "Paste a nudge:// link or an invite code", which had stopped being true — it takes a browser link too. It now says "Paste the link or invite code you were sent".
Considerations before you update: none.
v0.65.0 — 2026-08-26
You can change your name in the middle of a session. Open the share panel — click the Live pill, or App menu → Share… — click your own name in the People list, type a new one and press Enter. Everyone sees it straight away: nothing reconnects, nobody is dropped, and the drawing carries on. It works whether you are hosting or have joined, and the new name is remembered for next time. Escape puts the old one back if you change your mind.
Considerations before you update: none.
v0.64.1 — 2026-08-26
Three fixes to sharing, all found within an hour of it going out.
The share panel opens where you can see it. Clicking the Live pill in the toolbar appeared to do nothing at all. The panel was opening every time — it was just being positioned off the left edge of the window, because it anchored itself to the Share… item in the app menu, which has no position while the menu is closed. It now anchors to whichever control you actually clicked. This affected the desktop app too, and it mattered most to whoever was hosting: the pill is how you reach the People list to let someone in.
"… wants to join" now goes away once you have dealt with it. The notification stayed on screen for the rest of the session unless you dismissed it by hand — including after you had already let the person in, or after they had given up and disconnected — still offering to review a request that no longer existed. It now disappears the moment the request is resolved, however it was resolved.
You can paste a browser invite link into Join. Pasting the https://… link
that the browser build itself hands out was rejected with "Not a nudge:// link
(scheme https)". The Join box now takes any of the three: a browser link, a
desktop nudge:// link, or a plain invite code.
Considerations before you update: none.
v0.64.0 — 2026-08-26
You can now collaborate straight from the browser. Open Drawbridge in a browser tab, press Share…, and you get an invite link like any other — no download, no account, nothing to install for the people you send it to. They open the link and they are in the same drawing as you, live.
It is one session, not a separate browser one. Someone in a browser tab and someone in the desktop app can work in the same diagram together, either way round: the browser can be the host and the desktop app the guest, or the reverse. Everything you already had comes with it — the approval lobby, kicking someone out, view-only invites, live cursors, following another person's view, and the hand-over that keeps a session alive when the host closes their window.
It works from anywhere without setting anything up. No port forwarding, no
VPN, nothing to open on your router or your office firewall. Two people on
different networks — one on office WiFi, one on a phone — simply connect. Your
diagram travels end-to-end encrypted; a browser participant is always passed
through a public relay operated by n0, which forwards traffic it cannot read,
and the status pill says relay whenever that is happening.
Considerations before you update: three things are worth knowing about the
browser version specifically. It only appears on https:// — if you
self-host Drawbridge and serve it over plain http://, the sharing controls
stay hidden, because browsers withhold the encryption the invite handshake
needs on an insecure page; serve your instance over HTTPS. Your identity in a
browser lasts as long as the tab — reloading is fine and your invite keeps
working, but closing the tab and reopening it makes you someone new, so a
reusable personal link shared from a browser stops working once that tab is
gone; the desktop app remembers it properly. And a self-hosted relay stays
desktop-only for browser participants. Nothing about the desktop app changes.
v0.63.2 — 2026-08-26
The Role and Functions fields on a device now show you what they know. Both
have a ▾ that opens a proper list, in the app's own panel, under the field —
the role one used to be the browser's own drop-down, which appeared over at the
right-hand edge of the window and stayed invisible until you had typed the first
few letters of something it already knew. The role list shows each tag beside
the name it stands for, so you no longer have to remember that "internal
segmentation" is spelled ISFW, and searching finds either.
Functions gained a list at all, and it is much longer than it was. It never
had one — the three names in the empty field were a hint, not an offer, so the
field looked like it had heard of VPN and IPS and nothing else. A firewall
is now offered twenty-five functions grouped the way you would describe the box
(inspection, access, network, platform), and you tick as many as apply: the list
stays open while you work down it, and ticking something already on takes it
off. Switches and routers grew their vocabularies too. Both fields are still
ordinary text, so TRANSIT, PCI or a function nobody else uses go in exactly
as before — the list is an offer, never a rule.
Considerations before you update: none.
v0.63.1 — 2026-08-25
AI assistants are told what Drawbridge is for the moment they connect. The MCP server now answers the opening handshake with instructions — what the tool does, which of the three capabilities answers which question, and the two things that decide whether a generated diagram is what you pictured: put a device kind on everything, and let Drawbridge do the layout. Assistants see that before they decide to call anything, which is earlier than a tool description is read and much earlier than a reference page would be. Version 0.63.0 taught them how to call the tools correctly; this tells them what the tools are for.
And they can now look up any device Drawbridge draws. A new drawbridge://kinds reference lists the whole catalog — every device type, grouped, and for each one the other names it answers to. It matters because the short guidance can only name the thirty or so kinds a drawing usually reaches for, while the catalog has over a hundred: ask an assistant for a data diode, a protection relay or a bastion host and until now it had no way to know those symbols existed, so you got a plain box. It can look them up instead, including by the word you used rather than ours.
Considerations before you update: none.
v0.63.0 — 2026-08-25
Every device can now say where it sits and what it runs. Two new fields in the inspector, and they are deliberately different from each other so you never have to work out which is which. Role is one short tag drawn on a tinted band across the top of the tile — EDGE, ISFW, DCFW, CORE, ACCESS — in the device's own accent colour. Functions is a comma-separated line under the name, in ordinary text: VPN, IPS, Web filter. The band on the tile is where the box is; the line under the name is what it does. Both are free text with the common answers offered per device — a firewall is offered edge, internal segmentation, data center, DMZ, branch, cloud, OT, distributed and host-based; a switch gets core, distribution, access, top-of-rack, spine, leaf and management — so type TRANSIT or PCI if that is what your site calls it. They travel everywhere the rest of a drawing does: through .drawio and .vsdx, to the people in a live session, into the auto-legend (a kind used at two roles gets a row for each, which is usually the point), the inventory CSV, Ctrl/⌘+F, and the device panel of an exported HTML file. Compare calls a changed role re-roled rather than a restyle, because it is a fact about the network and not a look — and for the same reason the format painter leaves it behind, while duplicate and paste carry it.
The desktop app notices when a file changes underneath it. If something else edits the diagram you have open — an AI assistant driving the MCP tools, draw.io in another window, a git pull or a branch switch — you no longer have to close and reopen it. With nothing unsaved, the drawing reloads on its own and the view fits to it. With unsaved edits, nothing is touched: a message stays on screen, without fading, offering to reload when you are ready. Your own saves are silent, and it waits for a file to stop changing before reading it, so a program part-way through writing a diagram never loads as an empty one.
AI assistants get told how to draw well, not just what the tools accept. Ask an assistant for a diagram and the result is only as good as the topology it writes. The MCP tools now say what actually decides that: set a device kind on everything or it draws as a plain box, put speeds and link types on the cables, never place devices by hand because layout and routing are the product, and read the importer's notes and fix the source until they come back empty. The full guide — the device vocabulary, the attribute reference, a worked example, and which export format answers which question — is served to assistants that ask for it, so the ones that want it get everything and the rest are not slowed down.
And every result now says what to call the files. Generating two topologies in one session used to leave a heap of files in one directory with no consistent naming, because the tools hand back content and the assistant invented the rest. Each result now carries a suggested name taken from what the diagram calls itself, with the convention stated to the assistant: one directory per diagram, every file for it named after it. You can override it by passing a name of your own.
Considerations before you update: the inventory CSV has two new columns, Role and Functions, inserted after Kind — a script that reads that file by column position needs adjusting, one that reads it by header does not. The auto-legend now lists a device kind once per role in use, so refreshing the legend on a drawing where you set roles will add rows.
v0.62.1 — 2026-08-24
The hosted API reports its own load. /api/health now answers with inFlight and maxConcurrent beside the name and version, which is what lets a deployment scale render capacity with demand instead of guessing. Nothing else changed in the apps.
Considerations before you update: none.
v0.62.0 — 2026-08-24
Drawbridge can now tell you what is in a drawing, not just make one. A new command-line question — Drawbridge --doc network.drawio --export audit.describe.json — answers with the document as structured JSON: every page with its devices (kind, label, layer, asset data, rack position), every cable (both ends with ports, speed, type, aggregates) and the layers. It is built for scripts and AI agents that audit existing documentation ("every device with no management IP", "what changed since last quarter"), and every other export works from a document too: --doc network.drawio --export network.png re-renders a finished drawing headlessly. All of it pairs with the new describe, export and create_diagram tools that AI assistants can call when the app runs as an MCP server (Drawbridge --mcp) — an agent can hand over topology text and get back the routed, laid-out drawing, with the importer's notes about anything it had to skip or adjust. The manual's new AI assistants (MCP) chapter has the client setup and the tool reference, and the privacy page says plainly what crossing that boundary means: the server makes no network call of its own, and what an assistant reads or draws is shared with that assistant by your choice. And for pipelines that prefer HTTP over spawning processes, Drawbridge --serve runs the same capabilities as a local web API on 127.0.0.1 — describe, export, generate — described by OpenAPI at /api/openapi.json so API tooling can consume it without a hand-written client.
Imports and Tidy up now center parents over their children. Generated and tidied drawings used to sit sixty pixels off symmetric — the core over its first switch instead of over the row. Layout now balances every tier, so a tree comes out looking the way an engineer would have drawn it. The manual's example images are re-rendered with the new layout.
Considerations before you update: none.
v0.61.4 — 2026-08-24
Naming an aggregate ring now shows you where its caption goes. Type a
port-channel name — Po1 — and the caption appeared on the drawing, but the
Along, Side and Follow the ring controls that place it did not turn
up until you happened to click something else. They arrive as soon as you
finish typing the name.
Your notes and callouts now show up in the overview. The minimap drew your devices, zones, racks and cables but silently left out every text block and callout — so a page whose point was a title note and three annotations looked almost empty in the corner of the screen. They appear as faint blocks at their real size and position, and a group shows the dashed frame the canvas draws round it. The map still never draws words: at that size they would be a smudge, and what you need from it is "something is here, that shape, there".
Colouring a flow arrow colours its caption too. Pick a colour for an arrow or a line annotation and the shaft and arrowheads changed while the caption stayed grey, so one object came out in two colours. The whole annotation takes the colour now, and the default swatch puts all of it back. A cable's caption still stays neutral — a cable's colour means its speed, and a caption wearing it would read as data.
Considerations before you update: none.
v0.61.3 — 2026-08-23
The ring colour can be changed on a cable that belongs to two rings. In a spine/leaf pod every cable is in two aggregates at once — its leaf's and its spine's — and in exactly that drawing the Ring color control never appeared, because it could not tell which ring you meant. It asks instead: pick the ring by name (its port-channel label, or its number in the drawing) and the colour, Reset and Set default act on that one.
Adding a connector to a cable run no longer destroys the run. Selecting a linked cable and the next connector — the obvious way to extend it — offered Unlink cable, and pressing it broke the run apart. It now reads Add to this cable and the run takes the newcomer in, keeping its name and everything else about it.
A dragged caption goes back where the button says. Drag a connector's label along its cable and the inspector still reads Middle and Below, so pressing either of those buttons did nothing at all and you had to go somewhere else and come back to undo your own drag. Pressing the button that is already marked now puts the caption where it says.
The watermark fits the drawing on a small diagram. On a drawing of one or two devices the first and last letters of the watermark were cut off by the edge of the sheet — on screen, in the SVG export and on the printed page. It is sized to the drawing it crosses now, so the whole phrase is always there.
Searching the manual finds the word, not the middle of another one.
Searching ips returned two dozen paragraphs about t·ips, and city found
"capacity" and "opacity" rather than the one about map cities. A search now
matches the start of a word — typing the first few letters of a term still
finds it.
Closing a page you are not looking at is recorded. The list of recent actions in a bug report said nothing at all when you closed a page other than the current one, so a report could describe a missing page with no sign of how it went missing.
Exporting a PDF no longer logs errors to the browser console. Nothing looked wrong on the sheet, and nothing was — but the print document carried styling the browser was always going to refuse, and a console full of refusals hides the messages that matter.
Considerations before you update: none.
v0.61.2 — 2026-08-23
Adding a country no longer joins a layer that merely shares its name. If
you had renamed a layer to Sweden, adding the Sweden map put the map on that
layer — so hiding it took your devices with it. The map gets its own layer
again, beside yours.
The action trail no longer says working with pages deleted your shapes. Adding a page, closing one or switching between them wrote "removed 5 shape(s)" into the trail attached to a bug report, and "added 5 shape(s)" coming back. Nothing was removed any of those times — the trail now says what you actually did.
Searching the manual for a word in the singular finds it. Typing city
found nothing about map cities, because the manual writes the plural. Common
singular/plural pairs now match either way, without short searches like ips
turning into a page of unrelated results.
Considerations before you update: none.
v0.61.1 — 2026-08-23
Rack units can be dragged between Us again. In the rack builder, dragging a mounted device to a different U did nothing at all — in any browser. It has never worked; the gesture starts properly now.
Watermarks and classification markings reach the printed sheet. Set a classification or a watermark and the canvas showed it, the SVG export carried it, and the PDF — the copy that actually leaves the building — carried none of it. A marking that vanishes when you print is the one place it needed to be.
Switching something off in the View menu stops you editing it. Hide notes or lines while one is selected, and the inspector went on offering its Label — and typing there really did change the document, on an object you could no longer see. Anything you hide is now deselected, whether you hide it from the View menu or by switching off its layer.
A menu opened from inside ⋯ no longer covers the rest of the list. At narrow window widths the ⋯ menu holds Align, Layers and the rest, and opening one of them painted it straight over the others — they could not be clicked until you closed it again. Nested menus now open beside the list.
Connect handles stay the size they look. The small circles for dragging a cable off a device kept whatever size they were given when they first appeared, so zooming in after working on a large drawing left a big translucent disc sitting over a device. Hovering the invisible grab area also lit it up as a solid blob; it stays invisible and lights the small dot instead.
Undoing an import takes one press. On a file with a name in it, the first Ctrl/Cmd+Z after importing appeared to do nothing and the second undid the import — so anyone who pressed twice out of habit lost more than they meant to.
Considerations before you update: none.
v0.61.0 — 2026-08-23
Dashed and Filled, for the basic shapes. Select a rectangle, an ellipse, a diamond — any of the eight basic shapes — and the inspector now has a Shape section: Solid or Dashed for the outline, Outline or Filled for the body. The two are independent, so they give four looks between them. The manual has described these switches since the shapes shipped; until now the only way to get a dashed shape was to open a file that already had one, or to copy the look off it with the format painter. A Line is offered the dash and not the fill: it has no body to fill.
Fit really does fit, however big the drawing. On a very large drawing — a few hundred devices imported at once — pressing Fit left the topology running off both sides of the window, and no zoom level would show all of it, because Fit stopped at the same 8% floor as the zoom buttons. It now goes as far below that as it needs to, because "show me all of it" is what you asked for. The − button still stops at 8%: you can arrive under the floor by asking for the whole drawing, but you cannot walk down there a step at a time, and + brings you straight back.
City names on a crowded map stay readable. With Show cities on, Dallas, Ft. Worth and Arlington were printed straight through one another on the Texas map — three of the state's ten biggest cities share one metroplex, and every name was drawn at the same offset beside its own dot. Names are now placed around a cluster: one to the left, one to the right, one underneath, never across another city's dot. All ten stay named, and this was not only Texas — the same crowding was quietly there on the world map and on a dozen countries.
The overview keeps the view you fitted. On a very large drawing, one click in the overview map used to throw away the zoom Fit had just given you and jump the camera back in. Clicking or dragging in the overview moves you around the drawing and leaves the zoom alone, which is what a navigator should do.
Considerations before you update: none.
v0.60.2 — 2026-08-23
The editor starts in a browser that blocks site data. If you have told your browser to block all cookies and site data, Drawbridge did not open — the palette was there, but nothing could be placed on the canvas and the console filled with errors that named nothing useful. It now starts and draws normally in that setting. Nothing is remembered between visits, which is what you asked your browser for, and everything else works.
The out-of-subnet hint reads the Management IP. Give a zone a subnet and a device inside it a Management IP outside that range, and you now get the gentle hint you should always have had. It was only ever reading an address out of the device's label, which is why filling in the field properly appeared to do nothing. Labels still work, for drawings that use them.
Undo brings a legend back with the devices it describes. Deleting the last thing on a page took the legend with it, permanently — the undo restored your devices and the legend stayed gone, with its own switch quietly turned off. A block now goes empty rather than away when there is nothing left to list, and fills straight back in. One undo puts the whole picture back.
Widening the gap on a grid keeps your rows. On a two-row grid, pressing Gap + once could deal a device onto a row of its own, report gaps that did not match the drawing, and make the vertical gap smaller than it was. All three came from the same miscount, and rows now stay rows.
Considerations before you update: none.
v0.60.1 — 2026-08-22
Compare mode really is read-only now. The panel said "read-only" while the drawing behind it was fully editable — you could drag a device, rename one, and the change was quietly kept. Worse, it reached the crash-recovery snapshot, so an edit you never meant to make survived a reload. While a comparison is open, the drawing is now held still: dragging, resizing, F2 and double-clicking a label all do nothing, and leaving the comparison puts you back exactly where you were.
The Subnet field only takes a subnet. Typing anything else — a note to yourself, a half-finished address — used to land in the zone's title bar looking exactly like a real network. The field now outlines itself in red and writes nothing until what you have typed is a subnet, so the drawing never claims something it cannot back up. Clearing the field still removes it, and an IPv6 subnet is accepted as a label.
A callout that grew to fit its text is no longer cut off. A bubbled callout grows downward as its caption wraps. Exports and Fit to view were both still measuring the box you drew rather than the one on screen, so the bottom of a long callout ran off the edge of an exported picture, and Fit framed a shape that was not the one you were looking at. Both follow the bubble now — as do the selection ring and the resize handles, which sat a hundred pixels above the border they were supposed to grab.
Isometric pictures are framed to what they actually draw. Text, images and basic shapes stand upright in isometric view rather than lying flat, and the export was sizing the page for the flat, tilted shape instead. A tall image lost a few pixels off its top, and everything else was surrounded by empty space it did not need.
A colour dragged in the system picker is one undo step. Dragging around the macOS colour wheel left a trail of undo entries, so a single ⌘Z walked back through the drag a frame at a time instead of past it.
The colour swatches follow the theme. The eight family accents in the inspector are read from the current theme, and switching between light and dark left them showing the previous theme's colours until you reloaded.
Smaller things. The format painter no longer copies a label position onto a zone, which our own drawings ignore and draw.io acts on. A bug report's attachment list says "11 kB", not "0.0 of 4 MB used". Four city names on the maps — Ft. Worth, St. Paul, St. Petersburg and Mt. Hagen — had a doubled space in them. A mounted rack unit is no longer offered a label-position control it cannot act on.
Considerations before you update: two things you could do before, you cannot now, and both are deliberate. Editing the drawing while a comparison is open is refused rather than kept — if you have been using compare as a way to look at an old revision while working, close it first. And the Subnet field rejects text that is not a subnet, so a zone that was carrying a note in that field keeps it, but you will not be able to type a new one. Isometric exports are framed slightly differently from before; the picture is the same, the margins around it are tighter.
v0.60.0 — 2026-08-21
The corner of a linked cable, properly this time. v0.59.1 fixed one of the two ways this could go wrong and shipped believing it had fixed both. Where the next device sits directly under the edge of the one the run passes through, the cable still came out as two pieces with a gap. It is one continuous cable now, on every connector type. The measurement that was missing: a device tile is 64 pixels wide, so its centre is exactly 32 from the side — and the rule deciding whether to draw the connecting stretch gave up at 28.
An Auto connector stays near the middle of a device. When two devices are not quite in line, an Auto connector shifts where it meets each of them so the cable can still be drawn as one straight line. It had no limit, so a device dragged well out of line was still joined by a straight cable that left from the very corner of its icon — and then snapped into a step. It now shifts only within the middle half of a device's side and takes the step sooner, which reads as a decision rather than as the cable clinging on. Connectors set to Direct are unchanged.
Two cables between the same pair of devices always look like two. At one particular alignment a parallel pair could be drawn exactly on top of each other, so the page showed a single link where the drawing had two — and the buried one could not be clicked either. They are now kept apart at every position.
A group of parallel cables stays a group, everywhere along its length. Several cables between the same pair used to separate nicely on the straight stretches and then pinch together — or cross — at the bends. The whole fan now travels as one: every cable keeps its own lane through every jog and corner, evenly spaced on both axes, in the same order end to end. A crowded side also earns a little more room, so six cables never squeeze into a smudge.
Cable runs pass through a device cleanly, whatever the angle. A linked run crossing a middle device now turns inside it as one tight nested bend — at right angles, at a slant, or dead straight through — instead of scattering hooks and squiggles over the icon. The two halves are welded exactly where their drawn lanes cross, so there is no stub or blip at the joint even fully zoomed in. Runs drawn out of an icon's centre pick the sensible border to leave by on their own.
Devices pushed edge-to-edge no longer flatten their cables onto one line. Dragging a device until its edge sat exactly on a neighbour's line made every cable between them collapse onto a single stacked line that could not be clicked apart. They keep their own lanes now, however the tiles touch.
Considerations before you update: none.
v0.59.1 — 2026-08-21
A linked cable that turns a corner is drawn as one cable again. Where a run passed through a device and turned there, it could come out as two separate cables with a gap through the icon — one half stopping at the middle, the other starting at the edge. It depended on where the next device happened to sit, so nudging it made the gap vanish and reappear. The corner is drawn properly whichever way the run leaves.
And the overview keeps up. The map in the corner was showing the drawing as it was one edit ago: cables it had already re-routed kept their old shape there until something else was changed. It now repaints as soon as the routing settles, so it always matches the canvas.
Considerations before you update: none.
v0.59.0 — 2026-08-21
The update offer tells you what you would be getting. In the browser it used to say two words — "Update available" — and leave you to decide on that. It now names the version and shows that version's release notes, the same way the desktop app has, by asking the site it was loaded from what the waiting version is. Offline, or on a copy of Drawbridge hosted somewhere that publishes no version file, it says what it always said and works exactly as before.
And Download update now gets you the newest release. The amber marker remembers the release it was lit for, which may have been weeks ago, so the button checks once more before it opens anything and hands you whatever is current — moving the panel to that version, notes and all, as the download starts. It also cannot do nothing any more: a marker restored from a previous run carried a link the app would no longer open, and pressing the button produced no window and no error at all. If the link has gone stale the download page opens instead.
Several connectors can be one cable. A run that passes through a device — an internet cloud, a patch panel, a firewall in the middle of a span — is drawn as separate connectors, and Drawbridge already joined them into one line wherever there was only one way to read it. Where a device has two cables in and two out there isn't one: which arriving cable continues as which leaving one is something only you know. Select two connectors that meet at a device and press Link as one cable, under Through icons, and they become one cable flowing through the icon. Link a third to either end and the run grows — it can cross as many devices as you like.
A linked cable then behaves like one. Clicking any part selects the whole run, so colour, speed, the format painter and Delete act on the cable rather than on the piece you happened to click; hold Alt to reach a single part. It carries one caption instead of one per part, and each part keeps its own text in the file, so Unlink cable gives you back exactly what was there. Where two cables pass through the same icon they now run parallel through it, each keeping its square corner, instead of converging on one point.
A through connector's own ends stay on the border. Through icons used to move both ends of the connector to the middles of the devices it joins. Now only a device the line actually passes through gets crossed at its middle — the connector's own two ends keep their normal anchors on the edge of the tile, like any cable. A junction where several cables merely end no longer has them all punching through to the centre, which also removes a whole class of cable crossings on top of the icon.
Two connectors running through one icon can turn a corner. Through icons was built for a cable passing straight through a device, and that is the only shape it looked right in: when one connector arrived from above and the other left to the side, the two pushed into the middle of the icon and stopped dead against each other, leaving a hard corner and a visible join on top of the glyph. They now meet in one rounded bend — the same rounding every other corner in a connector gets — so the pair reads as one cable turning inside the device. Exports show the same bend.
The bend closes, whichever router drew it. A run turning a corner inside an icon left a small gap there when the connectors were on Auto, while the same pair on Direct bent cleanly — the same picture, two different results depending on a setting that has nothing to do with the corner. It is one closed bend either way now.
And an icon can sit in front of a through cable. A through connector is drawn on top of the devices it crosses, which is the whole point of it — but that was a law rather than a default, so there was no way to put a cloud or a badge over the line. Arrange ▸ Bring to front on the shape now does exactly that; clear the connector's Through icons setting and it goes back to wherever you have arranged it.
Crossing cables get their bump back. Where two cables cross, Drawbridge draws a small hop so you can see that they pass rather than join. Cables set to cross an icon were missing theirs in three separate situations — over the icon itself, when the hop landed on the cable underneath instead of the one on top, and when the crossing sat close to a corner. Every crossing that is visible now carries the hop.
Considerations before you update: none.
v0.58.0 — 2026-08-20
A connector can run through an icon instead of stopping at it. Some devices are things a cable passes through rather than ends at — an internet cloud, an ISP hand-off, a patch panel in the middle of a span — and drawing that meant two separate cables bumping into opposite sides of the same tile. Select a connector and press Through icons, under the connector-type buttons, and it runs to the middle of each device it joins and is drawn on top, so the line visibly crosses the icon.
Set it on the cable arriving and the one leaving and they both end on the same point at the centre, so the pair reads as one long line with the icon strung on it. The device stays exactly as easy to grab as it was: a click in the middle of a crossed icon still picks the device, not the cable. Off is the default and will stay the default — cables belong under the shapes.
Any colour you like, including the one from your style guide. The Color row in the inspector was nine chips and there was no way at all to reach a colour that was not one of them. It now carries six brand colours as well, and a Custom… chip that opens three ways to pick: a sheet of 66 shades and tints, a box to type or paste a hex value into, and Pick…, which opens your system's own colour panel — with its eyedropper, its sliders and whatever swatches you have saved there.
The format painter now carries the whole look. Copy a style and paint it, and a connector's wavelength, label size, bold, italic, underline and typeface travel with it — as do a shape's typeface, dash, fill and opacity. All of them were being worked out correctly and then quietly left behind. Worse, if the thing you copied differed from the target only in one of those, the painter reported that it had changed nothing and did nothing, which looks exactly like a broken button.
Considerations before you update: none. Existing drawings are unchanged — connectors keep stopping at their tiles unless you turn Through icons on — and a file with a through connector in it still opens in draw.io, where the cable is simply drawn stopping at the tile as before.
v0.57.3 — 2026-08-20
Import and Export stay together when the window gets narrow. The toolbar gives controls up as the window shrinks, moving them into the ⋯ menu and bringing them back when there is room again. Import and Export are meant to go as a pair — they sit side by side and read as one thing — but at certain widths the bar was letting go of Import and keeping Export on its own. It only took surrendering one of them to make everything fit, so the bar stopped there and left the other stranded.
Now they always travel together: at every width you either have both on the toolbar or both in the ⋯ menu, where they still appear under their own names.
Considerations before you update: none.
v0.57.2 — 2026-08-20
Crossing cables bump again where they cross close to a device. Draw three straight links between two firewalls and two more into one of them from a third, and the cables arriving from below cross the horizontal ones a short way out from the device — where, until now, they were drawn flat. On a wiring drawing a flat crossing means "these two are joined", so the picture said something you did not draw.
The rule that caused it was meant for something real: cables fanning out of one switch meet near that switch, and a bump on every one of those meetings is noise, not information. It was written as a fixed distance — anything crossing within about half a device's width of where both cables reach the same box was treated as a junction. That works for cables that leave a device at right angles and turn away. It cannot work for straight ones, because two straight cables ending at the same device can only ever cross close to it: the exception swallowed every crossing there was.
Now the question is simply whether you can see the crossing. If the device's own tile covers it, there is still no bump — nothing to mark on a piece of cable nobody can see, and a fan of wires arriving at one switch still reads as a junction. Anywhere the crossing is actually visible, the upper cable hops over the lower one, however close to the device that happens.
Considerations before you update: none. Drawings gain bumps they should always have had; nothing moves, and no file changes.
v0.57.0 — 2026-08-18
Layers decide what is on top, and "Send to back" finally means it. A tester pasted a picture to use as a background, sent it to the back, and every connector under it disappeared — the device icons stayed, the cables went, and nothing they tried brought them back. Changing the routing didn't help, nor recolouring, nor moving the picture onto its own layer and dragging that layer to the bottom of the stack. None of it could have: the drawing was painted in three fixed passes — zones, then cables, then everything else — so what a thing WAS outranked both the layer it sat on and where you had put it in the order.
Now there is one order for the whole drawing and no exceptions in it:
- A higher layer paints over a lower one, for everything on it — shapes, pictures and cables alike. Drag a layer up or down and its whole contents move with it. Put a picture on a layer below your diagram and it is a background, which is what you expected the first time.
- Arrange works on everything the same way. Bring to front, forward, backward, send to back — a pasted image behaves exactly like a device tile, and both now move past the connectors as well as past each other.
- Arrange stays inside its layer. "Front" means the front of the layer the object is on; it can no longer jump the whole stack and quietly break the layer grouping. To move a pile of things at once, drag the layer.
The same order now reaches the SVG, PNG and PDF exports and the saved
.drawio, so all four finally agree. That last one fixes something nobody had
reported: a file saved here listed every shape before every cable, and because
<root> order is paint order in draw.io, opening our own file there drew the
cables over the devices — the opposite of what you were looking at when you
saved it.
Aggregate rings, endpoint port labels and group frames follow the same rule. They are drawn about your cables and shapes rather than being things you can arrange yourself, so each one now travels with the layer it belongs to: hide or restack a layer and its rings and labels go with it.
And you can now choose which layer you are drawing on. Each row in the Layers panel has a dot at its left: click it, and from then on everything you draw lands on that layer instead of the bottom one — a shape from the palette, a text box, a picture pasted or dropped in. Press it again to go back to the default. It is yours rather than the document's, so it is never saved into the file and a collaborator keeps their own. Copies and Import still keep the layer they came from: a duplicate belongs where its original lives.
That came with a bug worth naming, because it was silent. A new shape used to land on the bottom layer no matter what — so if you had hidden that layer, your shape arrived invisible and it looked like nothing had happened, and if you had locked it, the shape arrived unclickable and could not even be moved off. New shapes now go somewhere you can see and reach, always.
Considerations before you update: nothing you have already drawn changes position, and a document with a single layer looks exactly as it did.
v0.56.0 — 2026-08-18
The Line and the Arrow are connectors now. Testers said the line was hard to grab and impossible to connect to anything — it behaved like a square that happened to look like a line. It doesn't any more. Clicking anywhere within a few pixels of the stroke selects it, along its whole length, at any angle. Selecting it shows endpoint handles instead of a resize rectangle. And you can drag either end onto a device: it snaps with the same feedback a cable gives you, stays fastened when the device moves or is resized, and detaches when you drag it away. A line with both ends free still works — that's the whole point of it — and the arrow keeps its head through every one of those operations. Files save as real draw.io connectors, and lines drawn in earlier versions still open.
Re-stack your layers by dragging them. The Layers panel now reads the way every design tool's layer list reads: the layer on top of the canvas is at the top of the list. Each row has a grip you can drag — or nudge with ↑/↓ — to change which layer paints over which, live on the canvas, in one undo step, synced to collaborators and saved into your .drawio file. The map layer stays pinned to the bottom where it belongs.
A hidden layer is now genuinely hidden. Turning off every layer used to leave port labels and cable rings floating on an otherwise empty page. Those adornments follow their layer now — hide it and everything it contributes to the canvas goes with it.
A locked layer is actually protected. The ✕ used to delete a locked layer and its contents as readily as an unlocked one; a lock that stops a marquee but waves through a delete protects you from the small accident and not the big one. Deleting a locked layer, moving shapes into it, and dropping a map onto it are all refused now, with the lock given as the reason. And the Layers panel stays open while you click around the canvas, so "Move here" works in one pass instead of needing the panel reopened for every shape.
One clear button on every search field. The ✕ that clears a search box was the browser's own: present in Chrome, absent in Firefox and on the Mac, and a few pixels wide where it did exist. Every search field in the app — the icon palette, Find, the object list, the template pickers, the manual — now has our own: the same size and the same look everywhere, big enough to hit, clearing and refocusing the field in one click. Escape does the same thing from the keyboard where that field filters a list you're looking at.
The left panel survives your font settings. On some browsers and operating systems the icon palette wrapped its headings onto two lines, pushed counts onto the row below and clipped "Expand all". It now degrades gracefully under any reasonable font metric — bigger minimum font sizes, substituted faces, a webfont that never arrives — with long labels ellipsized and their counts staying welded to them.
Plus a round of polish on all of the above, from a code review of the release: duplicating a dashed or faded line keeps its dashes and its fade, a click on a fastened endpoint no longer detaches it, dragging a line's caption does something instead of nothing, a labelled line can't be hidden by switching views, and pressing Escape while composing text with an IME no longer wipes the whole search box.
Considerations before you update: none.
v0.55.0 — 2026-08-17
Groups got the polish they deserved. The inspector's tab strip no longer wraps its counts onto a second line — Properties, Connections and Groups sit on one clean line, each count in a small rounded badge. New groups name themselves the moment you press ⌘G — "Group 1", "Group 2", and so on, always the lowest free number — so every group is findable in the Groups tab from the moment it exists, and you can rename it whenever you like. And a named group now wears its name on the canvas itself, in a small label just above its frame: click the label to select the whole group, drag it to move the group.
Considerations before you update: none.
v0.54.0 — 2026-08-17
PDF export works again — and looks like the drawing. Exporting to PDF (and printing the cable schedule) had been producing a broken page: the whole diagram collapsed into a solid black shape, the type fell back to a serif font, and the paper came out portrait instead of landscape. The cause was the app's own security policy leaking into the hidden print page and stripping every one of its styles — so the installed app and the PWA were affected even though every test looked green. Exports now come out the way the canvas looks: white device tiles, colored icons, hairline cables, the title band, landscape paper. A new automated check exports through the real production build so this cannot quietly break again.
Name your groups, and find them in a list. The inspector has a third tab, Groups, next to Properties and Connections. Every group on the page is listed there with a name you can edit, its member count and member names — and clicking a card selects the whole group and centers it on the canvas, so you can jump to "Rack 12" from a list instead of hunting for it on the map. Names are saved in your .drawio files, travel through Visio export/import, sync to collaborators, and renaming is a single undo step. Extending a named group keeps its name; merging two differently-named groups starts unnamed.
Considerations before you update: none.
v0.53.5 — 2026-08-17
FortiLink imports now work when your switches have names. If the
FortiSwitches in your stack have been given hostnames — which, on any stack
somebody looks after, they have — the FortiGate prints those hostnames in its
topology dump instead of serial numbers. Pasting one of those dumps used to
import nothing at all: the dialog reported a single line of parser error and
stopped there. Site-coded names like 10405-001-sw02 are the reason. The
FortiGate writes them into the file unquoted, and a Graphviz file is not
allowed to do that — Graphviz itself refuses to read the same dump — so the
importer now repairs the file on the way in rather than handing you the
vendor's syntax error. Paste the output of execute switch-controller get-physical-conn dot exactly as your terminal shows it, prompt lines and all,
and you get the whole stack: the FortiGate on top, an MCLAG pair side by side,
access switches below. Cables the FortiGate lists once per aggregate member are
merged into one and the merge is reported, so the count you read in the dialog
is the count of real cables.
Considerations before you update: none.
v0.53.4 — 2026-08-17
The top bar is arranged by what each button is for. It had grown a control at a time, and while nothing in it was broken, the groups had stopped describing anything: Replace sat with the file actions although it edits labels and never touches the file, undo and redo floated alone in the middle, and the zoom controls sat at the other end of the bar from Fit to window — the one button they belong beside. Nothing has been added or taken away, and every button does exactly what it did; they are simply in the order you would group them yourself. The bar now reads: the file actions (New, Open, Save, Revisions, Blocks), then Import and Export side by side, then the editing actions — undo, redo and Replace. The right-hand end is everything about what you are looking at rather than what you are changing: Layers, Align, the ★ quick-shapes menu, the eye, zoom, fit and isometric.
Import sits next to Export now. They are the two ways a drawing meets another tool — the Export menu has been holding Import's counterparts all along (Graphviz DOT out for DOT in, NetBox CSV out for CSV in) — so they are a pair, and on a narrow window they are the last two buttons the bar gives up, together.
Considerations before you update: three buttons have moved, so if your hand knows where they are, it will be wrong once. Replace is now on the right of undo/redo instead of after Blocks; Import has moved left, next to Export; and the zoom controls have moved right, next to Fit to window. Nothing was removed and no button changed what it does. On a narrow window the ⋯ overflow menu now gives up the ★ quick-shapes menu, Align and Layers before Import and Export, which stay to the end.
v0.53.3 — 2026-08-16
Text stays inside its box. Drawbridge decides where a caption breaks by estimating how wide each letter is, and that estimate was too small — so a line it believed would fit could be painted a few pixels past the edge of its own text box or tile. It showed up worst on Linux, where the system font is widest, but it was never only a Linux problem. Every letter has now been measured against what the browser actually draws, at normal and bold weight, so the estimate errs on the safe side instead of the sorry one.
Considerations before you update: captions now break a little earlier than
they used to, so a label that squeezed onto one line may fold onto two, and a
long name on a small tile may end in … where it did not before — hover it, or
open it in the inspector, and the full text is still there. Nothing about your
files changes: this is only where the line breaks are drawn, and reopening a
diagram anywhere will now break it the same way it does here.
v0.53.2 — 2026-08-16
A vendor's name only where that vendor's kit is actually being read. Drawbridge is a general network drawing tool, and a few places had picked up a specific vendor's product names as decoration — the Branch — SD-WAN template, for one, described itself as "Dual WAN into one FortiGate" when the template draws a plain firewall. It now says firewall, because that is what it draws. Where a vendor name is doing real work it stays exactly as it was: Import still names the commands you can paste, still recognises a FortiLink topology dump and FortiOS LLDP output, still reads serials into the asset fields and derives the model from them, and the icon search still finds the VDOM shape whether you type "vdom", "fortinet", "context" or "partition".
Considerations before you update: none. Nothing about your files, your imports or your exports changes. One built-in template's one-line description is the only thing you will see differently.
v0.53.1 — 2026-08-16
The "detached" mark moved to where the question is asked. v0.53.0 put a small pin on a detached object for as long as it stood inside a zone — which turned out to read exactly backwards: the badge was loudest where the object looked like it belonged, and a pin is a strange way to say "not attached". Now the drawing stays completely clean until you select a zone or rack — and at that moment, anything it will not take with it simply fades back: the detached object, and also a device that sits on another layer or a locked one, each saying why in its tooltip. Everything still vivid travels. Deselect, and the drawing is just the drawing again.
And the inspector counts it out for you. With a zone selected it now reads Carries all 3, or Carries 2 of 3 — 1 detached, or Carries nothing after Release contents. That line is also how you catch the device that looks half inside but is not: you placed three, the zone says it carries two.
Considerations before you update: none. Nothing about your files changes — this is purely how the editor shows a state that already existed, and exports never carried any of these marks in either version.
v0.53.0 — 2026-08-16
A zone takes its contents with it, whichever way you move it. Dragging a zone has always carried the devices standing on it — but the arrow keys did not, so nudging a zone slid the box out from under its own contents. Neither did Align, and a nudged rack left its mounted hardware hanging where the cabinet used to be. All three now behave like the drag. Hold Alt — while dragging, or while pressing an arrow key — to move the container alone and leave everything where it is.
And you can take one object out of a zone's grip for good. Several people asked for a way to "ungroup" something from a zone without moving the zone itself. Select it and press Detach in the inspector, or Alt-drag the object; either way that object stops travelling with the container, and a small pin marks it while it stands inside one. Reattach puts it back, and so does simply dragging it and dropping it into the zone again — an ordinary drop means "this belongs to the box you dropped it in". To release a whole zone at once, select the zone and press Release contents.
The app now explains the carry the first time it happens, rather than leaving you to discover it. The first time a move takes a zone's contents along, it says so once and mentions the Alt key — once per install, never again. App menu → Show one-off tips again brings that (and any other one-off tip) back.
Considerations before you update: the detach mark is stored in your
.drawio file as one of Drawbridge's own attributes. An older version of
Drawbridge — or draw.io itself — opens such a file with every object present and
in the right place, but without knowing that anything was detached; save it
there and the mark is preserved, not lost. Nothing else about existing drawings
changes.
v0.52.0 — 2026-08-15
The manual's cross-references are links now. Every "See Shapes." in the in-app manual was plain text — it looked like a reference and did nothing. There are now 37 real links across twelve pages, and three of them take you to the exact section rather than the top of the page. The website's copy of the manual gains the same links, and its headings gain anchors, so you can send somebody a link to one section of the docs.
And the manual stops opening pages half-way down. If you had scrolled through one page and then picked another from the sidebar, the new page opened wherever the old one had been left — sometimes thousands of pixels in, in the middle of a sentence. Search results had the same problem in a quieter way: they took you to the right page but not to the section you searched for.
The legend no longer has a broken row. On a page containing a text block, Blocks → Legend drew a row with no icon and the word "Text" split across two lines, colliding with the row underneath. The legend explains what the device symbols mean, and a text block is not a symbol — so it, and callouts, are simply left out. The rest of the legend is unchanged. This one mattered more than it looks: the legend is part of the drawing, so the broken row was going out in exported files.
The app starts faster. About 370 KB of typeface data was being loaded by everyone on their first visit, including people who never export anything. It is now fetched the first time you export, and exported files carry their fonts exactly as before.
Considerations before you update: none.
v0.51.0 — 2026-08-15
You can drag a diagram file straight onto the canvas to open it. Drop a
.drawio or a .vsdx anywhere on the drawing and it opens, without going
through Open first. It asks the same question beforehand if what you have
open has unsaved changes, and it opens the file as a document rather than
pasting it into the drawing you are already working on. One thing to know:
because a dropped file hands over its contents but not permission to write back
to it, Save will ask you where to put it. Dropping an image still adds the
image to the drawing, exactly as before.
Cable labels read the right way round in the isometric view. Turning the camera used to leave every connector caption and port name mirrored at two of the four corners — the device names were fine, the cables' text was backwards. All of it now turns to stay readable at every angle, in exported SVG, PNG, PDF and HTML files as well as on screen. A caption you have set to follow its cable also keeps following it through those turns, which it did not before.
Hiding a layer now hides its port names too. Switching a layer off took the devices and the cables but left the little port labels behind, floating over an empty page attached to nothing.
The manual reads properly. Parts of the in-app manual were showing their own
formatting marks — See _Shapes_. instead of Shapes — on twelve of its
fifteen pages, including the first one. The website has always rendered those
pages correctly; now the app does too.
Considerations before you update: none.
v0.50.0 — 2026-08-15
Three new typefaces, and these ones travel with your drawing. Inter, Lato and Roboto Mono join the four faces already there, and unlike those four they ship inside Drawbridge itself — their letterforms are written into every SVG, PNG, PDF and HTML export you make. A diagram you send to someone looks the way it looked on your screen, on a machine that has never heard of the font and with nothing fetched from the internet to make that happen. Roboto Mono is the one to reach for on a busy drawing: like Mono it lines up IP addresses and interface names, but you get to choose which of the two you prefer the look of.
Picking a typeface is now a drop-down rather than a row of buttons. Seven faces did not fit four buttons' worth of space. Every row is drawn in the face it sets, so the list shows you the fonts instead of describing them, and the closed control does the same. Below it, a line tells you what you have just chosen — whether it travels with your exports, or (for Comic) that Linux machines usually have to substitute something.
What the other tools see. A .drawio or .vsdx file records a font by name
and has no way to carry the letterforms, so draw.io and Visio substitute
something sensible of their own — Helvetica for Inter and Lato, Courier New for
Roboto Mono. Drawbridge remembers your real choice and puts it back when you open
the file again, so passing a drawing through another tool does not quietly
flatten your typography.
Considerations before you update: none.
v0.49.0 — 2026-08-14
Changing the font now updates text you have already written. In v0.48.0 the new Text style controls set the weight and typeface correctly — the change was saved to the file and shared with anyone you were working with — but the text on your own screen kept its old look until something else made the page redraw. It reads as "the button does nothing", and it is fixed.
The format painter carries the whole look now, not most of it. Copy the style from one object and paint it onto another and you get the weight, the slant, the underline and the typeface as well — previously those stayed behind, which was easy to miss because everything else travelled. The painter also carries the label size between any two objects, where before it moved only between text blocks; and it carries an optical wavelength alongside the cable medium it belongs with, which it never had.
Shapes, zones and backdrops can be faded. A new Opacity slider in the properties panel makes a basic shape, a zone, a virtual context or the Purdue backdrop as solid or as faint as you want — useful for putting a shape behind your devices without it competing with them. It fades the outline along with the fill, so the whole thing recedes together, and it is carried by the format painter like every other part of a look. Devices do not offer it: a faded icon reads as broken rather than subtle.
Considerations before you update: one, and only if you use the format painter on text sizes. Painting from an object that uses the document's default text size now RESETS the target's own size to that default, instead of leaving it alone. That is how the painter has always treated colour and alignment — an unset value is a look, and painting it clears — and font size is now consistent with them. Nothing changes unless you paint.
v0.48.0 — 2026-08-14
Labels can be bold, italic and underlined, in four typefaces. A new Text style row in the properties panel styles the caption of anything you select — a device, a connector, a text block — and the three switches combine, so a caption can be bold and italic at once. Select several things and one press styles all of them, as one undo.
The four typefaces are Sans (what every drawing already uses), Mono, Serif and Comic. Each button is drawn in the typeface it sets, so the row shows you what you are picking. Mono is the one worth knowing about for network drawings: interface names, IP addresses and port numbers line up under each other and are far easier to compare when every character is the same width. Nothing is embedded in the file, so a typeface is a request that falls back to whatever the machine opening the drawing has — which matters most for Comic, present on Windows and macOS and usually missing on Linux. Changing the typeface changes how wide the text is, so a caption may re-wrap onto another line.
Eight plain shapes for annotating a drawing. A new Basic shapes section at the bottom of the palette holds a rectangle, ellipse, diamond, triangle, hexagon, star, note and line. They have no icon — the shape itself is the drawing, so it fills whatever box you drag: a rectangle stretched wide is a wide rectangle and an ellipse stretched wide is an oval. Two behave deliberately differently: a star keeps its proportions whatever box you give it, and a line is drawn corner to corner, so dragging its box sets both the angle and the length.
Each shape has Dashed and Filled switches that combine into four looks, and takes a colour like anything else on the page. They are marks rather than containers — they do not capture the devices you draw on top of them, which is still what a Zone is for. Cables attach to the rectangle, ellipse, diamond and hexagon.
Both travel into draw.io properly. Weight, typeface and every shape are written using draw.io's own keys, so a drawing opened there shows the same bold text and a real ellipse rather than a rectangle. Opening a file somebody else made works the other way too: a label they made bold in draw.io now arrives bold here instead of rendering plain.
Considerations before you update: none. Existing drawings are untouched — nothing gains a typeface or a style it did not have, and a document that never uses the new controls saves byte-for-byte as it did before.
v0.47.2 — 2026-08-14
Saving on Windows no longer fails when two saves overlap. On Windows only, a save could come back as an error if another write to the same file was already in flight — auto-save firing at the moment you pressed Save being the easy way to meet it. The app writes your file by writing a temporary one beside it and then renaming it into place, which is what stops a crash mid-save from truncating your work; macOS and Linux allow that rename even while something else is touching the destination, and Windows refuses it. The rename now waits a moment and tries again, for up to half a second, before reporting a failure — so the overlap resolves itself and the save lands. A save that genuinely cannot be written still fails promptly and tells you why.
Considerations before you update: none. If you are on Windows and have seen
a save fail with an EPERM or "operation not permitted" message, this is that.
v0.47.1 — 2026-08-14
The icon palette keeps its width while you search. Type something broad into the palette's search box — a single letter matches most of the library — and every section opens at once, so the panel runs past the bottom of the window and a scrollbar appears inside it. On a Mac set to always show scrollbars, that scrollbar was taking its width out of the panel rather than sitting over it: both columns of icons narrowed the moment you typed, and names that had always fitted — "Load balancer", "Network TAP" — broke onto a second line. Because it only happened once the list was long enough, the grid looked like it was rearranging itself at random as you searched. The panel is now the same width whether it is scrolled or not, and the wheel, trackpad and keyboard scroll it exactly as before.
Considerations before you update: none.
v0.47.0 — 2026-08-13
This release is one long repair pass. A full read of the code turned up 55 defects, and all of them are fixed here — most of which you would only ever have met as "that is odd", because almost none of them announced themselves.
A device dropped on a cable is noticed again. Drop or drag a device onto an existing link and the cable now bends around it. Before, the cable stayed drawn straight through the device, permanently, until something unrelated happened to make that part of the drawing recalculate.
A locked layer holds on the way in, not just against deletion. You could still draw a cable to a device on a locked layer, or drag an existing cable's end onto one — and the cable that appeared could then be neither deleted nor clicked on again, so the only way out was unlocking the layer.
Your keyboard belongs to whatever you are typing in. Pressing Backspace while correcting a value in Document info used to delete the devices you had selected behind the dialog, with nothing on screen to say so. Arrow keys in a dropdown nudged the drawing instead of changing the value, and Space could not open a picker at all.
Captions stay the size you set them. With the document text scale at anything other than 100%, a connector's label was re-laid out at 100% every time the cable rerouted — so its lines overlapped, it sat on the cable instead of clear of it, and it could run past its own width. It happened on first load and after every drag, and never corrected itself.
Exports stop cutting captions off. A caption placed to the left or right of
a device — or a tall multi-line one above or below — was clipped at the edge of
every exported SVG, PNG, PDF and HTML file, while the canvas showed it whole.
An ordinary name like fw-edge-01 lost about 22 pixels.
Compare tells you the truth about how a page looks. It read seven of the twenty things that can change a shape's appearance, so a dashed flow arrow, a boxed callout, a rack's depth or a map showing a different region all counted as no change at all — and the panel said "no differences" about two pictures you could see were different.
Racks keep what you told them. A rack's rear elevation and a unit's mounting depth were dropped every time you saved a file you had opened, and un-ticking Show rear could write a front unit and a rear unit into the same slot — the rear one invisible behind the other, recoverable only with undo. Units displaced by losing the rear face now move to the nearest free U.
Pictures keep their captions where you put them. A caption moved above or inside an image came back below it on reopen — and draw.io drew that same file differently from us, because the two of us disagreed about which of the two conflicting instructions in it to follow.
Flow arrows stay in their group, saved files with a hand-edited coordinate no longer become files draw.io cannot open, and a Visio file whose stencil definitions are damaged now imports the drawing instead of refusing the whole file.
Shaped arcs survive a Visio round trip. A curve you had shaped by hand slid
further from its cable every time the document was saved as .vsdx.
Layers behave. Deleting a layer no longer re-homes its devices onto a world map's layer — where hiding the map would have hidden them too — and a pasted map no longer joins an unrelated layer just because the names match.
Sharing. If you had opened a view-only invite, then later shared a document of your own, you were locked out of your own drawing and told you were a guest. And when a host left, the person who took over got a share panel with no link in it, no invite code and no way to reach the button that would make one.
Opening two files at once keeps both. One of them lost its permission to save, silently — and you found out a session later, when it came back untitled with auto-save switched off while the file sat untouched on disk.
The feedback form takes your report. Its rate limit was counting everyone
as one person, so five submissions from anywhere in an hour turned the sixth
away; a report split across network packets could arrive with ? where a
non-ASCII character had been; and an oversized one failed as a dropped
connection instead of saying it was too large.
Smaller things: a custom link speed typed by an import is now visible and editable in the Connections panel instead of showing blank (and picking "None" no longer wipes it); the ring picker no longer offers a ring a cable is already in, which used to draw a ring around a single cable and quietly dissolve another; the minimap keeps a recoloured map's colour; and a hand-edited file with a broken map region opens instead of failing to draw at all.
And it is quicker in the places you notice. Sweeping a selection box across empty canvas did about 2,000 pointless screen updates and sent 40 network messages to everyone you were sharing with; moving the pointer across one card in the Connections panel re-checked every cable 27 times; and saving a multi-page Visio file walked the whole page once per cable.
Considerations before you update:
- A shaped arc saved to
.vsdxby an earlier version loses its shaping when reopened. The curve stays, with its default bow, and everything else in the file is unaffected. The old files recorded the curve's control points in a way that cannot be converted after the fact — nothing in them says where the drawing sat when they were written. Files saved from this version onward round-trip correctly, and an older Drawbridge reading one of them shows the default bow rather than anything wrong. - Compare will now report differences it used to miss. A pair of documents you had previously been told were identical may now show changes. The changes were always there.
- An exported image can be slightly larger where a caption is wider than the device it labels, because the file now reserves the room the caption actually needs. Documents whose captions fit inside their tiles export exactly as before.
v0.46.0 — 2026-08-12
Every map now comes from one place in the palette. The Map button is gone, and the Add place… picker it sat next to has taken over its job: the list opens on a Backdrop group holding the world map and the five regions — Americas, EMEA, APAC, Europe, Nordics — with every country underneath as before. Picking a region drops it behind the page as scenery, on its own layer, the same way the Map button dropped the world.
And a region now arrives shaped like that region. Choosing Europe used to mean adding a world map and then reframing it in the properties panel; the map that lands is now Europe's own shape from the start, and the same for the Nordics, APAC and the rest. There is still one backdrop per page — pick another and Drawbridge selects the one you already have and points you at the extent field, which reframes the map and carries the devices standing on it.
The palette's tools sit together. With the Map button gone, the search box and the place picker are now side by side at the top, and Collapse all and Connector share the row beneath them. Collapse all has not moved from the left edge where it has always been.
Considerations before you update: none. Existing diagrams, including their map layers, open and save exactly as before.
v0.45.3 — 2026-08-10
The minimap keeps its corner a little longer. When the properties panel grows tall enough to reach the bottom-right of the window, the minimap moves out of the way to the left of it — by design, so neither covers the other. On a laptop-sized window the panel was reaching that point sooner than it needed to, because its section headings ("LABEL", "COLOR", "ARRANGE") were spaced by a measurement that changes from one operating system to the next. They now have a fixed spacing, so the panel is the same height everywhere and the map stays put until the panel genuinely needs the room.
Considerations before you update: none.
v0.45.2 — 2026-08-10
Every toolbar menu is drawn the same way now. The rows with a checkbox — the View menu's ten switches, the Blocks menu, the app menu's Auto-save — were drawn a size smaller and a shade greyer than the rows without one, and highlighted differently when you pointed at them. A menu row now looks like every other menu row, whether or not it carries a tick, and the More menu's section headings match the headings in the other menus.
And the same tidy-up across the dialogs. Buttons came in three sizes, the titles in two, and text fields in four — Revisions, Document info, the icon library, the manual, the inspector and the palette search had each grown their own. There is now one size for a button that closes a dialog, one for a button inside it, one for a text field and one for a title, so the app reads as one product rather than as the order its windows were built in.
Considerations before you update: none.
v0.45.1 — 2026-08-10
Toolbar menus now open under the button you pressed. They used to line up their right-hand edge with the button, which meant a narrow menu — Blocks, with its three short rows — spread out to the left across its neighbours and looked like it belonged to whatever word it happened to cover. Every menu in the bar now starts under its own button, and menus near the right-hand edge still slide back onto the screen rather than running off it.
Considerations before you update: none.
v0.45.0 — 2026-08-10
The Blocks menu is three switches now. Legend, Optics and Title are checkboxes rather than buttons: a tick means that block is on this page, so ticking one builds it and clearing it takes it away — the same one press, and one Ctrl/⌘ Z either way.
And the menu stays open while you use it. Putting a legend and a title block on a page is two clicks in one menu rather than four through a menu that closed itself each time. It closes when you leave it — click the canvas, press Escape, or open another menu.
A switch that cannot build anything says so and goes back off: a legend on an empty page, or an optics block where no cable needs port hardware. So a tick always means the block is really there.
Considerations before you update: none.
v0.44.0 — 2026-08-10
Take a block off the page from the same menu that puts it on. The Blocks menu could only add: to get rid of a legend, an optics block or a title block you had to find it on the drawing, select it and press Delete — which is a hunt when the block has drifted behind a rack or off into a corner, and not an obvious thing to try for the three things you never place by hand.
Every row now has a × on the right. Press it and that block is gone, with nothing selected on the canvas and one Ctrl/⌘ Z to bring it back.
The × only appears while that block is on the page, so the menu is also where you see which of the three this page has — and removing one leaves the others alone. Nothing you typed is lost either: a title block's contents belong to the document, so removing the grid and adding it back brings your title, author and revision back with it.
Considerations before you update: none.
v0.43.1 — 2026-08-10
Toolbar menus no longer pile up. Opening a menu while another one was open left the first floating on top of the second — you had to press Escape or click the canvas to clear it. Opening any menu now closes whichever one was already open. This was never specific to one pair: all eight menus in the bar behaved this way, it just showed most when two of them sit side by side. Menus opened from the More button are the deliberate exception — they leave More itself standing, since that is what you would be reaching back into.
v0.43.0 — 2026-08-10
A View menu — turn off what you do not want to look at. There is a new eye in the toolbar, beside the ★ Quick shapes star, holding ten switches for what the drawing shows:
- Labels — device names, connector labels, port labels, and zone & rack names. The devices and cables stay exactly where they are; only the text stops painting, so a picture of the topology no longer has to be a picture of every interface name on it.
- Objects — connectors, zones & contexts, maps & backdrops, notes & arrows, and the generated legend / optics / title block.
- Canvas — the dotted grid.
Two things make it useful rather than just tidy. Nothing moves: cables are still routed around every device whether you can see it or not, so switching the notes off never redraws the diagram — turn everything back on and you have exactly the picture you started with. And your exports follow what you are looking at: SVG, PNG, PDF, copy-image and the HTML viewer all get the view on screen, so you can hand over a clean topology without editing the document to make one.
It is yours rather than the document's — remembered in this browser, never saved into the file, and a collaborator sees their own view. To hide something for everybody, use layers. While anything is switched off the eye is struck through, so you can always tell, and Show everything at the bottom of the menu puts it all back in one click.
Also fixed: Select all followed by Delete could remove devices on a hidden layer — objects you could not see, with nothing on screen to say they had been selected. Select all now skips anything hidden, exactly as a marquee already did.
Considerations before you update: none.
v0.42.0 — 2026-08-10
The SD-WAN generator now wires every box it draws. Generating a multi-region topology left three kinds of device with cables missing, and the bigger the design the more obvious it was:
- A hub HA pair was joined by one cable. Branch HA pairs were correctly drawn with two, so the hubs — the one place redundancy matters most — were the odd ones out. Hub pairs now get their two cables and the aggregate ring, the same as everywhere else.
- "Mesh hubs across regions" drew a single tunnel per pair of regions. With two hubs in each region, that left two of the four hubs with no way out of their own region at all. Every hub now reaches every hub in the other regions.
- The second firewall of a branch HA pair had no tunnels. It hung off its peer cable and nothing else, which read as a device the generator had forgotten. Both members now build their own tunnels to every hub over every WAN link.
A new first question: how much detail do you want? The generator opens by asking whether to draw every device or one box per site. At site level an HA pair — at a hub or at a branch — becomes a single object, and each site draws exactly one tunnel to its regional hub: a two-region, eight-branch design goes from eighty-eight connectors to nine. The questions that no longer change that picture (hubs per region, WAN links, branch HA, branch LAN) stop being asked. Pick "every device" when you are documenting the build, "one box per site" when you are explaining the shape of the network to someone.
Tidy up no longer flattens a generated SD-WAN page. Once both the hubs and the branches were HA pairs, pressing Tidy up put the whole topology on a single row. Cables drawn top-to-bottom are now always read as hierarchy, so hubs stay above their branches and paired devices stay side by side.
Considerations before you update: existing diagrams are untouched — this only changes what the generator draws next time you run it. If you have a generated SD-WAN page you want brought up to date, generate it again with the same answers.
v0.41.1 — 2026-08-10
The overview map is a real picture of your drawing again. Two things were wrong with it, and both showed up most on large diagrams:
- On a very large page it went blank. Import an enterprise topology of a thousand-odd devices and the overview in the corner showed an empty panel with just the rectangle marking where you were looking — the drawing itself was missing. Anything roughly wider than a thousand device-widths hit this, and pages a little smaller than that were framed slightly wrong. Fixed: the map draws whatever you have, at whatever size.
- It drew the wrong cables. The overview invented a straight line between each pair of devices instead of showing the cable's actual route, and it painted every kind of link — WAN, IPsec, wireless, trunk, aggregate — as the same thin line. A page made of neat right-angled runs came out as a fan of diagonals. It now shows the routes you can see on the page, dashes and line weights included, so the thumbnail and the drawing agree.
Editing a pasted topology no longer throws the paste away. In the Import dialog, selecting the first rows of a long paste — say the two prompt lines a terminal copy brings with it — by dragging up past the top edge of the box closed the dialog and lost everything you had pasted. Selections that end outside a dialog are now understood as selections. The same fix applies to every dialog in the app: the manual, the icon library, the cable schedule and the rest still close when you click the dimmed page beside them, and no longer close when you were only selecting text inside them.
Considerations before you update: none.
v0.41.0 — 2026-08-10
The update panel now tells you what is in the update. When Drawbridge finds a newer version, the amber panel in About used to give you a version number and three buttons; it now shows that version's release notes above them, so you can read what you would be getting before you decide. While the panel is up, the "What's new" notes for the version you are already running step aside — one set of release notes at a time, and the one you are deciding about wins.
Huge network drawings are now genuinely workable — import in seconds, edit without freezes. This release rebuilds how the router spends its time on big topologies, in four layers that add up:
- Importing an enterprise-scale topology no longer locks the window. Hundreds of devices with every branch tunnelling into a couple of datacenter firewalls used to freeze the app for minutes; the same 586-device import now appears in about two seconds. On very large pages, cables converging on such heavily-wired devices draw as a fan of smooth curves — the readable form at that density.
- The full-quality version still gets computed — quietly. Once you leave a very large drawing alone for a moment, the app recomputes every cable with full obstacle-avoiding routing in the background and swaps it in when done. A small "Refining cables…" pill shows the progress; any edit brings the fast view back instantly. Exports wait for the full-quality version by default, so the file you hand someone always carries the best cabling — with an "Export current view" button if you would rather not wait.
- Dragging and nudging stay smooth at any size. Moving devices on a huge page used to stall for seconds per step; edits now re-route in milliseconds on branch-structured drawings, and where the geometry is genuinely too dense for that, cables follow the drag as simple lines and snap to exact routes the moment you drop.
- Line jumps got dramatically cheaper to keep updated, which removes the last visible hitch when editing large pages — and the curved tunnel fans no longer carry crossing bumps, which they never needed.
Drawings below this scale are completely untouched: your existing diagrams route, render and export exactly as before — that equivalence is verified byte-for-byte by the test suite, not assumed.
Considerations before you update: none.
v0.40.1 — 2026-08-09
Nothing changes in the app. This release carries a fix to the project's own test suite: one check on the country maps was slow enough to time out on the Linux and Windows machines that verify each release, which had been reporting the last two releases as failed even though nothing was wrong with them. The check now runs sixteen times faster and tests exactly what it did before.
Considerations before you update: none — if you are on v0.40.0 there is nothing here for you.
v0.40.0 — 2026-08-09
About now tells you what's new. Open About — the Drawbridge logo at the far left of the toolbar — and under the version line you will find the release notes for the exact version you are running, in plain language, including anything worth checking that came with it. They are part of the app, so they are there with no network and can never describe a different version from the one you have. Long releases scroll, with the bottom edge fading while there is more to read, and All release notes at the foot opens the full history for every version.
Considerations before you update: none.
v0.39.0 — 2026-08-09
"Add country…" is now "Add place…". The palette picker has held the fifty US states and DC alongside every ISO country for a while, so its name caught up: the button, its search field and the inspector's extent search now say "place". Nothing behind the button changed — same list, same behaviour, and your existing maps are untouched.
Country and state maps stand upright. A single place is now drawn flat on its own centre line, the way it looks on its own local map — the United States sits square instead of leaning the way it does at the edge of a world wall map, and the same goes for Japan, Australia, Chile and every US state. Countries the world map's edge used to cut in half draw whole: a solo map of Russia is one contiguous country. World and region maps keep the classic world-map look, showing a country's neighbours draws them around it without moving it, and devices standing on a map are still carried to the same place on the globe when you switch extents. Nothing is squashed or stretched — it is the same geometry, looked at from straight on.
Considerations before you update: none.
v0.38.0 — 2026-08-08
The whole map is redrawn from reference cartography. Every country outline now comes from Natural Earth's 10-metre dataset — the reference cartographers use — instead of a 2005 political map traced at low fidelity. Coastlines have their real shape (the Netherlands has its Wadden Islands and IJsselmeer, Denmark its isles, Greece and Croatia their archipelagos, Norway its fjords), borders between neighbours knit exactly by construction, and major lakes read as water. Detail scales with size, so small islands keep their shape instead of collapsing into blobs.
Fifty-six countries and territories join the map. Singapore, Hong Kong, Malta, Macao, the Maldives, the Faroe Islands, Barbados, Liechtenstein, Monaco and the rest of the world's small states are now drawn and pickable — the picker covers every ISO country. The ten-biggest-cities table covers the newcomers too.
US states redrawn to match. The state outlines ship at the same fidelity as the new world map, still knitting seamlessly with each other.
Considerations before you update: none — but if a device sat on a coastline the old map drew wrongly, it may sit slightly differently against the corrected shore.
v0.37.0 — 2026-08-08
Every country on the map verified against real-world geography. All 185 country outlines were checked against Natural Earth, the reference dataset cartographers use. Eighteen island nations that earlier simplification had reduced to invisible slivers or stripped of their islands — Bahrain, Cape Verde, Dominica, Mauritius, Réunion, the Comoros, Samoa, French Polynesia, Vanuatu, the Bahamas, the Solomon Islands, Fiji, the Falklands and more — are redrawn from that data, and Cyprus lost a stray spike it never should have had. If you have placed a device on one of these maps, it may sit slightly differently against the corrected coastline.
US states are countries now. The map picker has a United States group with all fifty states and DC. Pick Texas from Add country… and it lands as a silhouette on its own layer exactly like a country; set a map's extent to a state and, with neighbours shown, the surrounding states are drawn with their borders. The outlines come from US Census Bureau geometry, drawn in the same projection as the rest of the map.
Show cities marks the ten biggest cities. A new checkbox on any map draws its extent's ten biggest cities as quiet dots with names — the world's ten, a region's, a country's, a state's — so "the Göteborg site" can sit on Göteborg. Off by default: existing drawings look exactly as they did.
Considerations before you update: none.
v0.36.1 — 2026-08-07
The legend no longer lists flow arrows. A flow arrow is an annotation about the drawing, not a device symbol — a legend row saying "Flow arrow" explained nothing, and it is gone.
Considerations before you update: none.
v0.36.0 — 2026-08-07
Draw where the traffic goes. A new Flow arrow in the palette's Annotation family puts a bold red arrow on the page — packets into the DMZ, an attack path, a replication direction. Drag to draw it (right-angle bend on the dominant axis, Shift for a straight diagonal), reshape it by its point handles, add bends with the mid-segment diamonds, and label it exactly like a connector — same caption, same placement controls, same drag. The inspector switches solid/dashed and one-way/both-ends, and the colour swatches recolour it. In isometric view it lies flat in the floor plane like a cable, so it keeps pointing at what it annotates from every corner, and saved files carry it as a native draw.io arrow.
PDF export is readable from a dark editor again. Exporting a PDF while the app was in dark mode printed near-black tiles and pale cables onto the white sheet — every shape a black box. A PDF is ink on paper: the print sheet now always uses the light theme's colours, whatever the editor is showing.
Considerations before you update: none.
v0.35.0 — 2026-08-07
Your most-used shapes, two clicks closer. Hover any palette tile and a small star appears — star it and the shape joins a pinned ★ Favorites group at the top of the palette; star a section heading to pin the whole category. Separately, a new ★ button in the toolbar opens a Quick menu of shapes you choose for it (press Customize… inside the menu), handy when the palette is a long scroll away. The two lists are deliberately independent, and both are remembered per browser.
Text boxes finally wrap. A long sentence typed into a Text or Callout block used to render as one line running straight off the edge of the box, and resizing the box did nothing about it. The writing now follows the box: it wraps at the block's width and re-flows live as you drag a corner. Line breaks you typed yourself stay exactly where you put them, and nothing is ever cut off to fit — text that outgrows a short box simply runs below it until you give it room.
Searching malware now finds the Malicious file first. Both it and the
Infected laptop answered to the word; the file — the thing that is the
malware — now owns it, and the laptop still answers to compromised,
pwned and infected.
Considerations before you update: text blocks whose long single-line text used to overflow their box will now show it wrapped — if you relied on the overflow look, widen the box once and it reads as before.
v0.34.1 — 2026-08-07
A session hand-over is now confirmed, not hoped for. When a host closes their window, each participant now explicitly acknowledges receiving the hand-over before the departing host hangs up. Previously the host flushed the message and closed; on a very busy machine a participant could lose the hand-over in that gap and spend half a minute reconnecting to a host who had left. The wait is bounded, so a participant who has genuinely vanished cannot hold the host's window open.
Joining tells you things in the right order again. On a host set to admit automatically, the "waiting for approval" and "you're in" messages could arrive swapped on a busy machine. They are now always sent in sequence.
Considerations before you update: none. Older and newer versions still collaborate; the acknowledgement is skipped automatically when the other side predates it.
v0.34.0 — 2026-08-07
Verdicts now carry their colour, and the attack shapes get their own palette section. The clean file and clean website are green, the unknown pair grey, and the malicious pair red — the same three verdicts whether stamped on a file or a website, and the only place in the palette where colour means status rather than category. The badge mark always says the same thing as the colour, so nothing depends on telling red from green. The Attacker and Infected laptop have moved out of People into a new Attack section alongside the six verdict shapes, so the whole story-telling vocabulary lives under one heading — and People is back to being only people and their machines.
Considerations before you update: diagrams already using the clean or unknown file/website shapes will change colour (green and grey instead of red) the next time they render or export. Nothing else about them changes — same shapes, same names, same DOT ids.
v0.33.0 — 2026-08-07
Draw an attack, not just a network. Nine new shapes cover the story
security diagrams keep needing to tell. An Attacker — the black-hat
figure, drawn on the same shoulders as a User but never in the same colour —
and a Home site for the remote worker, next to Branch office in Places. A
new Files & websites palette section holds six verdict shapes: a clean,
malicious or unknown file, and a clean, malicious or unknown website.
Each pair shares its mark — a check, a radiation trefoil or a question mark —
so once you have read one badge you have read them all. And an Infected
laptop: the Laptop shape with the radiation mark ringed on its screen, for
the endpoint after the malicious download ran. All of them are searchable the
way you would type them — hacker, phishing, malware, wfh, pwned —
and each hands you its DOT name for diagrams written as code.
Considerations before you update: none.
v0.32.3 — 2026-08-06
New starts you at 100% zoom. Pressing New used to keep the previous document's view — start a fresh drawing after zooming far out and your first shapes landed on a page you could barely see. A new document now opens at 100%, and a cancelled New (when you keep your unsaved work) leaves the view exactly where it was.
Import reports a bad line once. When a pasted CSV row was both too short for the header and missing its device name, the import dialog listed the same line twice. One line, one entry now — and a line that was skipped no longer also claims it was imported with adjustments.
Long names stay whole at large text scales. At 200% document text scale a name inside its tile used to break in the middle — "Firewall" became "Firewa / ll" — and the icon shrank to a speck under the two-line caption. A single word that cannot fit now stands a little proud of its tile instead, whole, with its halo keeping it readable, and the icon keeps its room. Only a name too long even for that is shortened with an ellipsis. Ordinary multi-word names wrap exactly as before.
A session hand-over no longer strands anyone. When a host closes their window, the session hands itself to the longest-connected editor and everyone else follows it there. Very rarely, a peer could miss that hand-over: the message naming the new host could be discarded while connections were closing, and the app then spent half a minute silently re-dialling the host who had just left before giving up with "Connection lost". Both halves are fixed — the hand-over message can no longer be cut off mid-send, and a dial to an address that no longer answers gives up in ten seconds instead of thirty. Joining from a link whose host is offline reports it faster for the same reason.
Considerations before you update: none.
v0.32.2 — 2026-08-06
New gives you a genuinely new document. Pressing New used to keep the previous drawing's identity — its title, its revision, its dates, and its classification. If you had marked a drawing CONFIDENTIAL, the blank sheet you started next came up stamped CONFIDENTIAL, banner and watermark, and it exported that way. New now clears all of it. The one thing it still carries is what you explicitly asked it to: tick Remember this logo, organization and name for new drawings in Document info and those fields keep coming back, which is what that checkbox has always been for.
Considerations before you update: if you had been relying on New keeping your organization name or your classification, tick Remember this logo, organization and name for new drawings in Document info once — after that it carries over deliberately instead of by accident. Drawings you have already saved are unaffected; this only changes what a brand-new one starts with.
v0.32.1 — 2026-08-06
The Font size box now works on zone titles, rack titles and rack-unit names. It was offered on those in v0.32.0 and quietly did nothing — the field took a number, said nothing, and the drawing did not change. It applies now.
An aggregate ring's caption can be sized. It is the one label that had no size control at all: a ring's caption belongs to the aggregate rather than to any one cable, so it now has its own Font size in the Connections tab, beside where you set where the caption sits.
A ring's caption survives being saved. Naming a ring wrote the name into the
.drawio file correctly and then dropped it on the way back in, so a ring you
had called Po1 reopened nameless — along with its position, its side, and
which device it hugs. This affected every version that has had ring captions.
Files you have already saved were never damaged: the name is in them, and it
comes back when you open them in this version.
Considerations before you update: a ring caption you set and thought you had lost will reappear when you reopen that file, which may move a label back onto a drawing you had since worked around it on. Nothing else changes.
v0.32.0 — 2026-08-06
You can set how big the writing is. Open Document info and there is a
new Text scale: one setting that sizes every label on the drawing at once —
device names, connector labels, port labels, zone and rack titles, text blocks.
It is the answer to "this prints at A3 and nobody can read the port labels", and
it is one choice rather than a font size on every shape. Anything you export —
SVG, PNG, PDF, the HTML viewer — comes out at the size you set, and a .drawio
file opens at that size in draw.io too.
And you can override it on one thing. The inspector's Font size field now works on any device, zone, text block or connector, not just on Text and Callout blocks. Leave it empty and that object follows the document scale and keeps following it when you change the scale later; the grey number in the field is the size that currently produces. Type a size and that object stops following — so a heading you made big stays big when you scale the rest of the drawing. Reset puts it back. A connector's size covers its own label and both port labels together, because one connector with two differently-sized port labels looks broken rather than configured.
"Update all" sits beside the text scale and clears every per-object size on the page in one go, so a drawing somebody has hand-tuned into a mess goes back to following its setting. It tells you how many objects it changed, and it is a single Undo.
A zone can be moved without taking everything with it. Hold Alt as you start dragging a zone or a rack and it moves alone, leaving its contents where they are. Until now there was no way to do this at all — you had to drag the contents out and back, or resize the zone off them. The inspector says so whenever a container is selected, so it is not a secret.
And a zone minds its own layer. What a zone carries is now scoped to the layer it is on: a zone on your physical layer no longer picks up an overlay object that happens to sit on top of it. It also stops moving things on hidden and locked layers — which was the worse half, because a hidden device would be dragged across the page with nothing on screen to show it had happened.
Ring labels sit where they say they do. On an aggregate ring, Above put the caption below the ring and Below put it above, on any ring running down-and-right — and the same control behaved correctly on a ring running the other way, so the two words meant opposite things on two rings that look identical. Above is now above, on every angle, and Start is reliably the upper end of the ring.
Font sizes set in draw.io survive. Opening a .drawio file where somebody
had made a device's label bigger used to silently reset it to ours, and saving
wrote their sizing out of their own file. Those sizes are now read on every kind
of shape and on connectors, and written back.
Considerations before you update: two things change how existing drawings look, both of them corrections. If you have an aggregate ring whose label is set to Above or Below, that label will move to the other side of the ring — the side it was always meant to be on; a ring label set to Start or End may likewise swap ends. And if you have a zone sitting over objects on a different layer, dragging that zone no longer carries them; move them onto the zone's layer if you want them to travel with it. The document text scale starts at 100% for every existing drawing, so nothing changes size until you ask it to.
One thing worth knowing about the scale: a label that sits inside its tile has only the tile's width to work with, so at the largest settings a long name will wrap — and a single long word will break across two lines. 150% is comfortable on the standard shape size; 200% wants either Label position: Below, which gets the caption six rows and lets it overhang a little, or a bigger shape.
v0.31.0 — 2026-08-06
A page is named in one place. The text field that sat beside the Drawbridge
wordmark at the top of the window is gone. It never named your drawing — it
renamed whichever page you happened to be looking at, which the page bar along
the bottom of the window already shows and already renames when you
double-click a tab. Two boxes for one name is one box too many, and the top one
had no context: on a second page it read as a bare Page 2 sitting next to the
logo, with nothing to say what it belonged to.
Considerations before you update: to rename a page, double-click its tab in the page bar at the bottom. Nothing in a saved drawing changes, and no page has been renamed — only the second place you could type the name has gone.
v0.30.0 — 2026-08-06
Two new shapes: PAM and User group. PAM joins the Security section for
privileged access management — the system that holds the credential, hands out
the session and records it. It is drawn as a screen with a user on one side and
a padlock on the other, and you can find it by typing pam, credential vault,
session recording or break glass. It is a different shape from the Jump
host on purpose: the jump host is the box the traffic passes through, PAM is
what decides who may pass and keeps the recording. Drawings that show both now
have a shape for each.
User group joins the People section for a set of people rather than a
person — a department, a role, an AD or LDAP group, the contractors. It is the
User figure drawn three times, so a page that mixes individuals and groups
reads at a glance. Search group, role, team or ad group.
Considerations before you update: typing pam in the palette used to
return the Jump host, because the acronym was one of its search aliases. It now
returns the new PAM shape only. Nothing in a saved drawing changes — a jump
host you have already drawn is still a jump host.
v0.29.0 — 2026-08-06
The Layers panel tells you which layer your selection is on. The row for that layer is highlighted, and where its Move here button would be it now says current — because moving something onto the layer it is already on does nothing. If your selection spans several layers, every layer it touches is highlighted and all of them stay clickable, since gathering a mixed selection onto one layer is a real change.
File sizes read like file sizes. A small bug-report zip used to be
described as "0.0 MB" — indistinguishable from a file that failed to save — in
the toast that tells you what to attach, and again on the feedback form. Sizes
now say what they are: 40 kB, 1.2 MB. They are also measured the way your
operating system measures them, so the number matches what Finder or Explorer
shows for the same file.
Considerations before you update: the bug-report attachment limits are now 4 MB and 5 MB exactly, rather than 4 and 5 binary megabytes. That is about 5% less room than before — far more than any report needs, and it makes the limit the app states the limit it actually enforces.
v0.28.0 — 2026-08-05
Being turned away from a session now tells you why. If you tried to join with a wrong or out-of-date link, or the host declined your knock, roughly one attempt in five said only "could not connect" — the same thing it says when the network is down. The reason was being sent and then thrown away as the connection closed. You now get the real answer every time: that the link or password is wrong, or that the host said no.
When a session changes hands, you are told what you are really waiting for. After the host leaves and someone else takes over, everyone has to ask the new host to let them in — the new host has approved nobody yet. The status pill called that "Reconnecting…", as though the network had dropped, and kept saying so for as long as the new host took to answer. It now reads Waiting to be let in….
Exported DOT keeps its Purdue bands when you render it with Graphviz. If
you took a .dot export to dot itself, any device drawn level with another
inside a band — an HA pair, most often — was quietly removed from that band,
and a band left empty was dropped from the picture altogether. Opening the file
back in Drawbridge was never affected, so the exports looked fine until you
rendered one. They now render with every band intact.
A long diagram name no longer gets a letter sliced in half. In a narrow window the title field cut its text off mid-letter, which looked like the app had drawn it wrong. It now ends in an ellipsis, and the name itself was never affected — click into the field and it is all still there.
The toolbar gives up the Drawbridge wordmark before it hides a button. In a narrower window the name beside the logo now shrinks to just the mark, and that recovered space goes to your diagram's name and to the controls. Tools only start moving into the ⋯ menu once even that is not enough.
The icon palette now hands you each shape's DOT name. If you write diagrams
as code, the palette is the picture book for the kind= vocabulary — but you
still had to go and look the words up. Hover any shape and its kind= name is
in the tooltip, with a small copy button in the tile's corner that puts the bare
id on your clipboard. It appears only when you hover or tab to it, so nothing
about the palette got busier. The search box takes those ids too, hyphen and
all — typing l3- finds L3 switch — so you can go the other way as well,
from an id you have read in a file back to the picture it draws.
Considerations before you update: none.
v0.27.1 — 2026-08-05
A view-only guest stays view-only when the host leaves. When you stopped sharing and someone else picked up hosting, anyone you had invited with a read-only link came back able to edit — silently, with nothing on screen to say so. Read-only invites now survive a change of host as read-only.
Removing someone from a session means it. If you removed a guest and then pressed Regenerate link, a guest holding your personal invite link could rejoin without knocking — no prompt, no decision from you. They now have to ask again like anyone else.
A locked layer really is locked now. Dragging a selection box across a locked layer used to skip the devices but still pick up the cables between them — and pressing Delete then removed those cables, which is the one thing locking a layer is meant to prevent. Hidden layers had the same gap: a selection box could pick up devices you could not see, with no highlight to show it, and the next drag moved them. Neither happens any more.
Two ways a file could refuse to open, both closed. Device names pasted from
a coloured terminal capture carry invisible control characters; they used to be
written into the saved .drawio as-is, which made the file unopenable — it
saved without complaint and then failed to load, including the crash-recovery
copy. And a single odd character code anywhere in a file you were opening
could fail the whole document rather than the one page it was on. Both files
open now, and nothing else about them changes.
Visio exports and cable speeds keep what you gave them. Export Visio
dropped your speed colours and bundle rings, where Save As kept them —
the same document exported two ways gave two different results. And a speed
written with a semicolon or an equals sign (10G;LR) was quietly renamed on
save, so it stopped matching the colour you had assigned to it.
Smaller download. The desktop app ships about 15 MB less per platform — it was carrying a second copy of code already inside it.
Smaller things you may have noticed. Pasting near the left edge of the canvas no longer jumps the view; pressing Escape while drawing a connector from a device's centre now clears the preview instead of leaving it on screen; toggling a callout's bubble repaints straight away; the watermark resizes as soon as you hide a layer rather than on your next edit; and double-clicking a connector label works on files whose connector ids came from another tool.
Considerations before you update: none. Two notes if you use sharing: a view-only guest connected while you handed a session over could edit from that moment on, and a guest you removed could have rejoined after a link regeneration. Neither affects the drawing itself — and both are fixed here.
v0.27.0 — 2026-08-04
Mark a drawing before it leaves the building. Document info… →
Branding adds a watermark across the sheet, a classification printed as a
strip above and below the drawing, and your company logo behind the diagram.
DRAFT, CONFIDENTIAL, INTERNAL, FOR REVIEW and SUPERSEDED are one
click each, and the field takes anything you want to type.
Setting a classification fills the watermark too, so marking a sheet
CONFIDENTIAL is one choice rather than two — type something different in
Watermark and you get both, which is how you stamp DRAFT across a
CONFIDENTIAL sheet.
It sits behind the drawing and its strength is capped, on purpose: a watermark that hides a device name has made the drawing worse to protect it. It appears on every page, in everything you export, and in what you print — a mark that only existed on screen would be decoration rather than a control.
Branding belongs to the document, not to shapes on the page. You cannot select it, drag it or delete it by accident, it never turns up in the object list or the cable schedule, and switching it off leaves nothing behind. Tick the remember box and your logo, organization, name and classification carry over to your next drawing.
A multi-page drawing numbers its sheets. The title block gains a SHEET
cell — 2 of 3 — on any document with more than one page. It reads its
numbers off the page list rather than anything typed, so it cannot disagree
with reality, and it stays out of the way on a single-page drawing.
Saved revisions got much smaller. A revision is a snapshot of the whole document, so a drawing carrying a logo used to store that logo again in every one — twenty revisions of a lightly-drawn diagram could be well over a megabyte of history. Pictures are now kept once per file however many revisions reference them. Existing files keep working and shrink the next time you save a revision.
Considerations before you update: none.
v0.26.0 — 2026-08-04
A drawing can say who made it. Blocks → Title adds the bordered title block an engineering drawing carries in its corner: your logo, the drawing's title, the date, the file name, who drew it, and the revision. It is off unless you ask for it — no new document, template or opened file grows one on its own. Double-click a cell to fill it in.
What you type is stored on the document, not on the cell, which is why a multi-page drawing shows the same author on every page and correcting it once corrects them all. Document info… in the app menu fills in every field at once and is where you choose the logo; tick the box there to remember your name, organization and logo for the next drawing. The FILENAME cell follows the file you save as — including the moment you Save As, so what lands on disk already says the right thing.
The block moves as one: click any cell and drag, and the whole thing comes. Select it and drag a column divider to change a column's width — the neighbour gives up what you took, so the grid stays a grid, and the widths you set survive every later refresh. When a page carries a title block, a PDF export drops its own small footer band, so a printed sheet has one title block rather than two.
Save a revision of a drawing, and load it back later. Revisions in the toolbar snapshots the whole document and lists what you have saved. Each row restores, compares or deletes, and carries an identity of its own — a number that never repeats and a stamp to the minute — plus whatever note you typed as you saved it.
The history lives inside the .drawio file, so you send somebody the drawing and its history goes with it: no sidecar file to lose. Restore replaces every page, asks first, and is undoable. Compare shows what changed between that revision and the drawing as it stands now, ringed on the canvas — with no file to go and find, because the revision is the baseline. The dialog shows what the history costs the file, so you can prune it before it matters.
One place for the generated blocks. The legend, the optics block and the title block are the same kind of object, so they now share one Blocks menu in the toolbar instead of one being in the bar and two buried in the app menu. Selecting any of them shows a small card naming it, rather than property rows that the block's next refresh would have thrown away.
Considerations before you update: "Compare with…" has been removed. The
comparison it offered — pick a second .drawio and diff against it — is now
done against a saved revision of the drawing you already have open, which is
what people reached for it to do. If you relied on comparing two arbitrary
files, that is gone.
Templates has moved from the toolbar into the app menu. The gallery still appears by itself on an empty canvas and after New, which is where starting from a template was already offered.
Saved revisions ride inside the .drawio. Opening such a file in draw.io works
normally, but saving it there drops the history, because draw.io rewrites
the file from its own model. Visio (.vsdx) files and picture exports carry
only the current drawing — the app says so when it happens.
v0.25.0 — 2026-08-04
Drag a connector's label wherever it needs to be. Two cables crossing at a shallow angle used to put both their captions in the same place, and the Start/Middle/End and Above/On/Below buttons could not part them. Now you can grab a caption and move it freely — along its cable, and as far off it as you like. It is still anchored to the cable, not to the page: move a device and the caption travels with the line instead of being left behind. Crossing the line while you drag flips it to the other side, dropping it on the line puts it on the line with the cable knocked out behind the text, and the inspector's buttons keep showing where it ended up. Drop it back roughly where it started and it snaps to the standard placement, so a label you have nudged and put back is exactly a label nobody ever touched.
A cable drawn from a device's centre can be re-pointed. Its end handle sat underneath the device's own icon, where a press means "move the device" — so dragging it moved the device instead of the cable, and the end could not be grabbed at all. The handle now sits on the cable just outside the tile. Moving a device, and starting a new connector from its centre, work exactly as before.
Name an aggregate by double-clicking its ring. The oval a bound aggregate
draws around its cables now edits its own caption — the port-channel's name
(Po1, ae0) — instead of quietly editing the cable underneath it. Aim at the
oval's line: its inside still belongs to the cables it encircles.
Windows and Linux are told the right key. Every shortcut hint in the app —
the toolbar tooltips, Group and Ungroup, and the unsaved-changes dialog — was
written in Mac notation, so a Windows user was told to press ⌘Z. They now read
Ctrl+Z, Ctrl+Shift+S and so on, and the zoom hints read Ctrl + rather
than Ctrl++. Nothing about the keys themselves changed: they always accepted
both.
The export Theme dropdown is readable on Windows. Opening it in dark mode showed white text on a white list — every option invisible except the one under the pointer.
Shapes tell you when they are evenly spaced. Drag a shape towards the end of a row and it snaps to the gap that row already uses, with a small capped bar drawn over each of the two gaps to say they match. It works between two shapes as well — dropping one into a space centres it — and down a column exactly as it does along a row. Dashed lines still mean "these edges line up"; the capped bars mean "these spaces are the same", so the two are never mistaken for each other. Align → Distribute is unchanged for spacing a whole selection.
Small shapes keep their names, and country maps have more room. Shrink a device towards its smallest — which is what you do to fit several sites onto a country map — and its caption now moves below the tile instead of being cut off inside it. Country maps are also drawn about 15% larger, and the smallest ones (a compact country) noticeably larger than that. Together, a UK map that previously had space for two or three sites comfortably holds a dozen. Pressing Inside in Label position still puts a caption inside, however small the shape.
Considerations before you update: none. Existing maps keep the size they already have — only a change of extent reframes one.
v0.24.1 — 2026-08-02
The manual now says where a share link works. An install link carries the
address it was copied at, so one shared from a copy of Drawbridge running on
your own machine will not open on anybody else's phone — on their phone,
localhost means their phone. The Connectors chapter says so, along with
what to do instead: share from the website, or from an instance the other
person can actually reach, which inside a company network may mean being on the
VPN. It also states plainly that the engineer's ticks stay on their device and
do not come back to you.
Considerations before you update: none.
v0.24.0 — 2026-08-02
Drawbridge counts your optics. Tell a cable what it is — RJ45, DAC, AOC, multimode, single-mode, ER, BiDi, CWDM or DWDM — and the speed you already set names the part: a 25G multimode link is an SFP28 25G SR, one module at each end; a DAC is one cable assembly and no modules at all. For the optical types a Wavelength field appears, with the CWDM grid and the DWDM C-band offered as presets, and the wavelength is part of the part — eight DWDM links on eight channels come out as eight order lines, not one line of sixteen. Optics block on page drops the tally onto the drawing and keeps it current as you draw; Optics report gives the whole document's totals and a per-device breakdown; Optics CSV is the same thing as a file. Nothing is ever guessed: a cable with no type set is counted into an "Unspecified" row rather than assumed to be short-reach, so the block doubles as the list of what is still to fill in.
A cable schedule you can carry into the aisle. Cable schedule in the app
menu turns the document into one row per cable — a kopplingsschema — grouped
by device, with ports sorted the way you read them (et1/2 before et1/10).
Tick each cable as you run it: the tick lives in the document, so it survives a
reload, syncs to whoever you are collaborating with, and undoes like any other
edit. Progress shows as a figure and a bar, with a smaller bar per device so
you can see which rack is outstanding. Print puts the same schedule on A4
with real tick boxes for a pen. The panel is laid out for a phone held in one
hand, because that is where it gets used.
Send the checklist to whoever is patching. Share copies a link that carries the schedule itself — no account, no server, nothing uploaded. Whoever opens it gets the checklist and nothing else. Two things to know before you send one: their ticks stay on their device and do not come back to you (there is no server for them to come back through), and the link points at whatever copy of Drawbridge you shared it from — so share from the website, or from an instance the other person can actually reach, rather than from a copy running on your own machine.
Two more CSVs, one of them shaped for NetBox. Cable schedule CSV is the
readable one; NetBox cables CSV uses NetBox's own cable bulk-import columns,
with cables you have ticked importing as connected and the rest as planned.
Cable types map where NetBox has an exact member and are deliberately left blank
where it does not — it cannot say which of cat5e/cat6/cat6a an RJ45 run is, and
a guessed value in a source of truth is worse than a blank one you fill in. The
readable CSV imports back into Drawbridge, so the format round-trips.
The command line grew four export formats. --export now writes .dot,
.csv (the cable schedule) and .netbox.csv alongside .svg, .png and
.drawio, picked by the file name you give it.
Considerations before you update: cable type, wavelength and the installed
tick are new per-cable fields. They round-trip through .drawio, .vsdx, DOT
and collaboration — but a file saved by an OLDER Drawbridge, or re-saved in one,
will not carry them. If you are sharing files with someone still on 0.23, expect
those three to be dropped on the way back.
v0.23.0 — 2026-08-01
A DOT round trip brings your drawing back exactly. Export → Graphviz DOT
now carries the layout, not just the topology: every device writes its
position and size in Graphviz's own pos=/width=/height= spelling, and
importing the file puts every tile back exactly where it was — same spacing,
same sizes, same arrangement. The file stays ordinary Graphviz (dot -Tpng
still renders it, and plain neato now renders it with your geometry).
Hand-written or AI-generated DOT without positions still lays itself out, as
before.
An HA pair survives the trip as a pair. Two identical cables between the
same two devices — an HA pair, a LAG — used to come back as one, taking the
aggregate ring with them. Every exported cable now carries its own id=, the
import tells them apart by it, and a genuinely duplicated line is reported in
the preview instead of vanishing silently.
Zones come back as zones — and so does everything else. A zone, rack or
virtual context now travels through DOT as a real box: its name, kind, subnet
and exact rectangle, with everything that stood on it still inside on the way
back. Free text and callouts (styling, leader line and all), pasted images,
rack-mounted units, device groups, named layers, ring captions, the document's
custom speed colours and even the page title all round-trip too. Hand-written
files win as well: give a cluster a kind=zone and the import draws a real
zone around its members. Hidden layers still never leave the app — that
promise stands.
How each cable is drawn survives too. Straight and arced connectors, custom waypoints, a device's label placement and the fine-tuned positions of connector and port labels all round-trip through DOT now — and label placements also survive copy/paste inside the editor, which they quietly did not before.
Considerations before you update: none.
v0.22.0 — 2026-08-01
Your drawing can leave as text now. Export → Graphviz DOT saves the
page as a .dot file and Export → Copy DOT puts the same text on the
clipboard — the way back out of Diagrams-from-code. It is written in the same
form the DOT import reads, so a diagram can live in a git repository, be
reviewed as a diff, be edited or generated further by a script and come back in
as a drawing; it is also plain Graphviz, so dot -Tpng page.dot renders it
anywhere. Devices keep their kind, colour and asset data, links keep their
ports, caption, speed, type and aggregate, zones and racks come out as boxes,
Purdue levels come out as levels, and devices drawn level with each other stay
level. Like Copy Mermaid it carries the topology, not the exact positions.
The format painter says when there is nothing to paint. Painting a look onto something that already has it moved nothing and said nothing, which reads exactly like a broken button (thank you to whoever reported it). Now it tells you the target already looks like that — in the inspector and in the Connections tab's per-card Paint alike.
Two fixes to the DOT import, found by building the export. A device name
written across two lines (label="SW-CORE-01\nfloor 2" — how every DOT file
spells a line break) arrived as one line with a visible \n in it; it now
arrives as two lines. And a cable can now join several aggregates from one
file — bundle="po1 spine_a" — which the editor has been able to draw since
rings became a list, but the importer could only ever read one of.
Considerations before you update: none.
v0.21.0 — 2026-07-30
A map's layer now belongs to the map. Deleting a map takes its layer with it — no more leftover "Map: Sweden" rows in the Layers menu — and deleting the layer from the menu deletes the map, the same one thing from either side. Map layers no longer accept other shapes: Move here is off for them, and new shapes placed after a map land on your drawing layer instead of riding the map's, so hiding a map now only ever hides the map. Cut-and-paste a map and it arrives back on its own bottom layer, named after it.
Considerations before you update: none.
v0.20.0 — 2026-07-30
The manual's Diagrams-from-code page grew into a chapter. Five pages —
the overview, an in-depth format guide, a cookbook of ten paste-ready
examples, a dedicated "Code in, image out" page for the scripted
import-and-export pipeline, and the generated every-value reference — where
every shape kind now shows its icon thumbnail beside its kind= code,
and the automation page carries ready-to-use GitHub Actions recipes. The
website's /docs/ already carries it; this release brings the same chapter
into the app's built-in manual.
The CLI can pin its theme. --theme light|dark on a --import/
--export run renders in that theme regardless of the operating system's
appearance — scripted pipelines get identical images on every machine. The
manual's own example images are rendered this way, by the app itself.
A DOT import can draw the Purdue model. Declare levels as clusters —
subgraph cluster_l3 { purdue="3" … } — and the import places the Purdue
backdrop behind the topology, sizes it so every band fits, and seats each
level's devices inside their band. The whole ICS reference architecture,
from one paste; the manual's DOT examples page shows it end to end.
Considerations before you update: none.
v0.19.0 — 2026-07-30
Paste your FortiGate's switch topology and get a diagram. Run
execute switch-controller get-physical-conn dot <fortilink-interface> on a
FortiGate, paste the whole output — CLI chrome and all — into Import, and
it becomes a tiered, cleanly routed drawing: FortiGate on top, switches on
their tiers, MCLAG peer pairs side by side with their ISL between them.
Serials land in the inspector's asset fields, and the model is read off the
serial where it can be.
Import any Graphviz DOT — including one an AI wrote for you. digraph { fw1 -> sw1 } is now a valid paste. A small attribute profile steers the
result from code: kind= picks any palette shape (the manual lists all 87),
label=, mgmtIp=/serial=/model=/location=/notes=, speed=,
link= for the connector style, bundle= to draw an aggregate ring,
fw1:s -> sw1:n or fromdir=/todir= for attachment sides, and hex
color= for accents. It is all ordinary DOT, so the same file still renders
in any Graphviz tool. The new manual page Diagrams from code documents
the whole loop and includes a prompt you can hand any AI.
Share a diagram as a link that carries the diagram. A URL of the form
…/app/#import=pako:… opens the app with the Import box pre-filled — the
payload travels in the URL fragment, which browsers never send to any server,
so nothing about your network ever leaves the machines at either end. Nothing
is inserted until Import is clicked. scripts/make-import-link.mjs (or the
one-liners in the manual) turns a file or piped CLI output into such a link.
Script the whole thing on the desktop. Drawbridge --import topo.gv --export topo.svg (also .png and .drawio) imports, lays out, routes and
exports with no window and no clicks — pipe a FortiGate dump straight
through: ssh fgt '…get-physical-conn dot fortilink' | Drawbridge --import - --export topo.png. Without --export the app opens normally with the
Import box pre-filled.
Considerations before you update: none — existing diagrams, files and workflows are untouched; everything here is new input paths.
v0.18.0 — 2026-07-30
A country you add is now just the country. Picking a country from Add country… used to land it inside a rounded, faintly tinted card — a beta tester put it best: "if you're adding just a country, it shouldn't be rounded". It now lands as a clean silhouette with its name underneath, and two new checkboxes in the inspector — Show border and Show background — let you bring either half of the frame back on any map, including the world and region backdrops, which keep their frame by default. Your choice is saved with the file and survives a round-trip through draw.io.
The country pickers are alphabetical. Both the palette's Add country… list and the inspector's Map extent field now sort each group A→Z, so a country is where you expect it instead of where the dataset happened to put it. The regions keep their place at the top.
Map layers say what they are. The layer a map creates is now named "Map: Australia" rather than just "Australia", so the Layers list reads at a glance. Existing files keep their layer names until you change that map's extent, at which point the name gains the prefix; a layer you renamed yourself is never touched.
Considerations before you update: none — existing diagrams render exactly as before; the new defaults apply only to countries you add from now on.
v0.17.0 — 2026-07-29
You can now tell a router from an L3 switch at a glance. The three devices you draw most often — router, L3 switch and plain switch — are drawn to one rule, so a topology reads without reading the labels. The shape says what the device is and the number of arrows says how far it forwards: a circle with four arrows routes between networks, a rounded square with eight both switches and routes, and the wide chassis with two forwards inside one network. Every arrow is identical across the three, so the only things your eye compares are the outline and the count. The L3 switch in particular used to be the plain switch with a decoration on it, which is exactly how it read; it is now its own device, and it survives being zoomed out on.
Considerations before you update: the router and switch icons change too — they had to, or the set would not read as a set. Diagrams you have already saved are untouched as files, but they will look different when you open them, and any PNG or PDF you exported earlier will not match a fresh export. Nothing needs redrawing and no shape changed size or connection points.
v0.16.1 — 2026-07-29
Moving a ring no longer deletes its name. Dragging an aggregate ring along its cables — or recolouring it — wiped the Ring label you had given it, and not just from the drawing: the name was gone from the file. Naming, moving and recolouring a ring are independent again, and duplicating an aggregate now carries its name to the copy.
Considerations before you update: a name lost this way in 0.16.0 is not recoverable — it was never written. Type it back once on this version and it stays.
v0.16.0 — 2026-07-29
A cable can be in more than one aggregate ring. A cable has two ends, and each end can be part of its own port-channel: the four uplinks leaving a leaf switch are one aggregate there, while the two arriving at each spine are an aggregate at that spine. Drawbridge could only ever hold one of those two facts. Now it holds both — select the four cables and press Bind as aggregate for the leaf's ring, then the two cables to one spine and press it again, then the other two. Three rings over four cables, which is what the switches themselves think is going on.
Rings that would land on top of each other now separate on their own: a second ring over the same cables goes to the other end of the run, and a ring you have dragged into place is never moved by a later bind. Because binding now adds a ring rather than replacing one, the button stays available on cables that are already bound, and renames itself to Add another ring when what you have selected is exactly one existing ring.
Rings can be named. Each aggregate card in the Connections tab has a
Ring label field — Po1, ae0 — above the cable label, because they are
different facts: the ring's name is the port-channel, a cable's label is the
circuit it carries. The caption is placed the same three ways a connector's
label is, measured against the ring: Along its sweep, which Side of the
cables it sits on, and Follow the ring to turn it to the ring's angle.
The Connections tab stopped repeating itself. A selected connector is one card instead of two — the two endpoint cards carried the same label, type, speed and buttons and differed only in which port field came first. An aggregate is one card too, with the shared fields shown once and one row of port names per member, so an eight-member LAG is one card rather than eight. A fan-out that reaches two devices lists its members under a heading per device. The arrow at the top of a card now points at where the other device is on the page — → for one beside it, ↓ for one below — instead of saying which end the cable happened to be drawn from, and the port fields are captioned with the device whose ports they are.
Fixes. The Connections panel refreshes as soon as you use one of its pickers (Type, Speed and Ring all silently left the card showing its old values until you clicked elsewhere). The inspector no longer hangs off the bottom of a short window with its Arrange row out of reach.
Considerations before you update: none. Files written by earlier versions
open unchanged, and a diagram saved with these new multi-ring aggregates is
still an ordinary .drawio file.
v0.15.0 — 2026-07-29
The format painter now carries size. Copy a device you have made bigger and Paint makes the next one the same size — grown in place, not moved. Size only ever moves between like things: a device's size onto a device, a zone's onto a zone — so painting a firewall's look across a zone recolours it without collapsing it to tile size, and rack-mounted hardware keeps its slot geometry. Text and callout blocks carry their font size the same way. Painting a connector's label placement now actually lands too — it was copied and counted, but never written. And a paint finally shows up in the bug report's "What I did" trail as what it was: "painted a style onto 2 shape(s)", for connectors and shapes alike.
Delete a cable from the Connections tab. Every connection card now has Delete beside Copy and Paint, so unwiring a device no longer means finding the cable on the canvas first. It is the same delete as selecting the connector and pressing the key: one undo brings it back, card and all.
Cables in 3D plug in where the box meets the ground. Isometric view used to attach every cable at a device's top plate while the cable itself visibly ran along the floor. Cables now lie on the ground plane and meet each box at the base of its near side — and they pass behind boxes rather than over them, on screen and in exports alike. A cable into a rack still climbs the cabinet face to its unit, which is the one place a cable belongs off the floor.
The LAG badge now draws what it means. The badge on a LAG link is two strands bound in a small ring — the aggregate ring in miniature — so "one line standing for a bundle" and a true bound aggregate read as the same idea at two scales.
Maps and layers act like one thing. Renaming a map renames its layer — in the same undo step, and never over a name you typed yourself. Every country map now lands on its own layer, so two maps can be shown and hidden independently. And the inspector's new Layer row says which layer the selection is on ("Mixed layers" across several); click it to open the Layers panel.
Downloads are counted now — as numbers only. The download server counts how many times each release file is fetched, and how many distinct addresses fetched that day. What is stored is plain integers: no addresses, no user agents, no identifiers, nothing that links one day to the next — and browsing the rest of the site is not logged at all. The privacy page says exactly this, in the same release that turns it on.
Considerations before you update: isometric drawings render differently — cables lie on the ground and pass behind devices instead of floating at lid height, so screenshots and SVG/PNG exports of 3D views will not match ones made with earlier versions. Your files themselves are untouched.
v0.14.0 — 2026-07-28
Copy a page as a Mermaid diagram for your markdown. Export → Copy
Mermaid puts the page on the clipboard as a fenced ```mermaid block —
paste it into a README, a wiki page or an article and GitHub or GitLab draw it
in place. It carries the topology, not the picture: every device with its
label, zones and racks as titled boxes holding what stands on them, and every
link with its caption, port names and speed — dashed link types come out
dotted, heavy ones thick. Mermaid arranges the graph itself, so positions are
its choice, and the snippet carries no colours on purpose: it takes the theme
of wherever you paste it. When you want the diagram exactly as drawn, SVG and
PNG are unchanged — this is for when the article should own the drawing.
Considerations before you update: none.
v0.13.0 — 2026-07-28
A Visio file drawn somewhere else now opens looking like the drawing.
Opening a .vsdx that came out of another tool used to arrive as a page of
empty boxes: devices drawn as pictures lost their pictures, most of the links
were missing entirely, every little port1 and subnet caption turned into a
boxed device of its own, and a stack of stray empty shapes piled up in a
corner. All four causes are fixed. Devices drawn as pictures keep their
pictures. Links are found even when they live grouped together with their
caption — the caption becomes the link's label — or were never actually glued
in Visio: a line whose end touches a device now connects to it, the way it
reads on paper. A link keeps its colour, so a green/red/blue colour-coded
drawing stays colour-coded. And plain text arrives as text, at its size and
alignment, not as a device.
Saving back to Visio keeps the pictures too. A device that is a picture —
one you pasted in, or one that came from an imported Visio file — is now
written into the .vsdx as a real Visio picture shape. Open, edit, save,
reopen: the drawing still looks like the drawing, here and in Visio.
Considerations before you update: none.
v0.12.1 — 2026-07-28
An attached log now arrives whole, and stops burying your report. Attaching a log or a copy of your XML used to cut it off after about 30,000 characters — and the cut always seemed to land just before the interesting part. Each attached file is now filed as its own entry underneath the report instead of being crammed into it, so it travels complete however long it is. The report itself reads like a report again rather than three sentences lost on top of a twenty-thousand-line log.
The generated part of a bug report is now shown rather than offered for editing. The diagnostics and the list of what you did are facts about the build and about what you clicked, and a version number that could have been retyped is one nobody can act on. You are still in charge of what goes: untick the diagnostics, choose fewer recent actions — or none — and remove any attachment you would rather not send. Your own description stays yours to write, now with a limit of about two pages, since anything longer is really a log and belongs in an attachment.
Cables in the 3D view reach the boxes they connect. Turning on the isometric view used to leave every cable looking slightly unplugged: the last stretch of it disappeared into the chassis it was joined to and reappeared somewhere near the box's front corner, and two cables between the same pair of devices came out of two different places. The cables are drawn in front of the chassis now, so each one runs unbroken from the edge of one device to the edge of the other, at every camera angle — and an isometric export matches what you see on screen.
The format painter carries a label's alignment, and speaks up when it cannot paint. Copying the look of one device onto another moved its colour and its label position but quietly left the label's alignment behind. It now takes all three. And because a connector's look and a device's look are made of different things, one cannot be painted onto the other — pressing Paint in that case used to do nothing at all, with no explanation. It now tells you which kind it is waiting for.
Considerations before you update: none.
v0.12.0 — 2026-07-28
Screenshots you attach to a bug report now actually reach us. Reporting a
bug could already save a drawbridge-bug-report.zip with your pictures in it —
but the feedback form had nowhere to put that file, so it sat in your downloads
doing nothing. The form now has a file field: paste your report, attach the
.zip, and the screenshots arrive with it. The form tells you the size limit
before you pick anything, tells you what it took, and tells you afterwards
whether the file went through — it no longer stays quiet about it either way.
Two smaller things came with it. The report dialog now shows how much of the
attachment budget (five files, 4 MB) you have used, instead of announcing the
limit by refusing a file. And a .zip is only saved when something actually has
to travel in it — a log or an XML file goes inside the report itself, so
reporting one no longer puts a file in your downloads that nothing needs.
Two more things a QA pass over the whole flow turned up. Reporting a bug and then reporting a second one used to open the dialog still holding the first report — including the screenshot of your diagram, ready to be sent again by mistake; it now opens empty after a report has gone, while still keeping your words if you merely close it mid-sentence. And on the feedback form, picking a file that is too large used to be a trap: it refused to send anything, in grey text that did not look like a refusal, with no way to un-pick the file short of reloading the page and typing your report again. There is now a Remove next to the file, and the refusal says so and looks like one.
Considerations before you update: none.
v0.11.0 — 2026-07-28
You can now decide where a connector's labels sit. Select a cable and the
inspector has a Label placement section: put its caption at the start,
middle or end of the run, above the line, on it, or below — and turn on Follow
the connector to have it rotate to the cable's own angle instead of staying
horizontal. Text is never drawn upside down. The port names at each end get the
same controls, and each end is set on its own, because ge-0/0/1 leaving a
switch at the top of the page and wan1 arriving at a firewall at the bottom
rarely want the same treatment. One thing improves whether you touch the
controls or not: a caption on a vertical cable now sits beside its line
instead of being drawn across it.
A new Connections tab tells you what a device is wired to, and lets you edit it there. Select a device and the inspector's second tab lists every cable touching it — which device it goes to, its label, the port name at each end, its type and its speed — all editable without hunting down each cable on the canvas first. Hovering a row highlights that cable so you can tell which of eight links is which, each row has its own Copy/Paint, and the tab carries the count so you can see how many connections something has without opening it.
And a new Objects view lists everything in the file. ≡ menu → Objects shows every shape in the document, grouped by page, with its icon, its type, what it connects to and which layer it is on. The search box matches what a thing is connected to as well as its own name, so typing a device's name finds everything attached to it. Tick rows and press Select on canvas to select them and jump there.
Layers can be locked without being hidden. The padlock in the Layers panel stops a layer's shapes being clicked, dragged, resized or deleted while leaving them fully visible — for the backdrop you need to see and keep bumping into. Hiding a layer now also removes it from the minimap, which had been showing the whole document regardless.
Maps: countries are objects now. The palette has an Add country… picker that drops a single country on the page, drawn on its own, sized to its own shape. Add as many as you like — each lands beside the last — and arrange them however you need, without a world or EMEA map underneath. Every country the map can draw is now in the picker, up from about two thirds of them. The world map backdrop also goes on a layer beneath every other layer, which it always claimed to do and did not in the saved file.
Fixed: a graceful host exit sometimes ended everyone's session instead of handing it on. When the host of a collaboration session closed their window, the message nominating the next host could be discarded before it left the machine — about one time in four — so the session ended for everyone rather than migrating. Desktop app only.
Considerations before you update: none. Existing diagrams open unchanged and nothing is renamed. The one visible difference in a file you already have is the connector caption on a vertical cable, which moves from across its line to beside it.
v0.10.0 — 2026-07-27
Drawbridge now has a Docker image for ARM servers. If you host things on a
Raspberry Pi, an Ampere box or an AWS Graviton instance, the container download
would not start for you — the only image published was the Intel/AMD one, and
loading it on an ARM machine gets you an image that machine cannot run. Every
release from now on offers both: pick drawbridge-<version>-image-arm64.tar.gz
on the download page instead. Nothing about the app differs between the two.
The instructions on that page were rewritten to match. They now start by telling
you how to find out which image you need (uname -m), give each architecture
its own complete set of commands to copy rather than one set to edit, and say
what address to open on a headless machine like a Pi — which is not
localhost, and matters more than it sounds, because your diagrams are saved
by your browser against the exact address you used. 32-bit ARM is not
supported: there is no linux/arm/v7 image and none is planned. A Raspberry
Pi 3, 4, 5 or Zero 2 W is 64-bit hardware, so if it reports armv7l it is only
the installed OS that is 32-bit — reflash with the 64-bit Raspberry Pi OS and
the arm64 image runs.
Considerations before you update: none. This is a new download, not a change
to anything you already run — and the desktop apps are untouched. If you are
already running the container on an Intel or AMD server, its file is now named
drawbridge-<version>-image-amd64.tar.gz rather than
drawbridge-<version>-image.tar.gz; the image inside, and the tag it loads as,
are the same as before.
v0.9.1 — 2026-07-27
Drawbridge now starts on Windows. On a Windows PC that has never had Microsoft's Visual C++ runtime installed — which is most of them, unless some other program has already put it there — v0.9.0 did not open at all. Both the installer and the portable download failed the same way: a grey box saying "A JavaScript error occurred in the main process — Cannot find native binding", and nothing else. There was no workaround from inside the app, because the app never got far enough to have one.
The part Drawbridge uses for live collaboration needs one Microsoft system file
(VCRUNTIME140.dll) that Windows does not always include. It is now bundled
with the app, so there is nothing to install and nothing to do differently. The
portable download matters here as much as the installer: it deliberately
installs nothing, so shipping the file inside the app is the only fix that
works for both.
If you hit this, you may have installed Microsoft's "Visual C++ Redistributable" to get past it. You can keep it — it does no harm and other software may want it — or remove it; Drawbridge no longer cares either way.
Considerations before you update: none. This release changes nothing you can see in the app, and nothing about your diagrams or settings. macOS, Linux and Docker are unaffected — they were never impacted, and their downloads are unchanged apart from the version number.
v0.9.0 — 2026-07-27
Connectors can work out their own link type. Draw a cable from a laptop to a Wi-Fi AP and it comes out as a wireless link. Draw one from a firewall to the internet and it comes out as WAN. No extra clicks, and it does not matter which end you started the drag from.
It also remembers what you chose last. Set a switch-to-switch cable to Trunk at 100G by hand, and the next cable you draw between two switches arrives Trunk at 100G — so a fabric is drawn once and repeated for free. It remembers the link type, speed, colour and connector type for each pair of device kinds.
It refuses to guess anything else, deliberately. Two switches stay a plain line. A trunk is a VLAN fact, a LAG an aggregation fact, IPsec an encryption fact — none of those follow from two icons, and a badge claiming a tunnel that is not there is worse than a plain line. Only the medium is inferred, because that is the part the picture actually tells you.
It only ever applies as a connector is created — never to one that already exists, and never to a file you open or import. What it learns is stored in your browser, not in the drawing, so files you share carry no trace of your conventions. The switch is Auto link detection in the app menu, with Forget learned link styles beside it.
A shaped cable no longer deforms when you move it. If you gave a connector custom waypoints and then moved both the devices it joins, the waypoints stayed behind and the cable bent out of shape. It now travels whole. Moving one device on its own still leaves the shape where you put it, which is what makes a hand-drawn detour stay put.
Racks accept a device dropped in the middle. Dragging a device into a rack by grabbing its centre drew a cable to the cabinet instead of mounting it, and a device already mounted in a rack could not be moved to a different U at all unless you grabbed it off-centre. Both work now.
Follow someone's view. In a shared session, press Follow next to a name in the People list and your canvas matches theirs — their panning and zooming moves your view, and if they switch page you go with them. Any pan or zoom of your own stops it, so there is nothing to remember to turn off. The toolbar pill says who you are following the whole time.
View-only invite links. Alongside the normal invite there is now a View-only link. Whoever follows it sees the diagram and every live edit, has a cursor and a name like anyone else, and cannot change a thing. It is enforced on the host's machine, not the guest's, so their edits never reach anyone — including the other people in the session. Regenerate link revokes it along with the editing link.
Guests always wait for you to let them in. Approving each person used to be a switch you could turn off. It is gone, and approval is now always on. Turning it off was the moment the risk was taken: invite links are reusable and people keep them, so from then on anyone still holding one — including from a link shared months ago — walked in and could edit with no prompt.
Closing the window no longer ends the session for everyone. When a host leaves, the person who has been connected longest becomes the new host and everyone else reconnects to them automatically. Nothing is lost and nothing is transferred: every participant already holds the whole diagram. A view-only guest is never made host.
Self-hosting the relay. If a session cannot connect directly it falls back
to a relay. You can now point Drawbridge at your own instead of the public ones
— see docs/collab/self-hosted-relay.md. Most people do not need this; the
status pill tells you when a session is actually being relayed.
Considerations before you update: auto link detection is on out of the box. If you would rather draw every link type by hand, turn it off in the app menu before you start — and note that every cable it styles is one undo away regardless. If you host sessions and relied on turning off "Approve each person before they join", that switch no longer exists — every guest now waits in the lobby.
v0.8.10 — 2026-07-27
The update panel in About behaves properly now. Three things:
Its Download update button was drawn as a bare line of blue text beside two proper buttons, so the one thing we most want you to press was the least prominent thing in the panel and nothing on the row lined up. It is a button now, filled, and the three actions share a row.
If a check found a newer release than the one the panel was already showing, the dialog ended up claiming two different versions at once — the panel naming the old one, the line below naming the new one — until you restarted the app. The panel now follows whatever the app has actually found, the moment it finds it.
And the second Download button is gone. The panel carries the action; the line beside "Check for updates" just tells you what the check found.
Considerations before you update: none.
v0.8.9 — 2026-07-27
Checking for updates yourself now counts. On the desktop app, pressing Check for updates and being told a newer version exists used to give you a line of text and a Download button — and nothing else. The shield stayed dark, and closing About lost the finding entirely. Now a check you ran yourself leaves exactly the same trace as the one that runs at launch: the shield lights amber and stays lit after you close the dialog and after you restart, so you can look, get on with your work, and come back to it. A check that comes back Up to date puts the marker out again.
That last part also fixes something you would have met on your next upgrade: the app remembered a waiting update but never forgot it once you installed it, so a freshly updated Drawbridge could light the shield telling you to upgrade to the version you were already running.
Considerations before you update: none.
v0.8.8 — 2026-07-27
A selected cable no longer forgets what speed it is. Selecting a connector used to repaint it in the selection colour. On a 100G link that meant the cable stopped matching its own legend entry for as long as you had it selected; on a 1G link it meant almost nothing happened at all, because the selection blue and the 1G blue are very nearly the same colour on the light theme.
Now the cable keeps its colour and gets a soft band along its length instead. Hovering shows the same band, fainter, so hovering and selecting read as one idea at two volumes. Selecting several cables bands each of them separately, so parallel runs stay countable — and every selected cable now shows a round handle at each end, where before you only got those when exactly one cable was selected.
Considerations before you update: none.
v0.8.7 — 2026-07-26
You can see when there is a new version, without being interrupted. The Drawbridge shield in the top-left now lights amber with a small dot when a newer version is waiting, and it stays lit until you do something about it. Click it and About opens with three ways out: Update now (in the browser, switching to the version already downloaded — it is already on your machine, so there is nothing to wait for), Upgrade manually if you would rather fetch the files yourself, or Skip this version, which puts the marker out for that release only — the next one lights it again.
This replaces the pop-up that used to announce an update. A pop-up is a moment: dismiss it, or miss it while you are drawing, and the app never mentions it again. Someone ran four releases behind that way. The marker cannot be lost, it survives a reload, and it says nothing at all when there is nothing waiting.
On the desktop the button reads Download update and opens the release page — Drawbridge still never installs anything by itself.
Considerations before you update: none. The marker only reflects checks the app already made — the browser asking the site it was loaded from whether a newer build exists, or the desktop update check you opted into. Nothing new is sent or fetched.
v0.8.6 — 2026-07-26
Changing a device's type can no longer make it disappear. The inspector's device-type picker was offering four things that are not devices — Virtual context, World map, Purdue levels and Bus. Picking Virtual context turned your device into an empty dashed box with no icon, and because that box lives in the background layer, the picker could not reach it to change it back; undo was the only way out. Picking Bus left a solid block of colour. The picker now lists devices only, so those four are placed from the shape palette, where they draw what they are meant to draw. Thanks to Tim for reporting both.
Bug reports say what you actually did. The "what I did" trail attached to a report was padding itself with lines like "restyled 16 shape(s)" after nearly every action — the number was the size of your page, not the size of the edit, so the trail buried the one action that mattered. It now counts what actually changed, names a connector edit as a connector edit, and reports reordering, renaming a page and changing layers in those words. Long reports also get a readable issue title instead of one cut off mid-word.
Considerations before you update: none.
v0.8.5 — 2026-07-25
Port labels stop disappearing. On a device with several links, one interface label was almost always missing — and moving something made it come back while a different one vanished. Two things were going on: a label placed near its own device was drawn underneath the device, and two labels arriving at the same device from similar directions landed on the same spot, where the second one painted over the first. Interface labels are now positioned as a whole picture rather than one cable at a time: each one takes the side of its cable pointing away from its device and steps aside when something is already there, and they are drawn on top of the devices instead of behind them. Exports match the screen, as always.
New and Open ask before replacing your drawing. Clicking New used to wipe the canvas and show the template gallery, which looks exactly like losing your work (it was undoable — nothing said so). Both now ask first, and only when there is something to lose. Open says out loud that its replacement cannot be undone, because that one really cannot.
Report a bug from inside the app. The app menu has a Report a bug item. It writes the report for you: what you were doing (your last few actions, and you choose how many — or none), the version and platform, how big the diagram is, and anything the app logged this session. You can read and edit every line of it before anything goes anywhere. You can attach files, or attach a picture of the current diagram with one click. Nothing is sent by the app: the report goes to your clipboard, attachments land in your downloads as one .zip, and the feedback form opens for you to paste into.
Logs you attach now arrive with the report. A log or a .drawio file you attach is written into the report text itself, so it reaches us when you paste it into the form — the feedback form takes text, and there was no way for a file to follow it. Pictures still come along as the .zip in your downloads. The message limit on the form went up from 5,000 characters to 40,000 to make room, because a real routing log did not fit in the old one.
Callouts can have a bubble. A callout is still plain text with a leader line by default, but the inspector now has a Bubble toggle that draws an outlined box around it. It round-trips to draw.io as a real border.
Fixed on the desktop app: the Website and Support links in the app menu did nothing. They were being blocked as untrusted navigation and never opened.
Considerations before you update: none. Diagrams, files and the .drawio
format are untouched; existing callouts stay borderless until you ask for a
bubble, and interface labels only move to where they should always have been.
v0.8.4 — 2026-07-25
Drawbridge runs on Linux and Windows now — properly, not as a preview. Until this release the only desktop build anyone could actually download was the macOS one. The download page now carries a build for each: an AppImage for Linux (one file, mark it executable, run it), a .deb for Debian and Ubuntu, a Windows installer, and a portable Windows .exe that installs nothing. Every one of them has the full app, collaboration included.
Which one should you take? If you want your desktop to know about
Drawbridge — a menu entry, and .drawio files opening in it when you
double-click them — take the .deb on Linux or the installer on Windows.
The AppImage and the portable .exe deliberately install nothing, which also
means the OS cannot offer them for your diagram files. Each download on the
page now says exactly this, along with the one command it needs.
Updates know which one you have. If you installed the .deb, "check for updates" offers you a .deb, not an AppImage — so your package manager stays in charge of the app it installed.
The Docker instructions were wrong, and are now generated. The compose
snippet on the download page said image: drawbridge, but a loaded image is
tagged with its version — so copying that snippet sent Docker looking on the
Hub for something that was never there. The page now prints the real filename
and the real tag for the current release.
Considerations before you update: none for existing users — nothing changes
about your files, the .drawio format, or how anything is saved. If you are
installing on Linux or Windows for the first time, note that these builds are
not code-signed yet: Windows SmartScreen shows a "More info → Run anyway"
prompt, and on Ubuntu 22.04 or newer an AppImage may need FUSE 2
(sudo apt install libfuse2). Both are one-time.
v0.8.3 — 2026-07-25
Double-clicking a diagram opens it. If you have installed Drawbridge as an
app, .drawio and .vsdx files now open in it from Finder, Explorer or wherever
you keep them — and Save goes straight back to that file, no "where should I put
this?" first. The app has been offering itself in the OS "open with" list since
Phase 3 and this page has said so; until now it opened to an empty canvas and
left your file behind. (Chromium-based browsers only, which is where installed
web apps can claim file types at all. The desktop app has always handled this.)
Reporting a bug takes one click. The About dialog has a Copy button beside the version. It puts the version and your browser/platform on the clipboard — the two things a report needs and the two things that were most annoying to transcribe by hand. It copies nothing else: not your name, not your diagram, not what you have open.
Considerations before you update: none. Nothing changes about your files,
the .drawio format, or how anything is saved. If you use the installed app,
the file association starts working the next time your browser picks up this
version — you may need to reinstall the app for the OS to notice.
v0.8.2 — 2026-07-25
Two things you can do now that you could not before. A callout's leader — the line with the little arrow — can finally be aimed: select the callout and drag the dot at the tip wherever you want it to point. Every callout used to point down and to the right at nothing, with no way to change it. And placing a callout or a text box by clicking works: arm it in the palette, click the canvas, type. That had been broken since callouts shipped — only dragging one onto the canvas worked, though the palette has always offered both.
Two things look right in dark mode that did not. Rows in the Compare panel had no visible hover, and the little dots on a page tab were ringed in hard white. Both were reaching for colours that were never defined, so the fallback won and never changed with the theme.
Considerations before you update: none. Nothing about your files, the
.drawio format or collaboration changed, and no setting moves.
The rest of this release is invisible from the outside: a codebase clean-up covering 54 tasks — dead code and stale scaffolding removed, documentation that had drifted from the code corrected (including a security page that claimed the editor makes no network requests, which stopped being true when the update check landed), and guards added so several classes of silent breakage cannot come back. Three real defects were found and fixed along the way, including a desktop start-up check that reported success no matter what it found.
v0.8.1 — 2026-07-24
The browser app now tells you when there is a new version. It always meant to — the "Update available — Reload" prompt has existed for a long time — but nothing ever went looking for a release after the page first loaded. A tab or installed app you keep open could sit several versions behind and never say so, and a hard refresh was the only way out. It now checks when you come back to the tab, when your connection returns, and hourly in a session left open. Nothing changes until you click Reload, exactly as before.
Because of that, the privacy page has been corrected. It used to say the editor makes zero network requests. That is no longer literally true, so it now says what actually happens: the app asks this site whether a newer version of itself exists. No third party, no identifier, nothing about what you have drawn — and still nothing about you or your diagrams ever leaves your machine.
v0.8.0 — 2026-07-24
You can align a label now — left, centred or right. Every caption was centred under its icon with no way to change it. There is a new Label align row in the inspector, next to Label position, and centred is still the default so nothing moves until you ask it to.
It applies where the label sits over the tile — Inside, Below or Above. With the label beside the tile (Left or Right) its edge is already pinned to the tile, so there is nothing to align it within and the buttons grey out. A multi-row label aligns as a block: every row shares the same edge.
Text and Callout blocks had their own alignment buttons in the Text section; those have moved into the same Label align row, so there is one control for every kind instead of two that did the same thing. Style → Copy / Paint carries the alignment along with the colour and label position.
A CPE shape. Customer premises equipment — the carrier's box at the edge of
a customer site — is in the Network section. It is drawn as the demarcation
it marks: a dashed line splitting provider from customer, with the service line
crossing into the device and out to the LAN. Search finds it as cpe, and also
as demarc, ont, ntu, nid or customer premises.
v0.7.0 — 2026-07-24
Labels can have more than one line, and the box you edit them in is a real box. A caption used to be a single run of text: it neither wrapped nor took a line break, so a long one ran off across the page, and the field you typed it into was a one-line slot about thirty characters wide.
Now a label wraps on its own, and Shift+Enter (or Alt+Enter) puts a break exactly where you want one. Enter still means done, as it always has. The edit box grows as you type — on the canvas and in the Label field in the inspector — so a long description is readable while you are writing it.
Where the label sits decides how much room it gets. Below or above the shape it can run to six lines. Inside the tile it takes only what the tile can spare while the icon still reads as an icon; past that it ends in an ellipsis and the full text is on hover. If you are writing a paragraph rather than a name, set Label position → Below, or make the shape wider.
If you have opened a .drawio file and seen <div> or -> printed on your
diagram, that is fixed. draw.io stores captions as HTML, and we were showing
the markup instead of reading it. Multi-line labels from draw.io now arrive as
multi-line labels, > arrives as >, and labels you write travel back the
same way — so a two-line caption saved here opens as two lines there. Reopen
an affected file and it corrects itself; nothing to do by hand.
v0.6.2 — 2026-07-24
VDOM and VSYS are red now, like the firewall. Both were drawn in network blue, which put them alongside the switch and the router. They belong with the firewall: a VDOM carves a FortiGate into independent policy domains and a VSYS does the same to a Palo Alto, so what they partition is the security policy, not the wire. They are garnet from this release on. VRF stays blue on purpose — a routing instance really does partition forwarding rather than policy, which is the whole distinction the colours are there to show.
They keep their place in the palette, under Virtual contexts next to VRF, so
nothing moves; only the colour changed. Existing diagrams pick this up the next
time you open them, and any VDOM or VSYS you had recoloured by hand keeps the
colour you chose. If you re-export a diagram that contains one, the shape's fill
and outline in the resulting .drawio or .vsdx will differ from the file you
exported before — the diagram is the same, the shape is simply a different
colour.
v0.6.1 — 2026-07-24
The donation panel no longer scrolls inside itself. It was given less height than its content needed, so the Tip button ended up below a scrollbar in the middle of the page. It now gets Ko-fi's full height, and the page scrolls rather than the panel.
Under the hood: two dead loaders removed. The shape catalog and the toast module were both loaded through a "the other workstream might not have built this yet" indirection that stopped being true long ago — the bundler had been pointing at both for a while. Removing them is invisible in use, but it deletes a real class of bug: the shape catalog was being re-validated at runtime against a second, hand-maintained list of families, and forgetting an entry there could make an entire group of icons vanish from the palette while the canvas still drew them perfectly. There is one list now, and the compiler checks it.
Maintenance: the release script's progress counter no longer changes its own total halfway through a run, and the macOS build stopped warning about a missing author field.
v0.6.0 — 2026-07-24
An icon library, in the app. The ≡ menu has a new Icon library entry
that puts the whole catalog on one page — every icon, grouped into the same
sections as the palette, with its catalog key underneath. There is a search
box, and picking an icon arms it and closes the dialog, so browsing ends in
drawing. The key under each icon (plc, data-diode, purdue) is the name
the shape is saved under in a .drawio or .vsdx file, and the name a CSV
import matches — handy if you are writing one by hand.
A way back to the website, and a tidier menu. The ≡ menu has a Website entry — the app had no link to its own site, which mattered most if you had installed it as an app or bookmarked the editor directly, where there is no Back button to fall back on. The support link beside it was also smaller and greyer than every row above it, which made it look like a rendering fault rather than the deliberately quiet thing it was meant to be; both are ordinary rows now, marked with ↗ because they leave the app.
You can support the project without leaving the site. The donate page can now show the tip panel inline, so you no longer get bounced to another site to buy a coffee. It only loads when you press the button — open the page, read it, leave again, and nothing is ever requested from Ko-fi. That is deliberate: this site otherwise makes no third-party requests at all, and the privacy page now spells out that single exception rather than glossing over it. Payment is handled entirely by Ko-fi inside the panel; card details never touch this site. If you would rather not load it, the plain link is still there and works as any link does. In dark mode the panel follows the site's theme.
v0.5.0 — 2026-07-24
OT is now a first-class part of the catalog — 27 new shapes. Until now there was nothing between an IoT sensor and a generic server, so the control layers of an industrial diagram simply could not be drawn: people fell back to the generic box, or drew a panel-mount operator screen as a laptop. There is now a full control stack (PLC, Safety PLC, RTU, Remote I/O, VFD, HMI, Engineering workstation, SCADA server, Historian, Protocol gateway), the IT/OT boundary (Data diode, Jump host), industrial networking (Cellular router, Network TAP), facility and physical security (Camera, UPS, Door controller), and the vertical equipment that goes with them (Substation, Protection relay, Solar PV, Wind turbine, HVAC, Fire panel, Robot, Field cabinet, Plant). They share a new olive accent so an OT device reads as one at a glance.
Purdue level backdrops. Search purdue in the palette and drop a backdrop
that draws the whole model — levels 5 down to 0 with the industrial DMZ marked
as the boundary it is. It is one piece of scenery rather than a stack of
boxes, so the bands can never drift apart, and devices snap into a level
when you drop or drag them onto it: getting a row lined up takes no alignment
tools. Only the vertical position is snapped, so you still place things
left-to-right however you like. Like a map it sits on its own layer, so you
can switch the whole model off and keep a plain plant topology. There is a new
OT — Purdue Plant template that starts you with a populated one.
Two new connector types. Conduit for the controlled channel between two zones, and Fieldbus for a serial or multidrop run — drawn thinner than everything else, because until now an RS-485 run rendered exactly like a 10 G trunk, which quietly told you the wrong thing.
The palette is grouped into smaller sections. Two groups had grown past twenty icons, so Network is now split into Network and Places, and OT into control and field & facility; VDOM, VRF and VSYS finally sit together under Virtual contexts instead of being scattered across three groups. Colour still comes from the device family, so nothing changed colour except VDOM, which now matches VRF and VSYS. Your collapsed groups reset once with this update — the old setting referred to the old groups.
Palette search is more precise. Typing rtu used to return Bus, VDOM and
Virtual machine ahead of RTU itself, because the search matched anywhere inside
a word and "virtual" contains "rtu". Terms now match the start of a word.
Every abbreviation still works — fw, l3, 62443, tacacs+, 802.1x — and
the palette, the device picker and the rack builder now share one matcher, so
they can no longer disagree about what a search finds.
v0.4.4 — 2026-07-24
Pressing Map more than once no longer stacks duplicate maps. It used to add a fresh world map on every press, each one exactly on top of the last — and because a map's interior is deliberately click-through so the devices on it stay reachable, those duplicates could not be clicked off again. Now the second press just selects the map you already have. You can still put two maps on a page when you want one per region: copy the first and paste it, which keeps the extent you picked.
Security hardening across the site and the self-hosted image. The website's
content-security policy no longer needs unsafe-inline for styles; the editor
page now always revalidates, so a cached copy can't outlive an update and leave
you looking at a blank canvas; and the server inside the Docker image and the
offline bundle now sends the usual protective headers and refuses anything but
GET/HEAD. Colours and embedded images arriving from a collaboration peer,
a template file or a Visio import are validated before they are drawn.
Nothing you have saved is affected, and there is nothing to do before updating.
v0.4.3 — 2026-07-23
The Docker image is now a real download on the site — grab it from the
release on the download page (linux/amd64, docker load and run), instead
of the page only mentioning it. The download tooling is also ready for the
Windows and Linux desktop builds: when those installers are produced they
appear on the download page automatically and feed the desktop updater, no
further changes needed.
v0.4.2 — 2026-07-23
Download page now explains how to open the app on first launch. Because the desktop builds aren't signed with an Apple/Microsoft certificate yet, macOS calls the app "damaged" and Windows shows a SmartScreen warning. The macOS build now includes a one-time copy-paste command that clears that, and the Windows build explains the "More info → Run anyway" step — so you can install without needing to know the workaround.
v0.4.1 — 2026-07-23
Maintenance release: refreshes the desktop build so it matches the current web version (the previous release was web-only) and re-publishes it to the download page with an updated checksum. No feature or behaviour changes.
v0.4.0 — 2026-07-23
Download page cleanup: each release now shows a short one-line summary with a link to the full release notes instead of the entire notes text, and file checksums are tucked into a "sha256 checksum" toggle so the card stays compact. No app or desktop changes — nothing to reinstall.
v0.3.0 — 2026-07-23
Drawbridge gets a home on the web. This release introduces drawbridge.fortiknight.com: use the app straight in your browser (it works offline after the first visit), read the manual online, download desktop builds with SHA-256 checksums, and send feedback without needing any account.
What's new:
- The full editor runs at
/app/— same features as the desktop app except live collaboration, which stays desktop-only (it needs the peer-to-peer networking layer). - The in-app manual is published as web docs, always matching the released version.
- A feedback form that files straight into the project's issue tracker.
- Desktop downloads are self-hosted with published checksums — verify with
shasum -a 256 <file>after downloading.
Considerations before updating:
- The desktop app's update check now asks
drawbridge.fortiknight.cominstead ofgithub.com. If you allow-list outbound domains in a firewall or proxy, adddrawbridge.fortiknight.com. The check remains notify-only (nothing downloads without you clicking) and can still be turned off in Settings. - Nothing changes on disk: your diagrams, templates and settings are untouched by this update.
- Desktop builds are still unsigned — macOS/Windows warn on first launch, same as before. The published checksums are how you verify a download.
v0.2.9 — 2026-07-22
Global templates now show a real world-map thumbnail on their cards, and a discreet "Buy me a ☕" sponsor link joined the app menu. Routine update, no considerations.
v0.2.8 — 2026-07-22
Minimap fix: connectors with pinned sides now anchor to the correct point on the tile, so the minimap matches the canvas again. Routine update.
v0.2.7 — 2026-07-22
Minimap fix: the bus bar renders as its accent-coloured bar with spread taps instead of a generic tile. Routine update.
Versions before v0.2.7 predate these notes — see the changelog for their full history.