Commit Graph
7549 Commits
Author SHA1 Message Date
Dylan M. Taylor 09d8872f15 Depth limit: merge containers at the cap in one pass over the siblings
limit() replaced each too-deep container by its children with
Vec::splice in the middle of the sibling list, moving every later
sibling each time: a wide list of such containers took quadratic time
to load. The list is now rebuilt in order from a worklist, so each node
moves a bounded number of times.
2026-11-02 20:33:29 -05:00
Brandon ThomasandClaude Opus 5.5 11862f6119 Release 0.21.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.21.0
2026-11-02 19:27:35 -05:00
BFlat 4ee0ef231a Merge pull request #5139 from dotCooCoo/fix/ai-os10-distort
.ai import: type keeps its Distort & Transform effects live
2026-11-02 16:54:41 +07:00
BFlat 04f5e6455d Merge pull request #5156 from dotCooCoo/fix/ai-os18-d
.ai import: open the variable library and data sets from the editing data
2026-11-02 16:54:26 +07:00
BFlat 942a29d9cb Merge pull request #5231 from dotCooCoo/feat/pixar-pxr-open
File formats: Pixar (.pxr) images open and place
2026-11-02 16:54:08 +07:00
BFlat d439a9f6e2 Merge pull request #5232 from dotCooCoo/fix/envelope-appearance-transform-options
Envelope: Distort Appearance keeps a Transform effect's Scale Strokes & Effects and Transform Patterns
2026-11-02 16:53:52 +07:00
BFlat f56b8ae578 Merge pull request #5230 from Hassan1305/fix-5159-cmdv-image
Fix #5159: ⌘V from the macOS menu bar pastes a picture another app copied
2026-11-02 16:53:34 +07:00
dotCooCoo b664216a2a .ai import: type keeps its Distort & Transform effects live
Squashed from #5139 onto main.
2026-11-02 16:19:59 +07:00
dotCooCoo 8ab68e4223 .ai import: open the variable library and data sets from the editing data
Squashed from #5156 onto main.
2026-11-02 16:19:19 +07:00
dotCooCoo 952446253f File formats: Pixar (.pxr) images open and place
Squashed from #5231 onto main.
2026-11-02 16:18:48 +07:00
dotCooCoo 9aac3ca888 Envelope: Distort Appearance keeps a Transform effect's Scale Strokes & Effects and Transform Patterns
With Envelope Options > Distort Appearance on, a path whose Transform
effect has Scale Strokes & Effects or Transform Patterns on, or copies it
with a gradient, was baked with the effect as geometry only: every copy
kept the original's stroke weight, dashes and pattern placement before
the envelope bent it. bake_appearance now makes such a path into the
per-copy art that drawing, export and Expand Appearance already use, and
bakes each copy's strokes into filled outlines from there.
2026-11-02 16:18:15 +07:00
HassanKhanandClaude Opus 5.5 b6f90d42fb Fix #5159: ⌘V from the macOS menu bar pastes a picture another app copied
The menu bar takes ⌘V's key-down as Edit › Paste's key equivalent, and
`native_menu::key_events` turns it back into egui input. With text on the
clipboard that was a Paste event; with only a picture (a screenshot) it
was nothing, leaving the paste to the window's own key-up. egui's window
integration only releases a key whose press it saw, so that release never
came and ⌘V pasted nothing, while Edit › Paste and ⌘V with the menu open
worked.

`key_events` now ends ⌘V with the key's release, as it already did for
⌘X and ⌘C: without a Paste event that release is the picture paste
`PasteChord` looks for, and after one it ends that paste so the next
picture paste still fires.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:18:13 +07:00
BFlat 683abdb2d6 Merge pull request #5080 from dotCooCoo/fix/issue-3118
Fix #3118: PDF export writes CMYK inks, gray and spot tints as the document holds them
2026-11-02 16:05:58 +07:00
BFlat 45eaeb258c Merge pull request #5226 from dotCooCoo/feat/compound-shape-blend-envelope-members
Pathfinder: blends, envelopes and warped objects can be compound shape members
2026-11-02 16:05:44 +07:00
BFlat e607294cb4 Merge pull request #5079 from dotCooCoo/feat/symbol-nine-slice-scaling
Symbols: a scaled instance of a symbol with 9-slice guides keeps its corners and edges unstretched
2026-11-02 16:05:26 +07:00
BFlat fafac93f4d Merge pull request #5221 from dotCooCoo/fix/transform-effect-item-options
Effects: a Transform effect on a fill or stroke honors Scale Strokes & Effects and Transform Patterns
2026-11-02 16:05:07 +07:00
BFlat 1df7337599 Merge pull request #5118 from dotCooCoo/fix/vars-p1
Variables: art on a locked artboard is not bound or rewritten by a data set
2026-11-02 16:04:49 +07:00
BFlat 846c2e6de9 Merge pull request #5224 from dotCooCoo/feat/select-same-link-block-series
Select: Same › Link Block Series selects every frame of a text thread
2026-11-02 16:04:33 +07:00
BFlat 37147bb029 Merge pull request #5223 from dotCooCoo/feat/raster-extension-aliases
File formats: .dib and .rle bitmaps, .pdd Photoshop files and .pns PNGs open and place
2026-11-02 16:04:15 +07:00
dotCooCoo b30f7ad34c Fix #3118: PDF export writes CMYK inks, gray and spot tints as the document holds them
Squashed from #5080 onto main.
2026-11-02 15:22:38 +07:00
dotCooCoo d324440afb Pathfinder: blends, envelopes and warped objects can be compound shape members
Squashed from #5226 onto main.
2026-11-02 15:22:32 +07:00
dotCooCoo 83f2bfe9d6 Symbols: a scaled instance of a symbol with 9-slice guides keeps its corners and edges unstretched
Squashed from #5079 onto main.
2026-11-02 15:22:07 +07:00
dotCooCoo ae23859002 Effects: later effects on a fill's or stroke's own Transform apply to all its copies as one piece
The geometry effects after a fill's or stroke's own Transform effect with
Scale Strokes & Effects or Transform Patterns now take the bounds of the
transformed path and all its copies as their reference box, as an
object's own effects do. A later Rotate turns the copies about their
combined center instead of turning each copy about its own, and a later
Offset Path or plain Transform applies to the paths themselves. Each copy
keeps its own scaled distances.

