Commit Graph
8730 Commits
Author SHA1 Message Date
Don Omondi 427ec0017c SVG import: gradients with color-interpolation="linearRGB" mix their stops in linear light (#5878) 2026-11-06 15:33:02 +07:00
dotCooCoo 968bf1dc48 .ai import: a pattern or color named as another swatch keeps its swatch
Squashed from #5903 onto main.
2026-11-06 15:33:00 +07:00
Don Omondi 149eee2c70 Blend spine: moveAnchor refuses with alongside handle; spine built once per overlay and drag
object.blend.spine.moveAnchor now refuses any supplied `with` (even an
empty list) together with `handle`. Direct Selection builds the blend
spine once when drawing the picked points and once per drag preview,
instead of once per picked point. Part of #5285.
2026-11-06 15:32:52 +07:00
BFlat 07c814597d Merge pull request #5899 from dotCooCoo/fix/tab-stops-string-params
Reject invalid Tab Stop string parameters
2026-11-06 16:32:38 +08:00
BFlat 5788e043d9 Merge pull request #5828 from mockydevs/feat/f2-rename-5324
Layers: F2 renames the selected layer, group or object (#5324)
2026-11-06 16:32:21 +08:00
dotCooCoo 8f81e142a5 Reject invalid Tab Stop string parameters 2026-11-06 15:20:17 +07:00
Don Omondi 00b09002cf Layers: Rename opens the selected layer, group or object's name field (#5324) 2026-11-06 15:14:20 +07:00
BFlat 683ccdf8dc Merge pull request #5897 from dotCooCoo/fix/restyled-empty-frame-keeps-style
Text: a restyled empty frame keeps its style before an unedited empty frame
2026-11-06 16:09:53 +08:00
dotCooCoo f48ac15d08 Text: a restyled empty frame keeps its style before an unedited empty frame
When a frame's text ends with a paragraph break and the next frame is empty, restyling that empty frame was undone on reflow: an unedited empty frame after it gave the story's last paragraph its own style again. A restyled empty frame now keeps its style against unedited empty frames that follow it. Unedited empty frames before it, later frames with text and later restyled frames still give the paragraph their style, as before.
2026-11-06 14:56:28 +07:00
BFlat 5e7c331745 Merge pull request #5896 from adikshan11/fix/automation-superscript-device-names
Automation roots: refuse COM¹ to LPT³ as Windows device names
2026-11-06 15:46:42 +08:00
Adithya Shankaran a455e72bf8 Automation roots: refuse COM¹ to LPT³ as Windows device names 2026-11-06 14:34:58 +07:00
BFlat 91efec6cec Merge pull request #5895 from kler/swedish-ui-2026-11-06
i18n(sv): translate 1432 new strings, use the agreed terms in 2
2026-11-06 15:34:21 +08:00
BFlat 267ea8a852 Merge pull request #5894 from jayzed80/fix/eps-bitshift-min
fix(eps): bitshift by the most negative integer no longer overflows on negation
2026-11-06 15:34:06 +08:00
Patrik LermonandClaude Opus 5.5 d98e8e44c7 i18n(sv): translate 1432 new strings, use the agreed terms in 2
Brings the Swedish catalog up to date with upstream main (4fc4c6576).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 14:21:42 +07:00
jayzed80 543b0de0b4 fix(eps): bitshift by the most negative integer no longer overflows on negation
Negating i64::MIN panicked in debug builds. Use saturating_neg, as Op::Neg already does.
2026-11-06 14:21:38 +07:00
BFlat ab95d51b1f Merge pull request #5893 from dotCooCoo/fix/empty-thread-frame-style
Text: empty later frames preserve an edited paragraph style
2026-11-06 15:21:27 +08:00
dotCooCoo b0f383a1ab Text: empty later frames preserve an edited paragraph style 2026-11-06 14:08:37 +07:00
BFlat 1444ce9e0f Merge pull request #5892 from dotCooCoo/docs/ai-symbols-need-layers
Docs: .ai symbols are read with the file's layers
2026-11-06 15:04:23 +08:00
dotCooCoo def29d0f97 Docs: .ai symbols are read with the file's layers
A .ai that comes in as its page or PDF part (editing data with no layers, layers that can't be read, or a page fallback) gets none of the editing data's symbols: layered_ai_from fills symbols only from build_from. The editing-data paragraph now says so.
2026-11-06 14:04:04 +07:00
BFlat c7b717d801 Merge pull request #5888 from dotCooCoo/fix/flag-params-switch-or
Commands: true/false flags reject other values everywhere
2026-11-06 14:48:04 +08:00
BFlat 804c3b09d8 Merge pull request #5886 from dotCooCoo/fix/ai-no-layers-active-artboard
.ai import: a file whose editing data has no layers also opens on its active artboard
2026-11-06 14:47:49 +08:00
dotCooCoo b5da39d7b5 Commands: true/false flags reject other values everywhere
The remaining flags under crates/engine/src/cmd that read a boolean with
get(..).and_then(Value::as_bool).unwrap_or(..) now go through switch_or,
so a value such as "false" or 1 is an error instead of the default.
Omitting a flag or giving null keeps the old behavior.

- effect.move: copy
- aligned on the appearance.*, stroke.set, transparency.set and effect.*
  commands, checked before any early return
- transparency.viewOpacityMask: on
- view.printTiling: on
- plugin.install: replace and allowHeavy, checked for every plug-in
- edit.clear: guides, and path.deleteAnchors' read of it
- text.create and text.createInPath: vertical (already refused by
  check_switches, so their behavior is unchanged)
2026-11-06 13:47:16 +07:00
dotCooCoo 31456a0cec .ai import: a file whose editing data has no layers also opens on its active artboard 2026-11-06 13:47:16 +07:00
BFlat 4fc4c65763 Merge pull request #5885 from dotCooCoo/fix/ai-tab-stops-shared
.ai import: legacy type keeps one copy of tab stops its paragraphs share
2026-11-06 14:34:55 +08:00
dotCooCoo aac21aa076 .ai import: legacy type keeps one copy of tab stops its paragraphs share 2026-11-06 13:22:36 +07:00
BFlat 08be8b2d7c Merge pull request #5883 from dotCooCoo/fix/profile-stroke-crop
Rendering: open width-profile strokes outline only near the view
2026-11-06 13:56:09 +08:00
BFlat 8585fd28c2 Merge pull request #5884 from dotCooCoo/test/fitted-text-scale-changes-fit
Tests: a fitted text test changes its fit scale
2026-11-06 13:55:59 +08:00
BFlat 27e9f331ad Merge pull request #5882 from ruchirguitar/i18n/hindi-complete
i18n: add Hindi interface and message catalog
2026-11-06 13:55:48 +08:00
dotCooCoo e6819a86f0 Rendering: open width-profile strokes outline only near the view 2026-11-06 12:42:33 +07:00
dotCooCoo b75b1548d4 Tests: a fitted text test changes its fit scale
The regression test for rebuilding fitted area type after a scale change
used text that overflowed at the minimum size both before and after the
change, so both layouts used the same fit scale and the pixel comparison
did not depend on the fit.

The fixture is now 2 pt type in a small frame, drawn 20 times zoomed in.
It fits at 0.7 of its size, and at 0.733 after a 1.5 times scale. The
test asserts that the two fit scales differ and that the words set at the
earlier fit draw different pixels, and keeps the comparison with a fresh
renderer and the check that the geometry is not reused.
2026-11-06 12:42:26 +07:00
ruchirguitar 70f798b71d i18n: add Hindi interface and message catalog 2026-11-06 12:40:10 +07:00
BFlat 1ab03cb2a1 Merge pull request #5881 from dotCooCoo/fix/selected-hover-widgets
Selection: empty-canvas hover skips distant widgets in large selections
2026-11-06 13:18:56 +08:00
dotCooCoo 2fa3276789 Selection: empty-canvas hover skips distant widgets in large selections 2026-11-06 12:06:27 +07:00
BFlat 6b3a34f016 Merge pull request #5880 from dotCooCoo/docs/format-parity-guides-known-failures
Docs: the .ai notes no longer list guides as a known failure
2026-11-06 13:04:43 +08:00
dotCooCoo 0473fcad58 Docs: the .ai notes no longer list guides as a known failure
The Known failures bullet in docs/file-format-parity.md kept stale copies
of its earlier wording after several merges: guides were still listed as
lost although they open as ruler guides since #5057, and the same clauses
about #868, #1027 and #758 repeated several times. The bullet now states
each fact once, and keeps every legacy .ai reading note it carried.
2026-11-06 12:04:14 +07:00
BFlat 22ff7db4ce Merge pull request #5879 from dotCooCoo/perf/direct-cursor-single-hit
Reuse hit result for Direct Selection cursor
2026-11-06 12:43:57 +08:00
dotCooCoo 64c38d29c7 Reuse hit result for Direct Selection cursor 2026-11-06 11:31:21 +07:00
BFlat 17e56e3dc9 Merge pull request #5874 from dotCooCoo/fix/new-art-basic-boolean-param
Reject invalid New Art Basic parameters
2026-11-06 12:31:07 +08:00
dotCooCoo 8a730bab6b Reject invalid New Art Basic parameters 2026-11-06 11:15:35 +07:00
BFlat 3c7d9e1f90 Merge pull request #5873 from dotCooCoo/perf/long-path-hover
Speed up hover hits on long plain paths
2026-11-06 12:14:58 +08:00
dotCooCoo 0416f115e0 Speed up hover hits on long plain paths 2026-11-06 11:00:14 +07:00
BFlat ad747b15f7 Merge pull request #5872 from dotCooCoo/fix/guide-lock-boolean-param
Reject invalid Guide Lock parameters
2026-11-06 11:56:38 +08:00
dotCooCoo b26bd3d472 Reject invalid Guide Lock parameters 2026-11-06 10:41:08 +07:00
BFlat 56c1033820 Merge pull request #5871 from dotCooCoo/fix/ai-symbol-reader-shares-budgets
.ai import: symbol, pattern and brush definitions share the file's blend and envelope limits
2026-11-06 11:40:23 +08:00
dotCooCoo 49583ef632 .ai import: symbol, pattern and brush definitions share the file's blend and envelope limits
Each definition's reader started with fresh blend layout and envelope
check budgets, so a file with many symbols, patterns or brush art
sections got those limits again for every definition. The reader of a
definition now takes the import's remaining budgets and hands back what
is left after reading, whether the definition is kept or not.
2026-11-06 10:28:08 +07:00
BFlat 1e0efa77d1 Merge pull request #5869 from dotCooCoo/fix/transparency-grid-boolean-param
Reject invalid Transparency Grid parameters
2026-11-06 11:27:54 +08:00
dotCooCoo 398131b9cc Reject invalid Transparency Grid parameters 2026-11-06 10:12:42 +07:00
BFlat 2628ee3069 Merge pull request #5868 from dotCooCoo/perf/transform-many-lookups
Reuse selected object locations for large transforms
2026-11-06 11:10:32 +08:00
dotCooCoo 48a3710fae Reuse selected object locations for large transforms 2026-11-06 09:58:43 +07:00
BFlat 83f9b2953f Merge pull request #5867 from dotCooCoo/fix/slice-toggle-boolean-params
Reject invalid Slice toggle parameters
2026-11-06 10:58:17 +08:00