Ctrl K
ComunidadGuías…

ChangeLog

Rama dev · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
03-NOV-2026: 32.6.10

- Lines up the Advanced section of Page Setup
- Reads the Alt Text of the page first in the lightbox and the viewer
- Makes page groups easier to use in the tabs
- Adds Insert Group to the Pages menu
- Keeps the Alt Text of the lightbox from scrolling the diagram
- Keeps Insert Page as the result of the search for "insert page"
- Keeps the collapsed state of the group of the current page on drops
- Keeps the last page of a group in the group that it is dragged into
- Keeps a dragged page in place over the buttons next to the page tabs
- Keeps a page dragged after the last tab of a group in that group
- Keeps a dragged page in place over the space around the page tab buttons
- Charges the length of editableCssRules for each selector
- Keeps the placeholder result of the parent above the cache limit
- Inserts the shape of an open shape picker for typed text instead of running letter shortcuts
- Tunes embed blocking
- Types into a shape picker from the page and with AltGr
- Shows the borders of buttons in dialogs and windows in dark mode again
- Gives the sections of Page Setup the same spacing
- Uses a theme variable for the border of dialog buttons in dark mode, keeps the focus border of dialog selects and spaces all Advanced sections alike
- Uses the grid size of the current page for new pages [jgraph/drawio#604]
- Adds rings and dots as variants of the flow animation
- Steps flow rings in exports like the live animation and keeps thumbnails off live edges
- Restarts single flow passes in animation exports when a step repaints the edge
- Moves one flow ring over edges with gap and line jumps
- Keeps flow steps of hollow pipes with flow rings or dots on the pipe
- Moves flow rings and dots along the line in exports of sketch edges without pointer events
- Points Help > Quick Start Video to the new getting started video
- Draws U-turn arrowheads longer than the shape at their stored length again
- Puts the arrowhead handle of the U-turn arrow on its tip and caps the length at 1e7
- Moves flow rings and dots along the line of sketch edges with an opacity group
- Shows the Fill and Line sections of the Style tab for layout containers
- Merges From Outline into the From Text dialog
- Skips custom handles that were not created in the inline toolbar
- Ignores page tab drags over tabs of a rebuilt tab bar
- Skips loading custom libraries if the sidebar was destroyed
- Records the groups of the GAE error log pass of 2026-11-02
- Adds REVIEW.md asking Code Review to post every finding in full
- Asks Jira Connect users to upgrade in the issue panel and counts down to the end of Connect in the editors
- Keeps REVIEW.md out of the public repository like the other Claude files
- Shows the Connect retirement banner of the Jira editor for new diagrams
- Makes room for the Connect retirement notice in Jira issue panels without diagrams
- Hides the Connect retirement banner while dialogs are shown and shows all of its lines
- Inserts the shape of a hover arrow picker for typed text also if the hovered shape is selected

29-OCT-2026: 32.6.9

- Adds connection point resize cases for the palette shapes of #783 and #916
- Makes the storage and start dialogs of the web app usable with the keyboard
- Raises the contrast of gray text in the storage and start dialogs and of dialog hints
- Makes the templates of the New Diagram dialog keyboard accessible
- Makes the file lists of the GitHub, GitLab and Trello dialogs keyboard accessible
- Stops flow animations if the operating system asks for reduced motion
- Makes the storage buttons of the create dialog keyboard accessible
- Names the progress bars of spinners and disables storage buttons while they load
- Names the file name, storage logo and file type of the New Diagram dialog
- Makes the title buttons of windows 24px targets
- Makes the toolbar of the lightbox keyboard accessible
- Makes the buttons of the viewer toolbar keyboard accessible
- Takes disabled buttons of the viewer toolbar out of the Tab order
- Keeps the focus in the file lists of the GitHub, GitLab and Trello dialogs
- Keeps the size of help icons in the titles of windows
- Makes the tabs of the Configuration dialog keyboard accessible
- Logs errors of error dialogs with their stack to the console
- Revert "Logs errors of error dialogs with their stack to the console"
- Adds resizeCentered style that keeps the center of shapes in all resizes
- Inverts resizeCentered with Ctrl or Cmd while a resize handle is dragged
- Keeps the center of relative geometries with resizeCentered and fires cellsArranged for Ctrl+cursor key resizes
- Limits the regular expressions of editableCssRules
- Stops the updates of a descriptor when another file is opened
- Charges the alternatives of editableCssRules by their number
- Removes the update listener of a descriptor after the event
- Keeps at most 100,000 results in the placeholder cache
- Keeps placeholder results only for keys that are looked up again
- Shows the lightbox and viewer toolbars for Tab from the text outline button
- Adds the Restore from a Zip key of the Confluence Cloud page ID mappings
- Keeps the connection points of the U-turn arrow and UML 2.5 actions finite for extreme arrowhead lengths and arc sizes

29-OCT-2026: 32.6.8

- Updates the mathjax tooling and the CI wrangler pin for the Dependabot alerts
- Runs the source checks on pushes and PRs to dev-db
- Walks the descendants of nested invalid cells once in incremental validations
- Keeps connectors visible that are connected to a shape a collaborator deletes at the same time
- Walks the nested invalid cells if a walk stopped at a removed state
- Keeps the open end of a connector at its point when the old parent of the removed terminal is unknown
- Passes changed tie layouts on without routing the connectors per tie
- Does not parse the styles of hidden ties for their connectors
- Redraws traced outlines at most for a fifth of the time and not for failed traces
- Traces the images of hidden documents in slices with messages
- Shows the icons of page group tabs with the rules of one stylesheet
- Keeps outlines at 256 points on large vertices
- Measures all label gaps before their clip paths are written
- Orders the nodes of invalid cells after cells without shapes in linear time
- Inserts loops into the edges of their terminal without a lookup
- Adds perf budget tests for crafted diagrams and runs them on every push
- Delays only redraws of traced outlines and reports apps that fail to open
- Shows the views of an SVG of all pages without general sibling selectors
- Measures the texts of plain text labels with a background after painting all labels
- Sets the ties of each connector once when ties are cloned with Ctrl+drag
- Parses the ties of each connector once when ties are removed
- Looks up the ties of connectors once per preview of cloned ties
- Collects the hidden cells of collapsed tree topics without searching or recursion
- Updates the tabs and placeholders once per edit when pages are moved
- Passes on lane changes of ties that were laid out lazily after a zoom
- Tests edges with line jumps only against the processed edges near them
- Fails the traces of images that a wait timed out for in all graphs
- Walks each cell once for the invalidations of all changes of an edit
- Finds the segment of each label of an edge with a binary search
- Keeps the ancestors with the data of placeholders while the view is validated
- Adds perf budget families for the pre-existing on-open quadratics
- Measures the plain text labels that are placed again at once after the last repaint
- Keeps the line jumps of dense diagrams below the work limit of a validation
- Skips a cell in an invalidation only if one earlier walk covers its flags
- Tests all processed edges when the buckets of the line jump index hold more
- Checks the steps of org chart boundaries once per merge
- Limits crafted ELK options before they reach ELK
- Pushes the cells of the changes into one array in the layout manager
- Limits the automatic ELK runs of large layout containers
- Looks up the selected cells in constant time and removes many in one pass
- Adds differential tests of the selection model against the old implementation
- Writes the rows of a data source in its dialog without the layout limits
- Checks the selection lookup in isSelected also if nothing is selected
- Runs the layouts of selected containers without the limits in one edit
- Writes the tooltip of a cell once in SVG exports
- Adds the translation keys of the Confluence Cloud page ID translation
- Adds the missing translation keys of the draw.io Confluence Cloud app
- Removes the listeners of many selection handlers in one pass
- Adds deep-hierarchy tests of batches of removed listeners
- Saves only the org chart waypoints that change the routes
- Routes the connectors of org chart teams with more than 32 lines
- Keeps Graph.isSameRoute and the points of bezier org chart connectors
- Exports math pages with tooltip icons as SVG
- Routes all connectors of an org chart manager with one walk
- Updates the vendored drawio-plantuml bundle to commit 8769041
- Filters the icon attributes of SVG exports after embedding images
- Shows no scrollbars in resized viewers at 150 % display scaling
- Redraws the outlines of images that load after the timeout of a wait
- Keeps ELK margins and paddings with their numbers limited
- Upgrades the routes of large tree boxes when libavoid is ready
- Shows scrollbars for diagrams cut off by up to 0.83 px at 150 %
- Keeps the size limits for the ancestors of small boxes in the libavoid re-run
- Keeps late outlines of images that only temporary graphs waited for

27-OCT-2026: 32.6.7

- Pauses the autosaves for the closing saves of undo-stale
- Makes drive-stale-etag deterministic under real timers
- Holds the autosaves and the lazy cleanup for the cases of tree-undo
- Redraws traced outlines in one walk and traces loaded images in slices
- Traces all images of hidden documents at once, forces the redraw when a wait stops and visits labels of edges again
- Runs the autosave stub of the real timers on the client window
- Keeps the open end of a connector at its removed terminal in containers
- Keeps the origin of the parent of cells that patches remove
- Renames quoted url() references with balanced parentheses in SVG page IDs

27-OCT-2026: 32.6.6

- Trims the view IDs of page names with a scan and takes the SVGs of all pages in a loop
- Compares a bounded number of library keys for each style and keeps the cached shape matches when the cache is full
- Reads the old scripts of the page-groups and mermaid-alt tests from a release tag
- Adds the lessons of the 32.6.5 release test to the release skill
- Redraws only the port edges of traced outlines and finds old outlines without walking the cache
- Counts the shared values of the closest keys exactly within a total budget and keeps shape matches in two generations
- Compares a key with the values of the style when the key is longer
- Gives the definitions of each page their own IDs in SVG exports of all pages
- Keeps the images of all pages in one copy and the defs of Embed Images visible
- Adds Spacing to the Properties panel of ties
- Names the diagram of the viewer and the lightbox after the Alt Text of its page
- Names the viewer after the shown page and after a new file of setXmlNode
- Shows the current page after setXmlNode and names the page the viewer shows
- Passes the navigation of the viewer to the parser on each update
- Tests Spacing of several selected ties
- Keeps the replays of the realtime undo repair per page
- Adds the realtime scenario tree-undo for the hover arrows of Trees.js
- Removes the terminal points of the connected ends of the Trees.js hover arrows
- Keeps the popovers of the inline toolbar and the color window inside short inline editors
- Replaces stale terminal points of cut ends and of Trees.js copies
- Keeps the scroll position of popovers after changes and scrolls palettes with the popover
- Keeps the shape picker of a click on a hover arrow open
- Keeps the renaming of SVG page IDs linear for crafted url() values
- Updates lockfiles for the open Dependabot alerts
- Renames quoted url() references with a parenthesis in SVG page IDs again

26-OCT-2026: 32.6.5

- Keeps the label position of the new palette shape for changed alignments
- Parses each label once when the text outline is filled
- Finds the columns of selected table cells in linear time
- Makes viewers and lightboxes figures with a text outline for screen readers
- Hides the Text Outline button with Escape and keeps the scroll position of the diagram
- Adds trimCurve to end curves where the markers start [jgraph/drawio#5819]
- Lets page tabs be dropped onto the name of a tab
- Adds optional page groups to the page tabs [jgraph/drawio#5774]
- Shows the edge of selected edge labels and label gaps in edge selections
- Bounds the encodings of embedded images in cells of many sizes
- Keeps label gaps when a color set of the Style tab is applied
- Routes auto-routed edges in the resize preview of the multi-selection box [jgraph/drawio#3370]
- Stops libavoid solves without connectors from leaking their shapes
- Compares palette shapes with the values of named styles when their shape changes
- Announces wrapped plain text labels as the shapes show them
- Parses each label once when the outline of a viewer is filled
- Keeps pages dropped after a collapsed page group visible
- Gives each size of an embedded image the encoding it got before
- Sends the Page Groups switch to collaborators and keeps it in their saves
- Starts the Confluence Cloud viewer without collectExternalHosts
- Explores from connectors without a geometry
- Hides the shape picker if it was already removed from the page
- Records the groups of the GAE error log pass of 2026-10-26
- Keeps the sources of embedded images whose sizes were not tried by the end of the call
- Keeps the visible state of the tool windows while no file is open [jgraph/drawio#5823]
- Adds the outline perimeter: edges end on the outline of what shapes paint
- Fixes the tool windows that are kept while no file is open [jgraph/drawio#5823]
- Spreads the connection points of shapes with the outline perimeter along the outline
- Keeps the side points of outline shapes off the grid and lets the points on callout tails follow the tail
- Documents the bent ends of snapToPoint routes when the outline points change
- Exports all pages as one SVG with a view for each page [jgraph/drawio#5821]
- Discards the result of an SVG or PNG export after its timeout
- Adds a text alternative to pages for the SVG export
- Restores the colors of a fixed theme before the shadow of an SVG export
- Applies the Alt Text of Page Setup only if it was changed in the dialog
- Retries an SVG or PNG export with a timeout of 5 minutes
- Saves the result of an export that finished after its timeout on Retry
- Keeps the Alt Text of a collaborator during the grace period of realtime
- Writes the Alt Text of a new SVG file from its own first page
- Traces the outlines of images on other pages before an SVG of all pages
- Takes the SVG of each page in the CLI after its outlines and keeps the wait counter
- Restores the embed choice of Export as SVG after All Pages
- Adds the Alt Text row of Page Setup from diagramly
- Waits once for stalled outline traces in the CLI export of all SVG pages
- Ignores the node modules of the SVG views tests
- Uses the accessibility title and description of Mermaid diagrams as their text alternative
- Updates the Mermaid bundle to jgraph/drawio-mermaid@2c429a1
- Updates the Mermaid bundle to jgraph/drawio-mermaid@0231f39
- Adds ties that bundle connectors (prototype)
- Previews moved and cloned ties on their connectors
- Deletes ties with the delete action
- Aligns moved ties with guides
- Adds a Tie mode to the freehand tool
- Stops the Tie mode of the freehand tool after a tie is added
- Draws ties with the stroke of the tie
- Updates tie layouts that were laid out for another zoom or pan
- Adds the translations of Bundle, Unbundle and Tie
- Fixes the findings of the performance and bug review of ties
- Adds Select All for ties to the freehand Tie mode
- Keeps the Mermaid text alternative of copies, authors and layouts
- Routes snapToPoint ends to the outline points of the edited style
- Traces the outlines of SVG and HTML files before their PDF export
- Resets the styles of the copied shape for the snap points of outline shapes
- Fixes the review findings of ties
- Shows Select All of the freehand Tie mode as an icon in the mode row
- Fixes copies of ties with the containers of their connectors
- Adds the internal guide for connector ties
- Fixes the shapes of the Basic palette in the Shapes button of the inline toolbar
- Hides the inline toolbar while a shape picker that was opened with a click is shown
- Shows the shapes of the library of a shape in the shape picker
- Keeps drawing in the Tie mode of the freehand window after a tie is added
- Fixes the review findings of the shape picker
- Adds the balloon tree and mindmap layouts and the outline of tree boxes
- Fixes the hover arrows of the branches of mindmaps at some zoom levels
- Adds a regression suite for connector ties
- Ignores crafted layout configs and logs the errors of container layouts
- Writes the tooltips of images and groups as titles in SVG exports
- Keeps ties out of the child layouts of their containers
- Ignores double-clicks in the Tie mode of the freehand window
- Fixes the review findings of the connector ties suite
- Writes the title of a group on its group also if a plugin draws into another
- Keeps ties in their layout containers and lets the layouts skip them
- Fixes the review findings of the outline of tree boxes
- Lays out balloon trees and mindmaps around roots that can't be moved
- Keeps the order of the roots of an outline with a root that can't be moved
- Leaves ties in place in ELK layouts of the Arrange > Layout dialog
- Keeps ties out of the lane commands of pools
- Keeps the top left of an outline with a line on a new level
- Moves and copies the hidden branch of collapsed topics in mindmap boxes
- Keeps the terminals of edges that an undo removes with their terminal
- Ignores hidden shapes in the top left of an outline
- Keeps the edge of the old parent exact when adding a parent is undone
- Moves only the hidden cells below collapsed cells in layout containers
- Moves the release skill into etc/build so anyone can run a release
- Makes the release scripts report only what they checked

25-OCT-2026: 32.6.4

- Reads long decimals in style rules and placeholders as numbers again
- Updates stable to 32.6.1
- Names the Edit Data dialog for screen readers
- Moves the focus into dialogs opened from menus and shortcuts
- Names the Insert buttons of the text panel for screen readers
- Keeps the inline toolbar popover off the selected shapes and shows its color window in inline embeds
- Stops service workers on development hosts from failing every install
- Stops the clear page from framing the other domain and fixes its buttons on ac.draw.io
- Announces the selection and describes the diagram for screen readers
- Links the shapes of a data source again when its key column changes
- Removes the links of the shapes of a deleted data source
- Needs a new preview for a data source whose URL was changed
- Changes no connector styles in org chart layout containers whose layout fails
- Reports a refresh of a read-only page as an error of its data sources
- Shows Read-only for OK in the dialog of a data source of a read-only page
- Reports an error while a refresh writes the cells of data sources
- Shows Refresh All in an open Page Setup when the first data source is added
- Shows an error for a style rule that would be lost in the Style Rules dialog
- Keeps the font colors of the document in VSDX exports in dark mode
- Shows only the rules that a page uses in the Style Rules dialog
- Limits the size, rows, columns and connections of data source files
- Counts only the rules that the page uses for Add Rule in the Style Rules dialog
- Counts the connections of data sources from attributes that the import sets
- Adds a text outline of the page for screen readers and the keyboard
- Adds Alt+Shift+D, Alt+Shift+U and Ctrl+{ / } to the keyboard shortcuts
- Names custom shapes Shape for screen readers instead of reading their stencil
- Announces a selection with the same description as the previous one
- Removes the listener of Page Setup when it is closed
- Updates the text outline when shapes are hidden or shown by tag
- Shows the inline toolbar for shapes in the simple theme by default
- Keeps the inline toolbar off handles after it is clamped to the viewport
- Adds a table popover to the inline toolbar for shapes
- Keeps the popover of the inline toolbar off the toolbar beside shapes
- Does not count empty rows and columns of data sources for their limits
- Shows the rule that the page uses for a cleared rule in Style Rules
- Adds a More button with the options of a single cell to the inline toolbar
- Adds a Shape button to the inline toolbar for basic shapes
- Adds Copy Style and Paste Style to the More button of the inline toolbar
- Updates stable channel to 32.6.3
- Embeds the external images of Confluence Cloud diagrams on save at the size of their cells
- Lowers the cap per diagram to 2 MB and embeds images again for cells made larger
- Cuts the label gaps out of edges in PDF exports and printouts [jgraph/drawio#5820]
- Tests that the Forge app saves at once when the editor closes, and documents the Forge mode of the embed images suite
- Keeps the styles of each shape when several shapes change their shape
- Adds Insert to the context menu of the diagram with the shape toolbar
- Offers the basic shapes of the General palette in the Shape popover
- Adds effects, Rotate with Edge and the label background to the inline toolbar
- Does not load images again that the size limit made smaller, and keeps their source when the same image is set again
- Remembers the width a grown cell asked for when the source gives no wider image
- Turns off effects of named styles in the More popover of the inline toolbar
- Counts the blocked image and font hosts of the Jira Cloud app by page
- Serves generate/v3 on ac.draw.io, aj.draw.io and app.diagrams.net and calls it on the own origin there
- Shows only the named columns in the preview of data sources
- Finds shapes with a label perimeter in the libraries of the sidebar
- Offers the shapes of the library of a shape in the Shape popover
- Moves Use Connector Style of edge labels to the Text popover
- Keeps the formatting of shapes changed to another shape of their palette
- Keeps moved labels when shapes change to another shape of their palette

24-OCT-2026: 32.6.3

- Reads the numbers of style rules and placeholders in styles in linear time
- Checks the columns that data sources wrote once for all placeholders of a label
- Trims the lines of text copied from labels with text flow in linear time

23-OCT-2026: 32.6.2

- Removes centering on clicks and zooming on double clicks in presentation mode
- Limits the table operations of the text toolbar to the label editor
- Inserts images, HTML and text dropped on a label that is being edited into the label
- Inserts exported PNG and SVG files pasted into a label that is being edited as images
- Keeps the colors of the parts of shapes and stencils in VSDX exports (#910)
- Keeps the labels and the text of shapes in VSDX exports
- Keeps the alignment and the fonts of text in VSDX exports
- Applies the inline toolbar options to the cells they fit and adds arrange options
- Hides tooltips when a popover or dropdown of the inline toolbar opens
- Keeps edges on the connection points of the Lean Mapping kanbans after a resize
- Keeps edges on the connection points of the Bootstrap popover after a resize
- Keeps edges on the connection points of the DFD shapes after a resize
- Keeps edges on the connection points of the SysML states and actions after a resize
- Keeps edges on the pins of the Electrical multiplexer after a resize
- Keeps edges on the connection points of the Basic shapes after a resize
- Keeps edges on the connection points of the Infographic shapes after a resize
- Keeps edges on the connection points of the Arrows shapes after a resize
- Adds rules per page and placeholders in styles
- Adds a modifier argument to mxKeyHandler.bindKey and binds Alt shortcuts with it
- Uses the built-in features in the plugins that copied them
- Keeps edges on the connection points of the ArchiMate Service and Event after a resize
- Removes the page reordering test plugin
- Adds a dialog for the style rules of a page
- Moves the focus between the parts of the editor with F6 and Shift+F6
- Adds F6 and Shift+F6 to the keyboard shortcuts
- Shows a focus ring on the diagram and on dialog buttons for keyboard focus
- Gives dialogs a role and a name and returns the focus to their opener
- Declares the language of the user interface on the page
- Allows pinch zoom on the pages without the editor
- Adds alt text to the images in embed snippets
- Uses a random realtime channel key from the Nextcloud host
- Shows in the Format panel which values style rules set
- Adds Insert Legend to the Style Rules dialog
- Adds data sources to pages that refresh the data of linked cells
- Adds keyboard access and ARIA roles to menus
- Returns the focus to the diagram with Escape
- Moves Tab through the user interface in reading order
- Removes F6
- Moves the focus to the search for shapes with Slash from everywhere
- Makes toolbar buttons focusable
- Expands and collapses foldable headers with the keyboard
- Anchors the connection points of label shapes drawn from the height to their nearest side
- Gives the focus back to the diagram when it is shown
- Adds tree shapes with Enter shortcuts and edits the new shape [jgraph/drawio#5817]
- Moves the focus between the controls outside of the diagram with the arrow keys
- Adds the Data Sources dialog and makes the data styles linear
- Makes the update of labels and shapes with placeholders linear for nested edits
- Inserts tables from the table picker with the keyboard
- Moves the focus into windows opened with the keyboard and closes them with Escape
- Escapes values from data sources in all labels that are shown as HTML
- Shows the first paragraph of labels on one line as the title of the explorer
- Allows one explore step at the end of an action and disables its levels in classic mode
- Checks the options of dialogs if their fields are used, not if they get the focus
- Zooms the label editor with the zoom preview
- Moves the label gap with the label of an edge that is dragged
- Starts the caret of empty labels in shapes with text flow where the text will be
- Shows only the first line of labels in the title of the explorer and removes the levels
- Adds the levels of the explorer earlier when zooming out
- Ends the title of the explorer with an ellipsis if the label has more lines
- Defines checkRadioOnInput in the grapheditor so the print dialog of the viewer opens
- Keeps the explore step of an action and the selection when steps are added or pasted
- Keeps the lines of labels with text flow and copies and pastes them without the helpers
- Keeps the format of part of a word copied from labels with text flow
- Keeps blank lines, lists, undo and formatting in labels with text flow
- Saves empty lines of labels with text flow only when an edit emptied the label
- Writes the label of shapes with text flow only if it was edited
- Moves the focus with Shift+arrow keys from everywhere outside of the diagram
- Makes the shapes and palette titles of the sidebar keyboard accessible
- Makes Shift+Tab go back to where Tab came from
- Makes windows without controls reachable with Tab and the arrow keys
- Makes the Layers and Tags windows and the help icons keyboard accessible
- Moves the focus with the arrow keys in dialogs and windows and makes their title buttons keyboard accessible
- Makes the keyboard focus visible on toolbar buttons and the shape search
- Announces status messages to screen readers
- Generates shapes from data sources with CSV import directives
- Moves the focus out of the diagram with Shift+arrow keys without a selection
- Inserts shapes with Ctrl+Enter without a selection and shows the context menu with Shift+F10
- Makes the empty selection the first stop of Tab in the diagram
- Keeps the format window of the sketch theme open on Escape
- Shows the current format when the format window of the minimal theme opens
- Moves the focus to the format panel with Shift+Enter
- Moves the focus into the diagram with Shift+arrow keys
- Keeps Shift+Arrow Left and Right for selecting text in text fields
- Refreshes the format panel before the edge label tests read the Reset list
- Fixes the Catalan translations [jgraph/drawio#5818]
- Makes inserts look only at the cells with the routing flag for auto-routed edges
- Makes the empty selection also the stop of Tab after the last cell
- Shows the keyboard focus of buttons as an outline, also in dark mode
- Saves an edited label with text flow that was stored as an empty line as an empty label
- Adds the colors for dark mode to pasted and dropped text in the label editor
- Adds the colors for dark mode to HTML dropped into the label editor of the app
- Makes the buttons in the titles of libraries keyboard accessible
- Shows the keyboard focus in the Home dialog as an outline, also in dark mode
- Inserts tables from the table picker of the text toolbar with the keyboard
- Applies a zoom typed into the zoom field on Tab
- Lets Tab and Shift+Tab leave an editor in a frame at the ends of the order
- Keeps the arrow keys in fields with suggestions and in date fields
- Continues Tab in the diagram after a shape is inserted from the sidebar
- Moves the focus to the format panel with Shift+Enter before the format window exists
- Cancels a value in the property grid with Escape
- Returns the focus to the diagram after a context menu opened with the mouse
- Moves the focus out of menus with Shift+Arrow Left and Right
- Announces buttons disabled with the mxDisabled class as disabled
- Leaves an editor in a frame with Tab only at the ends of the order
- Fixes the minimal theme without windows (windows=0)
- Leaves the arrow keys without Shift to areas that scroll
- Draws the focus rings of buttons inside of the buttons
- Makes the page tabs keyboard accessible
- Makes the tabs and the other buttons of the format panel keyboard accessible
- Makes the toolbar buttons, app icons, status actions and toolbar shapes keyboard accessible
- Fixes the find windows missing in the list of windows
- Adds the color window to the order of Tab and its colors to the keyboard
- Makes the search reset buttons and the template categories keyboard accessible
- Loads Google Sheets links as data sources and names hosts that cannot be reached
- Makes the entries of the library dialog keyboard accessible
- Moves to the preview and the buttons of the More Shapes dialog with Shift+Arrow Left and Right
- Adds keyboard navigation to the Explore view
- Makes the Style Rules dialog resizable with a bigger initial size
- Applies the style rules of the page in the explorer
- Moves Style Rules and Data Sources into Page Setup and adds its help link
- Keeps the controls of page tabs, library titles, library entries and the color window apart for screen readers
- Names the color scheme buttons in the format panel
- Shows the focus ring of the diagram when Tab clears the selection after the last shape
- Moves the focus to the shape search with Slash only from the diagram
- Keeps the links in the labels of a read-only diagram in the order of Tab
- Announces the label of the cell in the diagram for the highlighted node of the Explore view
- Keeps the label of custom library titles as the control for the keyboard
- Raises the contrast of gray text in menus, the shapes panel and the format panel
- Makes the small buttons of library titles, the color window and the color schemes 24px targets
- Names fields and images for screen readers
- Documents names, images, target sizes and contrast in the dialog style guide
- Lets data sources and style rules set https images
- Clears the selection with Escape in the diagram if Escape has no other effect
- Removes unused variables from the connection points of ArchiMate Event, Popover, Bar Callout and Circular Dial
- Anchors the connection points of shapes drawn from one side to that side
- Keeps the selection when Escape closes a popover of the inline toolbar or a note
- Selects the nearest shape in a direction with Alt+arrow keys, or with Shift+arrow keys if configured
- Ends a pending move of the selection before Alt or Shift+arrow keys select another shape
- Selects connectors too with Alt or Shift+arrow keys
- Moves between the search field of the help menu and its items with Up and Down
- Keeps connectors on the same path from selecting each other with Alt or Shift+arrow keys
- Updates drawio-elk bundle to 0.1.0+commit.ce35b42
- Makes the org chart layout the layout of layout containers
- Remembers the options of the Org Chart dialog and applies it to layout containers
- Adds Last Layout to the Add list of the custom layout dialog
- Adds Refresh All to the Data Sources row of Page Setup
- Moves the focus to the nearest color with Shift+arrow keys in the color window and dialog
- Asks whether a changed template applies to the generated shapes
- Keeps Alt or Shift+arrow keys at the nesting level of the selection in tables and lists
- Goes out of containers with Shift+Tab in the diagram
- Stacks the buttons of the Data Sources row in Page Setup
- Skips cells that cannot be selected with Tab and Shift+Tab in the diagram
- Shows the guides when shapes are moved or resized with the arrow keys
- Shows the refresh status of Page Setup below the description
- Moves the shapes into the layout container of an applied template
- Loads the org chart layout in Edit of a data source
- Shows the edge guides of a resize with the arrow keys where the edges line up
- Puts the labels of re-routed connectors in org chart containers in the middle
- Always shows the option that applies the template to the generated shapes
- Adds the Stacked Leaves type to the org chart layout
- Leaves Space to buttons and other controls outside of the diagram
- Closes the field of a property when Escape cancels the edit
- Updates the connectors of existing shapes when a data source applies a changed template
- Adds Edit Layout for layout containers
- Keeps edges on the connection points of the core shapes after a resize
- Counts the hosts the Connect app loads from that Zero Egress would block
- Reports the hosts the Confluence Cloud Connect app loads from to the log worker
- Gives the default instead of NaN points for non-numeric style fractions of the Arrows and Basic shapes
- Reports no hosts in lockdown strings or without storage in the Connect app
- Applies the changed style values of a data source template also where shapes were changed
- Stores the template of the shapes and connectors of data sources
- Adds Stack from Level to the org chart layout
- Opens the shape picker with Ctrl+Enter only if the current layer is not locked
- Hides the tooltip of the sidebar when the explorer opens
- Asks for access to a Google Drive file in the lightbox of published links
- Links only cells with a data source and a key
- Fades the cells of missing rows only while their source fades them
- Reports the restyled connections of data sources like an arrange action
- Reads values with line breaks in data sources
- Removes the changes of a generation of shapes that fails
- Adds a report of what the Forge app loads from draw.io's hosts
- Counts the government cloud and leaves the beacon out of /images in the Forge report
- Keeps edges on the cut-off ends of the Display and Isometric Cube after a resize
- Adds tests for the connection points of shapes after a resize
- Updates the vendored drawio-plantuml bundle to commit b85b52c
- Allows the Google Picker of Allow access in the viewer.diagrams.net CSP [jgraph/drawio-dev#922]
- Fixes Find & Replace in HTML labels that show data source values with special characters [jgraph/drawio-dev#922]
- Lays out only the shapes of new rows in data source refreshes with the org chart layout [jgraph/drawio-dev#922]
- Keeps connections from existing shapes to new ones in CSV imports and data source refreshes with ELK layouts [jgraph/drawio-dev#922]
- Moves the shapes of unknown references with the rest of org charts in CSV imports [jgraph/drawio-dev#922]
- Lays out org charts whose managers are hidden [jgraph/drawio-dev#922]
- Fixes Find & Replace of data source values with quotes in HTML labels [jgraph/drawio-dev#922]
- Moves the existing connections of re-imported org charts with their shapes [jgraph/drawio-dev#922]
- Keeps relative links as they are in SVG exports and printouts of the desktop app

21-OCT-2026: 32.6.1

- Adds Explore to the action dialog and a classic option to explore actions
- Reapply "Lists the text styles that Match Connector changes in its tooltip"
- Opens the explorer of a #create link without a transition
- Labels the levels field of the Explore step in the action dialog
- Opens diagrams with many labels that inherit the text styles of their edge in linear time
- Renames Match Connector to Use Connector Style
- Keeps blocked image hosts out of the log worker's DNS lookup URLs
- Changes many children of a cell with a long style in linear time
- Uses the default grid size for files with a grid size of 0, a negative size or no number
- Makes the page names of VSDX exports unique in linear time
- Removes the listeners of the color window when the editor is destroyed
- Ignores drag events without dataTransfer in the library, dialog, page tab and layer drag handlers
- Shows each cell once in the explorer when nested containers are shown

21-OCT-2026: 32.6.0

-  Adds curated connection points to the Atlassian2 Sourcetree logo
- Adds curated connection points to the P&ID vessels, misc and apparatus element stencils
- Adds curated connection points to the iOS7 misc stencils
- Adds connection points to the BPMN choreography participant bands
- Removes near-duplicate connection points from the Citrix 2 stencils
- Adds connection points to the SAP AI Agent icons and drops the floating E point of the API icons
- Adds curated connection points to the Floorplan furniture stencils
- Fixes auto-routing errors when the core is from an older release
- Stops service workers from caching two releases or staying on an old one
- Ignores drops without dataTransfer in the library and dialog drop handlers
- Keeps service workers working offline after a fallback install and on self-hosted builds
- Shows line jumps in the selection border of edges
- Redirects Iconfinder image URLs to the icon cache on icons.diagrams.net
- Loads Iconfinder images of diagrams from the icon cache of draw.io
- Keeps links to paths in SVG exports [jgraph/drawio#5809]
- Maps more Iconfinder icons to the cache and sends the rest back to Iconfinder
- Sends all Iconfinder images of diagrams through the icon cache route
- Encodes icon cache URLs in icon search responses
- Allows local dev servers to embed the editor of embed.diagrams.net
- Fixes the grid drifting away from shapes at some zoom levels in Firefox [jgraph/drawio#5810]
- Fixes the selection border of vertical edge labels
- Fixes merges in embed mode after loading a diagram without page IDs
- Sends the autosave event in embed mode when a merge adds or removes pages
- Adds and corrects connection points of the ArchiMate icons
- Adds connection points to the Basic polygon and stencils and to the UML 2.5 action shapes
- Fixes keys typed in the inline toolbar triggering diagram shortcuts
- Adds the inline toolbar for shapes and selections
- Allows moving the diagram almost out of view in presentation mode and the lightbox [jgraph/drawio#5811]
- Keeps lightbox and chrome=0 iframes without padding [jgraph/drawio#5811]
- Fixes memory leaks of closed presentations
- Transitions the view state on the SVG element
- Adds the force-directed explorer, spring move and presentation controls
- Puts the corner connection points of round palette shapes on the ellipse and fixes the UML 2.5 State points
- Routes connectors live during spring moves
- Adds a laser pointer and drag panning to presentation mode
- Keeps connection points of the multiple effect on the front shape [jgraph/drawio#5654]
- Hides the line and fill options of label cells in the inline toolbar
- Adds an isGlassable hook to shapes for the glass option
- Adds the glass option to the title of tables
- Centers the text button of label cells in the inline toolbar
- Moves the spring move into extensions.min.js
- Paints the glass effect on the title of vertical swimlanes
- Renames the Gap option of labels to Page and writes page again
- Hides the background color of labels that use the page
- Makes new labels of edges inherit the text styles of the edge
- Shows the Page option only for labels of edges
- Makes the label cells of the edge templates inherit the text styles
- Adds Match Connector to the Text tab of edge labels
- Loads the images of the old Arista template from the icon cache
- Stores the values of the edge in labels that inherit its text styles
- Shows the inherited color in the color dialogs of edge labels
- Keeps own web fonts and color schemes of labels that inherit text styles
- Counts the image and font hosts the CSP of the Confluence Cloud app blocks
- Updates the stored text styles of labels when their edge changes
- Fixes taps on the buttons of presentation mode and the explorer on iPhones
- Shows the glow of the focused cell in presentation mode in Safari and iOS
- Shows the arrows of the explorer in the colors of the connectors in dark mode
- Handles double clicks and taps in the explorer as two clicks
- Fixes VSDX export of images whose URL does not match their type
- Keeps presentations and explorers that followers open themselves
- Hides the Explore button of presentation mode for the classic Explore view
- Keeps the glow of the focused cell in presentation mode after repaints
- Keeps the original Iconfinder URLs in cell states and falls back to Iconfinder
- Zooms the explorer around the fingers of a pinch
- Revert "Keeps the original Iconfinder URLs in cell states and falls back to Iconfinder"
- Keeps vertical swimlanes and tables with glass upright in VSDX exports
- Keeps the line spacing of connectors at connection points of shapes with copies
- Fixes the selection border of vertical edge labels that rotate with the edge or have no formatted text
- Keeps one offline copy per file for service workers that fall back on install
- Keeps rotated and flipped tables in place in VSDX exports
- Keeps the labels of flipped shapes in place in VSDX exports
- Removes the black outlines of the rows and cells of collapsed tables in VSDX exports
- Fixes VSDX export of the current page and of pages with the same name
- Removes the outlines of paths that draw.io does not paint in VSDX exports
- Keeps labels apart in the explorer and adds levels only if they fit
- Highlights and explores the shape of a clicked field in presentation mode
- Replaces Background Color and Page in the Text tab with a Background list
- Sets the font color of the label if all text is selected while editing
- Sets the font color of all text in one edit and updates the default in the color window
- Keeps the connection points of the UML 2.5 actions and the ArchiMate Outcome and Device on the drawing after a resize
- Keeps the text that flipped shapes paint themselves in place in VSDX exports
- Highlights the table of a clicked cell and keeps clicks on text in containers on the text in presentation mode
- Keeps the levels of the explorer when zooming after a pan
- Lists the text styles that Match Connector changes in its tooltip
- Revert "Lists the text styles that Match Connector changes in its tooltip"

19-OCT-2026: 32.5.8

- Ends the loops over the label box buckets for far-away cells
- Ignores drops without dataTransfer on the canvas

19-OCT-2026: 32.5.7

- Keeps edges with their last bend in a label from ending past the bend
- Folds the selection in the trees plugin when no cells are given
- Skips typing shim updates after the UI was destroyed
- Ignores file drops without dataTransfer in the document drop handler
- Checks the text direction of the label editor with isVerticalTextDirection
- Records the error log groups of the week of 2026-10-19
- Checks the text direction of alignText with isVerticalTextDirection
- Updates DOMPurify from 3.4.16 to 3.4.17
- Places automatic edge labels in linear time, also in crafted diagrams
- Update drawio-mermaid bundle (mermaid 12.2.0 port)
- Folds containers again while the trees plugin is loaded

18-OCT-2026: 32.5.6

- Replaces the page label background with a gap that cuts labels out of edges
- Adds the multiple effect with copies behind vertices [jgraph/drawio#5654]
- Fixes custom actions in label links of locked cells, lightbox and viewer [jgraph/drawio#5637]
- Uses the data of a page in the placeholders of its background page [jgraph/drawio#3104]
- Adds rounded corners to the document, tape, data storage, or and xor shapes
- Asks for the Terms of Use at the storage choice and the Authorize dialog
- Translates the Terms of Use notice into all languages
- Keeps background page links in the file after exports that resolve them
- Fixes five console findings from the preprod test of teams
- Adds labelPerimeter: edges end at labels outside the shape
- Ends edges on the copies of the multiple effect [jgraph/drawio#5654]
- Runs each ws cron prune on its own, so one failure can't cut the others short
- Notes in the ws guide that teams phase 1 and the terms notice are on dev
- Notes in the ws guide that Terms of Use v1.3 are published
- Plans the ws teams launch: one release, pilot domains first, two pages
- Updates wrangler to 4.149.0 in three workers for the sharp librsvg alert
- Updates CI's wrangler to 4.149.0 for the sharp librsvg alert
- Adds labelPlacement=auto that puts edge labels above horizontal segments
- Adds the education endings ac.bd, edu.bd, edu.hu, edu.jm, edu.kh, edu.krd and edu.np to the ws worker
- Splits Reset > Label Positions from Reset > Waypoints in the Arrange tab
- Makes new labels of edges cut a gap out of the edge instead of a background
- Makes Paste Text Style paste the text styles of the last Copy Style
- Makes labelPlacement=auto choose a free side, a segment that fits and keep clear of bends
- Notes in the ws guide that drawio-ws has phase 1's schema
- Syncs the ws worker's education suffixes with the Public Suffix List of 17 Oct 2026
- Excludes OrgSettings.js and robots.txt from the public repository
- Records three teams decisions in the ws plan
- Counts only Google Workspace accounts in the ws worker
- Runs the MCP search index trigger after the builds instead of on the tag push
- Takes only release tags in the MCP search index trigger
- Adds the pilot list and account.diagrams.net to the ws worker
- Shows the pilot in the admin console
- Documents the ws pilot and the console's move to account.diagrams.net
- Keeps the label gap of new edges out of inserted Mermaid and PlantUML diagrams
- Keeps OrgSettings.js in the internal app.min.js
- Checks the label gap in the crafted-background codec case
- Places auto labels where they are handled, after the validation and by their alignment
- Adds edge label regression tests
- Routes auto-routed edges around outside labels as they are after the edit
- Adds url to the #create object to create a diagram from a file at a URL
- Stops the loading spinner before a #create object with a url is created
- Keeps the box of an auto-placed label that is moved below or on the line
- Lets ws org admins invite addresses at secondary domains of a pilot Workspace
- Shows every domain's real editors in the ws worker, without the pilot cap

17-OCT-2026: 32.5.5

- Adds orgs from their first user, teams, named members and seats to ws
- Makes the admin console's admins named, with teams, seats and merges
- Documents ws orgs, teams and the member store, with a backup template
- Shows people in the app the names of team admins, not their addresses
- Names inviting and merging orgs by their domains, and people by address
- Fixes what the security review of ws teams found
- Cancels a removed admin's merges, and checks DNS merges' domain
- Keeps the day members last used the teams, and shows inactive ones
- Lets a failed last-used write fail nothing, and steadies its test
- Stores people plain by their Google ID, and lets staff erase a person
- Keeps people's IDs out of other orgs, and erases renamed accounts
- Notes that education domains get teams, and the open COPPA question
- Makes each team one domain's, so nobody sees another domain's people
- Takes people out of other domains' teams when their account moves
- Gives school domains no teams, and tells schools from universities
- Keeps universities' subdomains and stuck checks right for schools
- Reads a confirmed university's subdomains, and marks more listed schools
- Keeps personal data of all schools' pupils under 18 out, not only under 13
- Makes every ac. zone a school unless the list or the model says university
- Marks the ws sign-ins live since release 32.5.4 in the ws guide
- Puts ws teams behind a launch switch, with the Terms on member rows
- Asks for the Terms of Use at the console's sign-in steps
- Records David's teams decisions and the launch switch in the ws docs
- Fixes stuck size hints if the vertex handler is replaced during a resize [jgraph/drawio#5725]
- Adds systemColors, lightColor and lightColorVar configuration [jgraph/drawio#5807]
- Uses system colors for the user interface with systemColors [jgraph/drawio#5807]

16-OCT-2026: 32.5.4

- Deploys the ws worker with every release
- Removes the old Google Drive licence check and its logging
- Stops logging the old licence check in license-worker
- Notes the sign-ins schema on both ws databases
- Sets up orgs in the ws plan from the hd claim, with DNS only for disputes
- Makes education domains free and uncounted in ws
- Adds a list of university domains to the ws education domains
- Notes the education schema on both ws databases
- Ends orthogonal ends beside rounded polygons on the rounded corner [jgraph/drawio#5447]
- Adjusts embed domain filtering
- Replaces the ws plan with orgs, teams and seats
- Counts per day what the hd of a ws report says against its address
- Notes the hd_counts schema on both ws databases
- Removes Zoom with Mouse Wheel from the menus
- Keeps Zoom with Mouse Wheel in the menus of the Atlassian products
- Fixes "mxSettings is not defined" after the image export in the viewer lightbox [DID-20655]

15-OCT-2026: 32.5.3

- Adds a CLAUDE.md for the ws worker
- Drops the deleted branch from the ws guide's open work
- Counts Drive sign-ins on the app in a third ws usage sketch
- Brings the ws guide up to date with the sign-ins and the 15 Oct deploys
- Logs an org settings save only when it is stored
- Adds the plan for self-serve orgs, buying and a limited mode to the ws guide
- Updates stable to 32.5.2

15-OCT-2026: 32.5.2

- Blocks headless Chrome on the embed.diagrams.net editor page
- Ignores a stored or requested mode for a removed storage [jgraph/drawio#5740]
- Drops the Dropbox secret from the rotation inventory [jgraph/drawio#5740]
- Ignores a requested mode for a removed storage in the create dialog [jgraph/drawio#5740]
- Adds CSPs to the embed, export, Teams config and Lucid importer pages
- Disables Orthogonal Ends for edges whose ends all have fixed connection points [jgraph/drawio#5447]
- Ends orthogonal edges on the outline of clouds [jgraph/drawio#5447]
- Closes the CSP gaps of the editor on preprod's extensionless and unknown paths
- Inserts the initial text of the label editor as plain text
- Keeps the drawio-mcp edge snippet's rule on the draw.io zone
- Ends orthogonal edges vertically or horizontally on shapes turned by a quarter [jgraph/drawio#5447]
- Hides Orthogonal Ends for isometric connectors [jgraph/drawio#5447]
- Adds regression tests for the text of the typing shim in the label editor
- Keeps the data, link and tooltip of cells in Replace and Replace All
- Uses the admin console's actual Google client
- Unblocks kopperfield.com on embed.diagrams.net
- Adds the Confluence Cloud Gliffy migration keys for converter vs version pin warnings and shared macros
- Keeps the placeholders of labels in Replace and Replace All
- Unblocks ayoa.com on embed.diagrams.net
- Uses the icon cache of draw.io for the images of five more templates
- Uses the icon cache of draw.io for the DCS-7316 image of the Arista template
- Skips the own-state ring for libraries in the desktop saveFile, so saving a library no longer fails with this.recordOwnState is not a function [jgraph/drawio-desktop#2581]
- Bump actions/setup-node from 7.0.0 to 7.1.0
- Bump actions/upload-artifact from 7.0.1 to 7.0.2
- Counts Google Drive users on app.diagrams.net
- Updates the vendored drawio-plantuml bundle to commit 8407289
- Deletes Workspace usage counts 24 months after their month
- Opens the admin console to every company domain
- Counts Workspace usage in HyperLogLog sketches
- Makes the auth workers' state cookie a __Host- cookie
- Sends a cross-origin opener policy on the admin console
- Declares the ws preprod environment's empty unsafe bindings
- Applies the ws schema as a command, not through D1's import
- Passes the ws schema with --command=, as it starts with a comment
- Notes when Drive offers to delete the ws usage marker
- Updates the vendored drawio-plantuml bundle to commit 5ce09a1
- Sends and logs only the domain in the old Google Drive licence check
- Revert "Sends a cross-origin opener policy on the admin console"
- Records why the admin console has no opener policy
- Hands the admin console's sign-in code back without window.opener
- Sends the cross-origin opener policy on the admin console again
- Added Conf Cloud translation key
- Shows Direction and Flip in the Arrange tab like Align
- Removes the bold font of the Advanced options in the Text tab
- Ends outline connections on the rounded corners of polygons
- Keeps orthogonal ends on clouds orthogonal where the line misses the bumps [jgraph/drawio#5447]
- Updates the vendored drawio-plantuml bundle to commit 67b216b
- Bends orthogonal edges onto clouds where a waypoint is level with the bounds but not the bumps [jgraph/drawio#5447]
- Bends orthogonal edges onto rounded polygons where a waypoint is level with a rounded corner
- Makes the cloud perimeter a style of its own (perimeter=cloudPerimeter) [jgraph/drawio#5447]
- Ends orthogonal edges on the pointer of callouts
- Wipes edges with line jumps in along their path

13-OCT-2026: 32.5.1

- Replaces the matches on all pages with Replace All and All Pages
- Runs Copy as SVG with Ctrl+Alt+Shift+X when cells are selected
- Binds Ctrl+Alt+C and Ctrl+Alt+V to Copy Text Style and Paste Text Style
- Parses the drawing scale in linear time
- Removes the se.diagrams.net mode and its Google client
- Offers File > My Diagrams whenever the user is signed in to Google Drive
- Binds Alt+Shift+K to Edit Connection Points
- Binds Alt+Shift+Y to Synchronize
- Sets the console's Google client up with its own secret in the runbook
- Enables Clear Waypoints and Clear Anchors if any selected vertex has connections
- Moves the gradient of the page background to the Background dialog
- Checks the enabled state of actions run with Alt shortcuts
- Types characters with AltGr instead of running Ctrl+Alt shortcuts
- Adds Edit Connection Points and Synchronize to the keyboard shortcuts
- Blocks headless Chrome on the embed.diagrams.net editor page
- Refuses the editor's path variants on embed.diagrams.net to blocked embedders
- Announces the GitLab end of support when a file is opened [jgraph/drawio#5773]
- Adds the admin console's own Google client
- Deploys every CSP from the repo, the stable channel's from its version
- Removes the Dropbox storage client [jgraph/drawio#5740]
- Describes the public repository as a test version of draw.io, with a paid production version for production deployments

13-OCT-2026: 32.5.0

- Uses the app's Material icons in the animation and action dialogs
- Adds an optional layout container for CSV imports
- Adds a drawing scale for measure placeholders
- Adds save conflict scenarios for the monday.com and Nextcloud plugins
- Handles save conflicts of the monday.com and Nextcloud plugins in one place
- Adds tests for the conflict dialog choices of GitHub files
- Keeps the commit message of GitHub saves after a conflict in GitHubFile
- Adds save tests for web local files
- Checks if web local files can be saved before writing them
- Adds a gradient to the background color of pages
- Removes the sign-in path of the auth worker for clients without the code relay
- Skips the writes of converged circle layout containers
- Validates the page background before writing it into CSS and HTML
- Repaints collapsed tables after a change of their rows or cells
- Writes only known themes into the color scheme of SVG exports
- Places the titles of table cells and rows without a title region in the cell
- Fixes the GraphML import of files with edges
- Imports GraphML files with long values in linear time
- Imports GraphML SVG nodes and templates with text outside of Latin-1
- Applies the converters of GraphML template bindings without a space
- Adds the server traffic to the failure of p2p-offline-rejoin
- Removes the status bar texts of mxGraphView and mxSelectionChange
- Allows horizontal text for the titles of table rows
- Logs every change made by staff in the admin console
- Limits the clearance of auto-routed connectors against crafted values
- Sends the admin console on /stable/ and ac/aj to the latest version
- Ignores cell colors that reference resources
- Fixes the realtime test harness for sockets without a client
- Adds lists to the CSV import
- Starts and ends the writes of files in one place
- Exchanges only Teams SSO tokens that a Microsoft 365 host requested
- Keeps tokens out of caches in the auth worker
- Keeps Teams tokens out of local storage and the browser history
- Keeps existing files when a Teams tab creates a new diagram
- Loads further pages in the OneDrive picker of the first Teams app
- Logs the client of refused Teams tokens
- Removes OneDrive from the allowed globals of the implicit globals check
- Stores no personal data of customers' users in the ws worker
- Counts Drive users once a month with a marker in their own Drive
- Matches date placeholders in linear time
- Limits the loops of the Lucidchart import
- Ignores Lucidchart classes and arrows named like members of prototypes
- Adds Lucidchart import tests
- Limits the org chart fields and text style runs of the Lucidchart import
- Adds passkey names, an audit log per org and true-up licensing
- Moves the admin console to its own host, admin.diagrams.net
- Removes the Google Gemini fallback from the generate/v3 worker
- Blocks embed.diagrams.net for disallowed embedders with a bare 403
- Centers the gear icon and the color button in the freehand window
- Adds a polygon mode to the freehand window
- Adds recursive resize preview with layouts
- Uses the physical key for unbound keyboard shortcuts
- Escapes the label in the autosize of curved text
- Converges pages without a stored size on the format of the first save
- Shows the modified date of a merged revision in the status
- Ignores cells that a patch moves to the root
- Adds tests for stale etags of Drive saves
- Removes markup from the measuring element after measuring
- Measures the labels of the Lucidchart import without loading their content
- Limits the output of the Lucidchart import
- Encodes the SVG paths of the Lucidchart import as UTF-8
- Tests the measuring and the output limits of the Lucidchart import
- Adds a test for page roots that take the id of a cell of the page
- Uses the avatar of the app for Lucidchart org chart nodes without an image
- Uses the icon cache of draw.io for the user icons of yEd
- Rounds the pointer of callout perimeters in model units in model coordinates
- Uses the icon cache of draw.io for the people of the CSV example
- Rounds the snap points of snapToPoint edges in model units in model coordinates
- Converts points to containers without computing styles
- Centers graphs in containers with scrollbars at all zoom levels
- Uses the icon cache of draw.io for the images of the mindmap template
- Keeps the title of new Confluence Cloud diagrams on rename without a descriptor
- Stops the panning thread of mxPanningManager when the graph is destroyed
- Opens file ids with malformed escapes in the URL hash without throwing
- Saves pages whose compressed data cannot be decompressed unchanged
- Removes the settings storage listener when the UI is destroyed
- Records the error log groups of the week of 2026-10-12
- Update vendored drawio-mermaid to the mermaid 12.1 port
- Reads absolute offsets of stencil connection points
- Adds the labelBorderWidth style for the width of label borders
- Converts the rich text of the Lucidchart import in linear time
- Tests the rich text of the Lucidchart import
- Sorts the Lucidchart import with consistent comparators
- Gives duplicate org chart nodes of the Lucidchart import keys without the time
- Tests that the Lucidchart import is deterministic
- Rebuild vendored drawio-mermaid from the merge commit
- Adds an optional box that scales and rotates multiple selected cells
- Renames Use for New Connections from Source to Set Shape Connector Default
- Renames Clear Style for New Connections to Clear Shape Connector Default
- Draws responsive viewers with fractional bounds at exactly 1:1
- Ends gestures that the browser or the system cancels
- Points to the drawusaurus style guide for documenting config switches
- Centers viewers in the container without moving them into the border
- Sorts numbers with a consistent comparator
- Tests the consistent comparator of numbers
- Fits and shows scrollbars in viewers only if the diagram does not fit
- Imports Lucidchart texts that are no strings
- Measures the names of Lucidchart BPMN choreographies as text
- Keeps the fit of auto-fit viewers without a container width
- Finds wide edges where they are painted in getCellAt
- Paints arcs with a zero radius as straight lines
- Takes the file as the shadow when a merge has no changes
- Puts the border on the right and bottom of resized viewers once
- Shrinks fitted viewers to the fitted diagram if the viewer set the height
- Centers responsive viewers with a container width horizontally again
- Adds the Confluence Cloud keys for choosing where the Gliffy migration state is kept
- Sends the Teams SSO token in the request body
- Generates the Teams V2 file picker channel with crypto
- Documents why the Teams bot worker accepts unauthenticated requests
- Keeps twice the border of resized viewers in pages that scroll only horizontally
- Gives each OAuth client of the auth worker its own secret
- Extends and contracts parents to the bounding box of rotated children
- Lets the Teams V2 file picker navigate the top window only after a click
- Marks the connect-image redirect as accepted
- Quotes the reason for keeping the connect-image redirect
- Keeps a model unit of segments shortened by fixed point spacing in model coordinates
- Tests if points of elbow edges are in a terminal in model units
- Paints edges at their new location while their waypoints, ends or label are moved
- Gives viewers with a border below 1 a border of 1
- Leaves room for the page scrollbar in Confluence viewers that may exceed the page width
- Adds an option to create viewers when they come near the visible area
- Keeps the maximum width of responsive viewers that is not in px
- Shows only https previews in the legacy Jira viewer
- Loads Jira From URL diagrams through the proxy
- Escapes the search text in the JQL of the Jira diagram search
- Encodes the parameters of the Jira license check
- Encodes ids in the REST paths of the Jira add-ons
- Tests the Jira Cloud add-ons with crafted issue properties
- Draws responsive viewers with a CSS border on their container at 1:1
- Tests if the terminals of elbow edges touch in model units
- Shows only the moved handle of an edge, at the preview, and no dashed preview with the live preview
- Finds the common ancestor of cells without cell paths
- Does not clone the overlays of cells
- Hides the custom handles of an edge while another handle is moved
- Leaves orthogonal edges from the outline of slanted shapes beside the waypoint
- Opens #create links without asking to discard the new diagram
- Rewrites the #create hash only while the created file is open
- Derives the label again when a transient style step repaints it
- Measures the shapeInside text flow only for HTML labels
- Adds the Confluence Cloud Gliffy migration key for diagrams saved on the macro page

11-OCT-2026: 32.4.5

- Lets the connector toolbar move out of view with its edge when panning
- Keeps the routing of straight edges in Set New Connection Default
- Shows the Connect retirement banner in English if it has no translation
- Counts Drive users by the domain of their verified email
- Translates the Connect retirement and Gliffy migration keys
- Notes how a blocked licence report could be caught later
- Shows the Home screen to all Google Drive users
- Adds an admin console for organizations, open to draw.io only
- Renames Set New Connection Default to Use for New Connections from Source
- Makes Paste Text Style override the formatting inside HTML labels
- Adds a spacing for auto-routed connectors to the Style tab
- Adds opacityGroup to apply the opacity to a shape as a whole
- Ends connectors on the rounded corners of polygons with roundedPerimeter
- Updates stable to 32.4.5
- Adds Rounded Perimeter to the properties of the rounded polygon shapes
- Renames Clear New Connection Default to Clear Style for New Connections
- Copies the custom properties of shapes before adding the common properties

11-OCT-2026: 32.4.4

- Shows the own preview of each template after templates with an image were listed
- Hides the Orthogonal property of edges whose routing implies orthogonal ends
- Turns off the workers.dev addresses of auth-worker, generate-v3 and wellknown
- Leaves headless Chrome out of the version dashboard counts
- Ignores objects posted to the Confluence Cloud message listeners
- Shows an error in the Confluence Cloud viewer if the viewer bundle is missing
- Fetches the notifications again if their cache is invalid
- Records the GAE error log pass of 10 October 2026
- Removes the SQL plugin
- Removes the WebCola layout plugin
- Removes the animation plugin
- Calls the export worker through a service binding
- Updates stable to 32.4.3
- Restores the page root with the model root on undo [jgraph/drawio-dev#841]
- Records the fix of the page root groups [jgraph/drawio-dev#841]
- Moves the line jumps into the Line section of the Style tab
- Aligns the font of the arrow and line jump selectors in the Style tab
- Removes the bold font of the Effects options in the Style tab
- Renames the Spacing of the line start and end to Offset in the Style tab
- Adds tooltips to the pattern, line start and line end menus in the Style tab
- Applies the default shape style to symbols on connectors again
- Updates the link, tooltip and note icons of cells in one function
- Deprecates mxGraphModel.mergeChildren, mxUtils.getViewXml and mxGraphViewCodec
- Builds the Google Drive pickers with one builder
- Merges the Teams copy of the OneDrive picker into mxODPicker.js
- Loads the OneDrive SDK only for the picker that is not inline
- Keeps the data of the storages in one table
- Shows None of the line start and end like the selects in the Style tab
- Aligns the Opacity row with the sections in the Style tab
- Uses the full width of the format panel again
- Counts viewers as well as editors per Workspace domain and month
- Sets the D1 databases of the ws worker

09-OCT-2026: 32.4.3

- Updates the link and tooltip icons when the link or tooltip changes
- Uses the page layout of the editor in exports
- Removes the drawing code for browsers without SVG
- Removes the unused copy of the OneDrive SDK
- Removes the old sign-in callback pages of GitHub, GitLab and Dropbox
- Removes the unmapped Atlassian sign-in servlets
- Removes the unused same-window sign-in of the Google Drive client
- Documents the required implicit-globals check on reviewed
- Checks for reads of global variables that nothing declares
- Excludes the nested CLAUDE.md files from the public repository
- Removes internal process details from files published to the public repository
- Loads Simple.js and skips mxVsdxCanvas2D.js in public dev mode
- Removes the /embed.js mapping from the public web.xml
- Rebuilds the public extensions.min.js when deploying the public repository
- Generates the public service-worker.js from the files the public repository has
- Adds the Confluence Cloud Gliffy migration keys for white-filled pictures and files found by attachment ID
- Saves pages that were edited before realtime was turned on
- Sets and clears the conflict state of files in one place
- Opens multi-page files without decoding every page
- Adds Google Drive save and conflict scenarios to the realtime harness
- Adds save tests for GitHub files
- Adds a OneDrive save conflict scenario
- Handles save conflicts of Drive and OneDrive files in one place
- Updates stable to 32.4.2
- Speeds up the libavoid drag previews in large diagrams
- Fixes shapes dropped on the dangling end of an edge splitting the edge
- Asks Confluence and Jira Connect users to upgrade to the Forge apps
- Shows the error of a refused image copy when files are saved remotely
- Retries the conversion of a file from GitHub after a timeout
- Shows the preview of templates with an image in the template dialog
- Shows the data of a drawing that is too large to export in the grapheditor
- Escapes the image URL in the preview XML of templates with an image
- Refuses page loads of /proxy and keeps proxied URLs out of search indexes
- Removes the Pusher hook from the realtime cache
- Removes the Freemind import, F5 rack, flow and edge connection plugins

09-OCT-2026: 32.4.2

- Removes the vss.draw.io stencil converter page
- Bounds the resend of skipped notifications to clients that join
- Updates stable to 32.4.1
- Adds regression tests for shape painters with loops over a size or style
- Tests labels, edges, selections and connection points in the shape loop tests
- Limits the loops of mockup shapes for huge sizes and values
- Limits the inputs and pins of logic gates, ICs and muxes
- Limits the fills of P&ID columns and the holders of conveyors
- Limits the lines of pattern fills and guards the handles of polygons
- Limits the icons of iOS 7 icon grids and the fields of select bars
- Limits the stripes of striped Bootstrap buttons and the icons of ratings
- Limits the hatch lines of shared manufacturing processes
- Limits the steps of floor plan stairs
- Limits the steps of dashed wedge arrows v2
- Limits the connection points of EIP channels and the markers of data channels
- Limits the segments of lines in the comic style
- Limits the loop search of tapered arrows
- Limits the sketch fills for huge shapes and tiny gaps
- Declares the style pairs of pasteCellStyles as a local variable
- Declares rSize in the Bootstrap and iOS mockup shapes
- Checks for new global variables in the shape loop tests
- Sums the label widths of bars and the parts of pie charts in linear time
- Paints no custom label for negative pin numbers of ICs
- Measures bold and italic labels with their font style again
- Declares sb in the palettes that used the global of the iOS palette
- Fixes misspelled and unused variables that were assigned as globals
- Declares local variables that were assigned as implicit globals
- Adds a check for implicit global variables
- Records that the Visio conversion buckets and vss.draw.io are deleted
- More documentation regarding publishing monday.com app
- Applies a changed view link in an open version dashboard tab
- Logs malformed Confluence Cloud messages again, without their content
- Keeps cut cells in the local clipboard when the clipboard write is refused
- Counts daily, weekly and monthly active browsers on the version dashboard
- Keeps the version dashboard's daily counts in D1 beyond three months
- Removes the unused tryVssDraw and vsdNoConfig strings
- Removes the dead AWS forward for the realtime cache
- Returns the result of fileLoaded in the desktop app
- Restores the visible pages when creating the file data fails
- Invalidates a child once in mxGraph.processChange
- Passes the event to isMultiTouchEvent in mxGraph.fireMouseEvent
- Resets the validation state before walking all cells after an incremental validation
- Numbers new and changed shapes in the number plugin
- Fixes the .drawio check in the HTML export filename
- Declares the local variables of the Confluence Cloud plugin
- Keeps the flag of stale page nodes in page clones
- Runs the implicit globals check in CI
- Fixes the movable label handle when the connect handle is visible
- Runs the shape loop tests in CI
- Removes Pusher from the real-time sync client

08-OCT-2026: 32.4.1

- Adds a --var flag to the generate/v3 eval runner
- Paints the numbers of rack cabinets with numDisp=on again
- Limits the cells of the battery stack for tiny heights and huge widths
- Limits the segments of zigzag shapes for huge widths
- Lets the fast-rt shard-load tool read its token from a private file
- Shows Ctrl+Mousewheel instead of Alt+Mousewheel in the zoom hints
- Counts browsers once a day per app version for a version dashboard
- Lists the version dashboard's analytics token in the secret inventory
- Removes the conversion service fallback from the Visio import
- Removes the conversion service fallback from the connectors' Visio importer
- Retires the Visio conversion route in the convert worker
- Points the vss.draw.io converter page to the app

08-OCT-2026: 32.4.0

- Adds the Confluence Cloud Gliffy migration key for a missing configuration space
- Moves the builder image and the CI workflows to Node 24
- Pins the rebuilt Node 24 builder image in the builds
- Adds github excludes
- Removes the doc.*/i18n redirect to the retired translations spreadsheet
- Skips Cloudflare's managed rulesets in the edge drift watch
- Adds a live test of the realtime cache and relay in production
- Sends the client log to the promoted GAE version instead of 23-1-5
- Reads the client error log in the java17 log shape as well as java8
- Fetches Google Drive files in the proxy worker instead of GAE 23-1-5
- Moves the GAE deploy to the java21 runtime
- Filters the Error Reporting console on the message's VERSION= line
- Sends the proxy worker's Authorization header only to Trello
- Adds MCP_REPO_TOKEN to the secret rotation list
- Sends the Trello token only with Trello attachment URLs
- Fixed monday.com app
- Notes that the VERSION= console filter was checked on both log shapes
- Turns off the log worker's workers.dev and preview URLs in its config
- Updates stable to 32.3.0
- Opens Microsoft 365 viewer links in the app [jgraph/drawio#5663]
- Encodes page IDs in links and escapes the iframe embed snippet
- Changed monday.com app to be monday.com hosted
- Keeps the focus in dialogs opened from the search box [jgraph/drawio-desktop#2577]
- Keeps Tab inside modal dialogs [jgraph/drawio-desktop#2577]
- Sets the secure flag on the token cookie on HTTPS pages
- Keeps the focus outline of the page list in the Google add-on dialog
- Shows a spinner on Google add-on panel buttons while the script runs
- Moves the border width of the Google add-ons into the insert dialog
- Fixes lost changes after applying file XML in Edit Diagram [jgraph/drawio#5795]
- Reports realtime edits on a page whose root is not the model root [jgraph/drawio#5795]
- Adds 45 degree angle guides for edge waypoints and ends [jgraph/drawio#1668] [jgraph/drawio#5794]
- Mentions the angle guides in the help text of the position guides option
- Runs the legacy flow, tree and organic layouts on ELK
- Removes the Legacy Layouts submenu
- Removes mxHierarchicalLayout, mxCompactTreeLayout, mxRadialTreeLayout and mxFastOrganicLayout
- Stops sign-in links from signing the browser in to someone else's account
- URL-encodes the values of the auth worker's token requests
- Adds the 45 degree angle guides to new connections [jgraph/drawio#1668]
- Sends Office dialog results only to the add-in on the dialog's own origin
- Removes mxPartitionLayout and mxEdgeLabelLayout
- Switches the generate/v3 Mermaid model to Haiku 5.5
- Hands the sign-in code to the app when its popup lacks the state cookie
- Stops /teamsToken from setting a refresh token cookie
- Stops values that OAuth providers repeat from running as script
- Only accepts a tenant ID or domain as the tenant of /teamsToken
- Documents how the auth worker binds the sign-in state to the browser
- Zooms with the mouse wheel and scrolls with trackpads in Chromium and Firefox on macOS
- Accepts the sign-in code exchange only as a GET
- Accepts the sign-in code exchange from browsers without Sec-Fetch-Site
- Stops a taken-over sign-in popup from handing the app someone else's tokens
- Marks the mouse wheel shortcuts that Zoom with Mouse Wheel swaps
- Lets self-hosted sign-in work from apps in cross-site iframes
- Zooms with the mouse wheel and scrolls with precision touchpads on Windows
- Accepts the configuration message only in embed mode
- Refuses AI endpoints on draw.io and diagrams.net hosts
- Accepts only plain text in the resources configuration
- Checks the state from the URL before using its key in the auth servlets
- Accepts the sign-in code exchange of the auth servlets only as a GET
- Paints the ducts of the horizontal routing bank again
- Snaps rack layouts to units only with rackUnitSize
- Keeps the settings of embed popups apart from those of the app
- Uses the unit size of the parent rack for the ducts of routing banks
- Scales the global shadow with the zoom in model coordinates
- Reverts the shadow notes in the model coordinates guide
- Removes the unused TeamsServlet
- Hears about saves on the realtime socket without Pusher
- Limits the numbered units of rack cabinets
- Limits the ducts of huge cable ducts and routing banks
- Cuts the realtime relay from 64 to 32 shards
- Adds an eval-only effort override to the generate/v3 worker
- Routes generate/v3 connectors around shapes with libavoid
- Removes the fast-rt shard-count guard now that the 32 shards are live
- Sends nothing to the realtime cache while no other client is connected

06-OCT-2026: 32.3.0

- Places the width handles of the tapered arrow in model units
- Keeps the padding and border of plain text label backgrounds in screen pixels
- Adds a test of the custom handles of all shapes with fast rendering
- Adds translations for the Drive home and Confluence Lucid import keys
- Stores CF account for cli
- Keeps the requested scopes when the auth worker retries a token request
- Stops the fast-rt relay reading request bodies other than the 1 KiB rollout policy
- Updates the vendored drawio-plantuml bundle to commit 99d935c
- Updates stable channel to 32.2.0
- Updates the vendored drawio-plantuml bundle to commit c4251a4
- Accepts error messages and graceful handling as fixes in the error log pass
- Adds a design proposal for realtime roles
- Stops Safari clipping the right edge of the format panel
- Fixes the property table header in dark mode in Safari
- Returns labels without markup from Graph.domPurify without calling DOMPurify
- Skips the HTML conversion of plain text labels in mxSvgCanvas2D
- Checks sanitized attributes after DOMPurify instead of in an attribute hook
- Decodes geometry nodes of the wrong type as geometries
- Ignores cell references to objects that are not cells
- Fixes the waypoints of layouts for edges without a geometry
- Fixes the sanitizer for labels with data URIs of a few MB
- Closes dialogs and menus when the UI is destroyed
- Ignores page moves with invalid indices
- Resets settings that are not an object
- Disables routing for the session after the solver throws
- Skips cyclic references when encoding objects
- Skips table column handles for columns without a geometry
- Skips text updates for labels whose DOM was changed
- Accepts a clipboard writeText without a promise
- Skips the user button images if they were removed
- Validates colors without a 2D canvas context
- Keeps date placeholders if the date is invalid
- Stops headless UIs from replacing the unload handler of the page
- Records the error log groups fixed or handled on 2026-10-06
- Removes waypoints when an edge segment is moved back to the default route [jgraph/drawio#5761]
- Disables include directives in mxObjectCodec
- Decodes the forward references of cells in linear time
- Stops decoding at a maximum depth instead of overflowing the stack
- Updates the vendored drawio-plantuml bundle to commit aa1b3cd
- Loads the org chart layout on demand in atlas-viewer.min.js
- Moves the realtime patch cache in production from AWS to the relay
- Adds the Forge-only Confluence Cloud keys for hidden config pages, zips without page IDs and draft notices
- Moves edge labels with the curve when the route of a curved edge is edited
- Adds the labelOnCurve style for labels along the painted curve of curved edges
- Loads deep cell hierarchies in linear time
- Documents Safari testing via safaridriver
- Adds excludes
- Compares geometries in realtime diffs regardless of the order of their keys
- Diffs only the own properties of cells in realtime diffs
- Advances the realtime snapshot by patching instead of cloning dirty pages
- Stops the object codec from decoding into methods or hiding them
- Skips cell diffs that cannot change the cross-reference resolution of a flush
- Creates the waypoint arrays of rt-test in the client realm
- Decodes the geometries of realtime diffs with a new codec
- Runs the realtime test harness on Chrome for Testing on macOS
- Runs all headless test harnesses on Chrome for Testing on macOS
- Warns when a test harness falls back to Google Chrome on macOS
- Validates and invalidates long chains of connected edges without recursion
- Adds the Confluence Cloud Gliffy migration keys for state loading failures and reduced pictures
- Caps proxy worker responses at 20 MB and encodes base64 without per-character strings
- Adds the desktop update notice, Restart to Update and the Automatic Updates toggle [jgraph/drawio-desktop#2569]
- Diffs the geometries, values and custom properties of changed cells only
- Caches the locked states of cells for large selections in deep hierarchies
- Applies the placeholders checkbox of Edit Data on apply only
- Changes the ID of a cell in Edit Data with an undoable change
- Changes the cells of the CSV import through the model
- Repaints the cells after converting an embedded diagram to sketch
- Documents the direct size fix-up of imported SVG images without a size
- Leaves the cells of table rows without a geometry unchanged in TableLayout
- Changes children through the model in the random test plugin
- Keeps the original styles of the update plugin demo outside the cells
- Updates the realtime sync guide for the fixed raw writes of cells
- Ignores child nodes of models other than root and defs
- Decodes child nodes only into objects of their own type
- Documents the geometry decode rule of realtime patches
- Updates the vendored drawio-plantuml bundle to commit a7c8b27
- Measures imported SVG images without a size before inserting them
- Builds CSV import data cells without model changes
- Adds a runner for Safari checks that never takes the focus
- Updates the vendored drawio-plantuml bundle to commit 01a5dd4
- Applies the CSV link and ignore columns to updated cells
- Ignores numeric cell IDs from 2^52 for the next ID of the model
- Sorts cells and updates the selection in linear time for deep hierarchies
- Diffs the reactive delta of a remote patch with the changed cells only
- Connects new CSV rows to the cells updated by the import
- Adds regression tests for the CSV import
- Checks if the selection cells are in the model in linear time
- Skips the menu label in Toolbar.setMenuText if its span is missing
- Records the error log groups first seen up to 2026-10-06
- Ignores cell values in child nodes that are not XML nodes
- Updates the vendored drawio-plantuml bundle to commit 7678646
- binary compression moved to stencils.min.js file
- Changes the ID of a page in Edit Data with an undoable change
- Validates edge chains with removed terminals like the recursion
- Replays changes of detached cells on the recorded objects
- Walks only the patched parents and their ancestors when patching a page
- Keeps user objects in the XHTML, SVG or MathML namespace on save
- Updates the vendored drawio-plantuml bundle to commit 4cb1309
- Converts all pages of an embedded diagram to sketch
- Keeps whitespace-only blocks of text flow labels on one line in SVG labels
- Records the error log groups first seen on the evening of 2026-10-06
- Compares only the cells updated by a flush in full in the cross-reference diff
- Snaps the CSV import in the undo step of its last layout
- Counts the sync work of a one-cell edit in the perf-gate scenario
- Validates the invalid cells in linear time for deep hierarchies
- Places CSV imports with ELK layout lists at the free insert point
- Documents the console fallback of the error log skill in more detail
- Decodes cell styles from files only as strings
- Records the non-string cell style groups as fixed by d4b0bb8ba9
- Adds regression tests for deep hierarchies and long edge chains
- Renames labelOnCurve to curveGeometry
- Adds line jumps along the painted curve of curved edges with curveGeometry
- Ignores the attributes of models in mxModelCodec
- Adds regression tests for decoding untrusted XML with the codecs

05-OCT-2026: 32.2.0

- Reads the state geometry in each step of wipe and pop animations
- Scales the stroke width in the hit band of strokes in WebKit
- Updates the graph bounds for repainted states in live previews
- Ends pinch zooms at the product of their steps if zooms are committed
- Uses a model unit for pixel constants of routes in model coordinates
- Rounds shadow offsets of bounding boxes in model units in model coordinates
- Converts stroke widths of the outline from model units in model coordinates
- Samples curved arrows for 400% in model units
- Hardens the hit-test and folding icon checks of test/fast-rendering
- Keeps the numbers of enumerated cells in exports
- Fixes browser files marking edits made during a save or rename as saved
- Documents the drawio-release Cloudflare token and its CSP permissions
- Fixes browser file renames that a save in progress undid
- Chains the :not() selectors of updateStatusAction for older browsers
- Saves to the Drive root folder without the Google Picker API
- Records the error log groups of the 2026-10-05 pass
- Accepts hash objects after an encoded hash sign in URLs from Safari
- Ignores dash patterns without numbers in SVG output
- Adds missing defaults to shapes that painted NaN with default styles
- Computes the page layout without floating point noise
- Keeps the typing shim in the visible area of the diagram
- Reads the container metrics before the validation of a zoom
- Zooms pinch gestures in Safari around the center between the fingers
- Cancels what the first finger started when a pinch gesture starts
- Updates the translate when the diagram container is resized without a refresh
- Rounds the fit of the initial view of a page like other fits
- Floors the translate of exports at the output scale
- Zooms pinch gestures in Safari around the center between the fingers in the lightbox
- Passes diagram coordinates to rough.js so sketch fills do not depend on the view translate
- Fixes VSDX export of images with URL encoded data URIs
- Enables fast rendering by default in the editor
- Skips the custom handles of vertices without a geometry
- Records the fix of the null paint bounds handle group
- Routes /cache on preprod to the fast-rt patch cache
- Stops forwarding preprod's /cache to the AWS Lambda
- Restores app.min.js in the service worker precache and fails the build on oversized entries
- Formats the radii of ellipses and the rotation centers of labels in SVG output
- Replaces the loading text with a pulsing logo
- Removes wip, cleanup and repeated entries from the ChangeLog since 31.1.8
- Leaves wip, cleanup, build and repeated commit subjects out of the generated ChangeLog
- Builds the style-to-library map for Open Library in idle time after startup
- Shows the pulsing logo while the Teams tabs and the Chrome app load
- Caches the normalized search tags of sidebar entries
- Points the Teams app V2 at the draw.io for M365 Entra app

04-OCT-2026: 32.1.0

- Adds the patch cache to the fast-rt shards, switched off until the /cache cutover
- Adds the design for model coordinates
- Adds fields in model units to cell states
- Uses a minimum edge bounds size of 1 in model units
- Uses the scale of the painted shape for flow animations
- Stores the routed points of line jumps in model units
- Makes the ellipse perimeter independent of the zoom level
- Adds painting in model units for zoom and pan without repaint
- Adds the mc URL parameter for model coordinates
- Updates the model coordinates design with the status of phases 1 and 2
- Shortens the patch cache's wait for an earlier save to 3 s and turns off fast-rt's workers.dev address
- Keeps the hit tolerance of strokes in screen pixels in model coordinates
- Keeps the crisp offset of strokes in screen pixels in model coordinates
- Keeps the global shadow in screen pixels in model coordinates
- Disables model coordinates in WebKit
- Updates the model coordinates design with the status of phase 3
- Paints folding icons in model units in model coordinates
- Checks only the states updated in a validation for screen fields
- Adds the folding icon and check fixes to the model coordinates status
- Uses the fast zoom preview in model coordinates
- Updates the model coordinates design with the status of phase 4
- Keeps crisp offsets within a quarter pixel at non-integer scales
- Enables model coordinates by default in Chromium-based browsers
- Updates the model coordinates docs for the default in Chromium
- Places the foreignObjects of labels at the labels in model units
- Allows model coordinates in WebKit with mc=1
- Enables model coordinates by default in WebKit
- Updates the model coordinates docs for WebKit
- Skips a patch cache notice's sender by its relay client ID in cid
- Sends realtime save notices with their cache entry and other notifications over the socket too
- Updates stable channel to 31.7.1
- Holds autosaves in the rt-test encrypted-channel scenario while it counts notification effects
- Enables model coordinates by default in Firefox
- Updates the model coordinates docs for Firefox
- Corrects the duplicate points note in the model coordinates design
- Sends the Teams SSO token only to the same-origin /teamsToken worker
- Names the cause of the duplicate points in the model coordinates design
- Adds no waypoints when a straight edge segment is moved back
- Removes waypoints of orthogonal edges that are equal to a terminal point
- Marks the duplicate points as fixed in the model coordinates design
- Uses model coordinates in the lightbox and viewer instead of CSS transforms
- Updates the docs for model coordinates in the lightbox and viewer
- Keeps the hit tolerance of strokes in screen pixels in WebKit
- Documents the WebKit hit tolerance in the model coordinates design
- Removes duplicate waypoints of elbow, entity relation and isometric routes
- Updates the duplicate points note in the model coordinates design
- Adds the fastRendering configuration for model coordinates in the editor
- Documents the fastRendering configuration
- Corrects the old rendering path note in the model coordinates design
- Keeps the diagram fitted to the window until the zoom changes
- Fits the window again when the page view, format or scale changes
- Stops fitting and keeps the zoom if Fit Window is selected again
- Keeps the graph bounds in model units in sync with setGraphBounds
- Adds the teamsV2 CSP to the print-csp output and moves its inline scripts out
- Keeps the initial view fitted to the window until the zoom changes
- Ends the fit of the initial view when the user scrolls or pans
- Fixes the view after fitting the window again on resize
- Removes the fit of the initial view on resize
- Resolves the guide container once per move instead of once per guide
- Limits libavoid obstacles to a region around the routed edges
- Updates only the bounding boxes of redrawn shapes and labels in validate
- Updates the model coordinates notes on graph bounds and label boxes
- Measures labels again after fonts or images in labels have loaded
- Keeps edits made during an in-flight save pending in the rt-test storage stub
- Adds Add Connection Point to the Edit submenu of the Simple, Sketch and Min themes
- Moves the teamsV2 CSP out of this branch into the cf-headers pipeline
- Deploys the CSP response headers from the repo, widened before each release
- Updates the Teams app V2 manifest tooling to archiver 7
- Collects the libavoid move preview inputs once per drag
- Makes fastRendering opt-in in the editor
- Finds the cell at a point without walking all cells
- Keeps the graph bounds if a part of the graph is validated
- Updates the known gaps in the model coordinates design
- Fixes rhombus indicator shapes of labels
- Keeps the diagram fitted to the window only with fast rendering
- Adds the bounding boxes to one rectangle in getBoundingBox
- Replaces the :has() selector for pressed status actions with a class
- Adds regression tests for fast rendering
- Skips parsing the draft if the current page has cells
- Saves drafts one second after the last change
- Keeps the graph bounds if a partial validation changes the translate
- Updates the insert costs in the model coordinates design
- Attributes the XML serialization of inserts to drafts in the design
- Adds only the changed bounding boxes to the graph bounds in validate
- Adds labels measured after fonts or images loaded to the graph bounds
- Validates only the invalidated cells in validate
- Replaces the page-wide :has() rules with classes
- Updates the label measurement cost in the model coordinates design
- Collects the descendants in one array in filterDescendants
- Resolves only the styles that may set routing keys in the libavoid walks
- Skips the methods of objects in mxObjectCodec.encodeObject
- Saves drafts as plain XML
- Updates the insert and draft costs in the model coordinates design
- Caches the inherited member names of each prototype in mxObjectCodec
- Updates the encoding cost in the model coordinates design
- Fixes the uneven border of exports with a scale on the export page [jgraph/drawio#5559]
- Exchanges Teams app V2 sign-in tokens with the V2 Entra app
- Enables the responsive viewer in Safari
- Sanitizes each HTML label once per task in the cell renderer
- Precompiles the default expressions of mxUtils.ltrim and rtrim
- Asks for every scope the Teams token exchange uses in the teamsV2 consent window
- Adds zoom stops below 15% in model coordinates and rounds pinch zooms to 1%
- Zooms by the change of the finger distance for touch pinch gestures
- Documents the zoom stops below 15% in the model coordinates design
- Fixes fast zoom and viewbox links in the minimal theme
- Fixes the crop after viewbox and scroll links in the viewer
- Fits on the grid of the zoom stops
- Updates only the cells whose visibility changed for hidden tags
- Applies the hidden tags of a page before it is rendered in the lightbox
- Documents the fits on the zoom grid in the model coordinates design
- Removes the mapping of the canvas transform from the page breaks
- Rebuilds the browser translation mirror only after labels were repainted
- Uses zoom stops on the 1% grid for the mouse wheel in model coordinates
- Documents the mouse wheel zoom stops in the model coordinates design
- Fits on the 1% grid in model coordinates
- Makes the scale of the last fit a zoom stop in model coordinates
- Documents the fits on the 1% grid and the fit stop in the model coordinates design
- Refits the auto-fit viewer in the frame after a resize
- Uses the responsive mode for auto-fit in the viewer
- Adds a padding for the icons of cells to fitting the diagram to the window
- Replaces ResizeSensor with ResizeObserver in the viewer
- Keeps the hit tolerance of strokes in screen pixels in the responsive viewer in WebKit
- Paints folding icons in model units when they are created in model coordinates
- Applies the camera to the print draw pane in model coordinates without CSS transforms
- Computes the label bounds in model units in model coordinates
- Retries opening the database once and shows its error for browser files
- Fixes saves that never finished while offline, eg. browser files in the offline app

03-OCT-2026: 32.0.2

- Makes the ellipse perimeter independent of the zoom level
- Fixes Google font URLs with weights or multiple families
- Fixes initial scroll position of zoomed-out diagrams in resetScrollbars
- Updates stable channel to 31.7.1
- Shortens the Set as Default for New Connections label to fit the Format panel
- Translates the Tapered Arrow title in the connection menus
- Makes entity relation routes independent of the zoom level
- Documents the libavoid routing boxes of relative and edge children
- Restricts extFonts sources and loads CSS2 Google fonts from extFonts
- Applies fitDiagramOnLoad in all editors instead of only on own domains
- Fits the diagram once instead of twice when a file is opened
- Adds no waypoints when a straight edge segment is moved back
- Removes waypoints of orthogonal edges that are equal to a terminal point
- Keeps edge labels in place when the route of an edge is edited
- Adds x and y inputs for the waypoints of an edge to the Arrange panel
- Adds Alt+Ctrl (Alt+Cmd) to move edge ends onto the grid without connecting
- Adds Add Connection Point to the context menu and snaps point centers
- Adds centimeters as a unit
- Adds a border width option to the Google Workspace and Office add-ons
- Adds cell metadata to SVG exports of the export page on request
- Removes duplicate waypoints of elbow, entity relation and isometric routes
- Spins the refresh icon of the add-on panel while the list loads
- Keeps margins and footer when a stack child is resized
- Adds named presets to the image export dialog
- Translates the Filled Edge, Pipe and Wire titles in the connection menus
- Adds a page background option for default label backgrounds
- Shortens the Clear Default for New Connections label in the Format panel
- Renames Set Default for New Connections to Set New Connection Default
- Removes the open source claim from the Trello Power-Up description
- Fixes containers extended too far by shapes picked from the hover arrows

03-OCT-2026: 32.0.1

- Lowers the stencil bundle floor of the release PR integrity check

03-OCT-2026: 32.0.0

- Fixes edge label moving offset in orthogonal edge style
- Fixes resize of ERD entity shapes via inner rectangle
- Fixes split curved edge, drops text on edge as label
- Fixes split on drop for routed edges without waypoints
- Fixes detection of drop targets under non-drop-targets for sidebar drag
- Adds drag handles for group padding on transparentBounds groups
- Adds tapered arrow shape
- Speeds up loading of the bundled stencil libraries
- Resolves CSV parent rows before cell IDs and ignores the root and layers as parents
- Fixes group padding handle error after moving a transparent group
- Adds curved, rounded and width handles to the tapered arrow
- Adds live preview of the selection border for group padding handles
- Adds placement of pasted edge labels at the mouse position
- Adds fill and gradient to the tapered arrow
- Adds the tapered arrow to the connection menus
- Adds a Group Padding section to the Arrange panel
- Arranges the group padding inputs in two rows below size and position
- Fixes overhangs at inner rounded corners of the tapered arrow
- Adds the tapered arrow to the connection popup of the inline toolbar
- Resizes groups without transparent bounds to new group padding values
- Matches the text spacing and group padding layouts
- Paints the dashed preview of custom handle drags below the handles
- Scales the markers of the tapered arrow and draws its heads in the outline
- Snaps group padding handles to the grid unless alt is pressed
- Fixes hardcoded language of print dialog in viewer lightbox
- Fixes math on page without math after switching pages in viewer
- Fixes autosize to recurse into nested containers
- Fixes cut and paste of vertices in trees
- Fixes Cmd+Shift+V in Safari
- Fixes diagonal trackpad scrolling without scrollbars
- Fixes moving of shapes with size 0 or 1
- Adds click on terminal handles to change arrows
- Adds row and column striping for tables [4021]
- Reduces guides for UML classes and tables
- Uses the same guides for moving cells and inserting from the sidebar
- Adds Search Templates to the omni search
- Adds the new window option for links in labels
- Adds actions for the style of new connections from a shape
- Waits for the current save before saving again
- Adds a From Text section to the templates dialog
- Adds slanted text entries to the Misc palette
- Halves the stencil bundle and loads bundled stencils about twice as fast
- Replaces the gae-stub jar in the public build with source
- Ships the public repository with the stencil bundle instead of the stencil XML

02-OCT-2026: 31.7.1

-  Hyperdisk deliberately deviates from Google's square artwork: the box is cropped to the ink horizontally and the height scaled by sqrt(3)/2 (403.999 x 349.873) for regular flat-top hexagon   proportions; the sidebar entry follows (100 x 86.6).
- Adds curated connection points to the GCP 2026 stencils and gives Hyperdisk regular hexagon proportions
- Adds curated connection points to the Network 2025 stencils and exposes them through the icon wrapper shape
- Adds curated connection points to the Veeam stencils (flat and 3D)
- Adds curated connection points to the Citrix stencils
- Connection fix for a Cisco19 stencil
- Adds the heptagon connection points to the Kubernetes wrapper shapes
-  Adds curated connection points to the Alibaba Cloud stencils
- Puts the IBM Cloud actor connection points on the circle
- Adds curated connection points to the Allied Telesis palette
- Adds curated connection points to the Cisco Safe palette cells that had none
- Adds curated connection points to the Dynamics 365 palette
- Adds curated connection points to the MSCAE image palette entries
- Adds curated connection points to the SAP palettes
- Adds curated connection points to the Azure2 palette
- Adds opt-in anchorsOnOutline style for rounded rectangle connection points
- Uses anchorsOnOutline for the SAP rounded shapes
- Resolves perimeter connection points on the rounded outline with roundedPerimeterPoints
- Renames the SAP rounded shapes' key to roundedPerimeterPoints
- Stores outline connections on rounded shapes with roundedPerimeterPoints as perimeter points
- Adds opt-in roundedPerimeterPoints style for connection points on rounded rectangles [jgraph/drawio-dev#701]
- Removes sanitized style elements with element or CDATA children
- Scopes nested CSS rules of inlined SVG images
- Keeps CSS in CDATA sections of inlined SVG images
- Waits up to 8 hours for the GAE deploy in the release monitor
- Re-measures the SAP Generic Icons and composite image connection points
- Scopes style elements in HTML labels to their svg element
- Re-measures drifted MSCAE and Dynamics 365 connection points
- Fixes outline connections on flipped rounded rectangles with roundedPerimeterPoints [jgraph/drawio-dev#701]
- Applies roundedPerimeterPoints with the default and pasted styles [jgraph/drawio-dev#701]
- Ends floating edges on the rounded outline with roundedPerimeterPoints [jgraph/drawio-dev#701]
- Adds Rounded Perimeter to the properties of rectangles and labels [jgraph/drawio-dev#701]
- Renames the roundedPerimeterPoints style to roundedPerimeter [jgraph/drawio-dev#701]
- Keeps the math text layer in PDFs of the export server
- Stops macOS Preview breaking the math text layer into lines
- Steps inline font sizes with the font size of labels [jgraph/drawio#5786]
- Fixes the swapped shortcut labels of the font size actions
- Stores the Mermaid defaults version of new diagrams
- Keeps Mermaid sankey bands visible in dark mode
- Adds the Mermaid sankey link to the Basic sidebar
- Adds the Mermaid person shape
- Adds the Mermaid person shape to the Basic sidebar
- Loads the web fonts of Mermaid diagrams before parsing them
- Adds the lifelineColor style to UML lifelines
- Adds the Mermaid use case actor shape
- Adds the Mermaid use case actors to the Basic sidebar
- Lets the Mermaid bundle decide the ELK post-pass of flowcharts
- Updates drawio-mermaid bundle to 0.1.0+commit.de4624a
- Updates drawio-mermaid bundle to 0.1.0+commit.3a7b1c1
- Updates drawio-mermaid bundle to 0.1.0+commit.db3990e
- Adds collapsedPoints edge style to ignore waypoints for collapsed terminals [jgraph/drawio#4810]
- Adds fixedPointSpacing style to apply line end spacing to connection points [jgraph/drawio#4822]
- Shows the offline languages dialog without a controlling service worker
- Adds PlantUML descriptors to the embed load action
- Adds collapsed borders rendering for tables [jgraph/drawio#2714]
- Uses the side flags for borders of cells in collapsed tables [jgraph/drawio#2714]
- Uses Lane Color for the fill of tables and rows without a title [jgraph/drawio#2714]
- Resolves inherited colors in collapsed tables from the saved colors [jgraph/drawio#2714]
- Uses the side flags of rows and cells as visibility in collapsed tables [jgraph/drawio#2714]
- Uses the lane color for headerless rounded collapsed tables [jgraph/drawio#2714]
- Returns null from mxPrintPreview.open when the popup is blocked [jgraph/drawio-dev#673]
- Records the watched path only after the file watch registration succeeds [jgraph/drawio-dev#676]
- Exempts the last print page from the forced page break with an inline style [jgraph/drawio-dev#674]
- Reports failed browser storage writes instead of passing a null error [jgraph/drawio-dev#672]
- Makes edge routing independent of the zoom level
- Fixes the start point of edge handles started from the graph handler
- Fixes the col-resize cursor for right-side table headers at zoom levels other than 100%
- Fixes the drop and connect position for relative sources at zoom levels other than 100%
- Fixes edge geometry position changing in mxGraph.cellsAdded
- Fixes new device files with SVG extension written as XML on first write
- Fixes stack layout with locked cells
- Disables dropping lanes into lanes
- Cancels open AI request when template dialog is closed
- Does not show image resize dialog for PNG+XML
- Adds previous and next page custom actions
- Removes required identity for parent-child CSV import
- Adds jumpLayers style to limit line jumps to the same layer
- Fixes the container lookup and insert position for relative sources in drop and connect
- Fixes move cursor in embedded diagrams if no panning possible
- Adds start and end arrow stroke colors
- Fixes middle click on broken page link in label
- Fixes the end point of dangling edges dropped into another parent in drop and connect
- Adds match count and find previous to find dialog [jgraph/drawio#2887]
- Blocks pinch that shows tabs in Safari
- Fixes the parent of cells dropped and connected from relative sources inside their parent container
- Adds delete multiple entries in library dialog
- Adds Graph.reservedDataNames for reserved custom data names
- Adds scratchpad refresh in other tabs
- Updates the vendored drawio-plantuml bundle to commit c79b15b [jgraph/drawio#5789]
- Fixes the libavoid routing box of relative children such as ports
- Fixes the libavoid obstacle box of edge labels
- Fixes the libavoid routing box of absolute edge children in containers
- Prefers the nearest shape among guide candidates with the same distance [#103]
- Checks inherited colors for changes in checkPlaceholderStyles
- Updates the scrollbars after a view update of a CSV import descriptor
- Fixes autosize after cellsInserted for CSV updates and text import
- Adds pasted edge labels back to their edges if the edges still exist
- Shows connection points with names in the edit shape preview
- Adds column move handles to tables

01-OCT-2026: 31.7.0

- Stops loading the Pusher library in lockdown mode
- Stops fetching notifications in lockdown mode
- Fixes realtime catchup over several saves in Confluence Cloud
- Lets the MathJax update and comparison run in a cloud container
- Updates the vendored drawio-plantuml bundle to commit 7e1e88f
- Updates drawio-elk bundle to 0.1.0+commit.5c1c970
- Fixes missing XML escaping in the connectRender snippet
- Fixes missing XML escaping in the Forge connectRender webtrigger
- Updates drawio-elk bundle to 0.1.0+commit.cbd81ba
- Adds a model comparison eval to the generate/v3 worker
- Removes diagram data, file ids and URL parameter values from client logs
- Conf Cloud space approval translation keys
- Fixes find window freezing while typing with all pages
- Stops the realtime cache from re-issuing tokens for used secrets
- Limits the length and size of realtime cache catchups
- Removes exception details from realtime cache error responses
- Checks cached catchup patches against the descriptor checksum
- Fixes lost descriptor change notifications in realtime sync
- Updates vendor bundles
- Stops reporting failed realtime cache uploads as save errors
- Keeps base64 padding in compressed style resources
- Rejects non-numeric def references in compressed styles
- Keeps all references in compressed styles with multiple resources
- Updates drawio-elk bundle to 0.1.0+commit.0cfcdc4
- Updates tooling and worker dev dependencies for Dependabot alerts
- Re-routes libavoid edges after arrange actions and layouts
- Adds followTerminals edge style that moves waypoints with terminals
- Frees libavoid route copies so repeated solves route identically
- Shares libavoid pins and retries connectors libavoid cannot route
- Routes libavoid edges around rotated, turned and flipped shapes as drawn
- Updates drawio-mermaid bundle to 0.1.0+commit.8747059
- Re-routes libavoid edges when a shape is rotated with its handle
- Makes the libavoid drag preview enforce the jetty stub like the drop
- Makes followTerminals edges follow transparentBounds terminals
- Updates drawio-elk bundle to 0.1.0+commit.c50c120
- Previews the drop's clearance retry when libavoid finds no warm route
- Points the libavoid docs at the tool server's current core cache
- Fixes the Google Drive file not found dialog layout and link
- Fixes clipped Change User dialog after a Google Drive file not found error
- Added lucid importer app translation keys + fixed its chrome extension
- Updates drawio-elk bundle to 0.1.0+commit.c6b8e34
- Adds zoomEvents load option to notify the embed host of zoom changes
- Caps the size of diagrams inserted by the Google Sheets add-on [jgraph/drawio#5559]
- Asks again for permissions users unticked in the Google add-ons [jgraph/drawio#5559]
- Removed tabs from the Lucid import extension permissions
- Adds the sequence edge style to the edge inline toolbar [jgraph/drawio#5706]
- Clears innerLoopWaypoints when the inline toolbar resets edge waypoints
- Limits the Google Workspace add-on submission to smart chips
- Covers descriptor change notifications over the realtime socket
- Uses random realtime channel keys for OneDrive and monday.com
- Conf Cloud: Added translation keys needed for describing config space creation
- Blocks escape, backslash and quote desync bypasses in the CSS reference check
- Fixes checkPlaceholderStyles always returning true
- Restores own-color references and adds parentFillColor/parentStrokeColor
- Fixes copy-pasted doc comments of Graph style state helpers
- Fixes lost URL parameters when a #P hash sets the hash property
- Fixes lost text before a code fence in AI responses
- Fixes the shadowColor configuration option having no effect
- Fixes scrollLeft typo in pageSelected
- Fixes rowspan typo in visitTableCells
- Fixes spelling and grammar errors in English UI strings
- Makes English UI labels consistent in capitalization and wording
- Uses American "color" in the Configuration dialog texts
- Spells "Double-click" consistently in English tooltips
- Uses Key+click notation for modifier hints in English tooltips
- Spells SharePoint with a capital P in English UI texts
- Updates drawioForWork to "draw.io for Google Workspace"
- Uppercases CSV, URL, VSDX and ID in English UI messages
- Writes "app" in lowercase in two Confluence app messages
- Spells "Zigzag" as one word in the fill style names
- Writes "Reopen" without a hyphen in the comment actions
- Names the hiResPreview option "High Resolution Preview" everywhere
- Writes "custom content" in the Confluence integrity check messages
- Fixes punctuation in English UI messages
- Re-routes libavoid edges after flips and the rotation dialog
- Fires cellsArranged for Edit Geometry and Paste Size
- Passes the source perimeter to the libavoid new connection preview
- Moves followTerminals waypoints when a group is rotated or flipped
- Adds missing resources for the custom GitLab server warning dialog
- Adds missing doubleClickToEdit resource for the ID in Edit Data
- Fixes raw justifyfull tooltip in the text toolbar align menu
- Fixes raw smartFit tooltip in the presentation mode toolbar
- Adds authorizedIn resource for the popup auth button dialog
- Makes the PlantUML issue link in the insert dialog translatable
- Translates the highlight color and open link fields in action dialogs
- Fixes flow toggle and opacity step labels in the animation dialogs
- Cancels the animation export on Escape [jgraph/drawio#5777]
- Closes the video encoder when the MP4 export is cancelled early [jgraph/drawio#5777]
- Destroys the custom action editor when it is closed
- Parses the CSS of SVG image symbols for scoping [jgraph/drawio#5726]
- Fixes xUtils typo in the grapheditor updateDiagramData
- Fixes operator precedence in the browser files list striping
- Removes the unreachable Atlas branch of the diagram menu
- Removes the unused DrawioFile.isMovable and DriveFile.isMovable
- Ignores a stored Dropbox or Trello mode when the storage is not enabled
- Keeps non-ASCII letters in imported Visio shape data names
- Keeps glued edge ends in place when Visio import fits a stencil cell
- Mirrors edge label offsets with flipped groups in the Visio import
- Turns off-centre labels of rotated Visio groups only once
- Glues Visio connectors to the right side of flipped shapes
- Fixes actions skipping cells whose ID is an Object.prototype name
- Fixes "Page not found" tooltips for page links with spaces in the viewer
- Fixes missing Microsoft 365 name and logo in the authorized dialog
- Removes duplicate auth retry code in DropboxClient
- Removes duplicate write request code in OneDriveClient
- Removes duplicate auto-origin code in GraphViewer toolbar
- Removes duplicate touch tap listener for viewer toolbars
- Removes duplicate drag and drop code in image and link dialogs
- Removes duplicate FolderShape.getLabelMargins in Shapes.js
- Removes duplicate redraw code of the lock and edit icon handles
- Removes duplicate shapeInside size and direction code in Graph.js
- Removes duplicate client scan in App.getMainUser and getCurrentUser
- Removes duplicate shape code in the Lucidchart importer
- Fixes normalizeModel growing collapsed containers
- Fixes Find on all pages stopping at matches that are not rendered
- Removes the no-op p.Rotatio assignments in the Lucidchart UML import
- Removes the unreachable Console preview from the Edit Data export
- Fixes GitLab token sent to GitHub and GitHub token sent to GitLab
- Fixes Microsoft 365 token used by the personal OneDrive client
- Fixes literal … in truncated template category names
- Fixes missing border around the library dialog image area
- Fixes light template category headers and borders in dark mode
- Fixes light draft preview border in dark mode
- Fixes untitled library entry label color in dark mode
- Uses the dialog hint style for the shapes dialog empty preview
- Fixes light separators and Drive warning in the storage dialog dark mode
- Fixes light separators in the splash dialog dark mode
- Fixes bright polygon dialog grid in dark mode
- Uses the themed border for the freehand window color swatch
- Uses the theme error colors for the find window not-found state
- Adds Ctrl+Enter to apply in the edit diagram dialog
- Adds Ctrl+Enter to insert in the text / mermaid / PlantUML dialog
- Adds Ctrl+Enter to apply in the edit shape dialog
- Uses app error dialogs instead of native alerts in the edit data dialog
- Uses the dialog button style for the connection points Add button
- Uses the standard title and help icon in the create dialog
- Right-aligns the image dialog buttons
- Right-aligns the page and layer picker buttons
- Uses a standard h3 title in the edit shape dialog
- Removes inline title styles from the markup dialog
- Uses the standard button spacing in the plugins dialog
- Uses the standard button spacing in the grapheditor link dialog
- Uses the 14px button margin in the crop image dialog
- Uses the standard button margin in the compact shapes dialog
- Adds a tooltip to the email button in the embed dialog
- Adds a tooltip to the color dialog dropper button
- Removes doubled control gaps in the edit data dialog rows
- Uses the dialog hint style for the embed dialog size label
- Uses the dialog hint style for the revision dialog file info
- Fixes missing Cancel in the template dialog when cancelFirst is off
- Honors cancelFirst in the animation and custom action dialog footer
- Honors cancelFirst for the Close button in the embed dialog
- Holds unconfirmed live deletes in the realtime grace window
- Scopes the realtime merge veto to colliding inserts
- Keeps the newer-version dialog latched while its reload waits
- Extracts the shared claimant walk of patchPages and patchCellRecursive
- Uses CSS whitespace when scoping the CSS of SVG image symbols [jgraph/drawio#5726]
- Prefixes fonts and keyframes declared in SVG image symbols [jgraph/drawio#5726]
- Fixes clipped bottom border of the inline OneDrive picker
- Fixes quadratic trimming of Visio shape data names
- Fixes quadratic time in mxUtils.rtrim
- Rejects Edit Data property names that make diagrams unreadable
- Fixes six dialog borders that the browser dropped as invalid CSS
- Moves the polygon and connection points actions to diagramly
- Adds an overridable hook for the Edit Data export
- Adds a mixed values state to Edit Link for selections with different links
- Turns edge label offsets with rotated groups in the Visio import
- Fixes copy-pasted doc comments of the file classes
- Fixes copy-pasted doc comments of the library classes
- Fixes copy-pasted doc comments of the storage clients
- Fixes copy-pasted doc comments in Graph and EditorUi of the grapheditor
- Fixes copy-pasted doc comments of App, EditorUi and Pages
- Re-routes libavoid edges after Edit Style and turning a swimlane
- Re-routes libavoid edges after replacing the shape of a vertex
- Removes the redundant styleChanged event of the Flip buttons
- Renames cfgFontCssHelp to cfgCustomPresetColorsHelp
- Documents the title margin of the revision dialog
- Shows the cell ID in Edit Data as regular text
- Fixes a global variable in GitLabClient.insertFile
- Updates the metadata of OneDrive libraries after saving
- Removes the unused includeCellId argument of createSvgImageExport
- Binds SVG export popups only to the icon wrappers of the export
- Passes the icons option through the svgdata plugin
- Resolves snapToPoint anchors for the current style of the terminal
- Re-routes libavoid edges after style edits of their ends
- Fixes ignored jetty sizes in libavoid routing
- Routes new edges to the snapToPoint anchors of new terminals
- Re-routes libavoid edges after style writes outside Edit Style
- Removes the dead styledev style input
- Turns edge label text with rotated groups in the Visio import
- Adds drawio-plantuml to the ant bundles target
- Updates drawio-mermaid bundle to 0.1.0+commit.00cb88f
- Updates the Confluence Connect PrismJS copy to 1.30.0

29-SEP-2026: 31.6.1

- Keeps the embed filename before the buttons when the title changes
- Fixes the noLabel check for disabled font colors [jgraph/drawio#4694]
- Translation keys for embed macro pinned version
- Makes the math text layer selectable in macOS Preview
- Resizes autosize cells with math when math typesetting is turned on or off
- Fixes the hover state of the autosize button in the Arrange panel
- Fixes blank edge style toolbar icons after load
- Fixes autosize of labels with AsciiMath
- Updates stable to next release
- Fixes undo shortcuts in the color picker window [jgraph/drawio-desktop#2395]
- Shows month names in revision history dates [jgraph/drawio#5234]
- Hardens realtime message decoding on encrypted channels
- Fixes saving diagrams in the Notion extension [jgraph/drawio#5785]
- Updates Notion extension to 1.3.4
- Added Conf Cloud deep scan translation keys
- Keeps lockdown saves off the realtime cache

28-SEP-2026: 31.6.0

- Limits PDF object stream scans to one pass [jgraph/drawio-dev#572]
- Makes PDF inline and referenced Subject scans linear [jgraph/drawio-dev#572]
- Skips math typesetting in exports of pages without math
- Applies MathJax safe filters at startup
- Uses the rotated Picker API key and explains the multi-account error in the Google add-ons [jgraph/drawio#5559]
- Adds a regression suite for the Visio importer
- Keeps referer paths, file names and client IPs out of the convert worker logs
- Keeps proxied URLs, referer paths and OAuth state out of the edge logs
- Adds a Google Workspace add-on worker (smart chips, Docs @-menu, Chat)
- Removes the temporary realtime release telemetry [jgraph/drawio-dev#677]
- Puts the fast-rt channel listing behind the admin secret and removes its shard reset
- Serves the fast-rt socket totals from a 15 s cache instead of reading all 64 shards per request
- Applies every color from the color window to the selected text [jgraph/drawio#5783]
- Keeps the text selected after changing its color in Firefox [jgraph/drawio#5783]
- Uses the sequence edge style for the UML 2.5 lifelines [jgraph/drawio#5706]
- Adds Visio import tests for color injection into labels and styles
- Accepts only valid colors in the Visio importer
- Adds Visio import tests for font name and text direction injection into labels
- Accepts only safe font names and text directions in the Visio importer
- Reports CSS injected into labels in the Visio import security scan
- Adds a Diagrams panel and simpler insert and update to the Google add-ons [jgraph/drawio#5559]
- Uses the sequence edge style in the sequence templates [jgraph/drawio#5706]
- Lists each template once in the template search
- Fixes diagram sizes, empty pages and the My Drive filter in the Google add-ons [jgraph/drawio#5559]
- Adds an authenticated licence endpoint that counts Workspace editors per domain and month
- Stops the auth worker redirecting OAuth tokens to another site
- Applies the security review to the licence endpoint
- Adds a Google Drive home screen behind a flag
- Moves HomeDialog out of Dialogs.js into its own file
- Converts binary Visio files in the browser before the Visio import
- Stops the Home screen clipping focus rings in Firefox
- Points Shared with me at the Picker and scopes the Home CSS
- Removes the old Visio import experiments in etc/vsdx
- Removes the unused Visio batch converter in etc/vsdx-convert
- Removes excludes for Visio folders that no longer exist
- Fixes the Visio codec check in the connectors' importer
- Keeps the Drive descriptor when the latest version needs an import
- Records the error log groups of the week of 2026-09-28
- Adds a synchronous single-file MathJax bundle build
- Adds a comparison harness for the MathJax bundle
- Loads MathJax from the single-file bundle for SVG output
- Adds a Visio import test for the display text of text fields
- Shows Visio's display text for text fields in the Visio importer
- Adds the formula source as invisible text to math in PDF export and print
- Drops the CHTML math output (math-output=html)
- Sanitizes AsciiMath output with the MathJax safe filters
- Makes MathJax typesetting synchronous in the bundle
- Removes the asynchronous MathJax retry handling
- Loads the MathJax bundle in the embed script
- Replaces MathJax's separate components with the bundle
- Loads MathJax only when math is first typeset
- Makes the MathJax safe filters fail closed
- Hides the empty properties section in the Edit Data dialog
- Stops the format panel clipping focus rings of full-width controls
- Centers the wait toggle icon in the animation step list
- Corrects the VSDX module guide
- Notes who loads the standalone Visio importer page
- Removes the unused conf-vsdx-enabled worker
- Filters the My Drive tab of the Google Drive pickers by file type
- Hides animation step controls that have no effect
- Labels the layer and tag pickers' clear button "None" in the action dialog
- Widens the URL field of the Open step in the action editor
- Highlights cells revealed earlier in a custom-link click like the preview
- Lines up the animation step rows and keeps chips from being overlapped
- Starts the page animation after a page switch in presentation mode
- Keeps the animation dialog buttons inside a narrow dialog
- Converts binary Visio files in the browser in the connectors' importer
- Explains excluded-cell conflicts in the action dialog's no-effect warning
- Resolves page links with spaces and flags malformed ones in the Open step
- Hides the connectors of cells hidden by a transient toggle, show or hide
- Shows the link as tooltip for cells in locked layers and names custom links
- Shows legacy layer IDs in custom links as layers in the action editor
- Keeps the sources in Cloudflare Pages branch previews and opens them in dev mode
- Fixes the misspelled content type in Google Drive uploads
- Updates the binary Visio converter bundle
- Moves the Visio import test data to the drawio-visio-test repository
- Adds number and page number overrides of master text to the field test
- Moves the MathJax ui/safe hardening into the bundle's source
- Uses the master's Format for field values that an instance overrides
- Wraps the fields of wide animation step rows instead of scrolling them away
- Adds regular hexagon to the Basic palette [jgraph/drawio#4434]
- Disables drop target on EIP Message Endpoint shapes [jgraph/drawio-desktop#2030]
- Connects two selected shapes when clicking an edge in the sidebar [jgraph/drawio-desktop#1962]
- Adds expand option to open custom config libraries expanded [jgraph/drawio#4662]
- Adds missing viewBox to Azure SVG icons
- Changes the default border for PDF export to 0 [jgraph/drawio#5682]
- Adds mobile device container to the C4 palette [jgraph/drawio#4704]
- Shows the grid size in the current unit in Page Setup [jgraph/drawio#604]
- Adds autoscroll near window edges when dragging with hidden side panels [jgraph/drawio#5044]
- Adds math typesetting to tooltips if math is enabled [jgraph/drawio#5041]
- Adds Shift+Insert paste shortcut [jgraph/drawio#5699]
- Adds a search filter to the Property panel [jgraph/drawio#5771]
- Adds fullscreen option to the fullscreen button of embedded lightbox toolbars [jgraph/drawio#5372]
- Ignores freehand strokes while panning with Space+drag [jgraph/drawio#4595]
- Adds unflipStencilText style to keep stencil text readable in flipped shapes [jgraph/drawio#5462]
- Finds and reveals cells inside collapsed containers in Find [jgraph/drawio#4733]
- Moves only cells in the same column or row when folding with move cells [jgraph/drawio#5414]
- Shows tooltips while hovering with a pen [jgraph/drawio-desktop#2189]
- Shows the shape unrotated in the connection points dialog [jgraph/drawio#4108]
- Hides fill option for line shapes in the format panel [jgraph/drawio#4816]
- Fixes transparent background for PNG export with a diagram background [jgraph/drawio-desktop#1905]
- Sorts SharePoint sites alphabetically in the OneDrive picker [jgraph/drawio#2870]
- Enlarges the hit area of small folding icons [jgraph/drawio#4337]
- Shows bundled keyboard shortcuts in a dialog in the desktop app [jgraph/drawio-desktop#1130]
- Makes the MathJax ui/safe filters fail closed
- Grows Visio shapes to the extent of their drawing in the importer
- Ignores non-JSON icon search responses in the sidebar search
- Restores the bounding box when wipe and pop animations stop [jgraph/drawio#5777]
- Adds palettes, per-frame delays and changed-rectangle frames to the GIF encoder [jgraph/drawio#5777]
- Adds GIF and MP4 export of page step animations [jgraph/drawio#5777]
- Renders Visio library references at each master's drawing scale
- Applies older Visio themes in the importer
- Finds Visio themes by their theme scheme ID in the importer
- Pairs only master entries with Visio library references
- Shares the text edit code of the MathJax source loaders
- Replaces the unflipStencilText style with a flip-shape stencil text attribute [jgraph/drawio#5462]
- Gives the MathJax bundle its own global, DrawioMathJax
- Wraps the View step's fields in narrow animation dialogs
- Rotates Visio text blocks around their pin and mirrors them with flips
- Places the text of rotated and flipped Visio lines with their transform
- Shows flipped shapes unflipped in the connection points dialog [jgraph/drawio#4108]
- Fixes hidden label after applying a style to a shape with disabled font color [jgraph/drawio#4694]
- Routes rotated, flipped and reversed Visio lines with their transform
- Fixes window.open returning a Promise for blank windows in the desktop app
- Keeps the preview button on its row's field line in Safari animation dialogs
- Draws Visio group geometry in front of the members
- Places Visio shapes turned or flipped around an off-center pin
- Keeps numeric text sizes through the MathJax safe filters
- Fills Visio geometry with holes like Visio's even-odd rule
- Keeps the open stencil path apart while the importer writes it
- Mirrors the members of flipped Visio groups
- Draws Visio lines with a custom line pattern thin
- Fills Visio shapes whose theme gradient overrides FillPattern 0
- Shows the tags button in the Confluence Cloud lightbox [jgraph/drawio#5548]
- Shows shapes without their direction in the connection points dialog [jgraph/drawio#4108]
- Rounds connection point offsets in the connection points dialog [jgraph/drawio#4108]
- Passes target and features for blank windows in the desktop app
- Updates the vendored drawio-plantuml bundle to commit 050d5db
- Keeps edge terminals in the offscreen copy of the animation export [jgraph/drawio#5777]
- Reports errors after the last frame of the animation export [jgraph/drawio#5777]
- Adds npm run update for new MathJax releases

25-SEP-2026: 31.5.3

- Keeps UML sequence messages at their own y [jgraph/drawio#5706]
- Attaches sequence messages at the pointer y and to activation bars [jgraph/drawio#5706]
- Keeps sequence messages out of libavoid auto-routing [jgraph/drawio#5706]
- Fixes moving sequence messages found in UI testing [jgraph/drawio#5706]
- Stores new connection waypoints relative to the edge parent
- Draws sequence self-calls as a loop at the y where they are dropped [jgraph/drawio#5706]
- Lets both corners of a sequence self-call set its width [jgraph/drawio#5706]
- Uses the sequence edge style for the Self Call template [jgraph/drawio#5706]
- Updates drawio-mermaid bundle to 0.1.0+commit.ab57e1e [jgraph/drawio#5706]
- Updates the vendored drawio-plantuml bundle to commit 300e382 [jgraph/drawio#5706]
- Adds the sequence edge style to the waypoints menus [jgraph/drawio#5706]
- Connects hover arrow clicks on lifelines to the next lifeline [jgraph/drawio#5706]
- Fixes the elbow direction of new edges from the north hover arrow
- Places messages from hover arrow clicks on the next free row [jgraph/drawio#5706]
- Switches the generate/v3 premium draw.io model to Opus 5.5
- Updates drawio-mermaid bundle to 0.1.0+commit.1277371 [DID-20220]
- Updates DOMPurify from 3.4.15 to 3.4.16
- Adds a smoke test for DOMPurify updates
- Updates jszip from 3.10.0 to 3.10.1
- Updates drawio-mermaid bundle to 0.1.0+commit.6a70a2f [jgraph/drawio-confluence#105]
- Skips elements without a style when changing the text color
- Records the groups of the 2026-09-24 error log pass
- Keeps vertex and edge default styles separate [jgraph/drawio#5781]
- Updates the vendored drawio-plantuml bundle to commit 0326366 [jgraph/drawio#5775]
- Fixes image limit defaults shown in configuration dialog [jgraph/drawio#1887]
- Keeps curved style when switching waypoints to straight [jgraph/drawio-desktop#1442]
- Adds Orthogonal Ends option for non-orthogonal edges [jgraph/drawio#5447]
- Opens Microsoft 365 publish links on the app host [jgraph/drawio#5663]
- Updates the vendored drawio-plantuml bundle to commit 156dd4b [jgraph/drawio#5775]
- Limits PDF attachment and object stream scans [jgraph/drawio-dev#572]
- Restricts chromeless back and refresh URLs to same origin [jgraph/drawio-confluence#99]
- Fixes search tag keys for stencil names with several spaces [jgraph/drawio#5738]
- Reports Mermaid input with nothing to draw instead of dropping it
- Adds drive.file Editor add-ons for Google Docs, Sheets and Slides [jgraph/drawio#5559]
- Shows plugin menu items in the menubar and menu buttons [hediet/vscode-drawio#532]
- Searches the text inside diagrams from the Confluence diagram list, with an All Spaces option [DID-20282]
- Fixes OAuth sign-in failing with 401 on self-hosted deployments under a sub-path [jgraph/drawio#5479]
- Fixes Google Drive, OneDrive, GitLab and Dropbox sign-in failing with 500 on self-hosted deployments under a sub-path
- Updates drawio-mermaid bundle to 0.1.0+commit.44f416b
- Applies retired plugin replacements in the desktop plugin loader [jgraph/drawio-desktop#2548]

23-SEP-2026: 31.5.2

- Adds support for mermaid swimlane-beta diagrams [jgraph/drawio#5780]
- Routes mermaid swimlane edges like mermaid does [jgraph/drawio#5780]
- Keeps text decorations on shapeInside labels [jgraph/drawio#5781]
- Fits the label background to the text on shapeInside labels [jgraph/drawio#5781]
- Returns the conflict retry budget on every confirmed save [jgraph/drawio-dev#677]
- Updates drawio-mermaid bundle to 0.1.0+commit.297ba59 [DID-20220]
- Reports a broken #R link instead of failing silently
- Skips stencil color nodes without a color attribute in the format panel
- Uses the native file pickers only where they are callable
- Opens file handles without a writable API read-only
- Skips the shape picker in editors without a sidebar
- Fixes save and exit of new Confluence Cloud diagrams failing on the missing descriptor
- Carries all LinkDialog statics over to the Confluence plugin's wrapper
- Ignores opaque cross-origin script errors instead of showing an error dialog
- Guards the remaining EmbedFile descriptor getters in the Confluence plugin
- Stops a pending OneDrive picker search after the picker is closed
- Offers Copy in the Edit Diagram dialog only where the clipboard API exists
- Shows an error instead of spinning when the embed macro editor gets a non-diagram file
- Adds the gae-error-log skill for the weekly error log routine
- Routes error log API requests through the credential proxy in the cloud
- Decodes invalid 4-byte UTF-8 sequences as U+FFFD instead of throwing
- Skips toolbar buttons without an element in GraphViewer.disableButton
- Records the groups of the 2026-09-23 weekly error log pass
- Removes Copy Link / Paste Link in favor of Copy / Paste Data
- Finds cells by ID in the Find window
- Stops paste writing copied cells into the selected cell's label when a label contains %3E [DID-20192]
- Shows the edge length in the current unit while connecting

22-SEP-2026: 31.5.1

- Corrects the Logs Explorer field for the rt7 release telemetry
- Updates drawio-mermaid bundle to 0.1.0+commit.cbd9dfd
- Pulses paste, duplicate and delete in the animation step toolbar
- Fixes embed merge, patch and getDiff failing with getData is not a function
- Skips the realtime cache entry before encrypting oversized save diffs
- Updates drawio-mermaid bundle to 0.1.0+commit.6695213
- Decodes dropped image URLs with safeDecodeURIComponent
- Reports deleted targets in the animation step editor
- Applies page root changes in patchPage instead of refusing them [jgraph/drawio-dev#677]
- Says "deleted" instead of "missing" for dead cells in the step editor
- Stops a single stray cell emptying a page on load [jgraph/drawio-dev#696]
- Locks that the root id preference only applies to parentless cells [jgraph/drawio-dev#696]
- Updates stable channel to 31-5-1

19-SEP-2026: 31.5.0

- Fixes wrapped stand-alone mode and Electron runtime messages
- Fixes stale page nodes and non-realtime state in sync fast-forward
- Applies available patches in catchup instead of fast-forwarding
- Sorts received sync messages by numeric message counter
- Clears the status update interval in sync stop
- Uses an independent copy for the sync snapshot
- Removes the redundant file fetch from sync cleanup
- Retries optimistic sync on errors and missing versions
- Defers remote descriptor changes while the file is saving
- Handles save notifications with equal modified timestamps
- Checks for changes on messages from outdated clients
- Stores a valid empty patch for descriptor changes
- Logs error messages from the realtime socket server
- Applies patches to the sync snapshot incrementally
- Fixes centered text flow alignment at wrap boundaries
- Removes dark mode media query listener on destroy
- Fixes leading semicolon when removing style key followed by empty entries
- Adds automated multi-client realtime sync test harness
- Re-enables undo ops after fixing the harness message envelope
- Hides the folding icon on tree nodes without outgoing tree edges
- Adds reactive layout ops, alert verdict and layout-race scenario
- Fixes stale absolute waypoints when connecting across nested lists
- Adds saved-stack and adoption assertions, updates rt-test findings
- Fixes dropped local updates to unsaved remote cells in own pages
- Documents the dirty-page flush in the rt-test README
- Fixes stale-copy reverts by merging save-patch inserts in own pages
- Adds layout-passive incident scenario and modified-only quiescence saves
- Adds per-process results files and configurable watchdog to rt-test
- Rebuilds child order canonically and damps reactive delta flushes
- Documents the reactive flush damping in the rt-test README
- Rebuilds page order canonically from previous chains in patchPages
- Adds page-order-race scenario for the patchPages page-loss class
- Merges adopted page content on save merges only
- Adds page-adoption-race scenario for the adopted-page ping-pong
- Bumps the sync protocol and gates realtime on app versions
- Hardens diff patching against crafted ids and cyclic moves
- Adds the single-pass cleanup existence lock to the rt-test verdicts
- Keeps newer local edits over colliding save inserts
- Adds adoption-edit-race scenario for the edited-later LWW race
- Anchors unconstrained pages on their local predecessor in patchPages
- Adds reconnect, waypoint, grouping, order and movePage ops to rt-test
- Documents the realtime sync architecture and invariants
- Filters missed cells from the visible removes on merge catch-up
- Adds offline, lossy-network and save-failure injection to rt-test
- Drops the realtime min-app-version config surface
- Documents the planned server-side join gate for version gating
- Adds residue and duplicate-id detail to the dirty-tracking alert
- Invalidates undoable edits for cells replaced by remote patches
- Adds undo-stale scenario, redo op and alert detail to the rt harness
- Gates the quiescence fixpoint on no pending debounced flush
- Extends undo-stale with redo-stale and cross-page undo cases
- Deflates sync messages directly without the URI-encoding step
- Transports the real sync wire encoding through the rt-test broker
- Adds stress diagnostics and scales quiescence cycles with fleet size
- Disconnects edges from terminals removed through crossing windows
- Locks the crossing-window dangling terminal in undo-stale case 5
- Adds real-timing mode driven by the production timers
- Completes the etag semantics: commit-time check, catchup chain, reload stub
- Invalidates undoable edits for pages replaced by remote patches
- Locks the page redo duplicate in undo-stale case 6
- Invalidates edits for every id a remove list confirms
- Disconnects detached terminals after undo and redo in realtime
- Applies style removals in patchCell
- Rolls back unconfirmed edits when the write permission is revoked
- Adds the write-revoked scenario and 403 injection
- Documents the write-revoke path and scenario
- Adds a desktop-merge coverage scenario for the watcher path
- Runs the desktop-merge scenario on the actual non-realtime branch
- Adds the join-mid-session scenario for late joiners
- Adds the scenario table rows for join-mid-session and desktop-merge
- Adds mixed-version scenario and routes receives through changeListener
- Adds the undo repair pass scaffold before replay
- Replaces undo history invalidation with execute-time repair
- Locks the execute-time resolution in undo-stale case 9
- Keeps cross-page replays on their own page and marks both trees dirty
- Canonicalizes the replayed child in the target tree
- Adds the editor-semantics layer guarding base editor behavior
- Disconnects dangling terminals from dirty pages before the flush diff
- Adds provenance and history forensics to the dirty-tracking alert
- Makes the rt-test runner platform-neutral
- Fixes rt-test UI capture on pointer-event platforms
- Adds a deterministic repro for desktop merge edge duplication
- Asks before merging stale external file rewrites on desktop
- Keeps undo histories intact across revokes and page deletes
- Keeps a revoked client converging as a read-only mirror
- Verifies write revokes against the provider descriptor
- Documents the intent-frozen repair completion in the README
- Keeps transient repair points across composite edit replays
- Renders repaired edges locally and pins the previous attachment
- Adds the render-consistency verdict to every scenario
- Adds a revalidate probe to the render-consistency fail details
- Completes the self-diagnosis in the render-consistency verdict
- Stops replays from duplicating content into renamed cells
- Keeps disconnected edges renderable instead of vanishing
- Moves stable channel to 31.1.5
- Moves text flow options into the common properties section
- Fixes configured default edge font not applied to new edges and edge labels
- Bump actions/checkout from 6.1.0 to 7.0.1
- Updates tooling dependencies
- Updates wrangler version
- Removes plantuml and emf references
- Adds Archimate v4 shapes
- Fixes missing palette titles in savesidebar screenshots
- Adds a PNG preview to the Archimate 4 library
- Fixes the Archimate 4 device aspect ratio in element and icon notations
- Fixes missing save button on expanded palettes in savesidebar mode
- Removal of old lambdas
- Matches libavoid drag previews to the committed route for targets inside containers
- Persists cursor sharing and remote cursor settings
- Excludes self-loops from libavoid routing to keep the loop style
- Adds Ctrl+Alt+T shortcut for Run Last Layout
- Adjust toolbar item spacing and zoom input minimum width for better layout
- Adds connecting edge to shape picker drag previews
- Adds offline language packs, language dialog and config editor i18n
- Adds applyLayouts option to run a diagram's child layouts on load
- Updates DOMPurify from 3.4.12 to 3.4.13
- Raises the AI prompt limit to 100K characters for Atlassian origins
- Reads the Atlassian AI prompt limit from a global variable
- Adds defaultLanguages configuration for preinstalled offline languages
- Stops replays from resolving to removed objects
- Resends unconfirmed changes when the first peer appears
- Freezes replay intentions for all property changes
- Announces joining clients so stale rosters heal
- Keeps resent content current and restores revisions through sync
- Adds exploratory scenarios and a real-P2P test layer
- Keeps immediate cleanups from being postponed by lazy requests
- Drains the broker while polling in p2p-offline-rejoin
- Reconnects edges severed by replayed removals
- Adds undo-heavy fuzzing and a history-shape verdict
- Refuses patches that would strip a page of its root or layer
- Treats malformed patch shapes as absent instead of trusting them
- Keeps a wholesale file replacement out of the undo history
- Rejects script schemes in image sources and typed geometry input
- Adds hostile-content, delivery-matrix and a system-edit audit
- Holds live content until its sender had a chance to save it
- Cleans up chrome profiles after realtime test runs on Windows
- Gates realtime payloads on every transport, not just the cache channel
- Keeps page inserts from losing content on the realtime path
- Keeps malformed patches and dead page replays from losing work
- Restricts the current-page heal to replays
- Records the single gate chokepoint and refreshes the test counts
- Ends the grace window on confirmation and stops the revoke check from adopting a peer's revision
- Stops replays from resolving against trees that left the document
- Names the deepest cell property when a diff overflows the stack
- Asserts the reload count and the persisted bytes
- Hardens page inserts, insert identity and the merge veto
- Repairs the severed-edge bookkeeping and resolves the changed cell
- Keeps repairs of unconfirmed content out of the flush
- Repairs unrenderable edges on every patched page
- Distinguishes a page id from the current-page marker
- Stamps the authenticated sender on relayed WebRTC signals
- Scopes the harness error hooks to their own frame
- Restores children into a still detached parent and validates the view once per replay
- Normalizes the patch update map once per page
- Adds the contradicting-ops scenarios to the realtime harness
- Closes three review leftovers in the realtime hardening
- Makes a wholesale file replacement one undoable step again
- Keeps the viewed page across a revision restore
- Shows why a revision failed to load and stops retrying permission errors
- Replays page selections by direction and heals the current page once per undo
- Adds a latency measurement scenario for the realtime sync
- Arms the lazy cleanup once instead of postponing it on every event
- Delivers live diffs while a rejected save is being reconciled
- Replays a file-changed notification deferred during a save that failed
- Applies every message of a receive batch even if one of them fails
- Notes the crash-reload real-timing flake next to the adoption-race one
- Shows the last change in the status bar after a sync without local changes
- Adds grace and tail-trace knobs to the realtime harness and completes the scenario table
- Postpones the lazy cleanup on activity again instead of arming it once
- Preserve pending edits inside adopted pages during save merges
- Preserve newer cells in realtime resolution patches
- Preserve peer descendants across write revocation
- Fix nested edge endpoint coordinates during stale-terminal undo
- Retract pending file variables after write revocation
- Resolve undo history in the current owning page after revival
- Make cyclic undo replays inert as complete operations
- Add file-variable lifecycle regressions
- Add realtime persistence and notification regression coverage
- Fix realtime vars ownership and notification recovery
- Renames the sync message payload field so deployed v6 clients ignore v7 payloads
- Reloads the app from the redirect dialog when only the URL fragment differs
- Waits for the updated service worker before the redirect dialog reloads
- Stops the redirect dialog spinner once the navigation is triggered
- Records that the GAE push trigger fired once on 31.4.6 and failed on its log bucket access
- Add realtime rollout admission and mixed-source regression
- Updates the release runbook from the 31.4.6 run [jgraph/drawio-dev#690]
- Compares the release-monitor source against the preprod tip, not the dispatch ref [jgraph/drawio-dev#690]
- Adds Bring Everyone to Me and groups the collaboration options in every theme
- Makes the Microsoft 365 client opt-in for embed mode and disables it in lockdown mode [DID-20281]
- Makes the viewer link tooltip readable on dark host pages [DID-20253]
- Updates the vendored drawio-plantuml bundle to commit 8f6f23c
- Updates the vendored drawio-plantuml bundle to commit 14161d9
- Stops URL parameters setting the AI endpoint and API keys [GHSA-v2pv-rjf8-9w9v]
- Stops a URL parameter setting the export service [GHSA-ff67-v9r9-6877]
- Add the migration report strings the Confluence apps need [DID-20276]
- Add the integrity check summary caveat string [DID-20276]
- Updates stable channel to 31.4.6
- Makes the preprod build's AI test plan robust to long replies
- Adds a value to the Toggle Style action and repaints removed transient styles
- Adds a style-key picker to the Set Style and Toggle Style fields
- Opens a fresh action editor for another cell instead of refocusing the open one
- Lets a layout run replace the live layout of every selected layout container
- Updates drawio-elk bundle to 0.1.0+commit.09eed5e
- Keeps the model order of tied siblings in flow layout containers
- Adds a child for every hover arrow in flow layout containers
- Restores the cells a preview faded after the session started
- Keeps the preview's final state on the canvas until Reset
- Adds a descendants flag to the cell selector of custom actions
- Starts the GAE Cloud Build from the release push instead of the trigger that never fired
- Requires the served version id in the release monitor's deploy poll and shows the GAE build on the dashboard
- Adds a follow mode that keeps collaborators on the presenter's view
- Makes Dropbox opt-in only and stops loading its SDK [jgraph/drawio#5740]
- Stops offering GitLab as a save target [jgraph/drawio#5773]
- Retires the tooltips sample plugin for built-in tooltip icons [jgraph/drawio-desktop#2548]
- Groups Comments with the panel items in the view menu
- feat(graph): normalizeModel repairs generated diagrams for the desktop --normalize flag
- Moves Appearance before Language in the Extras menu
- Stops the fast-rt worker sending exception stacks to clients
- Hashes user and file ids in checksum error logs, keeps preprod logging
- Hashes user and file ids in the remaining merge and sync error logs
- Adds temporary realtime release telemetry for the v7 rollout [jgraph/drawio-dev#677]
- Adds per-protocol socket counts to the fast-rt stats endpoint [jgraph/drawio-dev#677]
- Fixes eight animation and custom action dialog issues from testing
- Applies Edit Link to every editable cell in the selection
- Adds Copy Link and Paste Link next to Edit Link
- Adds a color picker and an empty-key marker to the style actions
- Updates the animations guide for the link and style-field changes
- Quotes a page title that contains a tab in the page IDs export [DID-20312]
- Check the MathJax URL in its serialized form and return that form

16-SEP-2026: 31.4.6

- Updates stable channel to 31.4.4
- Updates drawio-mermaid bundle to 0.1.0+commit.39bf997
- Updates drawio-mermaid bundle to 0.1.0+commit.7003579
- Backfills the six dia.txt keys missing from every language file and checks for it on preprod [jgraph/drawio-dev#671]
- Stops Chromium on Android from scrolling the diagram when Ctrl is pressed with a physical keyboard [jgraph/drawio#5316]
- Gives the native clipboard element a real font size so its caret is never empty [jgraph/drawio#5316]
- Waits for the images and fonts of the math print preview before printing, as in the non-math path
- Makes the Microsoft 365 client opt-in for embed mode and disables it in lockdown mode [DID-20281]
- Makes the viewer link tooltip readable on dark host pages [DID-20253]
- Updates the vendored drawio-plantuml bundle to commit 8f6f23c
- Updates the vendored drawio-plantuml bundle to commit 14161d9
- Stops URL parameters setting the AI endpoint and API keys [GHSA-v2pv-rjf8-9w9v]
- Stops a URL parameter setting the export service [GHSA-ff67-v9r9-6877]
- Add the migration report strings the Confluence apps need [DID-20276]
- Add the integrity check summary caveat string [DID-20276]
- Updates stable channel to 31.4.6
- Adds a value to the Toggle Style action and repaints removed transient styles
- Adds a style-key picker to the Set Style and Toggle Style fields
- Opens a fresh action editor for another cell instead of refocusing the open one
- Lets a layout run replace the live layout of every selected layout container
- Updates drawio-elk bundle to 0.1.0+commit.09eed5e
- Keeps the model order of tied siblings in flow layout containers
- Adds a child for every hover arrow in flow layout containers
- Restores the cells a preview faded after the session started
- Keeps the preview's final state on the canvas until Reset
- Adds a descendants flag to the cell selector of custom actions
- Makes the preprod build's AI test plan robust to long replies
- Starts the GAE Cloud Build from the release push instead of the trigger that never fired
- Requires the served version id in the release monitor's deploy poll and shows the GAE build on the dashboard

08-SEP-2026: 31.4.5

- Fixes AWS4 arrow templates and stale palette ids
- Updates AWS shapes to the Q3-2026 icon package and adds an AWS (retired) library
- Updates stable channel to 31.4.3
- Updates the vendored drawio-plantuml bundle to commit 0f34c03
- Shows the PlantUML converter's parse warnings after a successful insert, preview or edit
- Ignores the whole .claude directory rather than two of its files
- Updates commons-fileupload, commons-io and commons-lang3, sets upload limits
- Removed unused server-side emf functionality
- Moves retired AWS icons into the AWS (retired) library and drops the AR & VR and Robotics palettes
- Aligns hairline strokes with the crisp offset in image export [jgraph/drawio-desktop#2506]
- Forces a page break after each page in the print preview so that one page div always maps to one printed sheet
- Sizes the print preview pages to the page area of the sheet in Safari, which ignores the size descriptor of @page rules
- Aligns the page size of the PDF export with the print preview by applying the page scale to a copy of the page format without rounding and cropping to the same size [jgraph/drawio-desktop#1739]
- Waits for the stylesheets, images and fonts of the print preview to load before printing instead of a fixed 500 ms delay
- Ignore migrated Data Center drafts in the Confluence editor and update drafts in the page IDs import [DID-19815]
- Prints the pixel column and row on the page boundary on both adjacent pages in Chrome by sizing the viewBox of the print preview pages one pixel larger than the clip in all browsers
- Updates DOMPurify from 3.4.13 to 3.4.15
- Remove stale drafts instead of rewriting them in the page IDs import [DID-19815]
- Keeps cells inserted via the hover arrows in the container of the source when nothing is hit at the end point [jgraph/drawio#3693]
- Excludes HTML text from the measured SVG bounds of hand-drawn shapes
- Never extends or contracts transparentBounds parents from their children
- Load the diagram file instead of a draft that is at least 15 seconds older [DID-19815]
- Only re-save a draft in the page IDs import when its links changed [DID-19815]
- Adds viewbox option and action to the embed protocol and applies the viewbox URL parameter in embed mode [jgraph/drawio#4763]
- Fixes the path of the embed protocol docs in drawusaurus referenced from CLAUDE.md
- Stops cursor-key moves and resizes scrolling the viewport [jgraph/drawio-desktop#2525]
- Applies review fixes to the AWS Q3-2026 icon update [jgraph/drawio-dev#668]
- Keeps the perimeter flag of connection points on apply in the connection points dialog [jgraph/drawio#4821]
- Updates the vendored drawio-plantuml bundle to commit f6f9522

06-SEP-2026: 31.4.4

- Adds the Atlassian 2025 shape set core: glyph stencils and tile wrapper
- Adds the Atlassian sidebar palettes, agent marks and connection points
- Reworks glyph scaling in the new Atlassian library (square-canonical, per-icon hex calibration, proportional tile switching) and removes unused   logo images [jgraph/drawio#5730]
- Improves logo lockups in the new Atlassian shape library [jgraph/drawio#5730]
- Deduplicates the generated Atlassian sidebar module with shared style-prefix variables [jgraph/drawio#5730]
-  Deduplicates search tags and refreshes stale comments in the new Atlassian library [jgraph/drawio#5730]
- Moves per-icon data from styles onto the Atlassian stencil attributes [jgraph/drawio#5730]
- Hardens the Atlassian wrapper against degenerate box data [jgraph/drawio#5730]
- Guards the Atlassian wrapper's lockup layout and tile aspect against NaN [jgraph/drawio#5730]
- Hides the PlantUML and Mermaid round-trip identity attributes in tooltips
- Strips the characters the URL parser drops before the font scheme check [GHSA-fjgc-8xgj-rvh4]

05-SEP-2026: 31.4.3

- Updates stable channel to 31.4.1
- Fixes SVG attachment images rendering blank in Confluence diagrams by using the correct data URI MIME type [DID-20051]
- Retries transient network failures for GETs in the Confluence Cloud page IDs import and logs real failure totals [DID-19637]
- Rejects IPv6 transition prefixes in the server SSRF guard [GHSA-xj4f-x55f-699c]
- Stops stale image callbacks drawing ghost copies of Confluence attachment images after fit-on-load [jgraph/drawio-dev#658]
- Fixes local print preview head CSS: closes the malformed shadow-suppression rule that swallowed the MathJax print rule and configured font CSS, writes app CSS into the style element unescaped with the style end tag neutralized, rewrites Google font URLs on pages 2+ and suppresses the unnamed @page rule when named page CSS is in use
- Derives export to PDF via print and server-side image export from EXPORT_URL instead of hand-set flags, treats null, empty and the public build placeholder as no export service and fails the canvas-unavailable fallbacks instead of posting to a dead URL [jgraph/drawio-dev#660]
- Adds reindexInst3 resource for the Jira re-indexing page note that indexing pauses while the computer is asleep or offline [jgraph/drawio-jira-forge#1]
- Gives the Google API loader the page's CSP nonce in the Drive editor
- Update vendored drawio-plantuml bundle to commit 0fdd6ad
- Updates plantuml build
- Restricts font sources to http(s), data: and configured URLs [GHSA-fjgc-8xgj-rvh4]

31-AUG-2026: 31.4.2

- Keeps the CryptoJS build tooling out of the public repo [jgraph/drawio-dev#640]
- Stops an attribute value that is markup from reaching the host page [jgraph/drawio-jira#120]
- Stops the MathJax \data macro writing arbitrary data attributes [jgraph/drawio-dev#653]

28-AUG-2026: 31.4.1

- Keeps the current scale when fitting into a zero-size container [jgraph/drawio-dev#647]
- Adds a connectable switch to the connection points dialog [jgraph/drawio#5733]
- Backfills 219 missing translation keys across all 58 language files [jgraph/drawio-dev#637]
- Fixes hidden shared folders and folder shortcuts in OneDrive picker [jgraph/drawio#5359]
- Removes duplicate action, basic and mockups keys from all language files [jgraph/drawio-dev#637]
- Makes Dropbox files read-only ahead of support ending [jgraph/drawio#5740]
- Runs partial and Soundex matching on translated shape search terms [jgraph/drawio#5518]
- Updated translation of Google Drive first time file open message [DID-20062]
- Keeps placed sibling order in ELK tree layouts [jgraph/drawio#5454]
- Sets timeouts on all outbound server connections [GHSA-r85c-2h2r-46rw]
- Downscales embed mode image exports to a maximum canvas area so that huge diagrams cannot crash the renderer [DID-20081]
- Bounds the whole outbound exchange, not just each read [GHSA-r85c-2h2r-46rw]

26-AUG-2026: 31.4.0

- Bump actions/setup-node from 4.4.0 to 7.0.0
- Conf Cloud: Resolve Gliffy version pins automatically [jgraph/drawio-dev#637]
- Fixes convert worker referer gate rejecting Office add-in update requests [jgraph/drawio#5459]
- Fixes blurry Office add-in diagram updates by sending a numeric export scale [jgraph/drawio#5459]
- Rebuilds the Gliffy bundle with the value-size charge
- Removes the Gliffy conversion CF worker (import is fully client-side)
- Removes text/xml Content-Type from attachment download GETs, Confluence Cloud now rejects such GETs with 415 [#638]
- Conf Cloud: Restore Gliffy version pinning as opt-in, keep pin diagnostics [jgraph/drawio-dev#637]
- Update vendored drawio-plantuml bundle to commit ffcd9d7
- Conf Cloud: Add page IDs import error reporting strings [DID-20037]
- Follows cursor-key moves and resizes only when the selection is fully out of view, keeps the viewport static while any part is visible [jgraph/drawio-desktop#2525]
- Restores z-order actions moving table rows within the table [jgraph/drawio#5748]
- Stops resizeLast double-subtracting marginLeft in horizontal stack layouts [jgraph/drawio#5751]
- Updates vendored CryptoJS rollup to 4.2.0 for a CSPRNG-backed KDF salt [jgraph/drawio-dev#640]
- Fails closed when no CSPRNG is reachable for realtime encryption [jgraph/drawio-dev#640]
- feat(shapes): mermaidExtension + mermaidDiamond relation markers
- Places added connection points in the gaps between existing points [jgraph/drawio-desktop#2514]
- Replaces every matched color placeholder in setTextColor [jgraph/drawio-dev#644]
- Includes hand-drawn overshoot in shape bounding boxes [jgraph/drawio#5450]
- Matches only elements changed to the color placeholder [jgraph/drawio-dev#643]
- Stops nested spans accumulating on text color changes in Firefox [jgraph/drawio#5752]
- Applies text colors at a collapsed cursor to the styled run [jgraph/drawio-dev#642]
- vendor: update mermaid bundle (dev be7192b — DID-20053 gantt dateFormat/compact/vert fixes; class, architecture icon packs, kanban, radar, sankey, c4, block visual-match passes)

21-AUG-2026: 31.3.2

- Rebuilds the Gliffy bundle with the validated page background
- fix: upgrade commons-codec:commons-codec from 1.22.0 to 1.22.1
- Conf Cloud: Added Atlassian migration mapping support
- Points the Confluence draft 415 message at Attachment Checker's exception setting
- Added a marker style tooltipCell=1 to find the cell having the tooltip in a group & updated gliffy importer [DID-19972]
- Fixes desktop library save dialog loop and spurious save dialog [jgraph/drawio-desktop#2518] [jgraph/drawio-desktop#2521]
- Updates stable channel to 31.3.2

15-AUG-2026: 31.3.1

- Blocks a tab in the URL scheme in the CSS reference check [jgraph/drawio-dev#628]

15-AUG-2026: 31.3.0

- Add support for stable channel being set to release version
- Conf Cloud: First attempt of the integrity check tool
- Update vendored drawio-plantuml bundle to commit f751805
- Conf Cloud: Added progress and estimated remaining time to the integrity check
- Conf Cloud: Added new strings translations
- Office add-in: Replace Google Picker with a REST-based file list
- Update vendored drawio-plantuml bundle to commit 41f039c
- Fixes comment bypass and over-blocking in the CSS reference check [bugcrowd 31d70940-348e-4d9e-ae26-a20396ef5d69]
- Conf Cloud: Fixed Gliffy import comparison preview not updating
- Update vendored drawio-plantuml bundle to commit 01c610a
- Update vendored drawio-plantuml bundle to commit 919e054
- Fixes java<TAB>script: bypass and two unsanitized link sinks [jgraph/drawio-dev#624]
- Denies data attributes by default in the DOMPurify config [jgraph/drawio-dev#625]
- Block javascript: URLs with tab in the scheme in MathJax labels

13-AUG-2026: 31.2.2

- Make editor Gliffy import local-only, drop conversion-service callers [#618]
- Stop offering Dropbox as a save target [#5740]
- Add Gliffy migration workspace design document
- Replace Gliffy mass import with two-tab migration workspace [#620]
- Add per-diagram operations to migration report, import done state [#620]
- Carry error details and HTTP stats into migration report, local fullscreen [#620]
- Fix fullscreen overlay covering the page when hidden [#620]
- Updates stable to 31.2.2

12-AUG-2026: 31.2.1

- Fix Visio import of shapes with punctuated data labels and noisy image crops
- Document jgraph_tools_github rotation after Cloud Build clone failure
- Updates stable channel to 31.2.0
- Updates to latest gliffy importer
- Convert Gliffy mass import locally instead of calling the service
- Pushes stable to 31.2.1 on next release

12-AUG-2026: 31.2.0

- Add Bugcrowd GitHub issue sync worker (#609)
- Client-side Gliffy import with lazy-loaded converter bundle
- Rework Gliffy import as per-type importGliffy, restore parseFileData

08-AUG-2026: 31.1.9

- Added Confluence DC configuration to Cloud [jgraph/drawio#5319]
- Fixes XML extraction from attachment-embedded PDFs
- Fixed Confluence Cloud default macro parameters in the editor
- Update vendored drawio-plantuml bundle to commit 7bb048c

06-AUG-2026: 31.1.8

- Rejects script schemes in image sources and typed geometry input
- Matches libavoid drag previews to the drop semantics over containers
- Removes transparentBounds containers on ungroup
- Adds config keys for default page background and grid colors
- Adds ac/aj twin routes for workers shadowed by the channel-router catch-alls
- Registers installed PWA as file handler for .drawio files [jgraph/drawio#3302]
- Adds translated basic shape names and multi-word term lookup to shape search [jgraph/drawio#5518]
- Fixes flickering and inconsistent previews for clone drags
- Fixes move previews of dangling libavoid edges and handle visibility
- Adds mermaid config key for default Mermaid settings
- Fixes desktop shape library saves offering diagram file types
- Updates stable to 31.1.7
- Adds removeLibraryConfirm for products that archive libraries
- Adds space inside containers for modifier drag [jgraph/drawio#5544]
- Adds themes URL parameter for theme menu in embed mode [jgraph/drawio#5586]
- Adds wedge callout shape with movable tip [jgraph/drawio#4931]

04-AUG-2026: 31.1.7

- Adds Sidebar-ArchiMate4.js to build

04-AUG-2026: 31.1.6

- Bump actions/checkout from 6.1.0 to 7.0.1
- Moves stable channel to 31.1.5
- Adds Archimate v4 shapes
- Moves text flow options into the common properties section
- Fixes configured default edge font not applied to new edges and edge labels
- Fixes missing palette titles in savesidebar screenshots
- Updates tooling dependencies
- Tooling build fixes
- Updates wrangler version
- Adds a PNG preview to the Archimate 4 library
- Fixes the Archimate 4 device aspect ratio in element and icon notations
- Fixes missing save button on expanded palettes in savesidebar mode
- Removes plantuml and emf references
- Removal of old lambdas
- Matches libavoid drag previews to the committed route for targets inside containers
- Persists cursor sharing and remote cursor settings
- Excludes self-loops from libavoid routing to keep the loop style
- Adds Ctrl+Alt+T shortcut for Run Last Layout
- Adjust toolbar item spacing and zoom input minimum width for better layout
- Adds connecting edge to shape picker drag previews
- Adds offline language packs, language dialog and config editor i18n
- Adds applyLayouts option to run a diagram's child layouts on load
- Updates DOMPurify from 3.4.12 to 3.4.13
- Raises the AI prompt limit to 100K characters for Atlassian origins
- Reads the Atlassian AI prompt limit from a global variable
- Adds defaultLanguages configuration for preinstalled offline languages
- Stops the local lightbox rewriting the host page URL and title
- Keeps root presentation attributes on inlined SVG image symbols [jgraph/drawio#5724]
- Routes the animated GIF export through the save dialog
- Heals stale peer rosters so changes are not skipped as alone
- Adds a kill switch and a socket factory for the join announce
- Broadcasts newClient to the channel so earlier clients see joiners
- Checks link and CSS values in their serialized form [bugcrowd aa2c2792-33b0-4770-98aa-86684bec43b9]
- Repairs truncated AI responses to render the partial diagram with a hint
- Requires protocol and host to match in App.isSameDomain
- Accepts the leading slash form of built-in plugins
- Updates the generate/v3 default models to Opus 5 and Flash Lite
- Adds OpenAI as the primary budget provider for generate/v3
- Raises the premium draw.io token cap for Opus 5 adaptive thinking
- Scopes CSS rules of inlined SVG image symbols in exports [jgraph/drawio#5726]

29-JUL-2026: 31.1.5

- Fixes distance guide moving cells onto their neighbours [jgraph/drawio#5722]
- Fixes centered resize of rotated cells changing the other extent [jgraph/drawio#5723]
- Ships the Miro importer in extensions.min.js
- Fixes style removals being dropped from realtime patches

29-JUL-2026: 31.1.4

- Updates to imageResize tool
- Removes external plugin support from the desktop app
- Fixes leading semicolon when removing style key followed by empty entries
- Fixes centered text flow alignment at wrap boundaries
- Removes dark mode media query listener on destroy
- Fixes wrapped stand-alone mode and Electron runtime messages
- Applies style removals in patchCell
- Adds size guides for the size of shapes while resizing
- Fixes the naming issue in Flowchart shapes
- Reorders recent changes in Flowcharts stencil file
- Fixes swapped Or/Summing junction shapes in Miro import
- Fixes silent drop of invalid JSON and font search in configuration editor [jgraph/drawio-desktop#2500]
- Update vendored drawio-plantuml bundle to commit dfc660e
- Added some translation keys
- Copy the image in addition to opening it in a new window for lightbox export button (such that if a new window is not allowed, the user can access the image) [DID-19756]
- Update vendored drawio-plantuml bundle to commit 44ae98b
- Integrates equal-distance guides into mxGuide, improves position guides
- Adds edge alignment guides for resizing vertices
- Adds config options for position and distance guides
- Snaps the visible bounds of rotated cells to the grid [jgraph/drawio#2385]
- Adds cell selectors for dynamic viewbox custom actions [jgraph/drawio#4584]
- Fixes stuck segment handle next to snapped terminal points [jgraph/drawio#1137]
- Snaps the size instead of the dragged edge for rotated cells [jgraph/drawio#2385]
- Aligns guides with the visible bounds of rotated cells [jgraph/drawio#2385]
- Fixes distribute with spacing at zoom levels other than 100% [jgraph/drawio#5721]
- Fixes wheel zoom skipping 100% by using fixed zoom stops
- Fixes GraphML import issue
- Defends against prototype pollution [GHSA-vvpv-f297-2ghp]
- Fixes GraphML import

27-JUL-2026: 31.1.3

- De-enroll the preprod worker relic; document the Cloudflare Pages path
- Remove the unused preprod proxy worker
- Verify the build under test on the monitoring checklist
- Add cache functionality to preprod
- Allow preprod.diagrams.net through the convert worker referer gate
- Exclude .claude and internal docs from the public repo staging
- Adds host-targeted ac/aj twins for the auth-worker routes [DID-19731]
- Adds host-targeted ac/aj twins for the auth-worker routes [DID-19731]
- Adds host-targeted ac/aj twin for the fast-rt websocket route [DID-19733]
- Moves the production stable channel to 31.1.2
- Adds the fast-rt ac/aj twin routes and moves production stable to 31.1.2

26-JUL-2026: 31.1.2

- Re-enroll auth-workers: keep_vars protects dashboard variables
- Moves stable channel to 31.0.2

26-JUL-2026: 31.1.1

- cf-deploy: de-enroll auth-workers pending config reconciliation
- build-preprod: repoint dashboard links to the custom domain
- cf-deploy: Node 22 for wrangler 4

26-JUL-2026: 31.1.0

- Fixes font color applying to previously selected cells [jgraph/drawio-desktop#2421]
- Documents the live release-channel system
- Fixes sidebar order of restored libraries [jgraph/drawio#5715]
- Adds multi-cell support to the Edit Data dialog
- Keeps the scroll position when inserting cells from the sidebar if any part of the inserted cell is visible [jgraph/drawio#263]
- Adds page size image export to the desktop CLI renderer [jgraph/drawio-desktop#2481]
- Adds a defaultTransparentGroups configuration option for automatic group sizes [jgraph/drawio#5688]
- Adds a file properties option to include notes in saved PDF files in the desktop app
- Fixes detection of label fonts in SVG export [jgraph/drawio#5258]
- Fixes libavoid auto-routing of terminals dropped into layout containers
- Stops realtime cache requests on domains without a reachable cache
- Moves src/main/java to src/main/server/java
- tooling changes for java folder move
- Adds cloudflare workers to project
- Depenency updates
- New deployment system with cf integrated
- Minor change to release-monitor compatibiilty date
- Updates build readme
- Release pipeline SOC 2 hardening: durable evidence, verified identity, out-of-band change detection
- Fix bot-push workflow triggering; actor-gate build-commit validation; vendor register
- Document applied rulesets + preprod PR-only limitation and app-identity upgrade path
- Set edge-drift monitor targets (account + prod zone ids) in release-monitor vars
- release-monitor: move to Access-protected custom domain, verify identity in-worker
- release-monitor: CSRF guard, no-overwrite on attestations, disable preview URLs
- release-monitor: enable Access JWT verification (team domain + AUD)
- release-monitor: withhold heartbeat when BetterStack config is missing
- Binds SVG export popups only to the icons the export created
- Checks the link scheme on the SVG export link icon
- Add release-monitor control self-test workflow
- selftest: widen the incident-wait budget to 10 minutes

23-JUL-2026: 31.0.2

- Applies shapeInside to all insertion paths of the supported shapes [jgraph/drawio#4535]
- Improves the conversation list in the Generate dialog

23-JUL-2026: 31.0.1

- Adds backoff, max attempts and reactivation retry for realtime socket rejoin
- Patches the visible document on merge while the realtime socket is disconnected
- Hardens the release channel fail-safe paths
- Documents the stable channel promote runbook in the release README

23-JUL-2026: 31.0.0

- Supports fontFamily/fontUrl entries in the config editor font chips
- Fixes selection border position for rotated edge labels with non-centered alignment
- Creates writable before data generation in local file save
- Resets saving state on synchronous errors in Drive save
- Reports busy error for concurrent Drive save attempts
- Uses core oval/halfCircle markers for SysML interface templates
- Update vendored drawio-plantuml bundle to commit bacc703
- Hides busy save errors for automatic saves
- Shows SVG export tooltip icons for plain text tooltips
- Removes note icon tooltip and uses pointer cursor for overlay icons
- Added more features to user mention in comments to support Confluence (accountId, no notification, liveSearch, ...)
- Fixes displaced children of negative-size shapes in VSDX import
- Fixes crafted-diagram DoS from prototype-member shape/marker/style names
- Adds base support for text flow in shapes [jgraph/drawio#4535]
- Adds search ranking weights to list current shape libraries before superseded ones
- Fixes stale shape search results when the search term is deleted
- Fixes more prototype-member map lookups from untrusted style/import data
- Adds forced and fully disabled outline connect modes via outlineConnect style
- Guards ELK childLayout spec against prototype-member layout names
- Renames textFlowShapePadding to shapeInsidePadding
- Adds automatic font size support for text flow in shapes
- Hardens libavoid routing core maps against prototype-member cell ids
- Fixes prototype pollution in Confluence page-id CSV import
- Fixes prototype pollution in Confluence custom-content admin reindex
- Guards embed RPC dispatch allow-list against inherited method names
- Adds label padding between text and label background [jgraph/drawio#3355]
- Fixes decimal values in numbers-type properties in the property grid
- Adds text flow for SVG label conversion [jgraph/drawio#4535]
- Extends centered text flow overflow above the shape
- Triggers autosave for page view changes in inline embed mode
- Fixes custom links not working after failed link action [jgraph/drawio-desktop#2161]
- Refines centered text flow overflow symmetry
- Enables text flow for supported shapes in the General palette
- Clips expanded fill patterns to their tiles for printing
- Adds fill pattern properties for normal mode [jgraph/drawio#3201]
- Fixes vertical text flow alignment and joins detached trailing lines [jgraph/drawio#4535]
- Adds customTemplates configuration option
- Fixes ignored Labels option for label style colors in Adaptive Colors
- Improves Adaptive Colors window layout
- Embeds only the selected page in single page CLI exports [jgraph/drawio-desktop#2365]
- Adds beta/stable release channel plumbing for app.diagrams.net
- Enforces minimum table size and non-negative cell geometries in table layout
- Matches editor text flow to the rendered label [jgraph/drawio#4535]
- Fixes caret position when typing starts the text flow editor [jgraph/drawio#4535]
- Reduces outgoing realtime traffic while no other collaborators are connected

22-JUL-2026: 30.4.3

- Extracts diagram XML from PDFs rewritten by external editors
- Adds tooltip, link and note icons to SVG export and notes to PDF export
- Hides SVG export icons and popups in print output
- Routes UI colors through :root theme variables for custom color schemes [jgraph/drawio#5692]
- Guards untrusted-key maps against prototype pollution (patch/decode XSS)

22-JUL-2026: 30.4.2

- Adds anchored comments, mentions and comment indicators for Google Drive files [jgraph/drawio#1694]
- Improves version handling in release flow
- Moves comment indicators to the bottom right corner [jgraph/drawio#1694]
- Adds notes for cells with indicator icons and a WYSIWYG markup editor, also used for editing tooltips [jgraph/drawio#1547]
- Adapts locked file status icon to dark mode
- Sanitizes UML lifelineMirror foot label to prevent stored XSS
- Adds mandatory security-review guidance to CLAUDE.md
- Removes keyboard shortcut from editNote action [jgraph/drawio#1547]
- Adds Alt+Shift+N keyboard shortcut for editNote action [jgraph/drawio#1547]
- Moves compact mode restore from EditorUi to App to fix presentation mode error
- Adds Ctrl/Cmd+cursor page navigation in presentation mode
- Allows the replace icon to replace a shape with a dragged group [jgraph/drawio#3687]
- Adds preview button to the Mermaid and PlantUML insert/edit dialogs [DID-8862]
- Fixes generate tile state after errors and persists last generated diagram in template dialog
- Shows note box on note icon click with edit button if editable [jgraph/drawio#1547]
- Adds enabledTemplateSections config option to filter template dialog sections [jgraph/drawio#1417]
- Removes stale gd plugin registry entry for deleted googledrive.js
- Removes unused fonts from SVG export with external font references [jgraph/drawio#5000]
- Uses explicit font lookups for used fonts in SVG exports [jgraph/drawio#5000]
- Adds PDF as an editable file format in the desktop app [jgraph/drawio#4389]
- Fixes empty diagram overwriting PNGs without diagram data in the desktop app
- Uses null prototype for custom font lookups keyed by font name
- Renders tooltip markup as width-limited HTML for the tooltip icon [jgraph/drawio#1547]
- Escapes custom font names and URLs in exported and document CSS
- Escapes custom font names and URLs in print and export server CSS [jgraph/drawio#5000]
- vendor: update mermaid bundle (dev a23de8e — DID-19662 sequence activation events, bar child-y, box-edge margins)

21-JUL-2026: 30.4.1

- Offers built-in libraries as chips in shape search
- Skips installed icon sets in shape search chips
- Updates pako to 2.2.0
- Removes wasm-unsafe-eval from desktop
- Reserves stack layout title space on the painted swimlane side [jgraph/drawio#5362]
- Fixes content shift against the crop in image export [jgraph/drawio#4938]
- Hides device and download options for noDevice=1 in save dialog unless no other option is available
- Accepts CSS-style space-separated values in the group padding input
- Applies per-side group padding in extendParent and contractParent
- Clips page breaks, page guides and ruler ticks to the visible area for extreme cell coordinates [jgraph/drawio#3251]
- Limits the number of pages in the print output [jgraph/drawio#3251]
- Limits the number of pages in the export renderer print output [jgraph/drawio#3251]
- Handles invalid URI encoding in string properties
- Repairs invalid characters and HTML entities in XML parsing and output
- Adds resources configuration option for overriding and adding language resources [jgraph/drawio#1191]
- Closes preview tooltips on escape before closing the dialog
- Fixes clipping at the crop in image export [jgraph/drawio#4938]
- Extends export bounds by the crisp offset of painted shapes [jgraph/drawio#4938]
- Fixes coordinate frame, knot vector and cubic fitting in VSDX NURBS edge import [jgraph/drawio#2104]
- Converts Lucidchart curves to exact cubic bezier edges on import [jgraph/drawio#1047]
- Converts VSDX edge arcs, elliptical arcs, polylines and beziers to exact curves on import [jgraph/drawio#2104]
- Fixes offset of cells imported after a same-block loop edge in Lucidchart import
- Converts VSDX freeform splines to exact cubic beziers in shape geometry [jgraph/drawio#2104]
- Improvements to GraphML curve import
- Export dialog defaults to current file folder [jgraph/drawio-desktop#2132]

18-JUL-2026: 30.4.0

- Fixes sidebar drop preview position on children of transparentBounds groups
- Records the preserve origin flag in the last layout spec
- Shows file properties menu item for svg and html files in all themes
- Routes non-tree edges of tree layouts as orthogonal overlays
- Adds grouped icon search with installable set chips
- Build of version 30.4.0
- Build of version 30.4.0

18-JUL-2026: 30.4.0

- Build of version 30.4.0

18-JUL-2026: 30.4.0



17-JUL-2026: 30.3.14

- Replaces invalid transparent fill value with none in SVG export [jgraph/drawio#5563]
- Resolves light-dark colors for text fallbacks in SVG export
- Adds local file path and file URL support for library and template URLs in the desktop app [jgraph/drawio-desktop#1278]
- Adds NMOS and PMOS shapes with body diode to Electrical/Transistors [jgraph/drawio#5412]
- Adopts new file stat when content unchanged on watched file change [jgraph/drawio-desktop#2312]
- Caches picked fonts for saving SVG files with embedded fonts [jgraph/drawio#2886]
- Adds per-file option for embedding fonts in saved SVG files [jgraph/drawio#2886]
- Loads fonts before updating the file data in saves [jgraph/drawio#2886]
- Adds save support to the desktop unsaved changes close dialog [jgraph/drawio-desktop#2335]
- Looks through edges to keep occupied fixed points connectable [jgraph/drawio-desktop#1245]

16-JUL-2026: 30.3.13

- Clarifies override help and separates toggle lists in Configuration dialog
- Uses picked shape from hover shape picker in tree containers
- Removes Quip-only internationalization and mathematicalTypesetting toggles from the Configuration dialog
- Moves Copy on Connect, Stop Editing on Enter and Show Start Screen options to the configuration [jgraph/drawio#2196]
- Requires release versions to directly follow the last diagramly-* tag
- Centers find matches that are not fully visible in the viewport [jgraph/drawio#5276]
- Centers selections moved or resized with the cursor keys that are not fully visible in the viewport [jgraph/drawio#4841]
- Commits pending cursor-key moves before mouse gestures to avoid the open move session being continued with a mouse-based delta
- Fixes compounding page scale in multi-page PDF export with fit page enabled [jgraph/drawio-desktop#2490]
- Removes incorrect release numbering

- Removes cssVars rendering experiment from mxImageShape
- Adds cssVars style for theming embedded SVG images
- Adds cssVars support for same-origin SVG image URLs
- Adds light-dark support and prefixed style keys for cssVars
- Shares repeated images in SVG exports via defs and use tags
- Inlines themed SVG images as shared symbols in exports
- Inlines SVG images referenced in use tags when embedding images
- Tolerates the -- prefix in declared cssVars names
- Keeps IDs of shared images when embedding SVG images in exports
- Collapses image definitions with shared data when embedding images
- Shares unthemed instances of cssVars SVG images in exports
- Converts image URLs to data URIs when setting cssVars colors
- Shares image definitions across sizes and inlines single-use images
- Keeps aspect handling when embedding SVG images in exports
- Collapses inline images with shared data when embedding images
- Canonicalizes editable CSS rules for shared symbols in exports
- Shares image data across aspect modes and themed symbols in exports
- Removes cssVars test icon
- Sets CSS vars atomically with embedded image and keeps original URL
- Add scroll option to JSON embed protocol load message
- Adds search filter for Sharepoint sites in OneDrive picker [jgraph/drawio#5012]
- Adds keyboardShortcuts configuration option for custom hotkeys [jgraph/drawio#4182]
- Keeps fractional grid alignment for dragged edge points [jgraph/drawio#5675]
- Embeds fonts in saved SVG files [jgraph/drawio#2886]
- Fixes dropped PDF export after print dialog spinner
- Adds appearance option in embed SVG dialog
- Moves appearance option into advanced section of embed dialogs
- Left aligns edit select with other dropdowns in embed dialogs
- Shows custom edit URL as tooltip in embed dialogs
- Adds copy option for text output in save dialog
- Disables initial page option for current page links in publish dialog
- Fixes missing CSS class for close button in embed dialog
- Shows save dialog for embed HTML, image and SVG
- Uses blob URLs to show data in new windows
- Adds pages option in embed SVG dialog
- vendor: update mermaid bundle (dev e44ce3f — c4 row wrapping tracks screen.availWidth like upstream)
- Adds missing translations for fill styles, style previews, font dialog and default page names [jgraph/drawio#4006]
- Ignores navigator.onLine in desktop app as all resources are local [jgraph/drawio-desktop#2485]
- Replaces deprecated font elements with spans in SVG export [jgraph/drawio#5679]
- Wraps and clips text fallbacks for HTML labels in SVG export [jgraph/drawio#5687]
- Stops desktop plugin loading from persisting resolved plugin paths in settings [jgraph/drawio-desktop#1993]
- Adds Stop Editing on Enter option [jgraph/drawio#2196]

15-JUL-2026: 30.3.12

- Replaces deprecated font elements with spans in SVG export [jgraph/drawio#5679]
- Update vendored drawio-plantuml bundle to commit 90f4230
- Update vendored drawio-plantuml bundle to commit a7bd5b0
- Changes default grid color from d0 to e6
- Ship libavoid as a pure-JS vendored bundle (no WASM, no eval)
- Refresh libavoid bundle: bind ConnRef endpoint setters (fixes previews)
- Improves dialog title spacing and page controls consistency
- Fixes clipped descenders in the Page Setup initial view value
- Migrates one-off dialog secondary-text styles to geDialogHint
- Route dangling libavoid edge ends so the commit matches the drag preview
- Uses padding 3 and keeps text styles in edge label shape replace [jgraph/drawio#5284]
- Converts the i18n resources submodule to regular files in this repo
- Removes -- from comments - not allowed
- Splits CLAUDE.md into per-directory files and docs/claude guides
- Updates libavoid algorithm-sync docs to the CDN topology
- Updates libavoid bundle: unsatisfiable nudging no longer aborts the router
- Moves the ER weak key underline into the cell style [jgraph/drawio#5536]
- Scales rotated group children along the rotated axes [jgraph/drawio#4890]
- Updates translations
- Uses fill and stroke colors for sized edge labels in style tiles [jgraph/drawio#5284]
- Applies full default style to text cells when set from a text cell [jgraph/drawio#3535]
- Serializes connection points with six decimal places [jgraph/drawio#4901]
- Shows spinner while creating print output
- Preserves opacity for embedded SVG images [jgraph/drawio#4582]
- Applies font style to advanced ruler numbers [jgraph/drawio#5685]
- Fixes text background color state for multi-line selections [jgraph/drawio#5250]
- Fixes opening shared OneDrive files via Open button [jgraph/drawio#3758]
- Applies fixed dark/light theme in export page rendering [jgraph/drawio-desktop#2295]

14-JUL-2026: 30.3.11

- Improves consistency of the export and publish dialogs
- Fixes boot error when a stale cached extensions.min.js lacks LibavoidRouting.isSupported

14-JUL-2026: 30.3.10



14-JUL-2026: 30.3.9

- Fixes ELK layout statics being wiped by double bundle load [jgraph/drawio-desktop#2471]
- Extends replace shape timeout to 3500ms [jgraph/drawio-desktop#2474]
- Updates DOMPurify from 3.4.11 to 3.4.12
- Fixes NaN edge label geometry for zero-length edges in getRelativePoint [jgraph/drawio#5498]
- Replaces per-row delete with a selection Delete in the Animation dialog [jgraph/drawio#5672]
- Adds replace shape via drag and drop for edge labels [jgraph/drawio#5284]
- Fixes edge labels left behind by the libavoid move preview [jgraph/drawio#5284]
- Fixes inconsistent spacing in save dialog
- Graceful fallback for libavoid if wasm-unsafe-eval not available
- Lazy sidebar palette init for expanded shape libraries [jgraph/drawio#5690]
- Fixes clipped major grid lines at tile boundaries [jgraph/drawio#212]
- Adds Sort Pages action [jgraph/drawio#5549]
- Updates SAP generic icons and adds Joule Studio icon [jgraph/drawio#5241]
- Rotate group children in rotation prompt and geometry dialog [jgraph/drawio#4463]

13-JUL-2026: 30.3.8



13-JUL-2026: 30.3.7

- Update an inserted AI diagram in place when iterating on it
- Fix white model dropdown in dark mode; shrink and thicken the usage ring
- Use 5 for the context-usage ring thickness
- Give the model select an explicit background (fixes white dropdown)
- Use the describeYourDiagram placeholder for the chat input
- Render AI diagram replies inline; retry only on error
- Add color-scheme light dark to Mermaid and PlantUML image cells
- Arrange top-left cell icons as move, lock below, edit right
- Fix Automatic checkbox alignment, show Group Padding for styled cells
- Match Mermaid and PlantUML image padding with the diagram groups
- Disables AI in desktop when enableai set false in config
- Updates excludes
- Fixes layout icon in simple theme
- Fewer insert icons for small screens in simple theme
- Add foldingIconSize cell style and Format panel property [DID-19577]
- Removes Generate and Table quick access toolbar icons in simple theme
- Removes layout and table icon from simple toolbar
- Patches java SSRF - GHSA-m3q9-cwfq-hcjc
- Completes SSRF blocklist in proxy - GHSA-xc39-mcq4-fr4q
- Updates azure icons [jgraph/drawio#5301]
- Fixes visibility of unchecked custom libraries in More Shapes dialog [jgraph/drawio#5491]
- Fixes dark mode colors in animated GIF export [jgraph/drawio#5619]
- Fixes missing line jump where overlapping edges cross a third edge [jgraph/drawio#5582]
- Adds partial and word-boundary matching to shape search for imported library names [jgraph/drawio#5461]
- Fixes dark mode colors in Copy as Image/SVG [jgraph/drawio#5455]
- Adds copy/paste of steps in the Animation dialog [jgraph/drawio#5672]
- Removes arrow, generate and layout from sketch sidebar
- Adds ground, earth tags for ground symbols
- Unifies background options in Page Setup and Format panel
- Adds curved style support for link and arrow connectors
- Moves less common print dialog options into collapsed Advanced section
- Adds connectable=0 to Insert > Layout containers
- Fixes libavoid routing for transparentBounds edge terminals
- Removes unused lightboxAnimation key in all locales
- Fixes page scale being ignored in desktop print output [jgraph/drawio#5540]
- Caps page-break count to prevent DoS from extreme cell coordinates

08-JUL-2026: 30.3.6

- Remove server-rendered PlantUML outputs, add native Image option
- Fixes replacement position when switching diagram to image on edit

08-JUL-2026: 30.3.5

- Appends version to SW revisions

08-JUL-2026: 30.3.4

- Set diagram as the default for plantuml. Prevent atlassian and desktop from egress

08-JUL-2026: 30.3.3

- Clean up ChatWindow generate dialog (phase 1): dead code, fallback bug, type seam
- Add Reply (follow-up) option to ChatWindow responses [BYO-key only]
- Offer Reply on text-only ChatWindow answers; factor out addReplyButton
- Phase 2: split ChatWindow mode from context in the generate dialog
- Replace per-response Reply button with an "Include conversation" checkbox
- Phase 3: move clipboard verbs + reset out of the mode select into Commands menu
- Rework generate dialog as a chat: conversation list, attach menu, model selector
- Cap free draw.io backend prompts at 1000 chars with a clear error
- Raise free draw.io model prompt cap to 10000 chars, name the tier in the error
- Add Claude 4.8 Opus to the AI models, replacing Claude 4.6 Sonnet
- Add dictation to the chat composer; require XML back for XML modifications
- Cap the free backend on the full sent payload; add a ring char counter
- Replace preconfigured Claude 4.6 Opus with Claude Sonnet 5 in aiModels
- Fix PlantUML loader crash on preprod + mirrored lifelines
- Remove per-message delete from the chat; delete whole threads in the sidebar
- Refine the free-tier counter into a Claude-style dial with popover
- Zoom and pan for scaled-down sidebar tooltip previews
- Update resources submodule for the generate-dialog chat UI strings
- Update vendored drawio-plantuml bundle to commit 393944e
- Replace preconfigured Sonnet 5 with Opus 4.6 and default the chat window to 440x440

08-JUL-2026: 30.3.2

- Add option to disable font embedding in SVG output [jgraph/drawio#5337]
- Fix stale Configuration dialog pointer in CLAUDE.md
- Paste style only applies to selected cells and their composite parts [jgraph/drawio#5374]
- Retain manual export settings for the session [jgraph/drawio#5653]
- Move global shadow option from View section to diagram style panel
- Normalize transparentBounds geometry before layout manager runs
- Group padding option for all containers, honored by autosize
- Reserve swimlane footerSize in transparentBounds and layout parent resize
- Border band targets connections at containers under overlapping children [jgraph/drawio#5374]
- Update vendored drawio-plantuml bundle to commit f6a243a
- Guiding placeholder for empty animation and action step lists
- Adds wasm-unsafe-eval to desktop CSP

07-JUL-2026: 30.3.1

- Adds wasm-unsafe-eval to CSP
- Add lifelineMirror option to UML lifeline shape
- vendor: update mermaid bundle (dev 89e95b2 — opt-in singleLifelines sequence lifelines)
- Accept URL-encoded newEdgeStyle values
- Add Mirror Head property for UML lifeline shape
- vendor: update mermaid bundle (dev d80fd5d — single-cell mirrored lifelines by default)
- Avoids unsafe-eval on libavoid

07-JUL-2026: 30.3.0

- Add libavoid orthogonal edge routing (Arrange > Layout)
- fix: upgrade p3x-xml2json from 2024.4.116 to 2024.4.121
- Add libavoid auto-routing edge style with live obstacle avoidance
- Add live libavoid preview while dragging an edge endpoint
- Fix infinite recursion in mxEdgeHandler.reset (var-name collision)
- Make libavoid endpoint-drag preview exactly match the committed route
- Add libavoid entry to the edge-style routing picker
- Drop the edge-panel auto-route checkbox in favor of the routing-picker entry
- Add libavoid routing entry to the toolbar and inline-toolbar edge pickers
- Dim waypoint handles on libavoid auto-routed edges
- Re-route libavoid edges a moved shape lands on, not just connected ones
- Route the new-edge preview when dragging from the hover-icon arrows
- Make libavoid obstacle-avoiding routing the default edge style
- Fix new-edge preview (diagonal segments) and apply routing on insert
- Route the new-edge preview through the handler's waypoint path (orthogonal endpoints)
- Re-route libavoid edges when a new shape is inserted onto their path
- Respect fixed connection points in libavoid routing (no terminal intersection)
- Honour fixed anchors on newly created edges (re-route on CONNECT)
- Read the fresh edge style for fixed-anchor routing on insert
- Live-route connected edges while dragging a shape (move preview)
- Fix shape-move live preview routing against reset cell states
- Recompute edge endpoints in shape-move preview (updateFixedTerminalPoints)
- Re-route bent auto-edges on endpoint drag; harden move preview
- Honour fixed anchors in the endpoint-drag preview
- Pin the dragged end to a snapped connection point in the endpoint preview
- Honour fixed anchors in the new-connection (hover-icon) preview
- Expose libavoid orthogonal routing as a JSON layout (CLI/embed/headless)
- Update drawio-i18n: libavoid orthogonal routing strings in all locales
- Address libavoid code review: WASM leak, deferred-flag, robustness, churn
- Fix libavoid shape-move preview for jump-style and overlapped edges
- Persist the global current edge style across sessions
- Add routing-strategy switch for libavoid shape-move preview
- Revert libavoid routing as the default edge style
- Expose Diagram/Image dropdown in the Mermaid edit dialog
- Expose Bounded Label toggle for all shapes that support boundedLbl
- vendor: update mermaid bundle (dev eb22455 — combined features + LCA edge fix)
- Fix stale-detour flash when an endpoint drag straightens a libavoid edge
- Warm up MathJax packages before export math measure [jgraph/drawio#5564]
- Include edges in group bounds so edge-only selections group again [jgraph/drawio#5656]
- Escalate edges to the transparentBounds parent on click, like shapes
- Highlight the active item in each inline connection popover section
- Add a Grid option to the SVG export dialog
- Clamp negative arc radicand that dropped semicircle stencil arcs [jgraph/drawio#956]
- Escalate z-order changes on table cells and rows to the table [jgraph/drawio#4350]
- Revert "feat(appUpdate): notify of available update via notification bell" [jgraph/drawio#5658]
- Add Check for Updates to the Help menu of the hosted versions [jgraph/drawio#5658]
- Apply text color as inline style to avoid red <font> placeholder in dark mode [jgraph/drawio-desktop#2076]
- Honour jettySize at fixed connection points in libavoid routing
- Default a cleared jettySize property to auto instead of 0
- Fix cleared jettySize reverting to 0 via the property editor's blur re-run
- Remove Check for Updates from the Help menu [jgraph/drawio#5658]
- Remove the jettySize key from the style for auto instead of writing it
- Fix white background in fixed-theme dark SVG exports on browsers without light-dark()
- Add Make a Copy option to publish link dialogs for stored files
- Replace radio buttons with dropdown in the embed HTML dialog
- Fix silent CLI PNG/JPEG export failure when shadow is enabled [jgraph/drawio-desktop#2230]
- Fix libavoid loader parse error from glob pattern in header comment
- Add libavoid and parallels layout shorthands, Run Last Layout and toolbar layout menu
- Add experimental native PlantUML diagram insert via drawio-plantuml
- Fix rounded corners on headerless tables
- Confirm before closing diagram source-edit dialogs with unapplied changes
- Deselect locked-group descendants when the lock icon engages
- Unclip focus halo on bottom-row controls in textarea dialogs
- Fix libavoid routing of compact/wrapped diagrams; menu order
- Replace Insert > Layout dialogs with live layout containers
- Use ELK layouts for Insert > Layout containers via async layout manager
- Straight edges for the radial tree layout
- Fit the container to the circle in circleLayout childLayouts
- Add title-side margin in ELK layout containers
- Share layout container styles with the Advanced sidebar, match legacy spacing
- Run ELK childLayouts synchronously inside the triggering edit
- Fix self-loop misdetection in applyNewEdgeStyle for tree tools
- Use transparentBounds for the tree containers in the sidebar
- Center the tree containers' edge channel between the levels
- Refresh drawio-elk bundle after rebase onto upstream bridge fixes
- Fix unit snap side for right-side numbering in rack cabinet [jgraph/drawio#5342]
- Skip enclosing containers as libavoid routing obstacles
- Make libavoid auto-routing defer to layout containers
- Keep rigid translation in libavoid shape-move preview
- Document libavoid container ownership and routing changes
- Fix un-undoable ghost routes from the libavoid move preview
- Skip jetty checkpoints libavoid cannot honour
- Demote libavoid's skipped-checkpoint warnings to console.debug
- Skip layouts for cells outside the model in the layout manager
- vendor: update mermaid bundle (dev 76232de — flowchart edge ids/animation/linkStyle, blank subgraph labels + transparent containers)
- Refresh drawio-elk bundle: selection-as-root scopes to connected components
- Higher-precision units for grid and page size [jgraph/drawio-desktop#1739]
- Release libavoid auto-routing on edges an ELK run routes
- Refresh drawio-elk bundle: anchor content when the layout root is transparentBounds
- Insert > Layout containers become transparentBounds groups
- Legacy shared-stem tree edges for the ELK tree layout
- Refresh drawio-elk bundle: center tree-edge entries on the child
- Make shapes inside layout containers resizable
- Updates MathJax from 4.1.2 to 4.1.3
- Cap libavoid jetty stubs to the terminal pair's gap clearance
- Lazy libavoid jetty enforcement; jetty cap moves into the core
- Refresh drawio-mermaid bundle: reject invalid links like upstream
- Keep the update mermaid dialog open on parse errors
- Restore source-defined connector ends on mermaid updates
- Layout runs retarget a selected layout container's childLayout
- URL-encode JSON childLayout style values
- Support flow animation on sketch style edges
- Lay out containers as units in ELK runs, add group padding option
- Keep relative and part=1 cells fixed inside their parent in ELK runs
- Never move connected ports and docked cells in ELK runs
- Skip labels of transparentBounds cells in the ELK input
- Fixes layout dialog title
- Route edges from corner-docked ports out their actual side
- Honor diagram background in CLI SVG export, support --transparent
- Strip trailing zeros from mm display [jgraph/drawio-desktop#1739]
- Stop typing shim clipboard branch stealing focus from Find [jgraph/drawio-desktop#2465]
- Make View section in Format panel collapsible with persistent state
- Close the nested async childLayout autosave loop
- Reject non-converging childLayouts and method-clobbering configs
- Reflow ELK layout boxes on container collapse/expand and shape-part resize
- Cascade tree container deletes with an orphan check
- Select cell inserted via hover arrows in tree containers
- Expose containerType in the Format panel property grid
- Fall back to minimal delete when a cascade would wipe a tree container
- Straighten ELK fan-in/fan-out stubs at inset perimeters and ports
- Retain per-edge corner styles across layout container re-runs
- Fix center-attached fan pins and conservative-mode fan-in kinks
- Unify the ELK connector dropdown on the strict orthogonal mode
- Delete edges in tree containers without the orphan cascade
- Honor port-constraint masks in ELK layouts, expose combined values
- Keep user-connected fixed anchors across ELK layout runs
- Honor port-constraint masks in libavoid routing, re-route on edits
- Keep free edge ends off the corners of anchored nodes in ELK runs
- Honor snapToPoint in libavoid routing via candidate anchor pins
- Honor snapToPoint and jettySize in ELK runs, spread free ports by destination
- Keep the final approach straight when a snapped end offsets a zero-bend route
- Snap masked ends to declared anchors in ELK runs, straighten jetty stub tips
- Update vendored drawio-plantuml bundle to commit 5147280
- Update vendored drawio-plantuml bundle to commit a403b72
- Update vendored drawio-plantuml bundle to commit 95fc435
- Honor explicit jettySize at masked ends in ELK runs
- chore(mermaid): rebuild bundle with sequence edge fixes [DID-19423, DID-19529]

30-JUN-2026: 30.2.7

- Expose the Diagram/Image output dropdown when editing a Mermaid cell
- Adds experimental loop handle
- fix: Enhance inner loop handling and waypoint management in edge rendering
- Implement inner loop waypoints for enhanced loop handling in edge styles
- Refactor loop handling for edge styles: enhance inner loop waypoint management and improve geometry updates
- Add 3-handle self-loop editing for inner-loop edges
- Reverse self-loops and add loop direction controls
- Make inner-loop editing robust on non-rectangular shapes; functional loop direction
- Removes unused package lock to prevent false positive security alerts
- Add layout option to #create hash and embed load action
- Fixes missing ID prefix in embed mode
- Add passThroughKeys embed config to forward keyboard chords to the host
- Add suppressNewWindows embed mode to route links and popups through the host
- Add tooltips=0 URL param to suppress cell tooltips
- Anchor the shape-picker preview at the cursor in embedInline mode
- Keep the inline edge toolbar popover inside the viewport
- Quote font family names that are not valid CSS identifiers [jgraph/drawio-desktop#1604]
- Avoid "Error undefined" message on terminated Dropbox requests
- Replace Workbox CLI service-worker generation with an in-build Java helper
- Raise polygon vertex precision and let Alt ignore the grid [jgraph/drawio#5380]
- Make cursor-key move respect the document unit [jgraph/drawio#4812]
- Rotate group children for the angle field, turn and rotate click [jgraph/drawio#3955]
- Bump drawio-i18n: fix inconsistent English label capitalization
- Repaint table grid lines hidden by filled cell fills
- Keep line/fill color checkbox visible (unchecked) for inherited colors
- Add UI to set a color to inherit from the parent
- Point in-app help links to the docs site instead of GitHub Discussions
- Corrects C4 legend colours
- chore(mermaid): rebuild bundle with DID-19423 flowchart fixes
- Fix DNS-rebinding SSRF in image proxy (GHSA-3v4h-8r2c-m8c5)
- Harden ExportProxyServlet against path traversal (GHSA-3pq9-9hg4-ggfw)
- Enforce OAuth state (CSRF) check on non-GAE deployments (GHSA-mcj5-3pww-7g49)

24-JUN-2026: 30.2.6

- Reduces verbosity of build output
- Adds automatic tangent rotation for edge labels [jgraph/drawio#5365]
- Updates i18n submodule for Greenlandic autoRotateLabel fix [jgraph/drawio#5365]
- Updates i18n submodule for Edge capitalization [jgraph/drawio#5365]
- Fixes rotate handle showing on rotated auto-rotate labels [jgraph/drawio#5365]
- Fix Org Chart layout dialog row spacing
- Refresh drawio-elk bundle: radial/organic layouts keep edges straight
- Fixes edge double-click not adding label in transparentBounds groups
- Fix exported SVG black background in browsers without light-dark() [jgraph/drawio]
- Route all adaptive light-dark colors through --ge-adaptive-bg in SVG export [jgraph/drawio]
- Harden convert-to-SVG check against stored XSS (editable=0 labels)
- Add edge fill/gradient color to inline toolbar; fix color picker selection binding
- Sync inline toolbar color picker to live selection
- Sync style panel color picker to "none" when new selection lacks the color
- Harden convert-to-SVG check against stored XSS (editable=0 labels)
- Keep mermaid insert dialog open on parse failure
- Add swimlaneSelectionEnabled config switch
- fix: upgrade org.apache.commons:commons-lang3 from 3.18 to 3.20.0
- fix: upgrade commons-codec:commons-codec from 1.15 to 1.22.0
- Add align/distribute as named actions for omnisearch [jgraph/drawio#5418]
- Hide inactive resize handles when resizing groups
- Hide deleteAll in pages dropdown in lightbox
- Show shape picker on double click of unconnected edge terminal
- Fix convert-to-SVG export overflow anchoring for wrapped clipped labels
- Show user icon and account panel entry after MS365 login
- Enable turn action for swimlane lanes inside tables
- Fixes border frame of format panel with rulers
- Reserve format panel scrollbar gutter to stop content squeeze
- Restore Mermaid image insert option [jgraph/drawio#5643]
- Decouple vertex and edge default text styles [jgraph/drawio#5538]
- Add Label Width control to Text format panel [jgraph/drawio-desktop#2452]
- Make dialog form-section spacing consistent across export dialogs
- Add Search Images option to shape search omnibox [jgraph/drawio#5294]
- Fix infinite refresh loop when tabbing edge point inputs in Format panel
- Updates perfect-freehand to 1.2.3
- Updates crypto-js readme

19-JUN-2026: 30.2.5

- fix(sidebar): pass title element to onInit in expanded addPalette path
- feat(embed): optional mermaid group wrap on descriptor load
- Fixes view jump on mouse wheel zoom [jgraph/drawio#5639]
- Fixes off-center connection points on electrical stencils [jgraph/drawio#5627]
- Fixes zoom-to-cursor jump when panning during a pending repaint [jgraph/drawio#5639]
- Adds temporary flag-gated zoom debug logging [jgraph/drawio#5639]
- Revert "Adds temporary flag-gated zoom debug logging [jgraph/drawio#5639]"
- Sizes math export crop to rendered MathJax output [jgraph/drawio#5564]
- Guard mxUtils.isVerticalTextDirection against non-string values
- Fix desktop CLI Mermaid + ELK layout export
- Fixes stored XSS on file open via editable=0

18-JUN-2026: 30.2.4

- Replaces mermaid in deployed version

18-JUN-2026: 30.2.3

- Improves generate response classification
- Scopes GCP2 Zones markers style to closure (#5509)
- Adds 90 degree rotation for fully unconnected edges [jgraph/drawio#5076]
- Adds margin to rotate button in ArrangePanel
- Removes logging for mermaid diagram parse errors
- Replace static mermaid type lists with the parser's detectType
- Wrap generated mermaid in an editable group in the chat
- Show the chat response when it can't be rendered as a diagram
- Update help icon link for mermaid in ParseDialog to point to GitHub discussion
- Fix dark mode account icon visibility [jgraph/drawio#5364]
- Updates DOMPurify from 3.4.9 to 3.4.10
- Add best-effort recovery for files that fail to load
- Fix dark mode account icon visibility [jgraph/drawio#5364]
- Preserve format panel input focus across DOM refresh
- Add automatic (transparentBounds) toggle and border width to Arrange panel
- Corrections to security.md
- Add Mermaid file open and ELK layout support for desktop
- feat(shape): optional centerStroke border on ellipse center disc
- Updates DOMPurify from 3.4.10 to 3.4.11
- chore(mermaid): refresh vendored bundle to commit.4f618a5
- fix(data): reject property names that are invalid XML attribute names
- Copies orphaned static function into confluence [DID-19382]
- Fixes shape library title overflow
- fix(codec): log valid cell id on invalid style-compression reference
- feat(config): add experimental compressStyles option

12-JUN-2026: 30.2.2

- Removes mermaid as a dependency
- Updates to mermaid error handling
- Guards against multiple success calls
- FIlters out incorrect mermaid types from logging

12-JUN-2026: 30.2.1

- Correct ELK layout build
- Adds defensive code in mermaid parsing
- Removes debug output for electron app
- Centralises isMermaidSupported()

12-JUN-2026: 30.2.0

- Adds more color flexibility to some Mockup and iOS shapes
- Adds multicolor support to some iOS shapes
- Adds multicolor supports to some IOS shapes
- Adds multicolor support to some GMDL shapes
- Adds multicolor support to some Mockup shapes
- Adds multicolor support to some Android shapes
- Adds multicolor support to soem EIP shapes
- Adds multicolor support to some Rack shapes
- Reduce days before stale from 250 to 200
- Adds multicolor support to some GMDL shapes
- refactor(text): unify HTML to SVG conversion and convertibility check in mxUtils [DID-18880]
- fix(text): apply text colors in HTML to SVG label conversion
- fix(handles): move edit icon from bottom-left to top edge
- fix(handles): skip move icon in handle padding overlap detection
- Updates DOMPurify from 3.4.8 to 3.4.9
- Add custom mermaid parser with native layout engine
- Improve mermaid output quality: font, sizing, ER columns, diamond shapes
- Fix sequence fragment frames and improve layout quality
- Fix gitgraph tags/branches, sequence activations, git commit shapes
- Achieve 100% vertex and edge match across all 33 test examples
- Switch to dagre (41KB) as default layout engine, matching mermaid
- Calibrate horizontal padding to match mermaid node widths exactly
- Add CoSE-Bilkent mindmap layout, compound dagre subgraphs, and sizing calibration
- Fix flowchart style parsing, node ordering, edge routing, and default colors
- Add flat layout mode for flowcharts with subgraph-to-subgraph edges
- Use compound groups for all subgraphs, skip subgraph-endpoint edges in dagre
- Use two-pass layout: flat dagre for global optimization, then group bounds
- Fix edge cycle in subgraph remapping by using first leaf for source
- Increase group padding for better edge spacing between subgraphs
- Inflate leaf node sizes in flat dagre to prevent group overlap
- Fix gitgraph orthogonal edges, label z-order, and label background
- Add arrows to state diagram edges and clamp exit/entry points to [0,1]
- Improve state diagram layout: bidirectional edge spread, source representative, and group centering
- Fix cross-axis mirror to operate per connected component
- Sort journey actor legend alphabetically to match legacy
- Add ELK subgraph test case from jgraph/drawio#3634
- Rewrite native ELK compound layout to use flat approach
- Switch native ELK to hierarchical layout with disconnected components
- Improve native ELK layout quality: spacing, edge dedup, isolated nodes
- Add crossing count evaluation and 2-opt refinement to Sugiyama
- Improve Sugiyama edge routing and coordinate assignment
- Add edge routing channels and slot-based bend point spreading
- Implement ELK-style bus merging and edge routing channels
- Add chain alignment and tighter internal compound spacing
- Fix bus routing for deduplicated edges and add section copying
- Preserve ELK edge routing for compound node edges in cell factory
- Elk layout improvements
- Elk improvements
- Gitgraph rendering: match upstream mermaid output
- Use .drawio extension for mermaid output diagrams
- Class diagram rendering: match upstream mermaid output
- Class edge label styling: match upstream mermaid
- Flowchart rendering: match upstream mermaid output
- ER diagram rendering: match upstream mermaid output
- Flowchart rendering: match upstream mermaid edge labels, subgraph padding, shape sizes
- State diagram rendering: match upstream mermaid output
- Mindmap rendering: match upstream mermaid output
- Sequence diagram rendering: match upstream mermaid output
- Journey diagram rendering: match upstream mermaid output
- Mermaid parser coverage plan and per-iteration loop prompt
- Pie chart rendering: native parser matching upstream mermaid output
- Packet diagram rendering: native parser matching upstream mermaid output
- Chart types batch: quadrantChart, timeline, kanban, xychart, radar, block
- Chart types batch: c4, architecture, sankey, treemap, gantt, zenuml, venn, ishikawa
- TreeView diagram rendering: final TODO row — all 26 types supported
- Extract mermaid port to ../drawio-mermaid, consume as single bundle
- Refactors theme submenu addition logic for better readability and maintainability
- Adds realtime checksum debugging documentation to CLAUDE.md
- Add ELK layout bridge (Phase 1 + Phase 2 complete)
- Wire ELK Layered bridge into draw.io UI with mermaid-parity fixes
- Register ELK layouts in Arrange menu and tune label spacing
- Ignore ELK harness runtime artifacts
- Refactor ElkLayout execution flow to support asynchronous layout preparation and improve error handling
- Refactor code structure for improved readability and maintainability
- Update drawio-mermaid bundle: elkjs + block/c4/class layout fixes
- Add lockedGroup cell style for mermaid subgraph wrappers
- Add side-by-side ELK engine comparison in Arrange > Layout
- ElkLayout: improve label snap + fan-in edge endpoints
- ElkLayout: map verticalAlign=top/bottom to INSIDE label placement
- ElkLayout: widen edge-node jetty + propagate spacing to compounds
- Unbundle ELK from mermaid + add Edge Routing menu
- Add drawio-elk and drawio-mermaid as submodules under modules/
- Load drawio-elk before drawio-mermaid in production and export paths
- Add bundles Ant target to rebuild from modules/
- Prepare mermaid.min.js removal: flag, instrumentation, kill-switch
- Document modules/ submodules, bundles target, and native-mermaid flag
- Pin modules/drawio-mermaid to own-elk branch (5480c1c)
- Track drawio-mermaid on dev after own-elk squash-merge
- Refresh drawio-mermaid bundle from dev (fea8fbf)
- Refresh docs and submodule pointers for the native-ports work
- Build of version 29.7.2
- Inline configuration editor into dialog instead of iframe
- Refactors ELK layout menu integration and adds submenu for layout options
- Pass mermaid config to native parser so theme is honored
- Refresh drawio-elk + drawio-mermaid bundles with version banner
- Repoint drawio-mermaid submodule to a reachable commit
- Removed incorrect gitlinks added for submodules
- Refresh drawio-mermaid bundle from dev (625a80e)
- Switch native-port build to sibling-repo layout
- Restore mermaid2drawio.js to track dev branch
- Refresh drawio-mermaid bundle from dev (5dfcee9)
- Refresh drawio-mermaid bundle from dev (4199dfd)
- Refresh drawio-mermaid bundle from dev (f4786c4)
- feat(mermaid): apply ElkLayout post-pass for flowchart-elk
- Replaces diagramly source in GAE release
- feat(elk): mermaidPolicy on the loadMermaid post-pass
- feat(elk): default mermaidPolicy for layered, including the menu
- chore(mermaid): resync drawio-mermaid.min.js for subroutine label slack
- chore(mermaid): resync drawio-mermaid.min.js for rounded shape pad bump
- chore(mermaid): resync drawio-mermaid.min.js for layout fixes
- chore(mermaid): resync drawio-mermaid.min.js for parser-based edge length fix
- chore(mermaid): resync drawio-mermaid.min.js for arrow size shrink
- chore(mermaid): drop MindmapCloudShape, resync drawio-mermaid.min.js
- Adds config dialogs to ELK layout submenu
- Adds seq* shapes for native mermaid sequence-diagram actor types
- Fixes seq* actor-type icon rendering in sequence diagrams
- Restructures Layout menu around ELK with edge-style options
- Replaces mermaid insert/edit with native parser, drops legacy bridge
- Fix SeqBoundaryShape circle alignment on lifeline and SeqQueueShape paintForeground translate accumulation
- Fixes mermaid edit on locked group by reading layer children instead of a non-existent wrapper vertex
- Preserve user style/label customizations across mermaid locked-group regenerations
- Refresh drawio-mermaid.min.js with identity-tagging bundle
- chore(mermaid): resync drawio-mermaid.min.js for state bidi + sequence frame fixes
- Consolidate ElkLayout into the drawio-elk bundle
- Refresh drawio-elk.min.js with isolated top-level + keep-mode orthogonal
- Refresh drawio-elk bundle with cross-scope + clamp fixes
- Add Preserve Origin option to ELK layout dialog
- ELK layout: collapse routing/style into one Connector dropdown
- Clear default Mermaid config so imports use Mermaid's own defaults
- Wraps Mermaid output in an editable group, drops Editable insert flag
- Preserves Mermaid group position on edit re-parse
- Add ELK layouts to custom layout dialog and CSV import
- Scope CSV-import layouts to the imported cells
- Fix CSV-import ELK layout: undo, free insert point, edge scope
- Refines CSV layout documentation and updates ELK layout configurations for clarity
- Marks WebCola plugin deprecated in favor of ELK layouts
- Tunes CSV verticalflow/horizontalflow ELK config to match mxHierarchicalLayout
- Refresh drawio-mermaid bundle (container-aware group wrapping)
- Re-vendor drawio-mermaid + drawio-elk bundles
- vendor: update drawio-elk bundle to 4ad207d (bug-audit fixes)
- Refresh drawio-mermaid bundle (6add5f0)
- Refresh drawio-mermaid and drawio-elk bundles
- refactor(elk): drive all layout routes through the ElkLayout facade
- fix(elk): preserve transparentBounds group origin on layout
- fix(mermaid): don't preserve layout routing as a user edit on re-parse
- fix(elk): pin transparentBounds groups at (0,0); thin editor wrapper
- fix(mermaid): vendor native composite-state direction fix
- fix(mermaid): use legacy config when migrating shape=image cells
- feat(mermaid): add mermaidSankeyLink ribbon edge shape
- feat(shapes): conditional labelBounds for stencils via boundedLbl
- fix(layout): omit negative stress iteration limit so -1 means no cap
- feat(layout): add help links to the layout config dialogs
- Removes upstream mermaid.min.js, native parser is the only path
- Moves the tree subtree drag handle to the top-left move icon
- Adds footerSize and footerColor styles to rectangles
- Moves the bundles target from github-build.xml to build.xml
- vendor: update mermaid (f115fed) and elk (df6c57b) bundles
- Restores exact pre-linearization tree state
- vendor: update elk (e8ef0e0) and mermaid (ebea636) bundles
- Adds centerRadius and centerColor styles to ellipses

05-JUN-2026: 30.1.2

- feat(transparentBounds): read-only derived geometry, reset on enable
- Move DIALOG_STYLE_GUIDE.md to docs/dialog-style-guide.md
- feat(appUpdate): notify of available update via notification bell
- feat(exportDialog): Advanced section for per-format export dialogs
- feat(pageSetup): per-page initial view (Use Current / Reset)
- fix(sketch): resolve light-dark fill to current mode for fillStyle=auto
- Updates DOMPurify from 3.4.7 to 3.4.8
- Adds support for notion.com domain
- fix(pageSetup): full-width initial-view buttons + label tooltips
- fix(transparentBounds): always create group corner handles on refresh
- Updates release process for notion extension
- fix(custom-actions): restore model-mutating toggle/show/hide for custom-link clicks [DID-19248]

02-JUN-2026: 30.1.1

- Extends generate timeout to 90s
- refactor(swimlane): rename chinSize style to footerSize

02-JUN-2026: 30.1.0

- Build of version 30.0.4
- Adds transparentBounds groups, moveIcon, connectIcon, groupPadding shorthand
- Adds step-based animations and custom actions
- Fixes empty paste element in pasteCells text/plain branch
- Fixes XML pasted as text when Ctrl is held through copy/paste
- Adds immediate flag for parallel animation steps and customAction window persistence
- Fixes transparentBounds bounds and group/toggle integration
- Updates DOMPurify from 3.4.5 to 3.4.7
- Fixes pattern fill loss on later PDF pages [jgraph/drawio#5578]
- Fixes transparentBounds bounds and group/toggle integration
- Adds multi-edge / multi-corner resize to mxWindow and Dialog
- Changes default groupPadding for transparentBounds to 0 [jgraph/drawio#5607]
- Fixes overlapping corner icons on nested transparentBounds groups
- Adds selection padding and corner handles for nested transparentBounds groups
- Moves svgdata plugin behavior into core SVG export
- Inlines built-in plugin dropdown in PluginsDialog
- Moves Edit/Layers/Tags into collapsible Advanced section in publish/embed/export dialogs
- Routes dialog help icons to the new GitHub Discussions
- Routes Embed/Export HTML help icons to the merged docs page
- Collapses redundant transparentBounds wrapper after sibling removal
- Pins dialog buttons and scrolls content when dialog exceeds viewport
- Defers sidebar thumb rendering until scrolled into view [jgraph/drawio-desktop#2444]
- Fixes mxMorphing animating transparentBounds cells
- Fix rubberband selecting page text when Cmd/Ctrl held on macOS
- Fix Safari scrolling the canvas to top-left on Cmd/Ctrl+click
- Fix paste swallowed after Cmd/Ctrl+rubberband when a cell was pre-selected
- Fix color picker window restoring to wrong empty size when reopened collapsed
- Fixes paste/crop/insert mis-positioning of transparentBounds groups
- Fixes stale edge routing when a transparentBounds child moves
- Fixes autosize/layout corrupting transparentBounds group geometry
- Fixes Align/Distribute on transparentBounds groups
- Fixes childLayout collapsing/corrupting a transparentBounds parent
- Fixes collapse corrupting transparentBounds group geometry
- Fixes transparentBounds derived bounds ignoring edge children
- Add Collapse All / Expand All to sidebar section context menu
- Fixes opening CLI-exported PNGs with a zlib-compressed embedded diagram
- Add JSON export of diagram structure and metadata
- Condenses CLAUDE.md
- Fixes color picker opening behind modal dialogs (e.g. Page Setup background)
- Fixes line height change affecting elements outside the cell editor
- feat(swimlane): configurable chin (chinSize) on mxSwimlane

27-MAY-2026: 30.0.4

- Adds GCP3 to build
- Build of version 30.0.4

27-MAY-2026: 30.0.4



26-MAY-2026: 30.0.3

- Test Cloud Build trigger
- Test Cloud Build trigger
- Upgrades to JDK 21
- Adds new GCP3 stencils. Preliminary version, content added, but many things to fix.
- Adds new GCP3 stencils to the sidebar
- Adds pointerEvents=1 style to GCP3 stencils and changes labels to a more conventional format
- Adds multicolor support to some iOS7 stencils
- Adds more multicolor options for some Rack stencils
- Removes duplicate entry
- Removes quotes from bool
- Adds vertical text check to wrapping check [DID-18880]
- Updates DOMPurify from 3.4.2 to 3.4.5
- Adds lockedGroupIcon, editIcon styles and lock/edit handles
- Adjusts footer position in Notion dialog to improve layout
- Adds editPolygon option in edit menu
- Adds line breaks for dev tooltips
- Blocks drops and child drags inside locked groups
- Pads lock and edit icon handles like the rotation handle
- Adds multicolor support for IBM stencils
- Adds multicolor support for Atlassian stencils
- Refactors an Azure stencil, so it's in line with the others in the set
- Adds multicolor support for a Bootstrap stencil
- Adds multicolor support for EIP stencils
- Adds multicolor support for a Flowchart stencil
- Adds multicolor support for VVD stencils
- Adds multicolor support for some Android stencils
- Promote text and anonymize plugins to core functionality

15-MAY-2026: 30.0.2

- Makes some Mockup shapes multi-color flexible
- Makes some MSCAE shapes multi-color flexible
- Makes some Salesforce shapes multi-color flexible
- Small fix for a Network 2025 shape
- Small bugfix for some Mockup shapes
- Additional color flexibility for some Cisco Safe shapes
- Adds multi color fill for some Citrix stencils
- Adds multi-color support for some GCP2 shapes and stencils
- Adds multi-color support for GCP2 shapes and stencils
- Adds multi-color support for a GCP2 icon stencil
- Adds multi-color support for MS Office stencils
- Fixes size for some stencils in the Rack library
- Adds multi-color support for some Rack stencils
- Makes HPE Aruba Gateways and Controllers subgroup in Rack shapes color flexible
- Makes HPE Aruba Security subgroup in Rack shapes color flexible
- Makes part of HPE Aruba Switches subgroup in Rack shapes color flexible
- Makes some Rack stencils color flexible
- Makes some Rack stencils color flexible
- Makes the rest of Rack/Aruba stencils color flexible
- Small fix for an Aruba switch stencil
- Makes Rack/IBM stencils color flexible
- Stencil size fix for a Rack stencil
- Makes Rack/Oracle stencils color flexible
- Adds multicolor support to Veeam stencils
- Adds multicolor support to EIP stencils
- Adds multicolor support to some GMDL stencils
- Adds multicolor support to some Floorplan stencils
- Fixed NPE in mermaid to draw.io [#drawio-5553]
- Fallback to FO when vertical writing-mode set in HTML [DID-18880]
- Updated github actions, replaced 3rd party actions, and specified needed permissions
- Build of version 30.0.2

15-MAY-2026: 30.0.2

- Makes some Mockup shapes multi-color flexible
- Makes some MSCAE shapes multi-color flexible
- Makes some Salesforce shapes multi-color flexible
- Small fix for a Network 2025 shape
- Small bugfix for some Mockup shapes
- Additional color flexibility for some Cisco Safe shapes
- Adds multi color fill for some Citrix stencils
- Adds multi-color support for some GCP2 shapes and stencils
- Adds multi-color support for GCP2 shapes and stencils
- Adds multi-color support for a GCP2 icon stencil
- Adds multi-color support for MS Office stencils
- Fixes size for some stencils in the Rack library
- Adds multi-color support for some Rack stencils
- Makes HPE Aruba Gateways and Controllers subgroup in Rack shapes color flexible
- Makes HPE Aruba Security subgroup in Rack shapes color flexible
- Makes part of HPE Aruba Switches subgroup in Rack shapes color flexible
- Makes some Rack stencils color flexible
- Makes some Rack stencils color flexible
- Makes the rest of Rack/Aruba stencils color flexible
- Small fix for an Aruba switch stencil
- Makes Rack/IBM stencils color flexible
- Stencil size fix for a Rack stencil
- Makes Rack/Oracle stencils color flexible
- Adds multicolor support to Veeam stencils
- Adds multicolor support to EIP stencils
- Adds multicolor support to some GMDL stencils
- Adds multicolor support to some Floorplan stencils
- Fixed NPE in mermaid to draw.io [#drawio-5553]
- Fallback to FO when vertical writing-mode set in HTML [DID-18880]
- Updated github actions, replaced 3rd party actions, and specified needed permissions

11-MAY-2026: 30.0.1

- Corrects rounded of Archimate Techonology Functions shape [jgraph/drawio#5571]
- ci: fix MCP index trigger tag pattern
- Shows up to 4 matching pages in omnisearch dropdown

09-MAY-2026: 30.0.0

- Uses cached sanitized label for SVG support detection
- Updates DOMPurify from 3.4.0 to 3.4.2
- Persists minimized state of floating windows
- Moves adaptive colors to page setup, adds page setup in simple+min UI
- Adds mermaid shapes from native-ports branch
- Sizes math labels and view to rendered MathJax output [jgraph/drawio#3311]
- Fixes math fit-to-window on page switch with sync MathJax typeset
- Adds configurable tooltipFontSize and tooltipMaxWidth
- Adds lockedGroup cell style for grouping cells as one image
- Adds Mindmap Bang, Git Tag, and Smiley Faces in Basic sidebar
- Fixes dropped initialText in cellEditor.startEditing override
- Fixes tab scroller jumping left when switching from rightmost page
- Keeps inline toolbar and popovers inside visible viewport
- Fixed Lucid import chrome extension
- Skips empty drafts on save and cleans up existing ones on startup
- Default adaptive colours no longer simple in desktop

05-MAY-2026: 29.7.12

- Adds boundedLbl for manual input shape
- Removes quip references
- Adds label sanitize https://github.com/jgraph/docker-drawio/security/advisories/GHSA-wj8x-4c77-v8v3

04-MAY-2026: 29.7.11

- Upgrades to JDK 21
- Fixes offline local shape search pagination [jgraph/drawio-desktop#2409]
- Updated mermaid to v11.14.0
- Fixes NPE in insertTableRow on empty table; inserts initial row with single column
- Disables insert column buttons in Format panel for empty tables
- Updates MathJax from 4.1.1 to 4.1.2
- Replaces diagramly source in GAE release

01-MAY-2026: 29.7.10

- Fixed lightbox mode for MS360 files
- Conf Cloud: Added configuration editor
- Added Confluence specific configurations to config-editor
- Inline configuration editor into dialog instead of iframe
- Update i18n submodule with normalized English capitalization
- Add missed lineend/linestart capitalization in i18n submodule
- Remove unused hateApp/loveIt keys and expand procEng in i18n submodule
- Expand Proc. Eng. abbreviation in PID sidebar and i18n submodule
- Fixes page format options vertical alignment
- Fixes print dialog inconsistencies
- Fixes inconsistent sections in Format panel
- Adds rounding for arrow handle values
- Fixes inconsistent padding for Format sections
- Adds glass style support for ellipse and rhombus shapes
- Show style tiles for mixed selections including edge labels
- Fixes fill pattern issues with crop print and color leak [jgraph/drawio#5546]
- Adjusts padding for edge geometry and stroke panels for improved layout
- Fixes ignored current dark mode in config editor
- Replaces rounded button with checkbox in diagram style panel
- Restyles file properties dialog using dialog style guide
- Restyles font dialog using dialog style guide
- Saving embed macro preview with the actual diagram [DID-18496]
- Recovers broken desktop saved PDFs jgraph/drawio-desktop#2394]
- Removed incorrect gitlinks added for submodules

20-APR-2026: 29.7.9

- Skip clipboard init in read-only chromeless EditorUi
- Restricts third-party gitlab integrations without config [DID-18566]

17-APR-2026: 29.7.8

- Fixes NPE in mxEdgeHandler.reset when handle reset triggers destroy
- Fixes NPE in mxCellRenderer.insertStateAfter when node is orphaned
- Fixes NPE in mxWindow.setLocation when window is destroyed during drag
- Fixes NPE in mxVertexHandler.start when handle shapes are not created
- Fixes NPE in EditorUi.diffPages when pages array contains null entries
- Fixes NPE in EmbedFile.isAutosaveOptional when desc is null
- Add defensive settings check in restoreVisibleWindows

14-APR-2026: 29.7.7

- Creates default viewState in patchViewState when null
- Fix null crashes in HoverIcons and mxConstraintHandler during mouse events
- Handle atob error in noFile fallback when error dialog is dismissed
- Fix null crash in PolygonDialog drag when points array is modified
- Exclude InvalidCharacterError from mergeFile error logging
- Guard against non-function success callback in DriveFile.saveFile
- Fix mxObjectCodec mapping default picking up Array.prototype methods
- Persist size of modal resizable edit/insert dialogs
- Guard pasteCellStyles split against non-string cell styles
- Guard mxSvgCanvas2D.setCssText against non-Element nodes
- Guard mxUtils.setStyleFlag against non-string style values
- Add configurable foldingIconSize for collapse/expand icons
- Enable collapse/expand actions for multi-selection [DID-18161]
- Guard EditorUi.highlightElement against null document.body
- Guard Sidebar.addEntry against non-string tags values
- Skip null-geometry cells in Graph.visitTableCells
- Guard Minimal.js hideCurrentMenu override against null editor
- Guard Sidebar.addCustomEntries against missing entry.libs
- Guard Dialog constructor against null document.body
- Guard updateShapes split against non-string cell styles
- Declare loop variable in Menus.showIconOnly
- Fix diffViewState null asymmetry causing checksum errors in mergeFile
- Persist Selection Only state in export dialogs within session
- Updates DOMPurify from 3.3.3 to 3.4.0
- Fixes link dialog layout in confluence connect

12-APR-2026: 29.7.6

- Thinner inline toolbar icons and toggle popover on click
- Shows inline toolbar popover above when below viewport
- Fix InlineToolbar ReferenceError in viewer builds
- Disables server logging for handled errors in handleError
- Excludes "Invalid or unexpected token" SyntaxError from server log
- Use specific color dialog titles instead of panel labels
- Move InlineToolbar creation override to InlineToolbar.js

12-APR-2026: 29.7.5

- Fixes URL hash update when switching pages in presentation mode
- Refactors theme submenu addition logic for better readability and maintainability
- Increases minimum width for shape window to improve layout consistency
- Fixes null reference errors in TableLayout, updateTabContainer, and ColorDialog
- A workaround for multipart doesn't support non ascii characters in diagram save comments
- Adds try-catch for image metadata stripping to handle malformed chunks
- Adds realtime checksum debugging documentation to CLAUDE.md
- Fixes null geometry in TableLayout.execute
- Fixes TypeError in EmbedFile.getTitle when descriptor is null
- Fixes JSON.parse error in loadLibraries when external library returns invalid content
- Handle corrupt page data in getPagesForXml without aborting
- Handles corrupted data errors in async pickFolder callbacks
- Extract InlineToolbar into separate InlineToolbar.js file
- Fixes edge color button in InlineToolbar to pass default color and show diagonal light-dark swatch
- Hides inline toolbar when edge color picker is opened
- Hides inline toolbar when edge color is picked or color picker is closed
- Adds arrow key navigation for sidebar search dropdown
- Excludes errors from blob: URLs in client error logging
- Excludes strict mode errors from extensions.min.js in client error logging
- Adds error handling for JSON.parse of create hash parameter in loadFile
- Adds error handling for menu factory in createMenubar
- Logs decodeChild errors to console instead of throwing
- Logs duplicate ID errors to console instead of throwing in putObject
- Adds null check for geometry in mxGraphHandler.start
- Fixes infinite loop in wedgeArrowDashed2 when stepSize is 0
- Adds null check for bounds in fitDiagramToWindow

10-APR-2026: 29.7.4

- Fixes Sidebar.destroy NPE by destroying sidebar before editor
- Fixes TypeError in updateEdgeState for invalid geometry objects
- Fixes TypeError in mxOutline.getViewBox after destroy
- Fixes TypeError in mxUtils.setStyle for non-string style values
- Refactors link overlay click handling to support custom links and improve link opening logic
- Uses page dropdown with chevronDown in presentation mode toolbar
- Fixes TypeError in refreshBrowserTranslateMirror for destroyed graph
- Fixes TypeError in keydown/keyup handlers for null graph container
- Fixes TypeError in windowResized for destroyed EditorUi
- Fixes TypeError in mxGeometry.equals for non-mxPoint offset objects
- Fixes TypeError in EmbedFile.getDescriptorRevisionId for null descriptor
- Fixes TypeError in mxPolyline.redraw for null node in updatePageBreaks
- Fixes possible NPE in mxCellState.clone
- Fixes possible NPE
- Adds error handling for corrupted data in dialog save actions
- Fixes TypeError in pasteCellStyles for non-string cell style
- Fixes paste style not removing default styles from target [jgraph/drawio-desktop#2383]
- Revert "Fixes encoding for connect attachments comments"

09-APR-2026: 29.7.3

- Changes to dashboard URL
- ci: trigger drawio-mcp search index update on new version tags
- Adds null check for callback in showExportDialog
- Adds null check for setTerminalPoint in cellsRemoved and disconnectGraph
- Fix URIError in StyleFormatPanel.addProperties for malformed style values
- Adds null check for equals in processChange for mxGeometryChange
- Fixes TypeError in addPaletteFunctions by protecting createVertexTemplateFromCells restore in addEntry
- Adds presentation mode for desktop using fullscreen DIV overlay
- Jira Cloud: Fixed a bug in Confluence search [DID-18214]
- Jira Conf: Added support for Forge diagrams in Confluence embed [DID-18214]
- Fix checksum errors from external tools adding extra diagram attributes

09-APR-2026: 29.7.2

- Prefers non-current page in omni search results
- Moves copy/paste text style from edit dropdown to text format panel buttons
- Adds page actions for omnibox access and reuses them in page tab menus
- Restores geUrlLinkContainer class on link dialog URL row for Confluence plugin
- Adds adaptiveColors to viewStateProperties for diff sync
- Fixes NPE in page tab drag when requestAnimationFrame fires after dragend
- Fixes NPE in table color picker when selection changes during async callback
- Fixes stroke color condition typo and non-string style in color scheme panel
- Adds error handling for corrupted data in Graph.decompress
- Adds error handling for corrupted draft data in DraftDialog
- Exposes urlInput property on LinkDialog for stable access from plugins
- Prevents showing sparkle button in simple theme if generate action is null

08-APR-2026: 29.7.1

- Jira Cloud: Fixed Confluence auth in embed [DID-18214]

08-APR-2026: 29.7.0

- Fixes dashboard URL
- Fixes possible NPE for invalid shape picker configuration
- Adds experimental curved text shape in Misc sidebar [jgraph/drawio#2651]
- feat: improve shape search with scored fallback and compound token splitting
- Redesigned edit data dialog
- Redesigned edit geometry dialog
- Redesigned page setup dialog
- Redesigned page background dialog
- Redesigned edit link dialog
- Update dialog style guide
- Redesigned edit library dialog and added resizing
- Redesigned edit diagram dialog
- Redesigned parse dialog
- Redesigned create graph dialog
- Redesigned plugins dialog
- Redesigned text dialog
- Redesigned simple text dialog
- Makes text dialog resizable
- Adds ms365 to proxy list
- Redesigned insert table drop down
- Persists sidebar width across page reloads
- Persists format panel collapsed section states across page reloads
- Persists sidebar library collapsed states across page reloads
- Adds pop animation when inserting single vertices from sidebar via click
- Shortens insert animation and defers selection until it completes
- Adds drag-and-drop reordering of sidebar library entries with persistence
- Convert color picker from modal dialog to non-modal tool window
- Fixes mxWindow title accumulation when browser translation is active
- Adds persistence for window positions, sizes, docking states and visibility
- Fixes layers window disabled state and tool windows not showing on first click
- Fixes recent colors duplication after reset in color picker
- Adds shift+click on tag eye icon to show only that tag
- Adds browserTranslate configuration switch and documentation
- Adds experimental support for browser translation
- Adds browser translation support to GraphViewer and changes default to enabled
- Adds spacer placeholder for page tab drag reorder
- Fixes tab scroller jumping on page activation
- Lazy browser translate init, default on in viewer, same-origin iframe support
- Fixes default color button missing in color picker tool window
- Adjusts animation delay in itemClicked function for faster transitions
- Fixes typing shim stealing focus from clipboard handler during copy/paste
- Adds Ctrl/Cmd+Enter shortcut to omnisearch dropdown for first entry after separator
- Fixes clipped SVG borders in clipSvgDataUri [jgraph/drawio#5534]
- Fixes stencil connection points with direction and aspect=fixed [jgraph/drawio#5537]
- Fixes stencil edge routing bounds with direction and self-loop state corruption [jgraph/drawio#5537]
- Improved localized shape search using fast, local reverse lookup for available resources [jgraph/drawio#5518]
- Adds copy/paste text style feature [jgraph/drawio#4752]
- Adds rounded border support for image shapes
- Fixes Find/Replace window not showing on first invocation from omni search
- Adds exact page name match in omni search when query ends with space
- Removes enableAi hard coded to true in conf connect plugin
- Defaults enableAi to false for new Confluence installs

02-APR-2026: 29.6.10

- Fixes build dashboard URL
- Fixes selection only option in print dialog for single page files [jgraph/drawio#5530]
- Remove unused GraphViewer.mergeXmlDelta and helper functions
- Adds pop effect easter egg to create hash property
- Add collapsible sections to format panel
- Increase sidebar padding and spacing for lighter feel
- Increase sidebar padding and spacing for lighter feel
- Enhance More Shapes dialog with new styles and layout adjustments
- Improve More Shapes dialog footer spacing and alignment

01-APR-2026: 29.6.9

- Adds elastic pop animation and popIn/popOut custom link actions
- fix: skip spacebar panning when focus is in a form element [jgraph/drawio#5529]

31-MAR-2026: 29.6.8

- Adds GraphViewer.mergeXmlDelta
- Fixes dy is not defined in EditorUi.showPublishLinkDialog
- Fixes TypeError in translateCell for invalid geometry objects
- Fixes TypeError in GraphViewer hiddenTags when diagrams is undefined

31-MAR-2026: 29.6.7

- Adds compressed XML support for SVG CLI export [jgraph/drawio-desktop#2143]
- Fixes rasterized fill patterns in PDF export [jgraph/drawio#3620]
- Enhance SVG text rendering by adding support for block elements and improving HTML to SVG conversion
- Add .claude/launch.json to .gitignore
- Enhance HTML to SVG conversion by adding word wrap and HTML tags
- Updates DOMPurify from 3.3.2 to 3.3.3
- Add BR support to HTML-to-SVG conversion and fix wrapped line heights
- Fixes inconsistent table row and column resizing
- feat: add configuration editor dialog with tabbed interface for visual editor and JSON
- docs: add guidance for updating configuration switches in Editor.configure
- feat: Enhance SVG conversion for HTML blocks and inline elements
- fix: Improve dy calculations for superscripts and subscripts in SVG rendering
- fix: Hide inline toolbar during all handle and cell drag operations
- Fixes inconsistent file open handling
- fix: Use whiteSpace instead of svgWhiteSpace when foreignObject is used
- fix: Correct typo in ChangeLog for animated gif export
- Add "Use Current" buttons for default styles in config editor
- fix: Update redrawInnerBends to handle empty geometry points for bends opacity
- fix: Auto-detect Android tablets in Chrome's desktop UA mode [jgraph/drawio#2090]
- Enables Generate dialog with clipboard actions in desktop app
- feat: add setInnerBendsOpacity function to manage inner bends opacity
- feat: add optional optimizeHtmlLabels config to clean up HTML labels [jgraph/drawio#5516]
- feat: Add "Search Shapes in Open Libraries" to omni search [jgraph/drawio-desktop#2320]
- Update resources submodule with translations for searchShapesInOpenLibraries
- fix: round text y-coordinates to 2 decimals in HTML-to-SVG label conversion
- Update resources submodule with translation fixes across 15 languages
- perf: reuse persistent div in getSizeForString to avoid repeated DOM reflows
- refactor: remove unused enableWrap parameter from mxText.updateSize
- refactor: remove IE8 dead code from mxText
- refactor: remove IE and IE11 dead code across entire codebase
- Update resources submodule with removed unused improveContrast key
- feat: make default file type configurable via Editor.configure [jgraph/drawio-desktop#1430]
- Update resources submodule with 9 unused resource keys removed
- fix: respect hidden tags in PDF export and printing [jgraph/drawio#3183]
- feat: populate tags URL/config param with current hidden tags state
- feat: streamline hidden tags handling across export and UI components
- feat: add root/layer metadata and type attribute to svgdata plugin SVG export [jgraph/drawio#5527]
- fix: always prevent default scroll on spacebar when activating panning [jgraph/drawio/issues/5524]
- fix: use this.format instead of undefined self.format in wrapSvgBlockElements
- fix: replace transform with zoom for improved print preview scaling
- feat: add enableLocalFonts config flag for desktop font scanning [jgraph/drawio-desktop#2371]
- fix: resolve %pagenumber% for each page during all-pages PDF export [jgraph/drawio-desktop#2376]
- Refactor export dialog layout and styles
- feat: extract embedded XML from PDF files in CLI export [jgraph/drawio-desktop#2160]
- fix: apply --width/--height to PDF export in CLI [jgraph/drawio-desktop#2162]
- feat: add contractParent and groupPadding styles for auto-shrinking groups [jgraph/drawio#618]
- Restyle embed dialogs and add auto-height for CustomDialog
- Move dialog style guide to separate file and add auto-height to print dialog
- Restyle config-editor dialog to match main app theme
- fix: avoid inline toolbar overlap with edge labels and child elements
- Remove agent and version attributes from mxfile
- fix: disable MathJax inline line breaking for edge labels [jgraph/drawio#5514]
- Add fixedHeader style for swimlane shapes

24-MAR-2026: 29.6.6

- Enhances tab activation and scrolling behavior in the page tab container
- Threads done callback through openFiles/openFileHandle/openLocalFile
- Remove launch configuration file for development servers
- Sanitizes invalid VSDX property names for best-effort import
- Add clipboard actions to generate dialog [jgraph/drawio#5507]
- Update subproject commit reference in resources
- Add smooth scrolling to tab on click in createTab function
- Update chat window dimensions in openGenerateDialog function
- Allow docked windows to be resized
- Update clipboard copy label in ChatWindow dialog
- Adds animated gif export to atlas.min.js
- Add insert diagram from clipboard option in generate dialog
- Improve generate dialog dropdown labels for AI options
- Fixes encoding for connect attachments comments

23-MAR-2026: 29.6.5

- Corrects dashboard path
- Avoid InlineToolbar overlapping edge segments
- Remove embedded XML from images copied to clipboard
- Add showLinkIcons and showTooltipIcons support to GraphViewer
- Fix word wrapping mismatch in autosizeText in-place editor
- Fix MathJax path in embed dev mode
- Fix fill patterns to scale correctly with diagram zoom level
- Fix touch input on Android tablets using Chrome desktop site mode
- Fixes wrong SVG scaling in desktop PNG export [drawio-desktop#1954]
- Adds intersectionSelect configuration switch [drawio#5508]
- Fixes undo for initial fill style change (eg. from auto to hatch)
- Fixes Cmd+, for Chrome settings on macOS
- Fixes fill pattern offset shifting on zoom and window resize
- Add exportProtocol and diffSync options to JSON embed protocol
- Adds configurable shape picker via Editor.configure() [jgraph/drawio#1812,jgraph/drawio#1197,jgraph/drawio#4130,jgraph/drawio#3783]
- Marks imported files with updates page links as dirty [DID-17660]
- Opens draw.io/VSDX files in same window when dropped on blank file

18-MAR-2026: 29.6.4

- Tidies changelog
- Add dev server launch configurations
- Align custom paper size unit dropdown with other format panel elements
- Removes exits from preprocessor
- Fixes possible NPE in mxCellEditor.resize
- Add noExitOnCancel option to template protocol action
- Update InlineToolbar styles for improved dark mode support

16-MAR-2026: 29.6.3

- Fixes NPE

16-MAR-2026: 29.6.2

- Fixed swimlane business template [DID-17965]
- Updates DOMPurify from 3.3.1 to 3.3.2
- Update border color for dark mode dialog windows
- Fix format=0 to hide format panel initially instead of disabling it
- Disable window docking in embedInline mode
- Add sidebarEnabled property to manage sidebar visibility in EditorUi
- Reposition icon in InlineToolbar to avoid overlap with edge waypoint handles
- Adjust minimum widths for toolbar and menus based on embed parameter; enhance flex properties
- Remove minWidth attribute from viewMenu and adjust separator addition in Toolbar initialization
- Enhance passive scroll mode handling in EditorUi to prevent keystroke capture and forward scroll events to parent frame
- Enhance fitWindow method to support centering on page within viewport
- Enhance theme handling for 'kennedy' in EditorUi; adjust format panel and sidebar visibility based on window size
- Fixes delayed scroll for fitDiagramOnLoad option
- Ignores invalid scratchpad data [jgraph/drawio-desktop#2341]
- Adds fitDiagramOnPage switch [jgraph/drawio#5415]
- Refactors getXml function to simplify XML serialization process
- Refactors isRelativeUrl function to improve URL validation logic
- Implements event firing for rubberband selection updates and adds UPDATE event constant
- Adds default link target for SVG exports in Graph class
- Sets mxIsElectron to false in embed mode for better compatibility
- Adds support for plugin menu items and hides specified menu items
- Enhances configuration options for EditorUi, adding support for compact mode, auto-focus suppression, and customizable message sources in embed mode.
- Refactors updateAutosizeTextFontSize to accept style parameter for improved flexibility
- Adds autosize text font size update on text spacing change
- Refactors toggleShapesPanel to include noScroll parameter for improved control over scrolling behavior
- Refactors diagram fitting logic to use initialFitDiagram method for improved readability and consistency
- Adds optional connect handle functionality
- Adds configuration option for connect handle visibility
- Enables debug tooltip with dev-tooltips parameter
- Adds support for passive scroll and no resizers configuration options
- Removes unused code for IE
- Adds support for pasting at mouse pointer if enabled
- Adds edit tooltip functionality for cells in the graph
- Adds support for internal clipboard configuration in Editor and EditorUi
- Adds support for source metadata handling in diagram parsing
- Adds load event for mermaid datain embedded editor
- Disable auto focus in embedded editor with noAutoFocus
- Refactor smartFit action to streamline lightbox resizing and integrate with button click
- Conditional key binding for 'selectVertices' action based on dev parameter
- Enhance connect handle by adding shape picker on click
- Add default connection arrows and connectable settings to Graph prototype
- Improve connectable and connection arrows settings handling in readGraphState
- Add default folding enabled setting and update related configurations
- Force show shape picker on connect handle click
- Add URL parameters for grid and page visibility settings
- Enhance GraphViewer responsiveness by adding max scale configuration
- Refactor message handling in export and autosave processes
- Add custom scale handling and margin adjustments for embedded diagrams
- Add inline embedding support for graph translation adjustments
- Enhance inline embedding by adding UI visibility controls for toolbar and windows
- Enhance responsiveness in GraphViewer by adjusting viewBox calculations and adding border handling
- Add context menu enhancements for passiveScroll mode with shape picker integration
- Fixes insert for cancel in insert polygon
- Adds support for styles in parsed mermaid diagrams [jgraph/drawio#3884]
- Improve overlap detection for inline toolbar positioning
- Delay fitting of popup menu to ensure it is rendered correctly in the viewport
- Add clearSelection action to graph for improved user interaction
- Refactor responsive border handling in GraphViewer for consistent scaling behavior
- Add resetViewOnSave configuration to reset view position on save
- Preserve original XML attribute values in readGraphState for consistent state management
- Update view state management to preserve view position on save
- Add copyStyle/pasteStyle to context menu in passiveScroll mode
- Rename clearSelection embed action to resetEditor and hide menus
- Add bend style dropdown to inline edge toolbar
- Add modelBounds to embed protocol and xml export format
- Honor preset maxWidth in responsive scaling for diagrams
- Refactor maxWidth calculation for responsive scaling in GraphViewer
- Sync fullscreen button state with actual panel visibility
- feat: add noPrint and noExport URL params to hide chromeless toolbar buttons
- Fix inline toolbar icons not visible in dark mode
- Updates all actions to node 24

05-MAR-2026: 29.6.1

- Removes i18n updating from actions
- Fix Cloud Build when using custom service account
- Hide cell ID and make Edit Data dialog resizable for file-level vars
- Prevent focus stealing from external input elements in showTypingShim [DID-17955]
- Adds showTooltipIcons switch
- Reset sync channel on makeCopy to prevent cross-talk with original file [jgraph/drawio#5487]
- Increase dialog height for EmbedDialog instances to improve layout
- Make EmbedDialog resizable with flex layout
- Hides hints while zooming [jgraph/drawio#5486]

27-FEB-2026: 29.6.0

- Fix MS365 SharePoint file picker integration
- Sets ms365 integration live
- Adds format=0 and sidebar=0 URL params for minimal theme

26-FEB-2026: 29.5.6

- AWS shapes update
- Adds ms365 URL parameter

26-FEB-2026: 29.5.5

- Fixes possible NPE in mxLayoutManager
- Fixes return value in Graph.cellsResized override
- Fixes line submenu in edge context menu
- Adds new dialog styles
- Adds file-specific variables [jgraph/drawio#549] [jgraph/drawio#2911] [jgraph/drawio-desktop#2108]

25-FEB-2026: 29.5.4

- Fixes elbow edge style icons
- Fixes update of toolbar edge styles with selected vertices
- Fixes order of horizontal and vertical edge option in Format panel, toolbar, inline toolbar and context menu
- Makes inline toolbar visible by default, uses line menu
- Fixes tooltips for inline toolbar
- Fixes inconsistent edge menus
- Adds dockable tool windows
- Fixes possible stale dropdown menu
- Fixes clipping of labels for Chrome on Windows
- Fixes inconsistent tooltips in Format panel
- Adds tooltips for checkboxes in Format panel
- Adds autosizeText cell style and sticky notes with automatic text size [jgraph/drawio#2570]
- Fixes background image translation in GraphViewer (almost all code overrides getGraphBounds of graph and not viewer which graph.fit uses) [DID-17873]

24-FEB-2026: 29.5.3

- Hides link icons if showLinkIcons disabled
- Fixes IME first keystroke [jgraph/drawio#3642] [jgraph/drawio#4801] [jgraph/drawio#313]
- Fixes broken copy/paste after IME fix
- Fixes error message for missing animations
- Adds zigzag shape in Misc sidebar  [jgraph/drawio#4663]
- Adds insert and edit polygon actions [jgraph/drawio#5292]
- Fixes broken panning after IME fix
- Adds optional inline toolbar for edge styles [jgraph/drawio#4794]
- Simplifies horizontal and vertical elbow edge style icons
- Fix VSDX import: make Visio containers non-connectable and add hyperlink null guard [DID-17660]

22-FEB-2026: 29.5.2

- Deletes unused code causing security warnings
- Tidies changelog
- Updates excludes
- Fixes zoom while drawing freehand [jgraph/drawio#3959]
- Updates MathJax from 4.1.0 to 4.1.1
- Fixes panning in active freehand mode [jgraph/drawio#4080]
- Adds animated gif export [jgraph/drawio#3739]
- Moves animated gif functions to correct location
- Fixes error for saving scratchpad [jgraph/drawio-desktop#2341]
- Adds flow direction and fixes background for animated gif export
- Limits show link icons to main graph
- Fixes resources merge issue
- Reviewed and updated translations

20-FEB-2026: 29.5.1

- Updates to emf importer

19-FEB-2026: 29.5.0

- Initial draft for link icon
- Uses validateCellState for update of link icon
- Adds enableExportUrl configuration switch [jgraph/drawio#4336] [jgraph/drawio#5431]
- Fix emoji and supplementary Unicode characters corrupted after save/reload
- Bezier curve falls back to quad for cases it can't handle [jgraph/drawio-desktop#2333]
- Missing var in actions.js [jgraph/drawio#5457]
- Fixes rename and saveAs for StorageFiles
- New emf converter

14-FEB-2026: 29.4.0

- Handles 404 in GitLab group iteration [jgraph/drawio#4528]
- Adds visible modifiers and events for actions
- Fixes ignored parameter in addItem
- Fixes ignored pv and grid URL parameters for create hash with xml
- Sets maximum initial zoom for create hash to 1.2
- Makes connection points dialog resizable [drawio/discussions/5442]
- Adds resizing for image crop dialog [drawio/discussions/5203], handles overflows [drawio/discussions/5478]
- Adds fitDiagramOnLoad switch [jgraph/drawio#5415]
- Fixes realtimeStateChanged triggers notification repaint
- Adds message type for create hash property
- Fixes grid jump while zoom [jgraph/drawio#1440]
- Uses current production wheelZoomDelay
- Adds markers for arc shape [jgraph/drawio#3639]
- Removes fill and gradient option for arc shape

06-FEB-2026: 29.3.8

- Improves create hash handling
- Handles overflows in error dialog
- Conf Cloud: Removed export to URL option [DID-17708]
- Adds debug output in  executeCreateHash

03-FEB-2026: 29.3.7

- Adds Claude 4.5 Opus for local LLMS and removes whitespace from response XML
- Shows AI button in Conf and Jira toolbar if not disabled
- Adds scrollbars for overflow content in Generate window
- Bump qs, body-parser and express in /etc/centralizedLogging/GCP
- Adds XML type for create hash property
- Fits create hash property diagram to window

27-JAN-2026: 29.3.6

- Adds delete all pages option
- Improvements for XML import
- Adds custom line dash pattern options
- Update translations submodule to 996b60e
- Disables file size stats
- Adds claude guide to root
- Fixes handling of inherit color value
- Fixes overflow, adds option to insert layer after current layer, moves selection layers [jgraph/drawio#5438]
- Update translations submodule to 6650194
- Update translations submodule to 645f7e6
- Conf Cloud: Fixed race condition in OAuth requests when multiple viewers are in the same page [DID-17497]
- VSDX Import: Fixed some NPE and added a case for embedded images [DID-17282]

20-JAN-2026: 29.3.5

- Add simple.js build to atlas.min.js

20-JAN-2026: 29.3.4

- Added some css filtering for @import and absolute urls [bugcrowd 31d70940-348e-4d9e-ae26-a20396ef5d69]
- Improvements for [bugcrowd 31d70940-348e-4d9e-ae26-a20396ef5d69]
- Adds Kalaallisut to supported languages

19-JAN-2026: 29.3.3

- Adds expandToFront cell style [jgraph/drawio#4413,jgraph/drawio#5419]
- VSDX Import: Improved background color parsing [DID-17382]
- Fixes hide of shape picker on hover icon reset
- Moves autosize text to Misc sidebar [jgraph/drawio-desktop#2313]
- Fixes drag and drop in layers dialog
- Augments existing URL parameters with #P
- Handles test mode in getEditBlankUrl
- Creates temporary file after close
- Fixes saveAs for browser files
- Uses #P for edit as new
- Clears #P hash property in client mode, keeps saved temp file in same window

15-JAN-2026: 29.3.2

- Adds shift+click on app version in desktop to enable debug mode
- Adds additional check for external change detection [2312]
- Adds bezier style option for curved edges
- [conf cloud] Fixed extra whitespace when centering is enabled [DID-17409]
- Adds support for optional tags attribute in mxlibrary node
- Changes beizer to use standard cubic control point positions
- Adds initial NURBS support [jgraph/drawio#2104]

13-JAN-2026: 29.3.1

- Fixes import of cropped SVG images [jgraph/drawio#5015]
- Adds optional size parameter for export action [jgraph/drawio#4536]
- Adds Mermaid support for load action [jgraph/drawio#5215]
- Removes metadata from JPEG/PNG images [AMS-49114]
- Adds removeImageMetadata config switch
- Fixes check for image type in stripImageMetadata
- Adds optional cell style compression for images and stencils in model codec
- Adds file size stats

08-JAN-2026: 29.3.0

- Fixes possible NPE
- Merges built preprod back to dev as PR rather than commit
- Adapts validate actions for PR merge instead of cherry picking
- Fixes possible invalid default parent
- Hides current menu when windows are moved or resized
- Adds layer selection in layers dialog [jgraph/drawio#5408]
- Fixes inconsistent menu order for current layer
- Fixes possible NPE [jgraph/drawio-desktop#2307]
- Adds legacy support for anchor points [jgraph/drawio-desktop#2306]
- Fixes resources for selecting and selected objects in layers
- Adds defaultTextStyle config switch
- Adds autosize for shape picker text [jgraph/drawio#5409]
- Disables legacy anchor points only on unconnected flipped shapes

06-JAN-2026: 29.2.10

- Fixes help link in chat dialog
- Fixed a bug in vsdx importer [DID-17282]
- Improves generate dialog for custom LLMs
- Changes default for desktopAutoSync to true [jgraph/drawio-desktop#2227]
- Uses fonts loader path for MathJax
- Fixes multi-line issue
- Sanitize HTML output in ChatWindow
- Improves layers dialog [jgraph/drawio#5408]

19-DEC-2025: 29.2.9

- Updates MathJax fonts to 4.1.0

18-DEC-2025: 29.2.8

- Adds configuration options for custom LLMs
- Updates DOMPurify from 3.3.0 to 3.3.1
- Updates MathJax from 4.0.0 to 4.1.0
- Adds enableNativeClipboard config switch [jgraph/drawio#5383]
- Renames enableChatGpt to enableAi
- Checks for string color instead of object [DID-17282]

10-DEC-2025: 29.2.7

- Reverts edit icon for local .html files [jgraph/drawio#5375]

08-DEC-2025: 29.2.6

- Changes edit icon naming clash caused by [jgraph/drawio#5375]

08-DEC-2025: 29.2.5

- Fixes anchor points for flipped shapes [jgraph/drawio#5341]

04-DEC-2025: 29.2.4

- Adds edit icon for local .html files [jgraph/drawio#5375]

02-DEC-2025: 29.2.3

- Minor UI fixes

01-DEC-2025: 29.2.2

- AI and licensing tuning

27-NOV-2025: 29.2.1

- Fixes possible NPE

27-NOV-2025: 29.2.0

- Enhances pagecount and pagenumber placeholders [jgraph/drawio#3378]
- Adds support for CSV in create hash property [jgraph/drawio#5273]
- Replaces smart template section with generate window

21-NOV-2025: 29.1.1

- [conf connect] License tuning

19-NOV-2025: 29.1.0

- Makes attribute encoding deterministic [jgraph/drawio#1556]

15-NOV-2025: 29.0.3

- Math base path and CSP corrections

13-NOV-2025: 29.0.2

- Fixes math PDF export

13-NOV-2025: 29.0.1

- Updates mermaid to 11.12.1
- Fixes math print output

12-NOV-2025: 29.0.0

- Updates to Mathjax 4.0.0
- Fixes edge labels in Mermaid flowcharts [DID-16838]
- Removes unused files for MathJax [mathjax/MathJax#3436]
- Cisco stencil updates

03-NOV-2025: 28.2.9

- Updates DOMPurify from 3.2.5 to 3.3.0
- Adds handling of light-dark grid settings [jgraph/drawio#5285]
- Fixes cursor state in freehand mode [jgraph/drawio#4936]
- [conf forge] Changes to allow plantUml

23-OCT-2025: 28.2.8

- Hides inactive virtual bends for entity relations
- Fixes preview button in smart template section
- Fixes possible NPE for dependent properties
- Improves search for fully qualified shape names
- Fixes color picker for valid shape colors
- Fixes watch new file handles, adds desktopAutoSync switch (beta) [jgraph/drawio-desktop#2227]
- Fixes possible stale draft in desktop
- Adds open recent in simple UI for desktop [jgraph/drawio-desktop#2221]

14-OCT-2025: 28.2.7

- Adds support for animations on multiple pages [jgraph/drawio#5262]
- Fixes q.getStatus is not a function in OneDriveClient
- Fixes possible a.split is not a function in StyleFormatPanel

13-OCT-2025: 28.2.6

- [conf cloud] Notifies user when app is uninstalled in case of forge migration
- Makes some Cisco stencils multi-color flexible
- Fixes blurry image export [jgraph/drawio-desktop#2209]
- Adds copy marker option [jgraph/drawio#5280]
- Fixes inconsistent default text styles and sizes [jgraph/drawio#4818]
- Enables bulk modification of container property
- Shows shape name in cell properties [jgraph/drawio#5288]
- AWS shapes update
- Adds opacity option in color dialog [jgraph/drawio#5256]
- Fixes text wrapping for process shape with fixed size [jgraph/drawio#5296]
- Uses single quotes for font names with spaces [jgraph/drawio-desktop#2214]
- Fixes click handling on SVG embed option labels
- Disasbles convert label option for unformatted text
- Fixes property panel in min UI [jgraph/drawio-desktop#2176]
- Fixes context menu for multiple selected edges [jgraph/drawio#4791]

24-SEP-2025: 28.2.5

- Fixes handling of alpha values in inverted colors [DID-16387]

22-SEP-2025: 28.2.4

- Adds support for HEX colors with transparency
- Adds dash-dot line pattern [jgraph/drawio-desktop#2184]
- [conf cloud] Adds option to build page IDs mapping manually using DB files [DID-15536]
- Fixes possible NPE for VSDX import [jgraph/drawio#3507]
- Changes unconnected terminal dims to [0,0] [jgraph/drawio#5242]

16-SEP-2025: 28.2.3

- Adds dropbox.com to connect-src CSP

15-SEP-2025: 28.2.2

- Fixes error dialog when panning into shapes panel [jgraph/drawio#5263]
- Changes notification URL to support diagrams.net and draw.io
- Registers service worker with enableSW=1 URL parameter

11-SEP-2025: 28.2.1

- Adds gliffy shape mappings [DID-16199]
- Rack cabinet shape layout bugfix [jgraph/drawio#4823]

05-SEP-2025: 28.2.0

- Adds gliffy stencil mappings [DID-16201]

28-AUG-2025: 28.1.2

- Fixes broken image in Office app [jgraph/drawio#5219]
- X keyboard shortcut hides freehand window [jgraph/drawio#5217]
- Makes CSV import dialog resizeable
- Fixes label position for Network 2025 shapes [jgraph/drawio#5244]
- Updates mermaid to v11.10.1

21-AUG-2025: 28.1.1

- [conf cloud] Workaround for CONFCLOUD-80136 bug [CES-99755]
- [conf cloud] Removed color name from the anchor including a status macro [DID-16085]
- Fixes scrollbars in nested menus [jgraph/drawio#5231]
- Fixes handling of gapi-stealth for file menu, save and link dialog [DID-15625]
- Adds lockdown via app configuration
- Fixes editing of draft files in desktop

12-AUG-2025: 28.1.0

- [conf cloud] Fixes anchors with special characters [DID-15965]
- [conf cloud] Adds caching to page IDs import [DID-15536]

08-AUG-2025: 28.0.9

- [conf cloud] Recovers from bug in page IDs import where server drawio macros are changed to embed (re-indexing reconverts them) [DID-15899]

08-AUG-2025: 28.0.8

- Fixes mermaid Gantt diagrams width [DID-15926]
- [conf cloud] Reduces diagram preview image size to fit more in search-recent
- [conf cloud] Removes edit-settings buttons in Livedoc viewer [DID-15961]
- [conf cloud] Fixes a bug in page IDs import where server drawio macros changes to embed [DID-15899]

25-JUL-2025: 28.0.7

- Fixes zoom out icon in draft dialog [jgraph/drawio-desktop#2154]
- Fixes clipboard.read is not a function
- [conf cloud] Fixes page IDs import, page is not found [DID-15536]

17-JUL-2025: 28.0.6

- Fixes missing File menu option

16-JUL-2025: 28.0.5

- [conf cloud] Stops converting server macro with aspectHash to embed macro [DID-15703]
- Add LC case for UserImage2Block shape [DID-15706]
- Fixes mermaid colors in dark mode [DID-15734]

12-JUL-2025: 28.0.4

- Adds pages option to export URL dialog
- Handles backgroundColor in HTML to SVG
- Adds resizing for plantuml and mermaid edit dialog
- Removes image option in plantuml dialog

11-JUL-2025: 28.0.3

- Activates convert HTML to SVG and removes feature flag

11-JUL-2025: 28.0.2

- Conf Cloud: Handled incorrect return value from convert-ids-to-types API [DID-15536]

10-JUL-2025: 28.0.1

- Adds some HTML to SVG conversion

10-JUL-2025: 28.0.0

- Fixes possible ClipboardItem.supports is not a function
- Fixes possible overflow for sidebars on small screens
- Fixes Alt+Click in sidebar and shape picker [jgraph/drawio#4720]
- Fixes possible NPE in mxGraph.intersects
- Removes Twitter and Facebook button in Embed dialog [DID-15625]
- Enables PlantUML menu option if URL was customized [DID-15625]\
- Adds gapi-stealth URL parameter for stealth mode with Google Drive [DID-15625]
- Adds resizing for metadata dialog [jgraph/drawio#375,jgraph/drawio#5142]
- Hides Publish and Embed menu when offline [DID-15625]
- Hides Publish and Embed menu when offline in Minimal theme [DID-15625]
- Updates icon cache

30-JUN-2025: 27.2.0

- Adds copy as SVG, improves handling of clipboard data
- Fixes theme buttons on touch devices
- Fixes justifyfull [jgraph/drawio#526]
- Fixes enter keystroke in omni search box
- Fixes use of generic font-families [jgraph/drawio#4998]
- Fixes window tooltips i18n [jgraph/drawio#4654]
- Adds shadows option for print and PDF export, uses CSS filter for global shadow [jgraph/drawio-desktop#2133]
- Fixes floating panels on mobile [jgraph/drawio#5134]
- Fixes exported SVG image sizes [jgraph/drawio#4814]
- Fixes diagram insert position in Notion extension [jgraph/drawio#5123]
- Fixes disabled dark mode in Firefox 140
- Adds miterlimit property for shapes [jgraph/drawio#4706]
- Fixes PDF title and page numbers [jgraph/drawio-desktop#2130,jgraph/drawio#4102]
- Adds experimental pipe shape, improves edge style panel [jgraph/drawio#5144]
- Fixes miter limit default value
- Adds support for SVG background images with dark mode
- Fixes offsets in image export [jgraph/drawio#5122]
- Fixes possible NPE in Find dialog [jgraph/drawio#5143]

16-JUN-2025: 27.1.6

- Hides dark mode toggle in unsupported browsers
- Updates SAP library preview
- Service worker optimizations

13-JUN-2025: 27.1.5

- [conf cloud] Fallback for more info call failing [DID-15438]
- [jira cloud] Fixing Jira re-indexing [DID-14930]
- Fixes CSS issues in Atlas theme [jgraph/drawio#5119]
- Updates SAP shapes
- Adds app.diagrams.net specific service worker

04-JUN-2025: 27.1.4

- [conf cloud] Removed upload option from embed diagram macro
- Adds ge prefix for panel-color and dark-panel-color CSS variable
- Fixes editing of property values [jgraph/drawio#5102]

02-JUN-2025: 27.1.3

- Lowers specificity of generic CSS selectors
- Fixes handling of transparent background in explore mode

30-MAY-2025: 27.1.2

- Makes certain css selectors less generic [DID-15398]

28-MAY-2025: 27.1.1

- [conf cloud] Fixed permissions check for diagram edit [DID-15344]

28-MAY-2025: 27.1.0

- Refactors GCP2 shapes [jgraph/draw#5006]
- [conf cloud] Making Gliffy version pinning optional (off by default) [DID-15346]

23-MAY-2025: 27.0.9

- Uses per-cell container for inputs/selects in property rows [jgraph/draw#5086]

22-MAY-2025: 27.0.8

- Fixes possible notification NPE

22-MAY-2025: 27.0.7

- Restricts notifications to own diagrams.net domains [jgraph/docker-drawio#187]
- [conf cloud] Removes blank and smart templates from Confluence Template diagrams [DID-14800]
- [conf cloud] Fixes editor hang in Template editor [DID-14800]

16-MAY-2025: 27.0.6

- Fixes paste location to use position of mouse [drawio-desktop#2096]

13-MAY-2025: 27.0.5

- Skips service worker install on first load

12-MAY-2025: 27.0.4

- Fixes image export background [jgraph/drawio-desktop#2091]
- Adds warning for plantuml deprecation

09-MAY-2025: 27.0.3

- Moves bootstrap and main code to external JS files

08-MAY-2025: 27.0.2

- Changes cache url for app.diagrams.net
- Builds xml2js

07-MAY-2025: 27.0.1

- Sorts xml2js file list deterministically

07-MAY-2025: 27.0.0

- Disables splash screen by default

06-MAY-2025: 26.3.0

- Improves XML parsing with invalid characters [DID-15090]
- Renames Network libraries
- AWS update
- Updated Mermaid to v11.6.0
- Fixes SVG output of mermaid in some special cases [#drawio-5046]
- Fixes tab selection after label change [jgraph/drawio#5050]
- Requires forceMigration=1 to run www.draw.io migration

23-APR-2025: 26.2.15

- Internal build

22-APR-2025: 26.2.14

- Fixes NPE in VSDX import
- Fixes initial sidebar width for Firefox
- Adds urlParam, enableSW, to force enable service worker
- Adds missing jira cloud viewer html to SW

16-APR-2025: 26.2.13

- Adds missing Exit Group and Home menu items [jgraph/drawio#5021]

11-APR-2025: 26.2.12

- Fixes build error

11-APR-2025: 26.2.11

- Moves Mermaid menu from Advanced to Insert menu
- [conf cloud] Adds option to Gliffy mass import to check current page when linked diagrams fail [DID-14921]
- [vsdx]: Partial fix for themed fill color[DID-14963]

10-APR-2025: 26.2.10

- [conf cloud] Fixed diagrams in custom templates [DID-14800]

07-APR-2025: 26.2.9

- [conf cloud] Fixed migrated server custom libraries names for Conf v8.x [DID-14902]

05-APR-2025: 26.2.8

- Adds ALLOW_INTERNAL_10_NET=1 for 10.x.x.x proxy usage [jgraph/drawio#4966]
- Adds try/catch for TENANT_ID exception [jgraph/drawio#4909]
- Moves mermaid2drawio.js back into public build

05-APR-2025: 26.2.7

- [conf cloud] and GraphViewer. Removes tooltips config. Pages use file tooltips config [DID-14767]
- Fixes filename and comments button for Conf Cloud

04-APR-2025: 26.2.6

- Updates DOMPurify from 3.2.4 to 3.2.5
- Adds primaryColor option for custom shape properties
- Adds mxUtils.getColorValue
- [conf cloud] Adds support for live docs [DID-14520]
- Adds Note shape in Misc sidebar
- [conf cloud] Fixed migrated server custom libraries names [DID-14902]

03-APR-2025: 26.2.5

- Fixes Google Drive folder picker z-index
- Fixes OneDrive folder picker size
- [conf cloud] Fixes headers anchor [DID-14864]

02-APR-2025: 26.2.4

- Fixes possible NPE in Sidebar.disablePointerEvents
- [conf cloud] Added support for imported Gliffy images with the added version prefix to the name [DID-14867]
- Fixes possible NPE in ColorDialog

01-APR-2025: 26.2.3

- [conf cloud] Fixes viewer background

31-MAR-2025: 26.2.2

- Adds Tamil translations
- Fixes Confluence cloud lightbox [DID-14879]

31-MAR-2025: 26.2.1

- [conf cloud] Fixes possible NPE in LinkDialog
- Fixes updateUserElement is not a function
- Fixes initial state of default theme in embed mode
- Fixes background for Notion extension

31-MAR-2025: 26.2.0

- [conf cloud] Removes lucidchartObject from the imported diagram and Conf loaded diagrams [DID-14777]
- [conf cloud] Added debug message to script load error [DID-14714]
- Fixes background color in PNG export [jgraph/drawio-desktop#2049]
- Adds styles to clipboard and default style [jgraph/drawio#4989]
- Refactors editor CSS

25-MAR-2025: 26.1.3

- Fixes handling of duplicate IDs in mxCodec [DID-14777]
- [conf cloud] Potential fix for link dialog size [DID-14793]

24-MAR-2025: 26.1.2

- Increases mermaid text size to 900k [jgraph/drawio#4761]
- Jira Cloud: Replaced deprecated search APIs
- Disables pusher.min.js loading in lockdown mode
- [conf cloud] Potential fix to Gliffy import incorrect version pinning [DID-14749]
- [conf cloud] Added sorting to attachments and anchors in link dialog [DID-14793]

14-MAR-2025: 26.1.1

- Adds fill-/strokeColorStyles for XML stencils
- Fixes text selection on shape drag from sidebar [jgraph/drawio-desktop#2015]
- [conf cloud] Fixes import libraries error handling
- Updates placeholders in resize preview [jgraph/drawio#4958]
- Find/replace sets focus on search input [jgraph/drawio#4959]

05-MAR-2025: 26.1.0

- Tenant for OneDrive fix [jgraph/drawio#4905]
- Fixes print to PDF export dialog size and button title
- Fixed images in vsdx export with multiple pages and also image scale [DID-14515]
- Removes vsdx export functionality

21-FEB-2025: 26.0.16

- Fixes colors in vsdx export [DID-14515]
- Fixes background color option for selection text

19-FEB-2025: 26.0.15

- Adds default dark mode support for SVG images
- Shows word wrap option for non-resizable cells [jgraph/drawio-desktop#1994]
- Adds word wrapping to attributes section of entity shape [jgraph/drawio-desktop#1994]
- [conf cloud] Fixes Aura compatibility [DID-14484]

14-FEB-2025: 26.0.14

- Fixes change of line height for wrapped text [jgraph/drawio#4902]
- Adds support for older browsers with no light-dark colors
- Improves compatibility of exported SVG
- Improves handling of ignored stroke-widths in clipSvgDataUri
- Fixes handling of single color values in SVG with editable CSS rules

12-FEB-2025: 26.0.13

- Adds appearance option in publish and embed dialogs
- Forces light export of diagrams with no adaptive colors
- Skips light-dark function for same light and dark color
- [conf cloud] Adds support for pagePin in Gliffy import
- Adds enableLightDarkColors configuration

07-FEB-2025: 26.0.12

- [conf cloud] Fixes simple view of imported Gliffy diagrams [DID-14343]
- [conf cloud] Disable direct editing if a page has unpublished changes [DID-14257]
- Fixes handling of Ctrl+Enter on Windows [jgraph/drawio#4883]
- Adds transparent background option in iframe embed dialog [jgraph/drawio#4884]
- Handles Ctrl+S while editing labels [jgraph/drawio#4885]
- Fixes editing toolbar alignment in embed mode [jgraph/drawio#4874]
- Updates DOMPurify from 3.2.3 to 3.2.4
- Handles subgroups in GitLab paths [jgraph/drawio#4870]

04-FEB-2025: 26.0.11

- [conf cloud] Show error when embed diagram page not found (deleted or restricted) [DID-14304]
- [conf cloud] Fixed realtime collaboration [DID-12871]

28-JAN-2025: 26.0.10

- [conf cloud] Fixes Gliffy mass import of linked diagrams when done in separate runs [DID-14151]
- Enhanced page links in vsdx import [DID-14276]

27-JAN-2025: 26.0.9

- Fixes possible split is not a function in StyleFormatPanel
- Uses light custom background with simple adaptive colors [jgraph/drawio-desktop#1978]

24-JAN-2025: 26.0.8

- Improves VSDX Import [DID-14176]
- [conf cloud]] Fixes Gliffy diagrams with core ui icons [DID-14260]

22-JAN-2025: 26.0.7

- Fixes for Atlas theme dark mode
- Dark mode fixes
- Changes raster images to SVG
- Stroke width fix for some BPMN2 shapes. Ticket [jgraph/drawio#4861]
- [conf cloud] Adds disableGithubEmbedding config to hide Github tab from embed editor [DID-14232]

15-JAN-2025: 26.0.6

- Various dark mode improvements

10-JAN-2025: 26.0.5

- Fixes Ctrl+Shift+G to enable grid [jgraph/drawio#4825]
- Replaces three dots with layers icon [jgraph/drawio-desktop#1953]
- Mermaid2drawio: Added support for new flowchart shapes and fixed [jgraph/drawio-#4832]
- Adds editableCssRules=.* for imported SVG images [jgraph/drawio#4721]
- Adds default and font keyword for stencil colors [jgraph/drawio#4723]

06-JAN-2025: 26.0.4

- Disables dark mode in viewer by default [jgraph/drawio#3701]
- Adds dark mode option in embed dialog

03-JAN-2025: 26.0.3

- Fixes slope angle property for parallelogram and hexagon [jgraph/drawio#3672]
- Adds arcSize property for chevron [jgraph/drawio#4813]
- Adds units for width, height and length [jgraph/drawio#4362]
- [conf cloud] Fixed Safari dark mode [DID-14095]
- Fixes missing data-cell-id in EditorUi.getEmbeddedSvg [jgraph/drawio#4532]

29-DEC-2024: 26.0.2

- NPE fixes

28-DEC-2024: 26.0.1

- Updates mermaid to v11.4.1

27-DEC-2024: 26.0.0

- Updates DOMPurify from 3.2.2 to 3.2.3
- Adds dark mode specific colour scheme

05-DEC-2024: 25.0.3

- Adds entering custom zoom via toolbar in simple UI
- Adds back jszip to deployment

03-DEC-2024: 25.0.2

- Internal release

30-NOV-2024: 25.0.1

- Updates DOMPurify from 3.1.5 to 3.2.2 with fix for [DID-13161]

29-NOV-2024: 25.0.0

- Restructures project files

28-NOV-2024: 24.9.3

- NPE fixes

27-NOV-2024: 24.9.2

- [conf cloud] Improving theme detection timing [DID-13083]

25-NOV-2024: 24.9.1

- Reverts DOMPurifty to 3.1.5 [DID-13161]

23-NOV-2024: 24.9.0

- Updates workbox to 7.3.0 in build docker image

22-NOV-2024: 24.8.9

- Forces service worker to reload Confluence and Jira html to fetch the new CSP header [DID-13083]

21-NOV-2024: 24.8.8

- Fixes possible NPE

21-NOV-2024: 24.8.7

- Fixes font size and line height change for selection text [jgraph/drawio-desktop#1880]
- Removes implicit CSS values and empty style attributes from DOM
- Adds OpenStack stencils
- Adds Power Platform stencils to Azure and Dynamics365 stencils

13-NOV-2024: 24.8.6

- Corrects sidebar build

13-NOV-2024: 24.8.5

- [conf cloud] Removes target options from the page IDs export [DID-12937]
- Adds Alibaba Cloud stencils
- [teams] Fixes mobile app file picker

04-NOV-2024: 24.8.4

- [conf cloud] Removes confluence embed file hash to fix embed iframe [DID-12936]

25-OCT-2024: 24.8.3

- [desktop] Fixes print page size [jgraph/drawio-desktop#1893]

23-OCT-2024: 24.8.2

- Adds IBM Cloud stencil set

22-OCT-2024: 24.8.1

- Initial convert of confluence connect manifest to forge

18-OCT-2024: 24.8.0

- Fixes math typesetting in svg export [jgraph/drawio-desktop#1874]
- Adds new Citrix stencil set
- Initial convert of jira connect manifest to forge
- [jira cloud] Fixes search page error

30-SEP-2024: 24.7.17

- [conf cloud] Fixes showing older versions of a diagram in page history [DID-12641]
- [conf cloud] Adds libraries edit/add from the editor [DID-12585]

20-SEP-2024: 24.7.16

- Fixes editorui parameter for loadLibrary [DID-12644]

19-SEP-2024: 24.7.15

- Uses java17 for GAE deployment
- [conf cloud] Adds diagram translation support via ["translateDiagrams": true] config
- [conf cloud] Fixes a NPE [DID-12553]

13-SEP-2024: 24.7.14

- Updates to mermaid 11.2.0
- [conf cloud] Uses retry-after header info when rate-limiting hits

11-SEP-2024: 24.7.13

- [conf cloud] Fixes errors in diagrams list

05-SEP-2024: 24.7.12

- Internal release

05-SEP-2024: 24.7.11

- Fixes possible XSS for tooltips in dev mode

02-SEP-2024: 24.7.10

- Internal release

02-SEP-2024: 24.7.9

- Fixes exit flag in save event message [jgraph/drawio#4010]
- [conf cloud] Using viewerTimeout config in the editor also [DID-12425]

28-AUG-2024: 24.7.8

- Adds math typesetting support for Mermaid [drawio-desktop-1824]
- [conf cloud] Handle incorrect draft status of a page [DID-12384]

12-AUG-2024: 24.7.7

- [conf cloud] Improved mass import error message to match API v2 behavior [DID-12282]
- Fixes scratchpad saving errors [drawio-1833]

29-JUL-2024: 24.7.6

- Uses current host only for non-public GitLab and GitHub files [jgraph/drawio#4502]
- [conf cloud] Fixed Giffy mass import issues [DID-12199]

25-JUL-2024: 24.7.5

- [conf cloud] Applies link adjustment configuration to diagram editor [DID-12118]
- AWS shapes update
- [conf cloud] Fixed NPE when editing some diagrams [DID-12175]
- Fixes cell highlight bounding box [jgraph/drawio#4509]

23-JUL-2024: 24.7.4

- Fixes page break alignment in print preview [jgraph/drawio#4447]
- Fixes timeout for synchronize of StorageFile
- Removes modified, etag and type attribute from mxfile [jgraph/drawio#4461]
- Fixes handling of font lists and quotes in font names [jgraph/drawio#4560]
- [conf cloud] Fixes new diagram dangling drafts issue [DID-12168, DID-12166, DID-12158, DID-12159]

22-JUL-2024: 24.7.3

- Updates SAP shapes
- [conf cloud] Showing confluence images when 3rd party cookies are disabled [DID-12108]
- Fixes PDF export and print pixel ratio [DID-12130]
- Fixes ignored transform on SVG subtree [jgraph/drawio#4557]
- Removes data-cell-id in SVG subtrees
- [conf cloud] Fixes embed macro insertion

19-JUL-2024: 24.7.2

- [conf cloud] Uses v2 connect endpoint calls
- Excludes clipart from shape search index [jgraph/drawio#4547]
- [conf DC] Improved Google Drive app not installed error handling [DID-12115]

17-JUL-2024: 24.7.1

- Removes host domain checks [DID-12104]

16-JUL-2024: 24.7.0

- Adds SAP icons [jgraph/drawio#4199]

10-JUL-2024: 24.6.5

- [conf cloud] Fixed relative links when owningPageId is empty [DID-12053]

27-JUN-2024: 24.6.4

- Fixes reset of selected shape groups [drawio-desktop#1783]
- Removes broken help link in template dialog
- Fixes missing URL parameters for published Drive files [jgraph/drawio#4501]
- Fixes arrows in mermaid sequence diagram converter
- Adds UI switch to toggle animations [jgraph/drawio#4491]

25-JUN-2024: 24.6.3

- Removes drop shadow in PDF export [jgraph/drawio-desktop#1784]
- Conf Cloud: Added support for copied pages in Gliffy import [DID-11864]
- Conf Cloud: Added support for inplaceEdits configuration [DID-11923]
- Removes uponSanitizeAttribute listener for SVG content attribute [DND-1208]

22-JUN-2024: 24.6.2

- Adds option to include current page in PNG and SVG export [jgraph/drawio#2860]
- Fixes Cmd + US keyboard shortcut [jgraph/drawio-desktop#1792]

21-JUN-2024: 24.6.1

- Improves Google Drive app not installed message [DID-11885]
- Disables shadows in printing and PDF export [jgraph/drawio-desktop#1784]

20-JUN-2024: 24.6.0

- Adds autosizeGrid style [jgraph/drawio#1131]
- Adds Editor.enableChatGpt with config switch
- Ignores service worker registration errors [jgraph/drawio#4483]
- Adds UI zoom to desktop help menu [jgraph/drawio-desktop#1359]
- Adds non-numpad zoom keyboard shortcuts [jgraph/drawio-desktop#978]
- Uses quotes for CSS font-family [jgraph/drawio-desktop#1604]
- Adds Editor.enableAnimations with config switch [jgraph/drawio#4491]
- Fixes grid color for print and PDF export in dark mode [jgraph/drawio#4488]
- Preserves cell hierarchy in SVG output [jgraph/drawio#3960]

17-JUN-2024: 24.5.5

- Simplifies publish dialog [jgraph/drawio#4346]
- Allows image links in libraries [jgraph/drawio#4474]
- Runs PNGs through pngquant with default settings
- Fixes change of default connection style [jgraph/drawio#4479]
- Fixes math rendering in revision compare view
- Adds in-place editing for layer names [jgraph/drawio#902]

12-JUN-2024: 24.5.4

- Fixes link to members page for GitLab files [jgraph/drawio#4213]
- Uses current unit in edge start/end/width/size/spacing in Format panel [jgraph/drawio#2993]
- Fixes conflict dialog for deleted files in desktop
- Fixes BPMN group shape in dark mode [jgraph/drawio#4471]

11-JUN-2024: 24.5.3

- Fixes show start screen option [drawio-desktop-1738]
- Fixes fallback text position [drawio-desktop-1624]
- Removes control characters in link check
- Uses current unit in line position (start, end) in Format panel - Arrange [drawio-1915]

07-JUN-2024: 24.5.2

- [conf cloud] Adds Drive file access and app check to embed macro
- Fixes bulk change of cell styles [drawio-3961]

06-JUN-2024: 24.5.1

- [conf-cloud] Fixes viewer scope

06-JUN-2024: 24.5.0

- Changes viewer to use main google project 671 ID

06-JUN-2024: 24.4.15

- Fixes possible clipping in sidebar popup
- Enables saveAs for read-only files
- Fixes text editing position for insert layout dialog [drawio-4449]
- Adds start-/endFillColor styles for connectors [drawio-4438]

05-JUN-2024: 24.4.14

- Adds support for adaptive polling
- Updates DOMPurify from 3.1.4 to 3.1.5
- Adds support for mermaid flowchart elk renderer [drawio-3634]
- Undo/redo selects and scrolls to modified cells [drawio-desktop-1766]
- Fixes preview for sidebar items [drawio-desktop-1737]
- Improves UX for AI generate template tile

31-MAY-2024: 24.4.13

- Moves polyfill scope

31-MAY-2024: 24.4.12

- Adds empty polyfill for structuredClone to avoid mermaid.js syntax error

31-MAY-2024: 24.4.11

- Updates Mermaid to v10.9.1
- Fixes cropped PDF output [drawio-desktop-1747]
- Fixes inconsistent handling of empty diagram nodes

29-MAY-2024: 24.4.10

- Improves edge label positions in Explorer Plugin [drawio-4424]
- Fixes shift+drag for new lines with anchor points [drawio-4197]
- Adds new teams domain to frame ancestor CSP

27-MAY-2024: 24.4.9

- Uses 4 digits after the decimal point for inches [drawio-desktop-1739]
- Fixes inconcistent handling of Ctrl and Cmd key for edges

24-MAY-2024: 24.4.8

- Fixes default shadow opacity [drawio-desktop-1750]

23-MAY-2024: 24.4.7

- Fixes possible NPE for inserted pages
- Forces XML update for inserted default root and layer
- [vsdx] Another trial to fix edge as a group [drawio-1722]
- [conf cloud] Potential fix for copy/paste in draft pages [DID-11494]
- Fixes possible empty diagram node in mxfile [DID-11645]

22-MAY-2024: 24.4.6

- Fixes possible NPE in Graph.initTouch

22-MAY-2024: 24.4.5

- Updates Teams app to use SDK v2.22.0 [CSP-3150]
- Fixes in-place editing on iOS [drawio-4411]
- Updates DOMPurify from 3.1.3 to 3.1.4
- Fixes possible overwritten library files in browser storage
- Blocks popup menu and shape picker in freehand mode
- Fixes units for table cell size change [drawio-4360]
- Fixes handling of parallel edges in explore plugin [drawio-4422]
- Adds units for custom page size [DID-11607]

17-MAY-2024: 24.4.4

- Improves diff sync for removed default layer

16-MAY-2024: 24.4.3

- [conf cloud] Updates CSP based on the deprecation notice https://developer.atlassian.com/cloud/confluence/changelog/#CHANGE-1601
- Improves diff sync and handles special cases

15-MAY-2024: 24.4.2

- Fixes possible NPE in StorageFile.getEtag

15-MAY-2024: 24.4.1

- Improves page switching performance
- Updates DOMPurify from 3.1.2 to 3.1.3
- Restores view and selection state after merge of local files
- Adds conflict handling for browser files for testing
- Fixes inactive escape listeners in sidebar [drawio-4379]
- Moves locking to file [drawio-desktop-1380]
- Adds automatic merge for browser files

10-MAY-2024: 24.4.0

- [vsdx] Fixes attribute labels [drawio-4299]
- Fixes built-in plugins enabling in windows [drawio-desktop-1508]
- Adds full support for fullscreen menu option [drawio-desktop-1638]
- Improves font support in PDF export
- Improves refresh when Math rendered
- Adds my.microsoftpersonalcontent.com to CSP
- Fixes first page title when a file is imported into an empty diagram [drawio-3519]
- [conf cloud] Adds global config to disable diagram revisions (disableVersioning: true) [DID-10247]
- Adds grid, selection cells to mxPrintPreview
- Merges print, PDF and advanced PDF export dialog
- Fixes bounding box for edge shapes [DID-11356]
- Fixes label position for Kubernetes shapes [drawio-4386]
- Updates DOMPurify from 3.1.0 to 3.1.2
- Handles possible errors in App.clearServiceWorker [drawio-4340]

26-APR-2024: 24.3.1

- Fixes breadcrumb trail after refresh in OneDrive picker [drawio-4339]
- Fixes diagrams in Google Add ons [drawio-4349]
- Fixes diagram size in Google Add ons [drawio-4351]
- Removes margin for cropped PDF export [drawio-4353]
- [conf cloud] Fixes AP.navigator.getLocation returning incorrect pageId in drafts [DID-11399]

24-APR-2024: 24.3.0

- Enable internal links in PDF export [drawio-722]

24-APR-2024: 24.2.9

- Adds support for PDF+XML files in OneDrive picker [drawio-4339]
- Adds autosize and resizable to style clipboard [drawio-4285]
- Fixes PWA for iOS and iPadOS [drawio-4342]
- Adds support for iframe sandbox attribute [drawio-4340]
- Skips getStoredMode in embed mode [drawio-4340]

22-APR-2024: 24.2.8

- Adds experimental read-only mode [drawio-desktop-1380]
- [conf cloud] Adds support for server lightbox links [DID-11348]
- Enables crop option in PDF export dialog
- Fixes background images, page IDs in print preview

19-APR-2024: 24.2.7

- Simplifies print dialog
- Adds linecap and linejoin style [drawio-4200]
- Removes test.draw.io domain for development
- Adds Open Library option in Edit dropdown [drawio-3499,1357]
- Adds support for stencils in Open Library option
- Fixes dynamic loading of stencils in Firefox [DID-11328]
- Fixes possible scrollbars, all pages label in print dialog
- Changes font size unit label to px [drawio-3615,drawio-desktop-1448]

18-APR-2024: 24.2.6

- Build failure

12-APR-2024: 24.2.5

- [conf cloud] Improves embedding from URL and CSV via proxy and confluence attachments [DID-11234]
- Fixes possible DOM error in mxGraph.panGraph
- Sorts files and folders in OneDrive picker [drawio-2870]
- Checks size in Graph.clipSvgDataUri [drawio-desktop-1686]
- Fixes C4 shape container names [drawio-4312]

10-APR-2024: 24.2.4

- Release skipped

08-APR-2024: 24.2.3

- Adds Editor.fontSizeUnit, fixes possible unhandled font element
- Disables dots fillStyle in sketch mode
- Updates Rough.js from 4.4.1 to 4.6.6
- Enables rubberband on locked shapes [drawio-desktop-1684]
- Fixes saving of embed HTML in desktop [drawio-4301]
- Updates DOMPurify from 3.0.11 to 3.1.0
- Fixes ignored anchor links in SVG for Chrome PDF export

03-APR-2024: 24.2.2

- [conf cloud] Fixes timeout error fetching custom libraries when libraries page not found [DID-11193]
- Fixes iphone shape in small sizes [DID-11188]
- Writes warning for unknown object type, ignored value [DID-11225]
- Removes internalCompression feature flag

28-MAR-2024: 24.2.1

- Adds menu item for high contrast mode
- Adds shortcuts.svg to PWA [drawio-desktop-1130]
- [conf cloud] Fixes special XML characters in import services [DID-10752]
- Fixes C4 labels [drawio-4300]

26-MAR-2024: 24.2.0

- Naming fix for [draw-3336]
- Updates DOMPurify from 3.0.9 to 3.0.11
- Fixes export with invalid background page
- Fixes C4 strings [drawio-2612,3581]
- First iteration support for OS high constrast [drawio-4296]

23-MAR-2024: 24.1.0

- Improves save performance for files with images [DID-11006]

23-MAR-2024: 24.0.9

- Improves remote changes handling in DrawioFileSync.fastForward

22-MAR-2024: 24.0.8

- Fixes background of ID property
- Fixes lost page links in pasted cells
- Adds shortcut for bringForward/sendBackward [drawio-desktop-1662]
- Fixes mouse wheel in freehand mode [drawio-4278]
- [conf cloud] Refreshes viewer if loaded version doesn't match one in storage format [DID-10966]

14-MAR-2024: 24.0.7

- Moves Cloudflare workers to mxgraph-gliffy-java repository
- Fixes possible HTML content as SVG subtree
- Fixes overridden font in background page images
- Fixes timeout for invalid image in SVG export
- Disables and removes links in background pages
- Adds tooltips for values in Property pane
- Fixes clipped cell ID in Property pane [drawio-4262]
- Fixes regex performance in Graph.isLink [drawio-3939]
- [conf cloud] Adds upload embed diagrams to custom templates parsing [DID-11066]

13-MAR-2024: 24.0.6

- Moves subtree when tree is collapsed [drawio-3113]
- Fixes ignored given local filename [drawio-3555]
- Fixes possible NPE in Graph.executeCustomActions
- Fixes event handling on background pages
- Fixes %length% placeholder in child edge labels [drawio-1677]

11-MAR-2024: 24.0.5

- Adds checkbox for text shadow [drawio-4247]
- Explore ignores hidden edges [drawio-4243]

09-MAR-2024: 24.0.4

- [conf cloud] Fixes copied pages with embed upload macro editing [DID-11003]

08-MAR-2024: 24.0.3

- [conf cloud] Enables direct editing without custom content
- [conf cloud] Fixed imported libraries name if end with ".xml" [DID-10920]
- Adds block padding and margin properties to style panel [drawio-4198]
- Uses default spacing for Textbox shape
- Fixes default font for sketch mode [drawio-4216]
- Fixes broken MathJax output after zoom [drawio-4242]
- Fixes custom fonts and images in background pages [drawio-4239,drawio-3712,drawio-3281,drawio-2733,drawio-2367]

05-MAR-2024: 24.0.2

- Fixes DRAWIO_SERVER_URL if query string contains forward slash
- Handles double-quotes in page URLs
- Fixes waypoints for grouped edges [drawio-desktop-1646]
- Fixes ignored null bytes in mxUtils.trim

02-MAR-2024: 24.0.1

- Updates DOMPurify from 3.0.8 to 3.0.9
- Adds contrast URL parameter [drawio-3701]
- Fixes preview of SVG export with embedded fonts
- [conf cloud] Adds migration support for pageInfo parameter, templateUrl to re-indexing, improves tinyUrl parsing regex
- [conf cloud] Adds support for templateUrl with pageInfo in viewer
- [conf cloud] Shows custom contents based on macros in the page instead of page custom contents (easier deletion and no re-indexing)

29-FEB-202