Don Omondi
5b18da25a8
fix(format): remove what a native file has beyond the canvas ( #3575 )
...
Edits refuse to leave anything beyond MAX_COORD (doc_sane checks the
artboards, the guides, the ruler origin and the objects an edit touches),
but the native loader didn't check them. A file with one object, artboard,
guide or ruler origin out there opened without a warning, and then every
move failed with "result would exceed the canvas", in-range objects
included; saving kept it that way.
Document::drop_beyond_canvas removes objects whose geometric bounds aren't
finite or reach past MAX_COORD (a layer or non-clipping group keeps its
children within it), artboards with their artboard guides, and guides out
there, and puts the ruler origin back at the origin. load_file runs it
after the depth limit and reports what it did with the other load notes; a
file whose artboards all lie beyond the canvas is refused.
2026-10-29 11:07:40 +07:00
Don Omondi
d60b6bf883
fix(doc): count the values buffered before an object's type ( #3587 )
...
NodeKind's reader buffers the fields that come before `type` as
serde_json::Values. VectorCraft writes `type` first, but a crafted file
can put a long array there: a group whose children held 50M numbers before
its type (a 96 KB gzip) peaked at 1.6 GB, and the cost grows with the
array up to MAX_JSON, before any object in it is counted.
The buffer is read through a counting visitor: each JSON value counts
against MAX_BUFFERED_VALUES (32M, 4M on wasm32) as it is read, and values
replayed from the buffer aren't counted twice. load_file reads within it;
the same file is now refused at a 1.1 GB peak.
2026-10-29 11:07:37 +07:00
Don Omondi
eeae8c9136
fix(format): read a native document within an object budget ( #3587 )
...
Opening a native document now reads at most MAX_READ_NODES objects (4M,
512K on wasm32) and refuses the file past that with a message naming the
budget. Paths already read within MAX_READ_ANCHORS and the web build's JSON
cap is 256 MB, but the number of objects had no bound: a gzip'd document of
empty groups costs about 270 bytes per object once read against some 50 in
its JSON, so 10M groups in a 24 MB file took 2.7 GB to open.
NodeWire's id is read through counted_id, so each object counts once as it
is read. load_file reads through a private load_file_within so a test can
exercise the budget without a 4M-object document.
2026-10-29 11:07:37 +07:00
BFlat
2b36d641c1
Merge pull request #4426 from dotCooCoo/fix/leading-catalog-terms
...
i18n: each catalog names leading with one term
2026-10-29 11:02:49 +07:00
BFlat
21001e037a
Merge pull request #4424 from el-j/fix/window-menu-order-4143
...
Fix #4143 : Window menu lists panel items alphabetically by localized name
2026-10-29 11:02:32 +07:00
BFlat
718e87e54e
Merge pull request #4423 from dotCooCoo/fix/shortcuts-hide-commands-needing-values
...
Keyboard Shortcuts: commands that need a value are not listed unless given a shortcut
2026-10-29 11:02:09 +07:00
BFlat
51357f0e9c
Merge pull request #4422 from dotCooCoo/fix/hide-lock-disabled-in-isolation
...
Object: Lock, Hide, Unlock All and Show All are off in isolation mode
2026-10-29 11:01:56 +07:00
BFlat
1780af28f2
Merge pull request #4421 from dotCooCoo/fix/escape-cancels-distort-tool-drags
...
Distort tools: Escape cancels a Puppet Warp, perspective or Liquify drag
2026-10-29 11:01:42 +07:00
BFlat
d43ba6d230
Merge pull request #4419 from dotCooCoo/fix/style-menu-delete-clears-highlight
...
Text styles: the panel menu's Duplicate highlights the copy and Delete clears the highlight
2026-10-29 11:01:22 +07:00
BFlat
da9329ee7f
Merge pull request #4417 from dotCooCoo/fix/closed-arc-y-base-sector
...
Arc tool: a closed arc with Base Along Y draws the X-axis sector mirrored
2026-10-29 11:01:07 +07:00
BFlat
4d634dae92
Merge pull request #4416 from dotCooCoo/fix/tabs-position-label-translated
...
Tabs: the position field's label is translated
2026-10-29 11:00:43 +07:00
BFlat
9c03111c84
Merge pull request #4414 from dotCooCoo/feat/blob-brush-fidelity-option
...
Blob Brush: Tool Options set its Fidelity
2026-10-29 11:00:30 +07:00
BFlat
f60f707e85
Merge pull request #4413 from dotCooCoo/feat/style-drag-to-new-or-delete
...
Character and Paragraph Styles: a style dropped on New is copied, and one dropped on Delete is deleted
2026-10-29 11:00:16 +07:00
BFlat
7ebcd18eff
Merge pull request #4410 from dotCooCoo/fix/blob-brush-merge-rule
...
Blob Brush: a stroke merges with the topmost matching path and its neighbors in its group or layer
2026-10-29 10:59:58 +07:00
BFlat
0ed947f162
Merge pull request #4407 from dotCooCoo/feat/layers-cmd-alt-click-new-layer-placement
...
Layers: Cmd/Ctrl+Alt-click places a new layer below the current one and a new sublayer at the bottom
2026-10-29 10:59:35 +07:00
BFlat
8ad8b5f2c3
Merge pull request #4405 from dotCooCoo/fix/issue-4036
...
Fix #4036 : a .ai swatch library without layers loads its palette, not the default swatches
2026-10-29 10:59:20 +07:00
BFlat
7fa66e8c61
Merge pull request #4404 from dotCooCoo/feat/type-caret-follows-undo
...
Type: Undo and Redo put the caret where the undone or redone edit was
2026-10-29 10:59:06 +07:00
BFlat
eead185a75
Merge pull request #4403 from dotCooCoo/fix/kerning-tracking-catalog-terms
...
i18n: Character panel Kerning and Tracking terms agree in each catalog
2026-10-29 10:58:55 +07:00
BFlat
47e0fa2a41
Merge pull request #4395 from dotCooCoo/fix/issue-3235
...
Part of #3235 : PDF import keeps the spot swatch of a DeviceN color that mixes inks
2026-10-29 10:58:33 +07:00
BFlat
4072363c22
Merge pull request #4394 from dotCooCoo/feat/export-pixel-width-height
...
Export: document.export takes a pixel width or height for raster files
2026-10-29 10:58:15 +07:00
BFlat
b5f126a464
Merge pull request #4393 from dotCooCoo/feat/screens-zip-deflates
...
Export for Screens: a ZIP export deflates its files
2026-10-29 10:57:59 +07:00
BFlat
daffac2c2d
Merge pull request #4401 from dotCooCoo/feat/layers-alt-click-selects-layer
...
Layers: Alt-click on a layer name selects the layer's art
2026-10-29 10:57:39 +07:00
BFlat
59ba74067b
Merge pull request #4400 from dotCooCoo/feat/gradient-reset-click
...
Gradient: Cmd/Ctrl-click on the Gradient Fill box or the Gradient button resets to White, Black
2026-10-29 10:57:18 +07:00
BFlat
a04c068ae0
Merge pull request #4399 from dotCooCoo/feat/color-bar-complement-inverse-clicks
...
Color panel: Cmd/Ctrl-click and Cmd/Ctrl+Shift-click on the spectrum apply Complement and Invert
2026-10-29 10:56:40 +07:00
BFlat
372809c891
Merge pull request #4398 from dotCooCoo/fix/issue-4326
...
Part of #4326 : a drag whose mouse-up was lost ends once macOS reports no button down
2026-10-29 10:56:17 +07:00
BFlat
f96144c784
Merge pull request #4388 from dotCooCoo/feat/scissors-alt-add-anchor
...
Scissors: Alt held switches to the Add Anchor Point tool
2026-10-29 10:55:56 +07:00
BFlat
fddec26707
Merge pull request #4387 from dotCooCoo/feat/type-tool-modifier-switch
...
Type tools: Shift switches between horizontal and vertical, and Alt switches between area and path type
2026-10-29 10:55:35 +07:00
BFlat
a101ebe44d
Merge pull request #4386 from dotCooCoo/feat/units-cycle-shortcut
...
Document: Cmd+Alt+Shift+U switches to the next unit of measurement
2026-10-29 10:55:09 +07:00
BFlat
301caf5851
Merge pull request #4385 from dotCooCoo/feat/width-tool-escape-deselects
...
Width tool: Escape deselects the selected width points
2026-10-29 10:54:45 +07:00
BFlat
ef815a00d3
Merge pull request #4384 from dotCooCoo/feat/arc-tool-drag-keys
...
Arc tool: C, F and Up/Down change the arc while it is dragged out
2026-10-29 10:54:11 +07:00
BFlat
c4dda01263
Merge pull request #4380 from dotCooCoo/feat/blob-brush-alt-smooth
...
Blob Brush: Alt switches to the Smooth tool while it is held
2026-10-29 10:53:57 +07:00
BFlat
63aa7fc38c
Merge pull request #4376 from dotCooCoo/fix/pencil-alt-smooth-radius
...
Pencil: Alt smooths as far from the drag as the Smooth tool does
2026-10-29 10:53:40 +07:00
BFlat
575b3027f6
Merge pull request #4375 from dotCooCoo/fix/shape-builder-merge-fewer-passes
...
Shape Builder: a merge walks the arrangement once per batch of faces
2026-10-29 10:53:21 +07:00
BFlat
1da191ae76
Merge pull request #4367 from Silvertree2010/fix/4262-resize-bug-locked-ratio-scaling
...
Fix Shift-scaling a corner handle along a single axis
2026-10-29 10:53:00 +07:00
BFlat
1fb627749a
Merge pull request #4363 from dotCooCoo/fix/stroke-weight-steps-off-list
...
Stroke Weight: a step from a weight between the presets goes to the next preset
2026-10-29 10:52:37 +07:00
BFlat
489790826d
Merge pull request #4361 from dotCooCoo/fix/curvature-delete-reshapes
...
Curvature: deleting a point re-curves the path through the remaining points
2026-10-29 10:52:18 +07:00
BFlat
12f29b40f1
Merge pull request #4335 from ham9zah/test/properties-reference-point
...
Properties: test that typed transforms turn about the reference point (#4285 )
2026-10-29 10:51:49 +07:00
BFlat
5464dc644c
Merge pull request #4331 from Silvertree2010/fix/4206-bug-gradient-mesh-node-level-tra
...
Apply Transparency opacity to the clicked gradient mesh point
2026-10-29 10:51:23 +07:00
BFlat
340b8644b7
Merge pull request #4433 from el-j/fix/dxf-circular-sliver-4151
...
Fix #4151 : DXF export: verify closed circular subpaths complete a full turn without reversing
2026-10-29 10:50:36 +07:00
BFlat
fe45b77d69
Merge pull request #4425 from dotCooCoo/fix/cursor-idle-test-timing
...
Tests: the idle cursor test renders every frame on the test thread
2026-10-29 10:49:15 +07:00
BFlat
9309b2f6ed
Merge pull request #4408 from dotCooCoo/fix/appearance-add-keys-empty-ids
...
Appearance: Add New Fill and Add New Stroke with an empty ids list run nothing without a selection
2026-10-29 10:48:07 +07:00
BFlat
b095504986
Merge pull request #4316 from ham9zah/fix/appearance-mixed-fill-chip
...
Appearance: a mixed selection's object chip shows "?" when the fills differ
2026-10-29 10:47:43 +07:00
BFlat
c40e641421
Merge pull request #4325 from Hassan1305/fix-4237-add-anchor-select
...
Fix #4237 : Add Anchor Point selects the path it adds to
2026-10-29 10:47:20 +07:00
BFlat
9824a6459e
Merge pull request #4328 from Silvertree2010/fix/4306-expand-does-not-work-as-intended
...
Expand the stroke of stroked type into filled outlines
2026-10-29 10:46:45 +07:00
BFlat
8e93bcb1bf
Merge pull request #4362 from dotCooCoo/fix/issue-3773
...
Fix #3773 : Offset Path offsets a path whose ends meet as a closed shape
2026-10-29 10:46:22 +07:00
BFlat
9392c872f5
Merge pull request #4501 from Silvertree2010/fix/4495-bug-eraser-tool-breaks-compound
...
Keep compound path holes when using the Eraser and Knife
2026-10-29 10:45:59 +07:00
BFlat
cd64f6d14a
Merge pull request #4512 from el-j/perf/canvas-upload-buffer-4504
...
perf(ui-egui): eliminate zero-filling allocation on canvas texture upload in color_image (#4504 )
2026-10-29 10:43:58 +07:00
BFlat
4251afb7fa
Merge pull request #4483 from dotCooCoo/fix/saturate-requires-intensity
...
Edit Colors: Saturate without an intensity is an error instead of a pass at 0
2026-10-29 10:43:31 +07:00
BFlat
1f452229cc
Merge pull request #4429 from dotCooCoo/fix/layer-commands-refuse-text-booleans
...
Layers: the Layers panel's commands refuse a boolean given as text
2026-10-29 10:43:08 +07:00
BFlat
e547aac113
Merge pull request #4448 from dotCooCoo/fix/artboard-commands-refuse-bad-numbers-and-names
...
Artboards: artboard.new and artboard.setProps refuse a number or name of the wrong type
2026-10-29 10:42:46 +07:00