Part of #885
2026-11-02 15:22:00 +07:00
dotCooCoo eb92a1e53a Effects: a fill's or stroke's own Transform copies leave room in the effect budget for the pieces painted after them
transform_item_leaf now holds back the leaf's geometry for each plain or transformed piece that follows a transformed fill or stroke, so the copies of an earlier item no longer use up the budget that a later fill or stroke still needs. The nested pass over a transformed piece keeps to the same reduced limit.
2026-11-02 15:22:00 +07:00
dotCooCoo a1b8da43de Effects: plain fills and strokes beside a fill's or stroke's own Transform count toward the effect budget
Each fill or stroke without such a Transform effect is drawn on the object's geometry again, so its cost now counts toward the budget that limits the Transform effect's copies. The object's own geometry is no longer counted a second time next to the pieces that replace it. The Transform effect options entry in docs/target-app-parity.md links the current help pages.

Part of #885
2026-11-02 15:22:00 +07:00
dotCooCoo 3e77f65c7f Effects: a Transform effect on a fill or stroke honors Scale Strokes & Effects and Transform Patterns
A Transform effect in a fill's or stroke's own effect list now applies its
Scale Strokes & Effects and Transform Patterns options as the same effect on
the object does: the stroke's weight and dashes, the distances of the fill's
or stroke's later effects and its pattern follow the transformation, each
copy once more than the last, and with Transform Objects off the geometry
stays and the options apply once. The fill or stroke becomes an object of
its own in the art the canvas, export and Expand Appearance draw, and Use
Preview Bounds measures that art too (also for the object-level options).

Part of #885
2026-11-02 15:22:00 +07:00
dotCooCoo e68bf6af55 Variables: art on a locked artboard is not bound or rewritten by a data set
Squashed from #5118 onto main.
2026-11-02 15:21:58 +07:00
dotCooCoo 30dd4fe8f5 Select: Link Block Series checks the selection in linear time
The type objects in the selection are deduplicated with a set, each frame's
thread is looked up in a map built once, the locked artboards are measured
once per call, and the menu check stops at the first selected type object.
2026-11-02 15:21:51 +07:00
dotCooCoo 405cc83cae Select: Link Block Series ignores selected type that Select All cannot reach
Type selected by id on a hidden, locked or template layer, or outside
the isolated group, no longer counts as selected type: the command stays
off and does not select that frame's thread. The check reads the
object's ancestry, so the Select menu does not walk the whole document.
2026-11-02 15:21:51 +07:00
dotCooCoo 012a50815f Select: Link Block Series skips hidden and locked type in selected groups
Select › Same › Link Block Series no longer counts hidden or locked type
inside a selected group, or type inside a hidden or locked object there,
as selected. A group that holds only such type leaves the command off, and
the command does not select the other frames of that type's thread.
2026-11-02 15:21:51 +07:00
dotCooCoo 67032aece6 Select: Same › Link Block Series selects every frame of a text thread
Select › Same › Link Block Series (select.same.linkBlockSeries) selects every
frame of the threads that the selected type objects, and the type inside
selected groups, are in, in thread order. Type in no thread selects itself,
other selected objects are left out, and with frames of several threads
selected it selects all of them. Hidden, locked and out-of-isolation frames
are left out, Reselect repeats it, and it records no undo step. The item is
off while no type is selected.

