Commit Graph
14637 Commits
Author SHA1 Message Date
dotCooCoo 0cf2aa3f79 Effects: removing or duplicating several aligned effects of a design's art refuses one that no object has
With the art of a graph design in a series given first and aligned: true,
effect.remove and effect.duplicate with `indices` skipped an effect of the
art that no other object has, and edited the others. With art [shadow,
roughen], a mark [shadow] and indices [0, 1], effect.remove took the
mark's shadow off and succeeded. Such an edit is now an error that leaves
the document and its undo history as they are, as the same index given
alone already was. An object that lacks one of the effects while another
object has it is still left out for that effect.
2026-11-15 08:36:31 -08:00
BFlat bd67a010f6 Merge pull request #7827 from dotCooCoo/feat/ai-export-writes-kinsoku-kinsoku-shori-type
.ai export: paragraphs keep Kinsoku, Kinsoku Shori Type, Burasagari and Bunri-Kinshi
2026-11-15 22:45:05 +07:00
BFlat 9c2f6ec53d Merge pull request #7838 from dotCooCoo/feat/ai-save-nested-envelope-editable
.ai import: an envelope straight in another envelope's contents block opens live inside it
2026-11-15 22:44:56 +07:00
BFlat 7ba0d2fd08 Merge pull request #7841 from MMexicann/patch-1
docs(G2): describe the shipped Effect Gallery preview
2026-11-15 22:44:48 +07:00
BFlat d5b8d51d64 Merge pull request #7843 from MMexicann/patch-2
docs(G6): complete the control method reference
2026-11-15 22:44:40 +07:00
BFlat 8803a9e31a Merge pull request #7857 from storytold/fix/ka-duplicate-rows
i18n: Georgian keeps one row of each duplicated message (fix main)
2026-11-15 22:38:46 +07:00
bflatastic f577781921 i18n: Georgian keeps one row of each message added twice
#7774's Georgian catalog and #7532's script.run answers rows landed in the same batch with
twelve of the same messages, so bundled_catalogs_are_consistent fails on a duplicate. The
first of each pair stays.
2026-11-15 21:50:17 +07: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
Mex 6b821c7c50 docs(G6): complete the control method reference
Document the existing resize defaults and parameterless focus method. Keep one complete ui.render row, including traceViews, and record the documentation revision.

Source and rendered table reviewed. No local Rust build or tests ran; cargo/rustc are unavailable and PR CI validation is required.
2026-11-15 14:37:37 +01:00
Mex 55f1e6430a docs(G2): distinguish the raster pipeline from the gallery
Separate the 57-filter pipeline from the gallery's six browsable categories. Retain the original upcoming raster-effects work; only the already-shipped thumbnails and in-dialog preview leave the missing list.

Documentation review follow-up; no local Rust build or tests ran.
2026-11-15 14:33:55 +01:00
Mex 33acc1fe11 docs(G2): describe the shipped Effect Gallery preview
Align the README status and upcoming work with the shipped Effect Gallery thumbnails and in-dialog preview. Keep the filters described as approximations.

Documentation only. Reviewed against the current gallery source, regression coverage, ROADMAP.md and docs/gaps.md. Local cargo/rustc are unavailable; the PR CI gate must complete before validation is claimed.
2026-11-15 14:26:27 +01:00
dotCooCoo 4e57e7594a Merge main into feat/ai-save-nested-envelope-editable 2026-11-15 04:55:08 -08:00
dotCooCoo 6fc0ef4596 .ai import: an envelope straight in another envelope's contents block opens live inside it
An envelope record that lies in an outer envelope's AIDeformArtKey
block (X= ... X+) with no group around it now opens as a live envelope
inside the live outer one, and an object's own dictionary there (its
name) applies to it. Each envelope is still compared with its own drawn
art: an inner one that doesn't match keeps its drawn art as the outer
envelope's contents, and an outer one that doesn't match keeps its own.

- An envelope record in an opacity mask's art reads as part of the
  mask; its block's X+ no longer ends the mask's art, which failed the
  import.
- Envelopes still waiting for their XP when a dictionary ends keep
  their drawn art, so a stray XP in a later container cannot take them.
2026-11-15 04:54:40 -08: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 4b5062efd1 Merge main into feat/ai-export-writes-kinsoku-kinsoku-shori-type 2026-11-15 01:53:34 -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 028c8b5e99 Merge main into feat/ai-export-writes-kinsoku-kinsoku-shori-type 2026-11-15 01:41:30 -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