Commit Graph
4360 Commits
Author SHA1 Message Date
BFlat 6ee761e327 Merge pull request #7639 from dotCooCoo/feat/global-edit-rotated-copies
Global Edit: rotated copies are matched and take each edit turned by their angle
2026-11-15 03:21:03 +07:00
BFlat bac95f9902 Merge pull request #7631 from dotCooCoo/fix/composite-font-lent-document-only
Type: a document draws only its own composite font definitions
2026-11-15 03:20:55 +07:00
BFlat 3a76cd89ac Merge pull request #7620 from dotCooCoo/fix/live-paint-info-every-row
MCP: livePaint.info lists every appearance row of a face or edge
2026-11-15 03:20:38 +07:00
BFlat 2d9793d6f1 Merge pull request #7637 from dotCooCoo/perf/remove-breaks-thread-frames-once
Remove Breaks: a partly selected story's frames are gone through once
2026-11-15 03:20:29 +07:00
dotCooCoo b554fc3b10 Merge main into perf/flatten-held-guides-one-walk 2026-11-14 09:45:47 -08:00
dotCooCoo f43d16268a Global Edit: rotated copies are matched and take each edit turned by their angle
Select > Start Global Edit now also takes rotated copies of the selected
object or group, in the highlights before the start, in the Global Edit
Options' Results count and in the started edit. An edit reaches each copy
turned by that copy's angle, so an anchor moved to the right on the
selected object moves downward on a copy turned a quarter turn clockwise.

The copy's angle is the one that lays the selected object's anchors and
handles on the copy's in order (a least-squares fit in the unit box),
and the copy is the same shape when each point then lies within a
millionth of the larger side of the copy's box. Reflected copies and
copies stretched along one direction stay unmatched. With Size, a rotated
copy matches when it is the object rotated without scaling. The no-match
message now names only reflected copies, in every catalog that has it.

Docs: docs/mcp.md, docs/gaps.md, docs/ui-parity.md and the evidence list
in docs/target-app-parity.md.
2026-11-14 09:43:51 -08:00
dotCooCoo c51d14262f Merge main into fix/composite-font-lent-document-only 2026-11-14 09:42:51 -08:00
BFlat fcfad959ff Merge pull request #7588 from dotCooCoo/fix/mesh-point-color-panel
Color: the panels show the color and opacity of picked gradient mesh points
2026-11-15 00:41:54 +07:00
BFlat 0342616e15 Merge pull request #7459 from dotCooCoo/fix/followup-7304
Sort Objects: an opacity sort that gives marks their own opacities changes nothing
2026-11-15 00:41:36 +07:00
BFlat 53cc597fbd Merge pull request #7554 from dotCooCoo/fix/place-text-utf16-no-bom
Place: text files in UTF-16 without a byte-order mark place as UTF-16
2026-11-15 00:41:11 +07:00
BFlat 9735165c40 Merge pull request #7556 from dotCooCoo/fix/rasterfilters-deterministic
Tests: raster effects draw the same twice while another test assigns a document profile
2026-11-15 00:40:50 +07:00
BFlat 8c5494bccc Merge pull request #7342 from dotCooCoo/feat/live-paint-selection-double-click
Live Paint: a Live Paint Selection double-click selects the connected faces or edges
2026-11-15 00:40:41 +07:00
BFlat d0b37826c0 Merge pull request #7338 from dotCooCoo/fix/colored-light-seams
3D: colored-light facets close their shared edges over an underlay
2026-11-15 00:40:19 +07:00
BFlat 3d895d9ac7 Merge pull request #7448 from dotCooCoo/fix/reverse-path-profiles
Paths: Reverse Path Direction turns the stroke's width profile and pen records with the path
2026-11-15 00:40:08 +07:00
BFlat 01e66f0a19 Merge pull request #7477 from dotCooCoo/fix/dimension-second-point-guides
Dimension tool: no construction guides through a first point off the anchors
2026-11-15 00:39:29 +07:00
BFlat d89f593bfa Merge pull request #7380 from ncic/pencil-cursors
Pencil: shows where a stroke continues, connects and closes
2026-11-15 00:38:01 +07:00
dotCooCoo 4509c208d6 Merge main into perf/flatten-held-guides-one-walk 2026-11-14 09:31:15 -08:00
dotCooCoo ae39914b9f Remove Breaks: a partly selected story's frames are gone through once
When only some frames of a threaded story are selected, Remove Line
Breaks and Remove Paragraph Breaks built the story's frame list again
for every selected frame of it, so the work grew with the square of the
frame count. The command now notes a thread once its story is found not
to be selected in full, and reads that thread's other selected frames
on their own without going through the thread again. Each selected
frame still loses its own breaks, in the order selected, as one undo
step.