Menu row in every catalog, docs/mcp.md and a docs/target-app-parity.md line.
2026-11-02 15:21:50 +07:00
dotCooCoo b5c91ece24 File formats: .dib and .rle bitmaps, .pdd Photoshop files and .pns PNGs open and place
File > Open and File > Place read BMP files named .dib or .rle (run-length
encoded bitmaps included), Photoshop files named .pdd and PNG files named
.pns, in any letter case. The Open and Place dialogs list them in "All
readable files", "All placeable files" and their format's own filter, and
Glass's Load Texture lists them too. Linked files with these names update
and relink, the Links panel shows their format, and Edit Original opens
them.

The extensions are read-only: exports still write .bmp, .psd and .png, and
an export to a path with one of the new extensions is refused as before.
The desktop packaging does not associate them with the app.
2026-11-02 15:21:48 +07:00
BFlat 5198b7084a Merge pull request #5078 from mockydevs/fix/repeat-edit-text-5054
Fix #5054: a double-click on a repeat isolates it to edit its source
2026-11-02 14:59:56 +07:00
BFlat ef5121c5df Merge pull request #5154 from mockydevs/fix/placed-bitmap-test-5152
Fix #5152: placed-document bitmap test no longer races its worker
2026-11-02 14:59:44 +07:00
BFlat f8fe21b180 Merge pull request #5107 from TheGalitube/fix/h7830-dxf-unicode-escapes-drop-supplem
Decode DXF surrogate pairs
2026-11-02 14:59:31 +07:00
BFlat be6433f799 Merge pull request #5075 from Prin-Ing/fix/h168-svg-export-with-metadata-on-writ
Filter invalid XML characters from SVG Dublin Core metadata
2026-11-02 14:59:15 +07:00
BFlat 86e7f2f342 Merge pull request #4324 from nrq6993-a11y/stream/vc-feat3-g4-mixed-type-orientation
G4: Type orientation menu unchecked for mixed vertical/horizontal selection
2026-11-02 14:59:02 +07:00
BFlat 6dcd0045b0 Merge pull request #5222 from ruchirguitar/fix/5218-artboard-navigation-commands
Fix #5218: the artboard navigator's buttons are commands Keyboard Shortcuts lists
2026-11-02 14:58:43 +07:00
BFlat 429cf5a7c5 Merge pull request #5090 from mockydevs/feat/corner-kind-arrows-2898
Fix #2898: Up and Down change the corner kind while dragging a widget
2026-11-02 14:58:27 +07:00
BFlat 093d362ca7 Merge pull request #5110 from mockydevs/feat/effect-shortcuts-3296
Fix #3296: Effect menu items take keyboard shortcuts of their own
2026-11-02 14:58:10 +07:00
BFlat 7d7ea937a8 Merge pull request #5109 from Prin-Ing/fix/h173-zip-writer-accepts-65535-files-b
Limit the ZIP writer to 65534 files so Archive::open can read it
2026-11-02 14:57:56 +07:00
BFlat c5eef592fc Merge pull request #4154 from FarmerGeorg/feature/appearance-tab-ui-parity
Appearance panel: UI improvements and parity for row editing
2026-11-02 14:57:39 +07:00
BFlat 79a2baff32 Merge pull request #4644 from ham9zah/feat/type-tool-group
Type tools: a Type tool that uses the clicked path, pointers that say what a click makes, and an icon per tool
2026-11-02 14:57:16 +07:00
BFlat 048c8ad6dc Merge pull request #4845 from Taha-Mahmoodi/feat/units-east-asian-type
Units: Preferences › East Asian Type reads, with Q and Ha units (#394)
2026-11-02 14:56:57 +07:00
BFlat c51b3e4816 Merge pull request #5066 from mockydevs/feat/swatch-legend-4919
Fix #4919: Create Swatch Legend
2026-11-02 14:56:41 +07:00
BFlat 24be60b506 Merge pull request #4961 from el-j/perf/canvas-decoupled-worker-pipeline
perf(canvas): zero-copy texture upload and progressive worker frame acceptance (#4615)
2026-11-02 14:56:23 +07:00
BFlat 78fe4014e3 Merge pull request #4898 from WadahBadawi/fix/path-average
fix(path): recurse into groups and compound paths for path.average
2026-11-02 14:56:04 +07:00
BFlat 95e0783697 Merge pull request #4001 from Silvertree2010/fix/h1948-export-for-screens-date-parser-i
Validate hyphen placement and days in month in parse_date
2026-11-02 14:55:45 +07:00
BFlat 0b78753bb9 Merge pull request #5032 from dotCooCoo/feat/export-preset-files-r
Asset Export: Import Preset and Export Preset read and write preset files
2026-11-02 14:55:23 +07:00
BFlat 31b9990c49 Merge pull request #4277 from dotCooCoo/fix/bitmap-paste-off-ui-thread
Clipboard: a bitmap pasted from another app is decoded off the UI thread
2026-11-02 14:55:08 +07:00