Commit Graph
4373 Commits
Author SHA1 Message Date
dotCooCoo 21dbcf6307 Links: list and manage linked art in symbols, graph designs, patterns and masks by id
Linked images and placed documents kept only in symbols, graph designs,
pattern swatches or opacity masks now have ids of their own. links.list
lists them after the layers' own, one row per stored object, with an
owner naming what holds them; links.check, the missing, modified and
updated files reported on open, the link watch and links.findFiles
report them by id; relink (All Instances included), update, embed,
placementOptions, info and image.info act on them. links.goTo on one
clears the selection and returns onCanvas: false with its owner, and the
Links panel says the link has no place on the canvas.

- Document::visit_stored, stored_node and stored_node_mut find objects
  in every stored art. fix_next_id counts their ids and gives an object
  there whose id is 0, past the id range or already used a new one,
  updating Objects on Path references to renamed children.
- Copies of masked objects give the mask art new ids, and symbols and
  patterns that placed art brings from another document take ids of the
  document they join.
- The Links panel picks such rows in the panel itself, drops the pick
  when the canvas selection changes, and draws their thumbnails from a
  lookup made once per list refresh. Select by Link Status leaves them
  out, as it cannot select them.
2026-11-12 20:16:54 -08:00
BFlat e899f3fdb4 Merge pull request #6881 from dotCooCoo/feat/image-color-mask
Image Tools: Color Mask hides chosen colors of an image without changing its pixels
2026-11-13 10:27:04 +07:00
BFlat 563850dca0 Merge pull request #6988 from dotCooCoo/feat/control-bar-float
Control bar: dragging the gripper away from both docked edges floats the bar
2026-11-13 10:26:54 +07:00
BFlat 34e3418996 Merge pull request #7022 from dotCooCoo/fix/followup-2948
Docs: document.open's pages sentence for a .ai without PDF compatibility appears once
2026-11-13 10:26:46 +07:00
BFlat efc3c9491a Merge pull request #7018 from dotCooCoo/fix/followup-6991
Recolor Artwork: the Color Theme Picker keeps symbol art and clipped image reads within their limits
2026-11-13 10:26:37 +07:00
BFlat fe9fd05a1a Merge pull request #7016 from dotCooCoo/fix/layers-right-drag
Layers: a drag with the right button no longer moves a row
2026-11-13 10:26:27 +07:00
BFlat 703fb03d65 Merge pull request #7006 from dotCooCoo/fix/mesh-locate-winding
Mesh: a point on a mesh's outline locates on its edge on every side
2026-11-13 10:26:18 +07:00
BFlat bd6b99ed1f Merge pull request #7015 from mockydevs/fix/swatches-list-height-1638
Swatches: the swatch list fills a taller panel above its footer
2026-11-13 10:26:10 +07:00
BFlat c6ceeabf0c Merge pull request #6928 from jmverges/fix/6899-ai-type-manual-kerning
.ai import: type keeps the manual kerning of its text document
2026-11-13 10:26:01 +07:00
Don Omondi 34798989bd Swatches list (#1638): M3 and area row notes 2026-11-12 21:45:37 -05:00
Don Omondi 9fdaf3d999 Merge remote-tracking branch 'upstream/main' into fix/swatches-list-height-1638
# Conflicts:
#	docs/target-app-parity.md
2026-11-12 21:45:37 -05:00
dotCooCoo 087da1c743 Docs: document.open's pages sentence for a .ai without PDF compatibility appears once
docs/mcp.md said twice that `pages` naming every page of a .ai saved
without PDF compatibility opens it from its editing data, once with the
file named and once as "such a file". The paragraph also ended in the
middle of a sentence: "`clipboard.importPdf` takes every object of its
editing".

The sentence now appears once, with the file named, and the paragraph
ends with "its editing data."

Docs: docs/mcp.md.
2026-11-12 18:35:22 -08:00
BFlat c94577e3bf Merge pull request #6946 from dotCooCoo/feat/actions-select-object
Actions: Select Object selects objects by their Attributes note during playback
2026-11-13 09:30:34 +07:00
BFlat 23cae99a84 Merge pull request #7011 from dotCooCoo/fix/expand-symbol-item-effects
Effects: a symbol instance's fill or stroke effects reshape its art and expand
2026-11-13 09:30:26 +07:00
BFlat cae4729426 Merge pull request #7005 from dotCooCoo/feat/context-menus-beyond-canvas
Artboards: a right-click on a panel row opens a menu with Rename
2026-11-13 09:30:15 +07:00
BFlat 34cc6fd47a Merge pull request #7004 from dotCooCoo/fix/schema-too-deep-bad-params
MCP: a parameter nested too deeply is refused as bad parameters, not as an internal error
2026-11-13 09:30:07 +07:00
BFlat 274ec46a51 Merge pull request #7012 from dotCooCoo/fix/followup-6887
New Document: profiles bring their color profiles and link base
2026-11-13 09:29:58 +07:00
BFlat 9c007ec416 Merge pull request #7009 from dotCooCoo/fix/3d-clip-image-outside-shape
3D: an image inside a clip's box but outside its shape is left out
2026-11-13 09:29:50 +07:00
BFlat 14c73e0052 Merge pull request #7014 from dotCooCoo/docs/drawing-readouts-ship
Docs: distance and angle labels while drawing are listed as shipped
2026-11-13 09:29:42 +07:00
BFlat d860886a95 Merge pull request #7013 from dotCooCoo/feat/curvature-modifiers
Curvature: Alt-click on an open end goes on from it, and starts a path with a corner
2026-11-13 09:29:34 +07:00
dotCooCoo 7380b2475d Mesh: a color at a mesh envelope's point records no undo step
A mesh envelope's points carry no color, so object.mesh.addLine with
a color at a point the envelope already has changes nothing. It now
compares only the envelope's points and handles and records no undo
step. The command text and docs/mcp.md say so.
2026-11-12 18:23:31 -08:00
dotCooCoo fe1d56f339 Mesh: adding a line at a mesh point records no undo step
object.mesh.addLine at a point that is already a mesh point (a corner,
a point on an edge or inside) adds neither a row nor a column, yet it
recorded an undo step. The lines are now added to a copy of the object
first: when the grid stays the same, including a mesh envelope stored
without handles, the command returns the point's index and records
nothing. A new color at the point is still one undo step.
2026-11-12 18:06:23 -08:00
jmverges e988ea6dfd Merge remote-tracking branch 'upstream/main' into fix/type-layout-envelopes
# Conflicts:
#	docs/file-format-parity.md
2026-11-13 01:58:54 +00:00
Don Omondi 914607a72c Swatches list (#1638): parity and roadmap revision rows 2026-11-12 20:52:15 -05:00
Don Omondi 53da405efb Merge remote-tracking branch 'upstream/main' into fix/swatches-list-height-1638 2026-11-12 20:52:15 -05:00
dotCooCoo 93155b0e3f Recolor Artwork: the Color Theme Picker keeps symbol art and clipped image reads within their limits
The symbol instances the picker reads now share one limit of 16,000,000
placed objects, charged through charge_symbol_art and counted as the
renderer counts them, so deeply nested or heavily repeated instances
stop there. An instance whose art would pass the limit is left out with
its own paints, as the canvas draws none of it. Pattern tiles carry the
count in and out, and their art is read one level deeper than the
object the pattern fills, so a chain of patterns shares the depth limit
with the art around it; a pattern cut short there is read again where
it is used less deep.

The pixels read inside clip groups are now tested against at most
4,000,000 clipping-path elements in all. The clipped reads of one image
share the work, a read outside clip groups keeps its own pixel budget,
and when the work left can't test a pixel of every clipped read, the
reads that fit are kept in order and the rest are left out.
ImageBlob::sample_pixels takes a pixel budget for each pick.
2026-11-12 17:40:51 -08:00
Sven Lafebre f04b9a0a2d Merge remote-tracking branch 'origin/main' into fix/6969-rasterize-gray
# Conflicts:
#	docs/target-app-parity.md
2026-11-13 02:40:43 +01:00
dotCooCoo df155042d4 Merge main into feat/image-color-mask 2026-11-12 17:40:13 -08:00
dotCooCoo 8e5360b7b1 Layers: only the primary button drags rows, guides, art, columns and appearances
A drag with the right or middle button on a Layers row could move or
copy the row, and the same drag on a guide row, the selected-art
square, the eye or lock column or a target circle moved the guide or
the art, swept visibility or locks, or transferred the appearance.
Each of these drags now starts only with the primary button, as the
Artboards panel's row drag does, and the grab cursor follows the
primary button too. A right-click still opens the row's menu.

The new test drags each of the six sources with the secondary and the
middle button, checks that no drag payload is held and that nothing in
the document or its undo steps changes, then drags the same path with
the primary button to show the drop target takes it.
2026-11-12 17:39:54 -08:00
dotCooCoo d3bef19990 Docs: distance and angle labels while drawing are listed as shipped
docs/ui-parity.md and docs/target-app-parity.md listed the distance and
angle readouts while drawing as missing. With Smart Guides > Measurement
Labels on, the Line Segment tool labels the segment being drawn with its
distance, angle and X and Y offsets, and the Pen, Curvature and Smart Pen
tools label their rubber band the same way (#2983). The Measurement
labels row is marked done, the two dimension rows drop the gap, and the
Drawing aids entry describes the labels.
2026-11-12 17:31:36 -08:00
BFlat f7a03f7899 Merge pull request #6991 from dotCooCoo/feat/recolor-theme-picker
Recolor Artwork: the Color Theme Picker picks new colors from the art on the canvas
2026-11-13 08:31:13 +07:00
BFlat 39f7d33e22 Merge pull request #6943 from dotCooCoo/feat/color-rgb-percent
Color: a double-click right of an RGB field switches between percent and 0 to 255
2026-11-13 08:31:01 +07:00
BFlat 8bd948f9b4 Merge pull request #6996 from dotCooCoo/fix/align-artboard-distribute
Align: artboard Distribute buttons need three artboards with Align to Selection
2026-11-13 08:30:39 +07:00
BFlat 45d25f6a34 Merge pull request #6997 from dotCooCoo/fix/filter-gradient-plates
Plug-ins: a filter's gradient stop plates are clamped into range like its other colors
2026-11-13 08:30:29 +07:00
BFlat 2716eab08e Merge pull request #6975 from dotCooCoo/fix/followup-6841
Document Info: Spot Color Objects leaves out fills and strokes at opacity 0
2026-11-13 08:30:19 +07:00
BFlat a6f89f8c85 Merge pull request #6976 from dotCooCoo/fix/followup-6847
Cutting Tools: weeding lines stop at an outline that lies on a line
2026-11-13 08:29:58 +07:00
BFlat ae014cc896 Merge pull request #7002 from dotCooCoo/fix/3d-plain-fill-keeps-compound
3D: a fill or stroke without the effect keeps an even-odd path's holes
2026-11-13 08:29:49 +07:00
BFlat cae74519f2 Merge pull request #6998 from dotCooCoo/fix/i18n-script-messages
i18n: script errors and failed-run lines are translated in every complete-message catalog
2026-11-13 08:29:39 +07:00
BFlat b9a5476853 Merge pull request #6844 from jmverges/fix/6824-type-envelope-painted-box
.ai import: type in an envelope is also tried mapped from the box of what it paints
2026-11-13 08:29:17 +07:00
dotCooCoo 057db09c12 Curvature: Alt-click on an open end goes on from it, and starts a path with a corner
An Alt-click on an end of a selected open path makes that end the current
point without converting it, so the next click extends the path from it.
This applies to the other end too while one end is current; a plain click
there still closes the path. Alt-click on any other point still toggles it
between smooth and corner, and a double-click toggles any point, ends
included. An Alt-click that starts a new path places a corner point, as
later Alt-clicks do.

Changed behavior: an Alt-click on an end of a selected open path no longer
converts it; double-click converts it.

Help page: https://helpx.adobe.com/illustrator/desktop/draw-shapes-and-paths/draw-shapes/draw-shapes-with-the-curvature-tool.html
2026-11-12 17:23:58 -08:00
Don Omondi 20a7d0ea1e Merge remote-tracking branch 'upstream/main' into fix/swatches-list-height-1638
# Conflicts:
#	crates/ui-egui/src/panels/swatches/tests.rs
2026-11-12 20:23:33 -05:00
dotCooCoo bc97a8f897 New Document: profiles bring their color profiles and link base
Follow-up to #6887.

- file.new installs the color profiles a New Document profile's file
  carries when they are missing, as document.open does, so the new
  document's assigned profile draws and a save embeds it. A color
  profile that can't be used is listed in the result's `warnings` and
  shown in the status bar.
- The new document's links find their files through relative paths
  from the profile's file (`links_from`), as
  edit.newDocumentFromState sets it.
- When the read roots leave out the profiles folder, profileError's
  reason no longer names the folder's path.
2026-11-12 17:22:28 -08:00
dotCooCoo e51685dc23 Effects: a symbol instance's fill or stroke effects reshape its art and expand
A geometry effect on a symbol instance's topmost fill now reshapes the
filled shapes of the symbol's art, and one on its topmost stroke reshapes
the stroked shapes, keeping their colors, strokes and other detail. Only
a visible topmost fill or stroke with an opacity above 0 counts. Clipping
paths, guides and opacity-mask art keep their shapes; a group's own fills
and strokes in the art take the effects; a nested instance passes them on
to its own art, except one whose symbol holds the outer symbol.

The canvas, Use Preview Bounds and the drawn bounds, SVG and PDF export
and Object > Expand Appearance use the same art. Expand Appearance is
enabled for such an instance and turns it into an editable group in one
undo step. Bounds measure the art with a dynamic symbol's overrides, as
the canvas draws it.

Existing documents with a geometry effect on a symbol instance's fill or
stroke draw differently: before, the effect drew nothing.
2026-11-12 17:15:04 -08:00
dotCooCoo aff731a9ca Docs: record the mesh outline fix in the Colour row
The Colour, swatches, gradients, patterns, mesh, recolor row of
docs/target-app-parity.md now lists the outline fix and its two tests.
Score and hours are unchanged.
2026-11-12 17:11:36 -08:00
dotCooCoo c5f406ffab 3D: an image inside a clip's box but outside its shape is left out
A 3D effect left an image in a clipping group out only when the image's
box missed the clipping path's box. An image in the corner of a round
clip's box, a turned image whose box reaches a clip but whose frame does
not, an image in an even-odd hole, or one inside each of two nested clips
but outside the area they show together was refused with the Image Trace
message, although it draws nothing.

The image's frame, the pixel rectangle as its transform places it, is now
cut to every clipping path around it in turn, each with its own fill rule,
and the image is left out when nothing is left. An image the clips show
any part of, a strip narrower than a hundredth of a point included, is
still refused. One effect's art cuts image frames at most 1,024 times;
past that, or when a cut fails, the art is refused.
2026-11-12 17:07:13 -08:00
dotCooCoo 61f170a761 Mesh: a point on a mesh's outline locates on its edge on every side
A point exactly on a gradient mesh's outline located on the top and left
edges but not on the bottom and right ones, where the nonzero winding
number is 0. object.mesh.addLine and Create Gradient Mesh at a point there
reported the point outside the mesh, and the Eyedropper did not sample it,
while the hit test selects the mesh there.

locate_within now takes the nearest point of the edge for a point within
a millionth of a point of the outline, with any tolerance, and returns
nothing for a point that is not finite. A point just outside still needs
a tolerance.
2026-11-12 16:56:22 -08:00
BFlat 487ffbba4b Merge pull request #6994 from dotCooCoo/fix/paste-style-pattern-order
Paste: text styles that paint with a pattern are pasted after the patterns they use
2026-11-13 07:49:08 +07:00
BFlat 89e22cb608 Merge pull request #6987 from dotCooCoo/fix/number-param-wrong-type
MCP: a required number given as a string is refused as the wrong type, not reported as missing
2026-11-13 07:49:01 +07:00
BFlat 0d553f9a4d Merge pull request #6985 from dotCooCoo/fix/fonts-in-masks-and-patterns
Fonts: Find Font, Replace Missing Fonts and font lists include type in opacity masks and patterns
2026-11-13 07:48:52 +07:00
BFlat 24af0c146a Merge pull request #6938 from dotCooCoo/fix/pdf-large-page-export
Export As: a PDF without artboards opens Save PDF and its options
2026-11-13 07:48:44 +07:00