A test-only counter in threads.rs counts story_in calls, and
remove_breaks_goes_through_a_partly_named_story_once checks both break
kinds with frames named out of order and twice.
2026-11-14 08:58:57 -08:00
dotCooCoo 46c9f922c2 Type: a document draws only its own composite font definitions
While a document's composite fonts are lent, type naming a composite font
the document does not define is set as in a missing font, even when the
front document or the document a placed document sits in defines one of
that name. A document that defines no composite font gets an empty scope
too, so a document in the back, a tiled window, a thumbnail or an export
made while another document is in front no longer borrows the front
document's definitions. A temporary document drawn while a document draws
keeps that document's fonts, and type laid out with nothing lent still uses
the registered ones.

- FontDb::composite_font looks only in the latest loan of the database.
- lend_composite_fonts lends an empty set at the top level when the
  database holds composite fonts; lend_document_composite_fonts also lends
  one inside another loan, for placed documents, back-document measuring
  and threaded reflow on open.
- A loan that leaves out a registered font gets its own generation, so
  layouts made with that font are not reused under it.
2026-11-14 08:16:02 -08:00
dotCooCoo 10f94b544d MCP: livePaint.info lists every appearance row of a face or edge
livePaint.info reported only the top fill of each face and the top
stroke and weight of each edge, so a lower row that draws under an
unpainted top row was not visible to a client. Each face and edge now
also carries `appearance`: every fill and stroke row, bottom first, as
{index, kind, paint, opacity, visible, width (strokes only), drawn}.
`drawn` follows Expand's rule row by row: the part is shown with an
opacity above 0, and the row is shown, has paint and an opacity above
0, and a stroke has a weight above 0. The existing `fill`, `stroke`,
`width`, `bounds`, `sources`, `gapOptions` and `gaps` fields are
unchanged.

