Repository navigation
Expand file tree
/
Copy pathChangeLog
More file actions
14940 lines (10698 loc) · 464 KB
/
Copy pathChangeLog
File metadata and controls
14940 lines (10698 loc) · 464 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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]
- Reduces stale duration
- 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
- 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
- WIP: intent-frozen execute-time resolution (redesign in progress)
- 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
- Tooling build fixes
- 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
- Resends unconfirmed changes when the first peer appears
- 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
- Records that the GAE push trigger fired once on 31.4.6 and failed on its log bucket access
- 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]
- Build of version 31.4.6
- 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
- Removes unused code
- 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
- Updates excludes
- 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]
- Build for confluence testing
- Block javascript: URLs with tab in the scheme in MathJax labels
13-AUG-2026: 31.2.2
- Corrected version format
- 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]