Commit Graph
Select branches
Hide Pull Requests
ci-speedup-nightly-platform-checks
ci/craft-fonts-pin
contrib/pr-303-original
docs/freebsd-platform
docs/honest-assessment
docs/image-trace-1013b
docs/progress-1013b
docs/readme-status-1010
docs/roadmap-catch-up
docs/type-parity-status
feat/637-ai-without-pdf
feat/637-editing-data
feat/637-structure-reader
feat/637-type-from-text-document
feat/724-bold-italic
feat/745-libraries
feat/812-tool-options
feat/832-automation-roots
feat/852-pressure-brushes
feat/885-transform-effect-dialog
feat/926-library-groups
feat/brush-options-scatter-art-pattern
feat/brush-strokes-effects
feat/distort-effects
feat/layers-panel
feat/link-watch
feat/macos-menu-bar
feat/pixelate-effects
feat/raster-effects-1
feat/task-bar-drag
feat/texture-effects
feat/video-effects
feat/windows-setup-wizard
fix/1001-style-attrs
fix/1002-noneditable-layer
fix/1003-path-text-color
fix/1004-connected-artboard-shot
fix/1005-run-broken-pipe
fix/1006-active-artboard-select
fix/1007-gradient-reverse-midpoint
fix/1008-polar-zero-radial
fix/1009-precise-pen-join
fix/1010-svg-mixed-units
fix/1011-dxf-survey-units
fix/1018-edit-toolbar-drawer
fix/1025-ai-global-colour-pattern
fix/1027-ps-form-ai
fix/1032-lab-spots
fix/1063-char-paint
fix/1068-ai-artboard-layout
fix/1085-dmg-strict
fix/1089-paste-image-markup
fix/1095-artboard-label-rotated
fix/1102-eps-layers-page
fix/1103-marquee-inside-shape
fix/1111-bend-blend-spine
fix/1111-mesh-selection-grid
fix/1111-paragraph-align-shortcuts
fix/1129-toolbar-proxy-size
fix/1133-zigzag-dialog
fix/1139-multi-artboard-select
fix/1144-curved-live-corners
fix/1151-xwayland-drops
fix/1152-offset-path-memory
fix/1158-alt-click-shows-clicked-layer
fix/1163-atomic-batch
fix/1163-file-list
fix/1163-preview-artboard
fix/1163-release-subpaths
fix/1180-align-anchors
fix/1194-dx12-fxc
fix/1197-compound-holes
fix/1264-ai-guides
fix/1286-ai-alpha-mask
fix/1358-trace-panel-width
fix/1367-dialog-refocus
fix/1512-corners-smooth
fix/1529-fontconfig-dirs
fix/394-prefs-batch
fix/394-spacing-guides
fix/449-two-finger-pan
fix/546-dxf-fill-outlines
fix/649-dock-drop-zone
fix/651-gpu-fallback-int
fix/661-touch-bar-quit-int
fix/663-canvas-greys
fix/663-recent-and-preset-dblclick
fix/663-toolbar-labels
fix/671-artboard-orientation
fix/673-tab-close-side
fix/681-rearrange-artboards
fix/683-fonts-folder
fix/693-artboard-paste
fix/696-field-widths
fix/701-rotate-cursor
fix/703-templates-folder
fix/708-unmapped-glyphs
fix/712-hide-box-dragging
fix/725-marquee
fix/729-tabs-above-text
fix/733-pdf-live-text
fix/734-crop-image-box
fix/735-editing-data-drift
fix/740-move-snaps-to-grid
fix/746-tab-overflow
fix/755
fix/758-skip-hopeless-prune
fix/775-properties-paragraph
fix/776-pen-joins-paths
fix/785-step-references
fix/787-precise-export
fix/788-svg-place-viewbox
fix/789-align-to-everywhere
fix/793-artboard-options-and-layouts
fix/798-curvature-any-path
fix/806-no-vulkan-on-windows
fix/807-all-tools-drawer
fix/808-slim-toolbar-scrollbar
fix/811-identify-unnamed-glyphs
fix/812-ellipse-pie
fix/812-guides-snap
fix/812-hover-labels
fix/812-star-radius-modifiers
fix/824-artboard-label
fix/826-rotated-rulers
fix/827-raster-effect-blend
fix/828-effect-dropdowns
fix/830-app-quit-pending
fix/831-acb-color-books
fix/833-isolation-locks-outside
fix/835-gradient-stop-recent
fix/839-sfw-pixel-size
fix/847-underline-strikethrough
fix/861-open-error-dialog
fix/862-stop-popover-beside-art
fix/867-macos-dialog-thread
fix/886-shift-anchor-guides
fix/888-smooth-wheel-zoom
fix/890-artboard-edge-art
fix/900-segmented-field
fix/901-shift-click-target
fix/903-reselect-after-deselect
fix/909-profile-preview-scale
fix/918-place-psd
fix/921-properties-gradient
fix/924-tab-leader-typing
fix/925-links-on-focus
fix/927-direct-marquee-type
fix/938-corner-widgets-multi
fix/949-artboard-label-width
fix/955-move-snaps-grabbed-point
fix/962-inner-glow-source
fix/964-first-frame-watch
fix/968-traffic-lights
fix/983-supersampled-export
fix/batch-rollback-layer-rows
fix/checkbox-outlines
fix/clippy-199-affinity-tests
fix/clippy-byte-str
fix/clippy-typecmd-borrow
fix/direct-anchor-snap
fix/eps-sources-restore
fix/eps-vector-import
fix/flaky-native-menu-test
fix/font-test-installed-fonts
fix/hyphen-test-race
fix/i18n-review-followups
fix/issue-177
fix/issue-206
fix/issue-219
fix/issue-221
fix/issue-231
fix/issue-234
fix/issue-290
fix/issue-291
fix/issue-293
fix/issue-295
fix/issue-296
fix/issue-306
fix/issue-319
fix/issue-320
fix/issue-334
fix/issue-359
fix/issue-362
fix/issue-367
fix/issue-369
fix/issue-372
fix/issue-372-ai-roundtrip
fix/issue-374
fix/issue-381
fix/issue-392
fix/issue-394
fix/issue-394b
fix/issue-396
fix/issue-398
fix/issue-400
fix/issue-414
fix/issue-419
fix/issue-420
fix/issue-421
fix/issue-423
fix/issue-429
fix/issue-439
fix/issue-442
fix/issue-443
fix/issue-444
fix/issue-479
fix/issue-482
fix/issue-483
fix/issue-485
fix/issue-487
fix/issue-491
fix/issue-494
fix/issue-495
fix/issue-498
fix/issue-501
fix/issue-502
fix/issue-504
fix/issue-506
fix/issue-508
fix/issue-511
fix/issue-516
fix/issue-522
fix/issue-525
fix/issue-526
fix/issue-530
fix/issue-536
fix/issue-541
fix/issue-543
fix/issue-545
fix/issue-546
fix/issue-555
fix/issue-563
fix/issue-569
fix/issue-577
fix/issue-578
fix/issue-579
fix/issue-579-cli
fix/issue-585
fix/issue-592
fix/issue-593
fix/issue-597
fix/issue-598
fix/issue-638
fix/palette-shortcuts
fix/selection-arrow-colours
fix/svg-import-layers
fix/svg-root-layer-name
fix/thai-caret-clusters
fix/thai-craft-font
fix/thai-font-fallback
fix/thai-font-filter
fix/thai-line-breaks
fix/thai-word-navigation
fix/trace-advanced-view
fix/trace-palette
fix/trace-strokes
fix/vello-flatten-guard
fix/width-point-index
fix/windows-taskbar-icon
m3-m4-paint-and-files
main
pr/clean-room-rules
pr/eps-spec-only-tests
pr/freebsd-release
pr/land-2026-10-09
pr/land-394
pr/land-581
pr/land-591
pr/land-594
pr/land-600
pr/land-603
pr/land-606
pr/land-608
pr/land-616
pr/land-619
pr/land-621
pr/land-629
pr/land-639
pr/land-641
pr/land-643
pr/land-667
pr/land-687
pr/land-694
pr/land-698-699
pr/land-batch10
pr/land-batch11
pr/land-batch12
pr/land-batch13
pr/land-batch14b
pr/land-batch2
pr/land-batch3
pr/land-batch4
pr/land-batch5
pr/land-batch6
pr/land-batch8
pr/land-batch9
pr/land-fastmikey
pr/linux-clipboard-probe
pr/never-crash-tools
pr/never-crash-ui
pr/release-0.7.0
pr/review-followups-2026-10-08
pr/roadmap-batch-2026-10-10
release
review/1157-followup
test/idle-link-scan-flake
u/trace-docs
u/trace-gradients
u/trace-gradients2
u/trace-groups
u/trace-harness
u/trace-level-bound
u/trace-logo-scans
u/trace-memory
u/trace-options
u/trace-palette
u/trace-photo
u/trace-shapes
u/trace-shared
u/trace-strokes
u/trace-subpixel
u/trace-thin
u/trace-upright
#1
#10
#100
#101
#1012
#1013
#1014
#1015
#1016
#1017
#102
#1020
#1021
#1022
#1023
#103
#1030
#1030/merge
#1031
#1033
#1035
#1036
#1037
#1038
#1039
#104
#1040
#1041
#1042
#1043
#1044
#1045
#1046
#1047
#1048
#1049
#105
#1051
#1052
#1053
#1054
#1055
#1056
#1057
#1058
#1059
#106
#1060
#1062
#1066
#1066/merge
#1067
#1069
#107
#1070
#1071
#1073
#1074
#1075
#1076
#1077
#1078
#1079
#108
#1080
#1081
#1082
#1083
#1084
#1088
#109
#1090
#1091
#1092
#1093
#1093/merge
#1094
#1094/merge
#1099
#11
#110
#1101
#1104
#1105
#1106
#1107
#1108
#1109
#111
#1110
#1112
#1113
#1115
#1116
#1117
#1118
#1119
#112
#1120
#1121
#1122
#1123
#1127
#1128
#113
#1130
#1131
#1131/merge
#1132
#1134
#1135
#1136
#1137
#1138
#114
#1142
#1143
#1145
#1146
#1147
#1148
#1149
#115
#1150
#1153
#1153/merge
#1154
#1155
#1157
#1159
#116
#1160
#1166
#1167
#1168
#1169
#117
#1170
#1171
#1173
#1174
#1175
#1176
#1177
#1178
#1179
#118
#1181
#1182
#1182/merge
#1183
#1183/merge
#1184
#1184/merge
#1185
#1186
#1187
#1188
#1189
#119
#1190
#1191
#1192
#1193
#1193/merge
#1195
#1196
#1196/merge
#12
#120
#1200
#1201
#1203
#1203/merge
#1204
#1205
#1206
#1207
#1208
#1211
#1213
#1214
#1215
#1216
#1217
#1218
#1219
#1220
#1221
#1222
#1223
#1223/merge
#1224
#1225
#1226
#123
#1230
#1233
#1235
#1237
#1238
#1239
#124
#1240
#1241
#1241/merge
#1243
#1245
#1246
#1247
#1248
#1248/merge
#1249
#125
#1250
#1252
#1255
#1256
#1259
#126
#1260
#1263
#1265
#1267
#127
#1276
#1277
#1277/merge
#128
#1281
#1281/merge
#1282
#1284
#1285
#1285/merge
#1287
#1288
#129
#1290
#1291
#1294
#1295
#1295/merge
#1296
#1297
#1298
#1298/merge
#13
#1300
#1301
#1302
#1303
#1305
#1306
#1308
#1309
#1310
#1311
#1313
#1314
#1315
#1316
#1318
#1319
#1319/merge
#132
#1320
#1321
#1322
#1323
#1324
#1325
#1327
#1328
#1328/merge
#1329
#133
#1330
#1331
#1332
#1333
#1335
#1336
#1337
#1339
#134
#1341
#1342
#1342/merge
#1343
#1345
#1346
#1347
#1348
#1348/merge
#1349
#135
#1350
#1351
#1352
#1353
#1354
#1355
#1359
#1360
#1361
#1361/merge
#1362
#1362/merge
#1363
#1364
#1365
#1365/merge
#1368
#1369
#137
#1371
#1374
#1375
#1376
#1378
#1379
#138
#1381
#1382
#1383
#1384
#1386
#1390
#1391
#1392
#1393
#1394
#1395
#1397
#1398
#1399
#14
#140
#1400
#1400/merge
#1401
#1401/merge
#1402
#1403
#1403/merge
#1404
#1405
#1406
#1406/merge
#1409
#141
#1413
#1414
#1415
#1416
#1416/merge
#1418
#142
#1421
#1424
#1424/merge
#1425
#1426
#1427
#1428
#143
#1430
#1434
#1435
#1436
#1436/merge
#1437
#1437/merge
#1438
#1439
#144
#1440
#1443
#1443/merge
#1445
#1447
#1449
#145
#1451
#1452
#1453
#1455
#1456
#1456/merge
#146
#1461
#1463
#1464
#147
#1472
#1472/merge
#1474
#1478
#148
#1481
#1485
#1487
#1488
#1489
#149
#1490
#1492
#1493
#1494
#1495
#1496
#1497
#1498
#15
#150
#1500
#1501
#1502
#1504
#1505
#1506
#1507
#1509
#151
#1510
#1510/merge
#1511
#1514
#1514/merge
#1515
#1516
#1517
#1519
#152
#1520
#1521
#1522
#1523
#1524
#1525
#1526
#1528
#153
#1530
#1531
#1532
#1532/merge
#1535
#1537
#1538
#154
#1540
#1541
#1543
#1544
#1545
#1546
#1547
#1548
#1549
#155
#1551
#1553
#1558
#156
#1562
#1563
#1564
#1564/merge
#1565
#1566
#1567
#1569
#157
#1571
#1572
#1574
#1576
#1577
#158
#1580
#1581
#1582
#1583
#1585
#1586
#1587
#1587/merge
#1589
#1591
#1593
#1594
#1594/merge
#1595
#1596
#1599
#16
#160
#1600
#1600/merge
#1603
#1605
#1605/merge
#1606
#1608
#1609
#161
#1611
#1612
#1614
#1617
#1618
#1619
#162
#1621
#1622
#1623
#1625
#1626
#1626/merge
#1627
#1628
#163
#1630
#1630/merge
#1631
#1631/merge
#1632
#1632/merge
#1633
#1633/merge
#1634
#1634/merge
#164
#1641
#1641/merge
#1642
#1642/merge
#1646
#1646/merge
#1647
#1649
#1650
#1651
#1651/merge
#1652
#1652/merge
#1654
#1654/merge
#1657
#1658
#1659
#166
#1663
#1663/merge
#1666
#1666/merge
#1667
#1667/merge
#1669
#1669/merge
#167
#1670
#1670/merge
#1672
#1673
#1674
#1674/merge
#1677
#1677/merge
#168
#1682
#1682/merge
#1684
#1684/merge
#1687
#1687/merge
#1688
#1688/merge
#1689
#1689/merge
#169
#1690
#1690/merge
#17
#170
#171
#172
#1734
#1734/merge
#1739
#1739/merge
#174
#1740
#1740/merge
#1744
#1744/merge
#1746
#1746/merge
#1750
#1750/merge
#1751
#1751/merge
#1752
#1752/merge
#1755
#1755/merge
#176
#179
#18
#180
#181
#182
#183
#184
#185
#186
#187
#188
#189
#19
#190
#191
#192
#194
#195
#196
#197
#198
#199
#2
#20
#200
#201
#203
#205
#207
#208
#209
#21
#210
#211
#212
#213
#214
#215
#216
#218
#22
#220
#222
#223
#225
#226
#227
#228
#229
#23
#233
#235
#237
#239
#24
#240
#241
#242
#243
#244
#246
#248
#249
#25
#251
#253
#254
#26
#261
#262
#263
#265
#267
#269
#27
#271
#272
#273
#274
#275
#276
#278
#279
#28
#281
#282
#284
#286
#287
#288
#289
#29
#294
#298
#3
#30
#300
#301
#303
#304
#308
#310
#312
#315
#316
#317
#318
#32
#323
#325
#326
#328
#329
#330
#331
#332
#333
#336
#337
#338
#339
#341
#343
#344
#345
#347
#348
#35
#350
#351
#353
#355
#356
#357
#360
#363
#364
#366
#370
#373
#375
#376
#377
#378
#379
#38
#383
#384
#385
#386
#387
#389
#390
#391
#393
#395
#397
#399
#401
#402
#403
#404
#405
#406
#407
#408
#409
#41
#410
#411
#412
#413
#415
#416
#417
#42
#422
#424
#425
#426
#427
#428
#43
#430
#431
#434
#435
#436
#437
#438
#440
#441
#445
#448
#45
#450
#452
#453
#454
#456
#459
#46
#460
#462
#463
#464
#465
#467
#468
#47
#470
#471
#473
#475
#476
#477
#478
#48
#480
#481
#484
#486
#488
#489
#49
#490
#492
#493
#496
#497
#499
#5
#50
#500
#503
#507
#509
#51
#510
#512
#513
#515
#517
#518
#519
#52
#520
#521
#523
#524
#527
#528
#529
#53
#531
#533
#534
#535
#538
#54
#540
#542
#547
#548
#549
#55
#552
#553
#556
#557
#558
#559
#56
#560
#562
#564
#565
#566
#567
#568
#57
#570
#571
#572
#574
#576
#58
#580
#581
#582
#583
#584
#586
#587
#59
#590
#591
#594
#595
#596
#596/merge
#599
#6
#60
#600
#601
#603
#604
#606
#607
#608
#609
#61
#610
#611
#612
#613
#613/merge
#614
#616
#617
#618
#619
#62
#621
#622
#623
#624
#625
#626
#627
#628
#629
#63
#630
#631
#632
#634
#635
#636
#639
#64
#640
#643
#644
#645
#648
#65
#650
#652
#653
#654
#656
#657
#658
#659
#66
#660
#664
#667
#668
#669
#67
#670
#672
#674
#675
#676
#677
#678
#679
#68
#680
#682
#684
#685
#686
#687
#688
#689
#69
#690
#691
#692
#694
#695
#697
#698
#699
#7
#70
#700
#702
#705
#707
#709
#71
#711
#713
#714
#715
#717
#718
#719
#72
#720
#721
#723
#727
#728
#73
#730
#731
#736
#737
#739
#74
#741
#742
#744
#748
#749
#75
#750
#751
#753
#754
#756
#759
#76
#760
#761
#762
#763
#765
#768
#769
#77
#770
#771
#773
#774
#777
#78
#781
#782
#783
#79
#790
#791
#792
#794
#795
#796
#799
#8
#800
#801
#801/merge
#802
#803
#810
#814
#815
#816
#817
#817/merge
#820
#821
#822
#836
#837
#837/merge
#845
#846
#848
#850
#851
#853
#854
#855
#856
#857
#857/merge
#859
#860
#863
#865
#865/merge
#869
#870
#871
#872
#873
#874
#875
#876
#877
#878
#879
#88
#881
#882
#883
#884
#887
#889
#89
#891
#892
#894
#895
#896
#897
#898
#899
#9
#90
#902
#906
#91
#910
#911
#912
#913
#914
#915
#916
#917
#919
#92
#920
#923
#928
#928/merge
#929
#93
#930
#931
#932
#933
#934
#935
#936
#939
#94
#940
#941
#942
#943
#944
#945
#946
#947
#948
#95
#950
#952
#953
#956
#959
#96
#960
#963
#963/merge
#965
#965/merge
#967
#969
#97
#970
#971
#972
#974
#98
#981
#982
#984
#985
#986
#987
#988
#989
#99
#990
#992
#993
#994
#996
#997
#998
#999
v0.1.0
v0.1.1
v0.10.0
v0.2.0
v0.3.0
v0.3.1
v0.4.0
v0.5.0
v0.6.0
v0.7.0
v0.8.0
v0.9.0
Select branches
Hide Pull Requests
ci-speedup-nightly-platform-checks
ci/craft-fonts-pin
contrib/pr-303-original
docs/freebsd-platform
docs/honest-assessment
docs/image-trace-1013b
docs/progress-1013b
docs/readme-status-1010
docs/roadmap-catch-up
docs/type-parity-status
feat/637-ai-without-pdf
feat/637-editing-data
feat/637-structure-reader
feat/637-type-from-text-document
feat/724-bold-italic
feat/745-libraries
feat/812-tool-options
feat/832-automation-roots
feat/852-pressure-brushes
feat/885-transform-effect-dialog
feat/926-library-groups
feat/brush-options-scatter-art-pattern
feat/brush-strokes-effects
feat/distort-effects
feat/layers-panel
feat/link-watch
feat/macos-menu-bar
feat/pixelate-effects
feat/raster-effects-1
feat/task-bar-drag
feat/texture-effects
feat/video-effects
feat/windows-setup-wizard
fix/1001-style-attrs
fix/1002-noneditable-layer
fix/1003-path-text-color
fix/1004-connected-artboard-shot
fix/1005-run-broken-pipe
fix/1006-active-artboard-select
fix/1007-gradient-reverse-midpoint
fix/1008-polar-zero-radial
fix/1009-precise-pen-join
fix/1010-svg-mixed-units
fix/1011-dxf-survey-units
fix/1018-edit-toolbar-drawer
fix/1025-ai-global-colour-pattern
fix/1027-ps-form-ai
fix/1032-lab-spots
fix/1063-char-paint
fix/1068-ai-artboard-layout
fix/1085-dmg-strict
fix/1089-paste-image-markup
fix/1095-artboard-label-rotated
fix/1102-eps-layers-page
fix/1103-marquee-inside-shape
fix/1111-bend-blend-spine
fix/1111-mesh-selection-grid
fix/1111-paragraph-align-shortcuts
fix/1129-toolbar-proxy-size
fix/1133-zigzag-dialog
fix/1139-multi-artboard-select
fix/1144-curved-live-corners
fix/1151-xwayland-drops
fix/1152-offset-path-memory
fix/1158-alt-click-shows-clicked-layer
fix/1163-atomic-batch
fix/1163-file-list
fix/1163-preview-artboard
fix/1163-release-subpaths
fix/1180-align-anchors
fix/1194-dx12-fxc
fix/1197-compound-holes
fix/1264-ai-guides
fix/1286-ai-alpha-mask
fix/1358-trace-panel-width
fix/1367-dialog-refocus
fix/1512-corners-smooth
fix/1529-fontconfig-dirs
fix/394-prefs-batch
fix/394-spacing-guides
fix/449-two-finger-pan
fix/546-dxf-fill-outlines
fix/649-dock-drop-zone
fix/651-gpu-fallback-int
fix/661-touch-bar-quit-int
fix/663-canvas-greys
fix/663-recent-and-preset-dblclick
fix/663-toolbar-labels
fix/671-artboard-orientation
fix/673-tab-close-side
fix/681-rearrange-artboards
fix/683-fonts-folder
fix/693-artboard-paste
fix/696-field-widths
fix/701-rotate-cursor
fix/703-templates-folder
fix/708-unmapped-glyphs
fix/712-hide-box-dragging
fix/725-marquee
fix/729-tabs-above-text
fix/733-pdf-live-text
fix/734-crop-image-box
fix/735-editing-data-drift
fix/740-move-snaps-to-grid
fix/746-tab-overflow
fix/755
fix/758-skip-hopeless-prune
fix/775-properties-paragraph
fix/776-pen-joins-paths
fix/785-step-references
fix/787-precise-export
fix/788-svg-place-viewbox
fix/789-align-to-everywhere
fix/793-artboard-options-and-layouts
fix/798-curvature-any-path
fix/806-no-vulkan-on-windows
fix/807-all-tools-drawer
fix/808-slim-toolbar-scrollbar
fix/811-identify-unnamed-glyphs
fix/812-ellipse-pie
fix/812-guides-snap
fix/812-hover-labels
fix/812-star-radius-modifiers
fix/824-artboard-label
fix/826-rotated-rulers
fix/827-raster-effect-blend
fix/828-effect-dropdowns
fix/830-app-quit-pending
fix/831-acb-color-books
fix/833-isolation-locks-outside
fix/835-gradient-stop-recent
fix/839-sfw-pixel-size
fix/847-underline-strikethrough
fix/861-open-error-dialog
fix/862-stop-popover-beside-art
fix/867-macos-dialog-thread
fix/886-shift-anchor-guides
fix/888-smooth-wheel-zoom
fix/890-artboard-edge-art
fix/900-segmented-field
fix/901-shift-click-target
fix/903-reselect-after-deselect
fix/909-profile-preview-scale
fix/918-place-psd
fix/921-properties-gradient
fix/924-tab-leader-typing
fix/925-links-on-focus
fix/927-direct-marquee-type
fix/938-corner-widgets-multi
fix/949-artboard-label-width
fix/955-move-snaps-grabbed-point
fix/962-inner-glow-source
fix/964-first-frame-watch
fix/968-traffic-lights
fix/983-supersampled-export
fix/batch-rollback-layer-rows
fix/checkbox-outlines
fix/clippy-199-affinity-tests
fix/clippy-byte-str
fix/clippy-typecmd-borrow
fix/direct-anchor-snap
fix/eps-sources-restore
fix/eps-vector-import
fix/flaky-native-menu-test
fix/font-test-installed-fonts
fix/hyphen-test-race
fix/i18n-review-followups
fix/issue-177
fix/issue-206
fix/issue-219
fix/issue-221
fix/issue-231
fix/issue-234
fix/issue-290
fix/issue-291
fix/issue-293
fix/issue-295
fix/issue-296
fix/issue-306
fix/issue-319
fix/issue-320
fix/issue-334
fix/issue-359
fix/issue-362
fix/issue-367
fix/issue-369
fix/issue-372
fix/issue-372-ai-roundtrip
fix/issue-374
fix/issue-381
fix/issue-392
fix/issue-394
fix/issue-394b
fix/issue-396
fix/issue-398
fix/issue-400
fix/issue-414
fix/issue-419
fix/issue-420
fix/issue-421
fix/issue-423
fix/issue-429
fix/issue-439
fix/issue-442
fix/issue-443
fix/issue-444
fix/issue-479
fix/issue-482
fix/issue-483
fix/issue-485
fix/issue-487
fix/issue-491
fix/issue-494
fix/issue-495
fix/issue-498
fix/issue-501
fix/issue-502
fix/issue-504
fix/issue-506
fix/issue-508
fix/issue-511
fix/issue-516
fix/issue-522
fix/issue-525
fix/issue-526
fix/issue-530
fix/issue-536
fix/issue-541
fix/issue-543
fix/issue-545
fix/issue-546
fix/issue-555
fix/issue-563
fix/issue-569
fix/issue-577
fix/issue-578
fix/issue-579
fix/issue-579-cli
fix/issue-585
fix/issue-592
fix/issue-593
fix/issue-597
fix/issue-598
fix/issue-638
fix/palette-shortcuts
fix/selection-arrow-colours
fix/svg-import-layers
fix/svg-root-layer-name
fix/thai-caret-clusters
fix/thai-craft-font
fix/thai-font-fallback
fix/thai-font-filter
fix/thai-line-breaks
fix/thai-word-navigation
fix/trace-advanced-view
fix/trace-palette
fix/trace-strokes
fix/vello-flatten-guard
fix/width-point-index
fix/windows-taskbar-icon
m3-m4-paint-and-files
main
pr/clean-room-rules
pr/eps-spec-only-tests
pr/freebsd-release
pr/land-2026-10-09
pr/land-394
pr/land-581
pr/land-591
pr/land-594
pr/land-600
pr/land-603
pr/land-606
pr/land-608
pr/land-616
pr/land-619
pr/land-621
pr/land-629
pr/land-639
pr/land-641
pr/land-643
pr/land-667
pr/land-687
pr/land-694
pr/land-698-699
pr/land-batch10
pr/land-batch11
pr/land-batch12
pr/land-batch13
pr/land-batch14b
pr/land-batch2
pr/land-batch3
pr/land-batch4
pr/land-batch5
pr/land-batch6
pr/land-batch8
pr/land-batch9
pr/land-fastmikey
pr/linux-clipboard-probe
pr/never-crash-tools
pr/never-crash-ui
pr/release-0.7.0
pr/review-followups-2026-10-08
pr/roadmap-batch-2026-10-10
release
review/1157-followup
test/idle-link-scan-flake
u/trace-docs
u/trace-gradients
u/trace-gradients2
u/trace-groups
u/trace-harness
u/trace-level-bound
u/trace-logo-scans
u/trace-memory
u/trace-options
u/trace-palette
u/trace-photo
u/trace-shapes
u/trace-shared
u/trace-strokes
u/trace-subpixel
u/trace-thin
u/trace-upright
#1
#10
#100
#101
#1012
#1013
#1014
#1015
#1016
#1017
#102
#1020
#1021
#1022
#1023
#103
#1030
#1030/merge
#1031
#1033
#1035
#1036
#1037
#1038
#1039
#104
#1040
#1041
#1042
#1043
#1044
#1045
#1046
#1047
#1048
#1049
#105
#1051
#1052
#1053
#1054
#1055
#1056
#1057
#1058
#1059
#106
#1060
#1062
#1066
#1066/merge
#1067
#1069
#107
#1070
#1071
#1073
#1074
#1075
#1076
#1077
#1078
#1079
#108
#1080
#1081
#1082
#1083
#1084
#1088
#109
#1090
#1091
#1092
#1093
#1093/merge
#1094
#1094/merge
#1099
#11
#110
#1101
#1104
#1105
#1106
#1107
#1108
#1109
#111
#1110
#1112
#1113
#1115
#1116
#1117
#1118
#1119
#112
#1120
#1121
#1122
#1123
#1127
#1128
#113
#1130
#1131
#1131/merge
#1132
#1134
#1135
#1136
#1137
#1138
#114
#1142
#1143
#1145
#1146
#1147
#1148
#1149
#115
#1150
#1153
#1153/merge
#1154
#1155
#1157
#1159
#116
#1160
#1166
#1167
#1168
#1169
#117
#1170
#1171
#1173
#1174
#1175
#1176
#1177
#1178
#1179
#118
#1181
#1182
#1182/merge
#1183
#1183/merge
#1184
#1184/merge
#1185
#1186
#1187
#1188
#1189
#119
#1190
#1191
#1192
#1193
#1193/merge
#1195
#1196
#1196/merge
#12
#120
#1200
#1201
#1203
#1203/merge
#1204
#1205
#1206
#1207
#1208
#1211
#1213
#1214
#1215
#1216
#1217
#1218
#1219
#1220
#1221
#1222
#1223
#1223/merge
#1224
#1225
#1226
#123
#1230
#1233
#1235
#1237
#1238
#1239
#124
#1240
#1241
#1241/merge
#1243
#1245
#1246
#1247
#1248
#1248/merge
#1249
#125
#1250
#1252
#1255
#1256
#1259
#126
#1260
#1263
#1265
#1267
#127
#1276
#1277
#1277/merge
#128
#1281
#1281/merge
#1282
#1284
#1285
#1285/merge
#1287
#1288
#129
#1290
#1291
#1294
#1295
#1295/merge
#1296
#1297
#1298
#1298/merge
#13
#1300
#1301
#1302
#1303
#1305
#1306
#1308
#1309
#1310
#1311
#1313
#1314
#1315
#1316
#1318
#1319
#1319/merge
#132
#1320
#1321
#1322
#1323
#1324
#1325
#1327
#1328
#1328/merge
#1329
#133
#1330
#1331
#1332
#1333
#1335
#1336
#1337
#1339
#134
#1341
#1342
#1342/merge
#1343
#1345
#1346
#1347
#1348
#1348/merge
#1349
#135
#1350
#1351
#1352
#1353
#1354
#1355
#1359
#1360
#1361
#1361/merge
#1362
#1362/merge
#1363
#1364
#1365
#1365/merge
#1368
#1369
#137
#1371
#1374
#1375
#1376
#1378
#1379
#138
#1381
#1382
#1383
#1384
#1386
#1390
#1391
#1392
#1393
#1394
#1395
#1397
#1398
#1399
#14
#140
#1400
#1400/merge
#1401
#1401/merge
#1402
#1403
#1403/merge
#1404
#1405
#1406
#1406/merge
#1409
#141
#1413
#1414
#1415
#1416
#1416/merge
#1418
#142
#1421
#1424
#1424/merge
#1425
#1426
#1427
#1428
#143
#1430
#1434
#1435
#1436
#1436/merge
#1437
#1437/merge
#1438
#1439
#144
#1440
#1443
#1443/merge
#1445
#1447
#1449
#145
#1451
#1452
#1453
#1455
#1456
#1456/merge
#146
#1461
#1463
#1464
#147
#1472
#1472/merge
#1474
#1478
#148
#1481
#1485
#1487
#1488
#1489
#149
#1490
#1492
#1493
#1494
#1495
#1496
#1497
#1498
#15
#150
#1500
#1501
#1502
#1504
#1505
#1506
#1507
#1509
#151
#1510
#1510/merge
#1511
#1514
#1514/merge
#1515
#1516
#1517
#1519
#152
#1520
#1521
#1522
#1523
#1524
#1525
#1526
#1528
#153
#1530
#1531
#1532
#1532/merge
#1535
#1537
#1538
#154
#1540
#1541
#1543
#1544
#1545
#1546
#1547
#1548
#1549
#155
#1551
#1553
#1558
#156
#1562
#1563
#1564
#1564/merge
#1565
#1566
#1567
#1569
#157
#1571
#1572
#1574
#1576
#1577
#158
#1580
#1581
#1582
#1583
#1585
#1586
#1587
#1587/merge
#1589
#1591
#1593
#1594
#1594/merge
#1595
#1596
#1599
#16
#160
#1600
#1600/merge
#1603
#1605
#1605/merge
#1606
#1608
#1609
#161
#1611
#1612
#1614
#1617
#1618
#1619
#162
#1621
#1622
#1623
#1625
#1626
#1626/merge
#1627
#1628
#163
#1630
#1630/merge
#1631
#1631/merge
#1632
#1632/merge
#1633
#1633/merge
#1634
#1634/merge
#164
#1641
#1641/merge
#1642
#1642/merge
#1646
#1646/merge
#1647
#1649
#1650
#1651
#1651/merge
#1652
#1652/merge
#1654
#1654/merge
#1657
#1658
#1659
#166
#1663
#1663/merge
#1666
#1666/merge
#1667
#1667/merge
#1669
#1669/merge
#167
#1670
#1670/merge
#1672
#1673
#1674
#1674/merge
#1677
#1677/merge
#168
#1682
#1682/merge
#1684
#1684/merge
#1687
#1687/merge
#1688
#1688/merge
#1689
#1689/merge
#169
#1690
#1690/merge
#17
#170
#171
#172
#1734
#1734/merge
#1739
#1739/merge
#174
#1740
#1740/merge
#1744
#1744/merge
#1746
#1746/merge
#1750
#1750/merge
#1751
#1751/merge
#1752
#1752/merge
#1755
#1755/merge
#176
#179
#18
#180
#181
#182
#183
#184
#185
#186
#187
#188
#189
#19
#190
#191
#192
#194
#195
#196
#197
#198
#199
#2
#20
#200
#201
#203
#205
#207
#208
#209
#21
#210
#211
#212
#213
#214
#215
#216
#218
#22
#220
#222
#223
#225
#226
#227
#228
#229
#23
#233
#235
#237
#239
#24
#240
#241
#242
#243
#244
#246
#248
#249
#25
#251
#253
#254
#26
#261
#262
#263
#265
#267
#269
#27
#271
#272
#273
#274
#275
#276
#278
#279
#28
#281
#282
#284
#286
#287
#288
#289
#29
#294
#298
#3
#30
#300
#301
#303
#304
#308
#310
#312
#315
#316
#317
#318
#32
#323
#325
#326
#328
#329
#330
#331
#332
#333
#336
#337
#338
#339
#341
#343
#344
#345
#347
#348
#35
#350
#351
#353
#355
#356
#357
#360
#363
#364
#366
#370
#373
#375
#376
#377
#378
#379
#38
#383
#384
#385
#386
#387
#389
#390
#391
#393
#395
#397
#399
#401
#402
#403
#404
#405
#406
#407
#408
#409
#41
#410
#411
#412
#413
#415
#416
#417
#42
#422
#424
#425
#426
#427
#428
#43
#430
#431
#434
#435
#436
#437
#438
#440
#441
#445
#448
#45
#450
#452
#453
#454
#456
#459
#46
#460
#462
#463
#464
#465
#467
#468
#47
#470
#471
#473
#475
#476
#477
#478
#48
#480
#481
#484
#486
#488
#489
#49
#490
#492
#493
#496
#497
#499
#5
#50
#500
#503
#507
#509
#51
#510
#512
#513
#515
#517
#518
#519
#52
#520
#521
#523
#524
#527
#528
#529
#53
#531
#533
#534
#535
#538
#54
#540
#542
#547
#548
#549
#55
#552
#553
#556
#557
#558
#559
#56
#560
#562
#564
#565
#566
#567
#568
#57
#570
#571
#572
#574
#576
#58
#580
#581
#582
#583
#584
#586
#587
#59
#590
#591
#594
#595
#596
#596/merge
#599
#6
#60
#600
#601
#603
#604
#606
#607
#608
#609
#61
#610
#611
#612
#613
#613/merge
#614
#616
#617
#618
#619
#62
#621
#622
#623
#624
#625
#626
#627
#628
#629
#63
#630
#631
#632
#634
#635
#636
#639
#64
#640
#643
#644
#645
#648
#65
#650
#652
#653
#654
#656
#657
#658
#659
#66
#660
#664
#667
#668
#669
#67
#670
#672
#674
#675
#676
#677
#678
#679
#68
#680
#682
#684
#685
#686
#687
#688
#689
#69
#690
#691
#692
#694
#695
#697
#698
#699
#7
#70
#700
#702
#705
#707
#709
#71
#711
#713
#714
#715
#717
#718
#719
#72
#720
#721
#723
#727
#728
#73
#730
#731
#736
#737
#739
#74
#741
#742
#744
#748
#749
#75
#750
#751
#753
#754
#756
#759
#76
#760
#761
#762
#763
#765
#768
#769
#77
#770
#771
#773
#774
#777
#78
#781
#782
#783
#79
#790
#791
#792
#794
#795
#796
#799
#8
#800
#801
#801/merge
#802
#803
#810
#814
#815
#816
#817
#817/merge
#820
#821
#822
#836
#837
#837/merge
#845
#846
#848
#850
#851
#853
#854
#855
#856
#857
#857/merge
#859
#860
#863
#865
#865/merge
#869
#870
#871
#872
#873
#874
#875
#876
#877
#878
#879
#88
#881
#882
#883
#884
#887
#889
#89
#891
#892
#894
#895
#896
#897
#898
#899
#9
#90
#902
#906
#91
#910
#911
#912
#913
#914
#915
#916
#917
#919
#92
#920
#923
#928
#928/merge
#929
#93
#930
#931
#932
#933
#934
#935
#936
#939
#94
#940
#941
#942
#943
#944
#945
#946
#947
#948
#95
#950
#952
#953
#956
#959
#96
#960
#963
#963/merge
#965
#965/merge
#967
#969
#97
#970
#971
#972
#974
#98
#981
#982
#984
#985
#986
#987
#988
#989
#99
#990
#992
#993
#994
#996
#997
#998
#999
v0.1.0
v0.1.1
v0.10.0
v0.2.0
v0.3.0
v0.3.1
v0.4.0
v0.5.0
v0.6.0
v0.7.0
v0.8.0
v0.9.0
-
10ea4d5daf
M3.42: Appearance editing depth — drag effect rows to reorder them or move them into/out of fills and strokes (Alt copies), click an effect name to edit it in its prefilled dialog, choosing an applied effect asks to edit it or add another, Show All Hidden Attributes, multi-select and Alt-drag duplicate of fills/strokes, drag the thumbnail onto art to copy the appearance, stroke rows note brush/Dashed/profile, Shift-click a chip for the mixer, Properties fx opens the effect menu
bflatasticandClaude Opus 5.5
2026-10-04 23:01:34 +07:00 -
eb83efdb19
M3.44: graphic styles keep opacity and blend, capture groups and type, add on Alt-click
bflatasticandClaude Opus 5.5
2026-10-04 23:01:10 +07:00 -
059f623410
M3.33: Gradient panel: proxy, swatch menu, diamond location, stop popover, Alt-drag copies and swaps, swatch drops, stop eyedropper
bflatasticandClaude Opus 5.5
2026-10-04 23:00:38 +07:00 -
fe258915e3
M3.30: Swatches panel multi-selection, find field and drag and drop
bflatasticandClaude Opus 5.5
2026-10-04 22:54:56 +07:00 -
18d870c7df
M3.37: Outline Stroke and the live Outline Stroke effect outline strokes as the canvas paints them
bflatasticandClaude Opus 5.5
2026-10-04 22:53:58 +07:00 -
6bd27a05da
Merge wp/I1
bflatastic
2026-10-04 22:14:37 +07:00 -
96f1b6852a
Merge wp/F1
bflatastic
2026-10-04 22:07:49 +07:00 -
546559d8a1
M3.17: dialog modules in rustfmt order
bflatasticandClaude Opus 5.5
2026-10-04 22:02:27 +07:00 -
0b547ec597
M4.13: raster exports check the format's size limit first and share the renderer's pixel budget
bflatasticandClaude Opus 5.5
2026-10-04 22:02:26 +07:00 -
62569f8a9d
M3.19: a negative dash entry makes the pattern invalid, so the line draws solid
bflatasticandClaude Opus 5.5
2026-10-04 22:02:26 +07:00 -
721bb483c3
Merge wp/D1
bflatastic
2026-10-04 22:01:05 +07:00 -
41f2af932c
Merge wp/C1
bflatastic
2026-10-04 21:47:58 +07:00 -
efc0ac31d9
Merge wp/B1
bflatastic
2026-10-04 21:47:07 +07:00 -
1ae0c22c26
Merge wp/A1
bflatastic
2026-10-04 21:46:02 +07:00 -
0af6734b70
Merge M3/M4 wave 0: neutral labels and brands gate, per-area paint modules, one engine loader/encoder (M3.7, M3.8, M4.10-M4.13)
bflatastic
2026-10-04 21:46:01 +07:00 -
ead8f72208
Merge pull request #11 from storybored379/pr/svg-import-physical-units
Brandon Thomas
2026-10-04 10:16:45 -04:00 -
3326b1aaac
Merge pull request #10 from storybored379/pr/svg-export-area-type-lines
Brandon Thomas
2026-10-04 10:16:42 -04:00 -
6b93a3dded
Merge pull request #9 from storybored379/pr/raster-export-size-limit
Brandon Thomas
2026-10-04 10:16:39 -04:00 -
4be1e009ec
Merge pull request #8 from storybored379/pr/svg-import-tspan-line-gap
Brandon Thomas
2026-10-04 10:16:35 -04:00 -
a4696edbe8
Merge pull request #7 from storybored379/pr/invalid-dash-pattern
Brandon Thomas
2026-10-04 10:16:32 -04:00 -
cbf5dc99bb
Merge pull request #6 from storybored379/pr/svg-import-text-on-path
Brandon Thomas
2026-10-04 10:16:28 -04:00 -
8164d7c3fb
Merge pull request #5 from storybored379/pr/mcp-headless-open-pdf-ai
Brandon Thomas
2026-10-04 10:16:24 -04:00 -
439f99e491
xtask: rustfmt version.rs (fmt gate was red on main)
Brandon ThomasandClaude Opus 5.5
2026-10-04 10:05:41 -04:00 -
a1430cfc1e
Merge pull request #12 from storytold/pr/license-standard
Brandon Thomas
2026-10-04 10:08:55 -04:00 -
ef5beece81
Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms
Brandon ThomasandClaude Opus 5.5
2026-10-04 10:05:13 -04:00 -
ad82e6e9a9
M3.27: Color Picker reads colours with the engine's color_value (one parser; CMYK and grey in percent as the paint commands take them) instead of its own copy
bflatasticandClaude Opus 5.5
2026-10-04 18:24:22 +07:00 -
c071dcd4d0
M3.28: proxies look through groups like the paint commands (a group shows its contents' paint, and contents that differ make a "?" proxy), the toolbar and panels share the engine's Session::proxy_paints, Magic Wand and Select Text by Font bump the revision so the cached "?" state follows them; double-click proxy test
bflatasticandClaude Opus 5.5
2026-10-04 18:22:05 +07:00 -
ff9af2628a
M3.29: Live Paint Bucket and Appearance item colours feed the recent colours; the last-colour/gradient commands read "Apply Last Color" / "Apply Last Gradient" (no clash with Window > Gradient);
,and.keyboard testbflatasticandClaude Opus 5.5
2026-10-04 18:20:19 +07:00 -
6d2dc7cbbc
M3.28: Color panel behaviour — the mode follows the colour's own model (the last mode picked returns for colours in its model), Alt-clicking the spectrum, None/Black/White, swatches, recent colours or Color Guide chips paints the inactive proxy, Hide Options leaves the proxy and spectrum, RGB/HSB show the out-of-gamut warning (click to correct), Shift-clicking the spectrum cycles modes, Shift-dragging a slider moves the others in tandem, and a mixed selection draws "?" proxies (paint.proxies reports fillMixed/strokeMixed)
bflatasticandClaude Opus 5.5
2026-10-04 18:01:39 +07:00 -
f21161ce8c
M3.27: Color Picker dialog — double-clicking a Fill/Stroke proxy (toolbar, Color, Swatches, Properties) or ui.colorPicker {stroke?, color?} opens a colour field with an H/S/B/R/G/B channel slider, HSB/RGB/Lab/CMYK fields and hex, Only Web Colors, out-of-gamut (corrected through color.convert) and out-of-web warnings, New/Original chips and a Color Swatches list; OK runs paint.setFill / paint.setStroke (CMYK in CMYK documents)
bflatasticandClaude Opus 5.5
2026-10-04 17:49:26 +07:00 -
8a871d98a9
M3.29: proxy paint commands — paint.invert / paint.complement recolour the active proxy of each selected object keeping its colour model (the defaults when nothing is selected), paint.lastColor (,) and paint.lastGradient (.) re-apply the last solid colour or gradient (the toolbar chips draw and run them), swap and default work on type, and recent colours live in the Session, fed by every paint command (MCP, eyedropper, live previews on commit) and listed by paint.recent
bflatasticandClaude Opus 5.5
2026-10-04 12:23:52 +07:00 -
2ed962e7d0
M3.16: the eyedropper samples type gradients in text space
bflatasticandClaude Opus 5.5
2026-10-04 17:59:03 +07:00 -
cca1d11032
M3.14: gradient swatches and new art fit a placed gradient to themselves
bflatasticandClaude Opus 5.5
2026-10-04 17:58:05 +07:00 -
6ebffb9156
M3.24: Clear Appearance and Reduce to Basic add no fill or stroke rows to a group
bflatasticandClaude Opus 5.5
2026-10-04 17:52:46 +07:00 -
d3dc4a2af3
M3.17: the stop popover survives its opening double-click, and the selected stop belongs to its gradient
bflatasticandClaude Opus 5.5
2026-10-04 17:52:28 +07:00 -
1b3e7110a3
M3.21: active-row edits of the other kind stay on the painted leaves, item transparency is one undo step
bflatasticandClaude Opus 5.5
2026-10-04 17:50:46 +07:00 -
8910f8fd1e
M3.12: the dialog Cancel button reuses dialogs::cancel; the Swatches panel no longer clones its selection every frame
bflatasticandClaude Opus 5.5
2026-10-04 17:45:50 +07:00 -
d1d133bf09
M3.13: swatch.newGroup falls back to "Color Group" for a blank name, never gives a swatch its own group's name, and takes mesh point colours from the artwork
bflatasticandClaude Opus 5.5
2026-10-04 17:45:49 +07:00 -
e9e4b94ed0
M3.10: default swatch names never read "-0" (components are clamped first); one numbering helper for free and new swatch names
bflatasticandClaude Opus 5.5
2026-10-04 17:45:47 +07:00 -
984eb7f10c
M3.26: effects crate docs list the shared clip_outline helper
bflatasticandClaude Opus 5.5
2026-10-04 17:45:04 +07:00 -
745d50f76e
M3.25: appearance.setItem takes ids without a selection; undo/redo through mask editing tested
bflatasticandClaude Opus 5.5
2026-10-04 17:45:04 +07:00 -
014ee0382f
M3.20: visual bounds cover arrowheads so overhanging heads are not culled; one arrowhead-weight helper
bflatasticandClaude Opus 5.5
2026-10-04 17:40:41 +07:00 -
4283820a30
M3.19: dash patterns too fine to advance draw solid instead of hanging on zero-length paths
bflatasticandClaude Opus 5.5
2026-10-04 17:40:39 +07:00 -
3786cfaf36
M3.17: interactive gradient annotator — drag the start handle or the bar to move the gradient, the end handle to change length and angle, just past the end to rotate (Shift snaps to 45°); a bar click adds a stop, stops drag along the bar, off it to delete (never below two), Alt-drag copies, diamonds move midpoints; a click inside selected art applies the gradient from that point; double-clicking a stop opens a popover (Color/Swatches, Opacity, Location); the selected stop lives in the session (gradient.selectStop), shared by the tool, the Gradient and Color panels and agents, and takes Delete/Backspace and ←/→ ahead of their shortcuts (Tool::claims_key, also headless); stop chips draw as Overlay::Swatch with generated add/remove-stop cursors; the stop math moves into the color crate
bflatasticandClaude Opus 5.5
2026-10-04 17:39:36 +07:00 -
3692b9d233
M3.24: basic appearance, Layers target dots, Mixed Appearances and Clear resets opacity
bflatasticandClaude Opus 5.5
2026-10-04 17:30:03 +07:00 -
7da0bfb1c6
M3.13: New Swatch and New Color Group dialogs — New Swatch reuses the Swatch Options fields prefilled from the active colour (its default name follows the colour), goes into the selected colour group, Alt-click skips it and Cmd/Ctrl makes a spot colour; New Color Group makes a group from the selected swatches or the selected artwork's colours, optionally as global swatches the art links to and with swatches for tints
bflatasticandClaude Opus 5.5
2026-10-04 17:26:24 +07:00 -
4f685be57a
M3.26: clipping sets with any clip shape
bflatasticandClaude Opus 5.5
2026-10-04 17:23:57 +07:00 -
b6b87ee9b6
M3.23: per-item Opacity popups and one grouped blend-mode widget
bflatasticandClaude Opus 5.5
2026-10-04 17:21:28 +07:00 -
5ae7bfb8ca
M3.20: arrowheads: hollow outlines, tip/extend alignment, one opacity for line and head
bflatasticandClaude Opus 5.5
2026-10-04 17:20:40 +07:00 -
23f19a861b
M3.19: dotted lines: zero-length dashes draw discs or squares
bflatasticandClaude Opus 5.5
2026-10-04 17:18:13 +07:00 -
09d7aaa7f4
M3.18: shared stroke-geometry module for arrowheads, width profiles and the profile preset catalogue
bflatasticandClaude Opus 5.5
2026-10-04 17:16:17 +07:00 -
aa1b592935
M3.16: the Gradient tool follows the active proxy and type objects — the tool and annotator edit the fill or the stroke by the focused proxy (ToolContext.fill_active); paint.setGradientGeom takes stroke? (default: the active proxy) and index? (one appearance item), sets type objects' vectors on their runs in text space and keeps the aspect the document shows; paint.setFill/setStroke vectors on type move into text space; aspect edits place run gradients on the layout bounds; run strokes (and type appearance strokes) fit the stroke-inflated box on screen and in PDF
bflatasticandClaude Opus 5.5
2026-10-04 17:16:12 +07:00 -
3082be6ecf
M3.12: delete swatches and colour groups — Shift/Cmd-click selects several swatches and groups in the panel, Delete asks first (Alt-click skips), swatch.delete {names} removes them in one undo step and art using a deleted global swatch keeps its colour, unlinked
bflatasticandClaude Opus 5.5
2026-10-04 17:15:46 +07:00 -
543d09985d
M3.22: effects apply to the active fill or stroke and item effect rows are editable
bflatasticandClaude Opus 5.5
2026-10-04 17:15:40 +07:00 -
b117566fc2
M3.25: opacity-mask editing and transparency command reach
bflatasticandClaude Opus 5.5
2026-10-04 17:10:21 +07:00 -
6b159467a2
SVG import: tspan line breaks follow the baseline gap (none on the same baseline, bounded far gaps)
storybored379andClaude Opus 5.5
2026-10-04 00:06:57 -07:00 -
ce5fdfd373
SVG import: root sizes in mm/cm/in/pt open at their physical size
storybored379andClaude Opus 5.5
2026-10-04 01:14:20 -07:00 -
cab5dffbcf
SVG export: area type keeps its wrapped lines and alignment
storybored379andClaude Opus 5.5
2026-10-04 01:01:04 -07:00 -
152228d76d
Raster export: refuse sizes the renderer can't produce instead of crashing
storybored379andClaude Opus 5.5
2026-10-04 00:44:03 -07:00 -
c20b7deec5
Stroke dashes: an invalid dash pattern draws a solid stroke instead of hanging the renderer
storybored379andClaude Opus 5.5
2026-10-04 00:00:39 -07:00 -
4ac7095601
SVG import: <textPath> comes back as type on a path
storybored379andClaude Opus 5.5
2026-10-03 23:46:04 -07:00 -
1fd9b79a9d
MCP: headless open_file reads .pdf and PDF-compatible .ai, as File ▸ Open does
storybored379andClaude Opus 5.5
2026-10-03 23:45:57 -07:00 -
d272d32be3
M3.11: Swatch Options — double-click, the options button or the menu item opens a colour swatch's editor (name, process/spot, Global, Gray/RGB/HSB/CMYK/Web sliders, hex) with a live canvas preview; gradients open the Gradient panel and patterns pattern editing; swatch.edit recolours and renames every linked fill, stroke and text run in one undo step, spot forces Global, grouped swatches edit too; swatch.list query
bflatasticandClaude Opus 5.5
2026-10-04 12:32:17 +07:00 -
81f86a9acc
M3.15: gradients follow every transform — rotate, reflect, shear, non-uniform scale and Free Distort/warps pin an unplaced gradient to its fit first (fills on the bounds, strokes on the stroke-inflated box; moves and uniform scales keep refitting); linear vectors keep their isolines and radial gradients map their ellipse (principal axes give the new end and aspect); the radial angle places the vector before the gradient is placed; the eyedropper samples radials honouring aspect; SVG import shares the mapping; warped text, images and symbols no longer map their gradients twice
bflatasticandClaude Opus 5.5
2026-10-04 12:31:54 +07:00 -
018bed29db
M3.21: the Appearance panel's active item drives paint, stroke, gradient and transparency edits
bflatasticandClaude Opus 5.5
2026-10-04 12:28:05 +07:00 -
61ddc1ce34
M3.14: lossless, validated gradient params — paint.setFill/setStroke, swatch.new and appearance.setItem keep kind (freeform too), midpoints, stop opacity, aspect, vector and swatch link; a shared parse_stops rejects fewer than two or malformed stops, clamps offsets and normalises 0..100 opacity; an aspect without a vector places the gradient on each object's (stroke-inflated) bounds; panels write gradients through one params writer
bflatasticandClaude Opus 5.5
2026-10-04 12:22:49 +07:00 -
2f21fc3a66
M3.10: swatch names follow the colour model (C=10 M=20 Y=30 K=0, R=.. G=.. B=.., Gray K=..) and are unique document-wide; New Swatch saves the active gradient or pattern, Ctrl/Cmd-click makes a spot colour; colour groups take solid colours only
bflatasticandClaude Opus 5.5
2026-10-04 12:20:52 +07:00 -
00a0874d4d
M3.9: swatches in colour groups are first-class — Document Color Mode converts them, they can be spot colours with their own plate and PDF Separation, and Document Info counts them
bflatasticandClaude Opus 5.5
2026-10-04 12:15:10 +07:00 -
8f9d6ef2bd
Roadmap: M3/M4 wave 0 (one loader/encoder for every frontend, MCP export options, per-area paint modules, brands gate)
m3-m4-paint-and-files
bflatasticandClaude Opus 5.5
2026-10-04 12:02:52 +07:00 -
fb8c41d8e3
Merge wp/M1: one engine loader/encoder for every frontend and export correctness (M4.12, M4.13)
bflatasticandClaude Opus 5.5
2026-10-04 11:58:00 +07:00 -
115255a7e4
Merge wp/WP-00: neutral labels, packaging metadata and vendor-name CI gate (M3.7, M4.10, M4.11)
bflatasticandClaude Opus 5.5
2026-10-04 11:57:34 +07:00 -
29d43d2a84
Merge wp/WP-01: split paint/panel command modules and dialogs into per-area files (M3.8)
bflatasticandClaude Opus 5.5
2026-10-04 11:57:28 +07:00 -
879295dd1a
M4.10: shortcut-set alias test reads the legacy name from the alias table
bflatasticandClaude Opus 5.5
2026-10-04 11:56:39 +07:00 -
7b410ecf2c
M3.7: proof setup looks profiles up through the alias table; alias tests read the legacy name from it
bflatasticandClaude Opus 5.5
2026-10-04 11:56:39 +07:00 -
7bc50901e4
M4.13: review fixes — template sublayers are left out of raster exports too (the check moves into draw_arc), Export Selection skips art under a template layer at any depth, Export for Screens drops @Nx suffixes on SVG/PDF rows, names files without case clashes and calls an unnamed artboard Artboard-N, oversized raster exports are refused instead of writing empty files, a named MCP artboard/range replaces the option picks, and control app.export without a path returns dataBase64 instead of opening a save dialog
bflatasticandClaude Opus 5.5
2026-10-04 11:49:45 +07:00 -
5d9b97c3bd
M4.10: neutral file, preference and MCP wording; vendor-name CI gate
bflatasticandClaude Opus 5.5
2026-10-04 11:47:28 +07:00 -
dd0bb0eefb
M3.7: colour tests share the settings lock
bflatasticandClaude Opus 5.5
2026-10-04 11:45:32 +07:00 -
45a7302601
M4.13: export correctness and MCP export parity — document.export/serialize honour artboard, artboards or range ("1-3, 5") for PDF (one page per artboard) and return dataBase64 without a path; Export for Screens writes one page per PDF, ignores scale and @Nx suffixes for vector formats, names duplicate artboards -2/-3 and returns bytes without a folder; raster exports, thumbnails and Export Selection leave template layers out (RenderOptions.skip_templates); file.exportForScreens with params runs the engine; the MCP export tool takes artboard/range/options, lists formats from the engine and never retargets the document; CLI convert --range
bflatasticandClaude Opus 5.5
2026-10-04 11:38:23 +07:00 -
4d503c0327
M4.12: one loader and encoder for every frontend — engine fileio (load/encode/export/save, append-only FORMATS table, OPEN_EXTS, document.formats query, typed per-format options, parse_range); document.open reads native/legacy, SVG/SVGZ, PDF/.ai, .ait (opens untitled like native templates) and PNG/JPEG/GIF/WebP/TIFF/BMP; desktop, web, control channel, headless MCP and the CLI open and encode through it; open dialogs list "All readable files" plus one filter per format
bflatasticandClaude Opus 5.5
2026-10-04 11:36:51 +07:00 -
9cabeea68b
M3.8: register the split paint modules next to paint so the command palette keeps listing them (Stroke Options for "stroke")
bflatasticandClaude Opus 5.5
2026-10-04 11:32:11 +07:00 -
b7969a6a5d
M3.8: split the paint/panel command modules and the dialogs into per-area files
bflatasticandClaude Opus 5.5
2026-10-04 11:22:23 +07:00 -
0af38a31fd
M4.11: packaging metadata describes a vector illustration app
bflatasticandClaude Opus 5.5
2026-10-04 11:19:13 +07:00 -
016fcbf34e
M3.7: neutral paint, effect and stroke labels
bflatasticandClaude Opus 5.5
2026-10-04 11:17:50 +07:00 -
d99853ed2a
M4.10: neutral New Document preset name
bflatasticandClaude Opus 5.5
2026-10-04 11:01:59 +07:00 -
5fab94753c
CI: cargo fmt xtask/src/version.rs (the fmt gate failed on main)
bflatasticandClaude Opus 5.5
2026-10-04 10:23:02 +07:00 -
604c20ed90
Merge pull request #3 from storytold/revert-readme-habits
BFlat
2026-10-04 01:16:35 +07:00 -
e08ced735e
Docs: drop the README's list of specific Illustrator habits (too detailed for the overview); the control-protocol note on the save prompt stays
bflatastic
2026-10-04 01:16:12 +07:00 -
b538b0a84a
Merge pull request #2 from storytold/docs-workflow-updates
BFlat
2026-10-04 00:57:41 +07:00 -
62681d2b80
Docs: README names the Illustrator habits that now work (corner widget dragging, Alt-click pivot on an anchor, middle-mouse pan, save prompt before closing); control protocol: file.close / closeAll / app.quit open a saveChanges dialog per modified document and how agents answer it
bflatastic
2026-10-04 00:55:55 +07:00 -
4ddc422e51
Release 0.1.1
v0.1.1
Brandon ThomasandClaude Opus 5.5
2026-10-03 09:55:30 -04:00 -
f188863b10
README: tagline names the Adobe app it reimplements; standard Adobe trademark and non-affiliation notice
v0.1.0
Brandon ThomasandClaude Opus 5.5
2026-10-02 12:24:12 -04:00 -
e608d5a26b
README: Crafting Apps table in five columns (icon, app, purpose, GitHub, Website)
Brandon ThomasandClaude Opus 5.5
2026-10-02 12:19:01 -04:00 -
065d095597
README: drop the old DrawCraft name; VectorCraft links to /apps/vectorcraft
Brandon ThomasandClaude Opus 5.5
2026-10-02 12:18:12 -04:00 -
4af5e80a41
README: app icons in the Crafting Apps table
Brandon ThomasandClaude Opus 5.5
2026-10-02 12:17:13 -04:00 -
2d0b055c7e
Make ported packaging scripts executable (fixes exit 126)
Brandon ThomasandClaude Opus 4.8
2026-10-02 12:03:30 -04:00 -
1531cb0d11
Merge pull request #1 from storytold/live-corners-pan-close-prompt
BFlat
2026-10-02 23:00:22 +07:00 -
b8701977d4
M4.9: Save / Don't Save / Cancel before closing modified documents — File → Close, Close All, a tab's ×, Quit and the window's close button ask once per modified document (shown first); Cancel stops the whole close/quit, a cancelled Save As keeps the document open; closing keeps per-document views aligned; agents answer the saveChanges dialog with ui.dialog.confirm (discard: true for Don't Save)
bflatastic
2026-10-02 22:24:30 +07:00 -
3f1f3383d3
M11.6: middle-button drag pans the view with any tool (no tool events, grabbing cursor while panning; a left press during the pan is ignored); headless canvas test
bflatastic
2026-10-02 22:23:55 +07:00 -
cf775072be
M1.10: Rotate/Reflect/Scale/Shear reference point snaps — a click or Alt-click within 5 px of an anchor or object centre (of the selection or the object under the pointer) pivots exactly there, so Alt-clicking a corner flips/rotates from that corner; hovering shows the anchor/center label first; follows View → Snap to Point or Smart Guides (snap_to_point now reaches the tools)
bflatastic
2026-10-02 22:23:24 +07:00 -
8276d0a303
M2.10: Live Corners — drag a live rectangle's corner widget (Selection or Direct Selection) to round or sharpen all four corners as one undo step (object.setLiveShape preview, radius readout, follows rotated/scaled shapes, square to fully round); widgets drawn from the same geometry the tools hit-test, hidden on tiny shapes and with View → Hide Corner Widget; corner-radius cursor
bflatastic
2026-10-02 22:22:29 +07:00