The params text no longer says the group defaults to the selection:
the command takes `group`, or `id` when `group` is left out, and
returns an error without either.
2026-11-14 07:57:56 -08:00
FredApps 676f0524cc Merge pull request #1203 from FredApps/fix/spiral-decay-setting-20261011
Keep Spiral decay settings consistent with drawn geometry
2026-11-14 16:22:35 +01:00
BFlat edefbd0e7d Merge pull request #7449 from dotCooCoo/fix/links-stored-brush-art
Links: placed images in stored brush art get Links rows
2026-11-14 21:55:20 +07:00
BFlat cbba5e85fe Merge pull request #7528 from dotCooCoo/feat/ai-style-named-gradients
PDF/.ai import: graphic styles that paint with a named gradient load with it
2026-11-14 21:54:55 +07:00
BFlat 27a259e2db Merge pull request #7505 from dotCooCoo/fix/no-op-undo-steps
Undo: no step when Randomize Opacity or a type setting changes nothing
2026-11-14 21:54:21 +07:00
BFlat 66d24335e1 Merge pull request #7599 from dotCooCoo/fix/trace-hand-in-same-document
Image Trace: a finished trace is applied only to the document it was made in
2026-11-14 21:54:04 +07:00
BFlat 8863c41560 Merge pull request #7581 from dotCooCoo/fix/pdf-cmyk-image-keeps-icc
PDF export: CMYK images that keep their numbers carry their ICC profile
2026-11-14 21:53:33 +07:00
BFlat 68b246851b Merge pull request #7261 from dotCooCoo/fix/smooth-keeps-closed-start
Smooth tool: smoothing over a closed path's first anchor keeps its start
2026-11-14 21:53:16 +07:00
BFlat 5762ec729b Merge pull request #7598 from dotCooCoo/fix/symbol-art-bounds-nested
Symbols: a symbol nested in symbol art is measured by its own art
2026-11-14 21:53:07 +07:00
BFlat 011d5c2b5d Merge pull request #7457 from dotCooCoo/fix/action-batch-step-number
Actions: Batch errors name the step by its place in the commands sent
2026-11-14 21:52:59 +07:00
BFlat 6e3ec907de Merge pull request #7592 from dotCooCoo/fix/brush-freehand-unknown-brush
Brushes: brush.freehand refuses a brush or style it cannot use
2026-11-14 21:52:42 +07:00
BFlat 158558c3d5 Merge pull request #7539 from dotCooCoo/fix/perspective-grid-noop-undo
Perspective: reapplying the current grid preset adds no undo step
2026-11-14 21:52:35 +07:00
BFlat b2b82ddbd6 Merge pull request #7464 from dotCooCoo/fix/followup-7305
Path: path.setHandle to the handle's own point leaves a smooth anchor unchanged
2026-11-14 21:52:26 +07:00
BFlat c248d097ac Merge pull request #7545 from dotCooCoo/fix/remove-breaks-named-locked-type
Artwork Cleanup: text tools act on the locked or hidden type that ids names
2026-11-14 21:52:18 +07:00
BFlat 64dd5eb174 Merge pull request #7418 from dotCooCoo/fix/reflected-dimension-line
Dimension tool: a reflected aligned dimension has its line on the reflected side
2026-11-14 21:52:10 +07:00
BFlat 508a0b0180 Merge pull request #7597 from dotCooCoo/fix/separations-spot-stop-plates
Print: a spot gradient stop prints its process plates on the separations
2026-11-14 21:51:47 +07:00
BFlat 09f882b9d2 Merge pull request #7534 from dotCooCoo/fix/tiled-documents-own-profiles
Color management: documents behind the front one draw through their own profiles
2026-11-14 21:51:30 +07:00
BFlat 4807a2b6de Merge pull request #7596 from dotCooCoo/test/swatch-batch-spot-options-defaults
Swatches: test Spot Colors options and Default Swatches replace in a batch
2026-11-14 21:51:21 +07:00
BFlat ca546d0831 Merge pull request #7473 from dotCooCoo/fix/map-links-stop-plates
Swatches: a gradient stop unlinked from its spot swatch also drops its plates
2026-11-14 21:50:25 +07:00
BFlat 4c9d678863 Merge pull request #7591 from dotCooCoo/fix/swatch-edit-gradient-aspect
Swatches: a replacement gradient or pattern is stored the way a new swatch stores it
2026-11-14 21:50:09 +07:00
BFlat 60be06f7eb Merge pull request #7526 from dotCooCoo/perf/flatten-sweep-staggered-boxes
Flatten: boxes staggered right and down meet only the box before in the grouping sweep
2026-11-14 21:49:27 +07:00
BFlat 98324db329 Merge pull request #7460 from dotCooCoo/fix/plugin-store-folder-lock
Plug-ins: windows and processes take turns on the Plug-ins folder
2026-11-14 21:49:19 +07:00
dotCooCoo f6ad3ecc01 Merge main into feat/live-paint-selection-double-click
# Conflicts:
#	docs/target-app-parity.md
2026-11-14 06:28:52 -08:00
dotCooCoo 160abff792 Merge main into perf/flatten-held-guides-one-walk 2026-11-14 06:11:45 -08:00
dotCooCoo e9c26abe4d Flatten: held ruler guides are gathered in one walk
When a flattened root is a sublayer, its ruler guides were found by
checking whether the sublayer held any and then walking its whole
subtree again to collect them. They are now collected in one descent
through the sublayer and its sublayers, looking at each of their
children once. The guides, their order and the layer each one goes to
are unchanged.

A test-only record of the nodes looked at checks that each one is
looked at once and that the guides keep their paint order.
2026-11-14 06:11:07 -08:00
ncic cd89999939 Merge remote-tracking branch 'upstream/main' into pencil-cursors
# Conflicts:
#	docs/target-app-parity.md
2026-11-14 14:42:23 +01:00
BFlat 3c15649730 Merge pull request #7427 from dotCooCoo/fix/live-paint-expand-drawn-stroke
Live Paint: Expand keeps the faces and edges that draw
2026-11-14 20:37:59 +07:00
BFlat 9f55dbdd46 Merge pull request #7327 from dotCooCoo/fix/graph-label-paint-recolor
Graphs: recolor, stroke and gradient edits on labels are kept for their kind
2026-11-14 20:37:50 +07:00
BFlat ca0050be1b Merge pull request #7578 from dotCooCoo/fix/gradient-spot-colorants-drawn-stops
PDF and EPS export: gradients name only the spot inks of stops that color something
2026-11-14 20:37:42 +07:00
BFlat 9800d48e58 Merge pull request #7571 from dotCooCoo/fix/cmyk-tiff-alpha-16-bit
TIFF: a 16-bit CMYK or gray TIFF with alpha converts at 16 bits
2026-11-14 20:37:26 +07:00
BFlat c8230b469a Merge pull request #7422 from dotCooCoo/fix/dcs-placement-clip-keeps-file-clip
Place: Placement Options clip a DCS image inside its file's clipping path
2026-11-14 20:37:10 +07:00