Commit Graph
14622 Commits
Author SHA1 Message Date
dotCooCoo 9d9b69a544 PDF import: an isolated group with overprinting art inside stays isolated
The importer kept a group's isolation only when something inside it
blended, so an isolated group or knockout group whose objects only
overprint read back without isolation. Written out again, it lost its
/I true and its overprinting objects then kept the inks of the art below
the group that they had covered. Isolation is now also kept when a
visible fill or stroke inside, or characters' fill or stroke, overprints,
directly or through children that do not isolate.
2026-11-15 06:46:56 -08:00
BFlat 3075889f0c Merge pull request #7812 from dotCooCoo/fix/a-nested-message-value-that-starts-with-is-not
i18n: an effect refusal inside another message is translated with its reason
2026-11-15 20:46:00 +07:00
BFlat 3239725c40 Merge pull request #7817 from dotCooCoo/feat/psd-import-options-import-slices-after-7649
PSD: Import Slices brings a file's slices in as user slices on Open and Place
2026-11-15 20:45:50 +07:00
BFlat b389d3e5bc Merge pull request #7830 from dotCooCoo/fix/a-symbol-instance-written-as-its-art-reads-back
.ai save: live art written as a group keeps wrapping type by its bounds
2026-11-15 20:45:41 +07:00
BFlat 402b8c7820 Merge pull request #7824 from dotCooCoo/fix/a-part-with-nan-opacity-neither-casts-a-shadow
3D: art at NaN or infinite opacity casts no shadow
2026-11-15 20:45:32 +07:00
BFlat e06958143d Merge pull request #7825 from dotCooCoo/fix/nested-symbol-box-is-not-a-hit
Selection: a nested symbol instance's box past the outer box is not a hit
2026-11-15 20:45:25 +07:00
BFlat 9531b8a57a Merge pull request #7826 from dotCooCoo/fix/a-knockout-group-with-no-blending-inside-still
PDF export: a knockout group that does not isolate is written without /I true
2026-11-15 20:45:11 +07:00
BFlat ea3f81d9c3 Merge pull request #7518 from Taha-Mahmoodi/feat/indic-composers
feat(text): Middle Eastern & South Asian and Standard composers per paragraph (#4935)
2026-11-15 20:45:02 +07:00
BFlat 126f820db2 Merge pull request #4508 from el-j/perf/post-edit-cascade-4502
perf(engine): optimize selection prune and sanity checks for large selections (#4502)
2026-11-15 20:44:54 +07:00
BFlat 4a29b219d2 Merge pull request #7774 from devius/ka-update
i18n(ka): update the Georgian catalog (2,129 strings)
2026-11-15 20:44:47 +07:00
BFlat 99ae951f3b Merge pull request #7562 from dotCooCoo/fix/i18n-scanner-return-tail
i18n: the untranslated scan reads return values and tail expressions, not locals
2026-11-15 19:45:17 +07:00
BFlat 04731b9ce0 Merge pull request #7771 from dotCooCoo/feat/status-bar-show-menu
Status bar: a Show menu chooses what the info field displays
2026-11-15 19:45:09 +07:00
BFlat e8221bbc1d Merge pull request #7831 from storytold/fix/trace-seam-anchors
Fix main: trace seam runs after the Anchors change, and duplicate Russian rows
2026-11-15 19:42:20 +07:00
bflatastic 34eac939c9 i18n: Russian keeps one row of each script answers message
#7532's script.run answers rows and the Russian message rows landed in the same batch with
the same ten messages, so bundled_catalogs_are_consistent fails on a duplicate. The first
of each pair stays.
2026-11-15 18:35:11 +07:00
bflatastic 0f08d53b06 Image Trace: a closed seam run is the subpath itself
#7814 made SubPath::anchors an Anchors, and #7810's seam fills, merged in the same batch,
passed it to SubPath::new, which takes a Vec, so vectorcraft-trace doesn't compile on main.
A closed subpath whose every segment is marked is its own run: clone it.
2026-11-15 17:36:46 +07:00
BFlat 8f339eeaa1 Merge pull request #7532 from dotCooCoo/fix/script-answers-errors-translated
i18n: script.run answers errors are translated in every complete-message catalog
2026-11-15 17:31:19 +07:00
BFlat f62932eb93 Merge pull request #7776 from dotCooCoo/feat/aia-files-carry-select-object-steps
Actions: Load Actions… reads .aia Set Selection steps as Select Object
2026-11-15 17:31:10 +07:00
BFlat 8138a6e973 Merge pull request #7814 from dotCooCoo/feat/editing-one-anchor-copies-the-whole-anchor-list
Paths: editing one anchor of a long path keeps one chunk of anchors for undo
2026-11-15 17:31:01 +07:00
BFlat e5951a7dfe Merge pull request #7815 from dotCooCoo/fix/a-reverted-document-keeps-its-uid-so-a-trace
Image Trace: a trace started before Revert does not apply after it
2026-11-15 17:30:52 +07:00
BFlat 20282a13d0 Merge pull request #7807 from dotCooCoo/fix/guide-add-select-allonartboard-select-font-scope
MCP: guide.add and the artboard selections refuse an artboard that is not a whole number
2026-11-15 17:30:38 +07:00
BFlat 1387328255 Merge pull request #7731 from dotCooCoo/feat/svg-filter-user-space-matrix
SVG Filters: a filter on a turned or skewed object is kept on import and drawn
2026-11-15 17:30:29 +07:00
BFlat b13d3d15b4 Merge pull request #7806 from dotCooCoo/fix/merging-a-spot-swatch-into-another-drops-the-old
Swatches: merging a swatch drops the process plates of the gradient stops linked to it
2026-11-15 17:30:20 +07:00
BFlat 7350a7a703 Merge pull request #7810 from dotCooCoo/fix/burasagari-and-push-in-on-a-tabbed-right-to-left
Type: a burasagari mark hangs only where it is drawn at the line's right end
2026-11-15 17:30:12 +07:00
el-j ed61c1b6aa perf(engine): keep only the objects_in_range change; main's Selection::prune has moved on (#4502) 2026-11-15 11:17:26 +01:00
dotCooCoo 4c669e9ba1 Merge main into fix/a-symbol-instance-written-as-its-art-reads-back 2026-11-15 02:11:11 -08:00
el-jandClaude Sonnet 5.5 3ed9d333b0 perf(engine): keep the symbol part check on Selection::prune fast paths (#4502)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-15 11:04:24 +01:00
el-j db4eff146d Merge upstream main into perf/post-edit-cascade-4502 2026-11-15 11:04:24 +01:00
dotCooCoo c1b756e633 .ai save: the bounds rectangle of live art written as a group goes below its art
The unpainted rectangle that carries the text wrap options of a symbol
instance, blend, mesh, repeat, placed document, intertwine or envelope
written as a group of its art is now the group's first member. Area type
below the object still wraps by its bounds after reopening, and area type
in the art itself is not wrapped by the rectangle, so art that holds area
type no longer keeps the options on its group and wraps by its members.
2026-11-15 02:02:29 -08:00
dotCooCoo 20743f4a94 Selection: a nested symbol instance's box past the outer box is not a hit
A click or marquee outside a symbol instance's box walks the instance's
art. An instance nested in that art was hit or touched anywhere in its
own box, so empty space inside the nested box, where a moved clipping
path reaches past the outer box, selected the outer instance. In that
walk a nested instance now counts only where its own art is, by the
same rule at every level. Inside the outer box nothing changes.
2026-11-15 02:01:56 -08:00
dotCooCoo 00b26dd5f8 PDF export: an overprinting element of a knockout group that does not isolate overprints the art below
A test exports a knockout group that does not isolate, whose top element
overprints, and checks that its /K group carries no /I true, that the
overprinting graphics state (/OP, /op, /OPM 1) is written, and that the
overprint and the knockout group read back. An isolated group keeps
/I true.
2026-11-15 01:54:35 -08:00
dotCooCoo 4aea84f419 Merge main into fix/a-part-with-nan-opacity-neither-casts-a-shadow 2026-11-15 01:49:16 -08:00
dotCooCoo 2d00e6f397 Revolve: shadow_of's doc comment wraps at the line width 2026-11-15 01:46:57 -08:00
dotCooCoo 9c377b5619 Selection: one limit on the symbol art a click or marquee walks
A click or marquee outside a symbol instance's box walks the instance's
placed art, and an instance nested in that art walked its own art with
no shared limit, so deeply nested or widely repeated instances could
make one click walk far more objects than the canvas draws.

Clicks, Select Behind, the locked-object and hidden-selection lookups,
Direct Selection's part lookup and marquees now share one limit of
MAX_SYMBOL_NODES objects across every level of nested art. Once it is
used up, an instance is no longer hit or touched outside its box;
inside its box it still is. The art walk also checks the instance's
reach before starting.
2026-11-15 01:43:18 -08:00
Taha-Mahmoodi d4ac2782c0 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	docs/target-app-parity.md
2026-11-15 14:12:59 +04:30
dotCooCoo 9c537a3df0 Merge main into fix/a-knockout-group-with-no-blending-inside-still 2026-11-15 01:42:07 -08:00
dotCooCoo 8183b4054a Merge main into fix/a-symbol-instance-written-as-its-art-reads-back 2026-11-15 01:41:25 -08:00
dotCooCoo c39929f73d Merge main into fix/a-part-with-nan-opacity-neither-casts-a-shadow 2026-11-15 01:41:03 -08:00
BFlat 4dfb91fdc7 Merge pull request #7399 from dotCooCoo/fix/fileinfo-control-characters-message
i18n: File Info's control-characters error is translated for multi-line fields too
2026-11-15 16:41:02 +07:00
BFlat 420d693c3e Merge pull request #7795 from dotCooCoo/fix/tool-image-trace-envelope-symbol-type-and
Control bar: tool, image, trace, envelope, symbol and artboard controls stay inside the bar in a narrow window
2026-11-15 16:40:54 +07:00
BFlat ffc33e3892 Merge pull request #7794 from dotCooCoo/fix/after-the-last-missing-link-question-the-open-s
Links: the open's notes come back after the last missing-link question
2026-11-15 16:40:47 +07:00
BFlat 0473b74e42 Merge pull request #7781 from dotCooCoo/feat/flare-drag-keys
Flare: Ctrl/Cmd holds the center and Up/Down and ~ change the rings while they are placed
2026-11-15 16:40:37 +07:00
BFlat 33946f49dc Merge pull request #7799 from dotCooCoo/fix/one-undo-step-a-refused-brush-on-a-path-with-no
Brushes: brush.freehand is one undo step and refuses strokeless paths and unknown keys
2026-11-15 16:40:28 +07:00
BFlat 63f5dcea9b Merge pull request #7800 from dotCooCoo/fix/a-rasterize-effect-before-a-scaling-transform
Effects: a Transform effect after Rasterize moves the image with its pixel grid
2026-11-15 16:40:20 +07:00
BFlat 4a8db16419 Merge pull request #7816 from dotCooCoo/fix/bucket-strokeedge-and-livepaint-info-act-on
Live Paint: the Bucket replaces every fill or stroke row of a face or edge
2026-11-15 16:40:12 +07:00
BFlat 2146b741e7 Merge pull request #7772 from dotCooCoo/fix/paste-plain-graph-labels
Paste: Paste without Formatting keeps a pasted graph's labels plain when it is drawn again
2026-11-15 16:40:03 +07:00
BFlat d0320470b9 Merge pull request #7803 from dotCooCoo/fix/create-outlines-drops-the-type-object-s-own
Type: Create Outlines keeps the type object's effects and transparency
2026-11-15 16:39:52 +07:00
BFlat 1d47588e77 Merge pull request #7798 from dotCooCoo/fix/save-and-save-for-older-apps-read-the-placed
Save: read the images and placed documents in stored brush art
2026-11-15 16:39:45 +07:00
BFlat 5d99190210 Merge pull request #7793 from dotCooCoo/feat/the-basic-shape-tools-show-their-items
Task bar: the basic shape tools show Edit Path, Fill, Stroke and Shape Properties
2026-11-15 16:39:37 +07:00
BFlat 0d277bc12e Merge pull request #7808 from dotCooCoo/fix/image-codes-created-inside-a-rolled-back-node
EPS: art left out at the page limit releases the images it encoded
2026-11-15 16:39:29 +07:00
BFlat 2131950dd0 Merge pull request #7804 from dotCooCoo/fix/painted-live-effect-output-refuses-a-gradient
Plug-ins: painted live effects refuse gradient stop plates without a spot link
2026-11-15 16:39:22 +07:00