Commit Graph
4729 Commits
Author SHA1 Message Date
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 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 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 6dc068b162 Merge pull request #7703 from dotCooCoo/feat/color-management-policies
Color Settings: RGB and CMYK policies keep, take off or convert a document's profiles on open
2026-11-15 15:46:48 +07:00
BFlat 2340a1bb6c Merge pull request #7777 from dotCooCoo/fix/place-cursor-ask-roots
Place: import options a cursor click asks for place within the cursor's automation roots
2026-11-15 15:46:31 +07:00
BFlat a9b43489a7 Merge pull request #7769 from dotCooCoo/feat/align-key-anchor
Align: a Shift-clicked anchor becomes the key anchor that Align and Distribute keep in place
2026-11-15 15:45:20 +07:00
BFlat e5f15de4d6 Merge pull request #7770 from dotCooCoo/feat/composite-custom-character-sets
Type: composite fonts take custom character sets
2026-11-15 15:45:12 +07:00
BFlat 06d776e220 Merge pull request #7757 from dotCooCoo/feat/3d-classic-preserve-spot
3D (Classic): Preserve Spot Colors keeps spot inks in shaded faces
2026-11-15 15:45:01 +07:00
BFlat 4b7af3b6c7 Merge pull request #7792 from dotCooCoo/fix/trace-abutting-seams
Image Trace: Abutting traces draw seam fills under their paths
2026-11-15 15:44:43 +07:00
BFlat 9643b21496 Merge pull request #7786 from dotCooCoo/feat/variable-options-kind
Variables: Variable Options changes a variable's kind as well as its name
2026-11-15 15:44:15 +07:00
BFlat f94b97c4d5 Merge pull request #7789 from dotCooCoo/fix/an-opaque-16-bit-cmyk-tiff-s-inks-are-rounded
TIFF: an opaque 16-bit CMYK TIFF's inks are rounded to 8 bits for display
2026-11-15 15:43:49 +07:00
BFlat cbadd8c14b Merge pull request #7791 from dotCooCoo/fix/path-commands-do-not-skip-locked-or-hidden-paths
Artwork Cleanup: path commands take locked and hidden art named by ids
2026-11-15 15:43:35 +07:00
dotCooCoo 253653e08f Merge main into fix/bucket-strokeedge-and-livepaint-info-act-on 2026-11-15 00:28:08 -08:00
dotCooCoo 33f7242917 Merge main into fix/merging-a-spot-swatch-into-another-drops-the-old 2026-11-15 00:18:00 -08:00
dotCooCoo 8a4ba743c6 Merge main into fix/create-outlines-drops-the-type-object-s-own 2026-11-15 00:12:24 -08:00
dotCooCoo a1533ab97c Merge main into fix/a-rasterize-effect-before-a-scaling-transform 2026-11-15 00:02:23 -08:00
dotCooCoo 5685186262 Merge main into fix/one-undo-step-a-refused-brush-on-a-path-with-no 2026-11-15 00:02:10 -08:00
dotCooCoo 7a1b1c5f2e Merge main into fix/save-and-save-for-older-apps-read-the-placed 2026-11-15 00:02:09 -08:00
dotCooCoo cb368c29e4 Merge main into fix/paste-plain-graph-labels 2026-11-14 23:52:57 -08:00
dotCooCoo f3a4c0ac1a Paste: Paste without Formatting also drops a pie's own legend fill mark
Paste without Formatting dropped the label formats a pasted graph keeps
but left the mark that its legend labels' fill is their own. After a later
change to a legend label (its size, for example), the next redraw read the
default black fill as the labels' own and drew them black on dark wedges
again. The mark now stays behind with the other formats.

A pie's legend label whose series name holds line breaks of its own (from
a quoted CSV cell) is now located by all of its lines, as a redraw centers
it. Before, only `|` counted as a line break, so a tall label on stacked
pies could take the contrast of the wrong ring.

Paste no longer recolors the legend labels of a pie whose wedges a merged
or changed swatch recolors. That is a separate change to Paste and goes in
its own pull request. Paste without Formatting sets the legend labels by
the wedge colors as copied.
2026-11-14 23:51:27 -08:00
BFlat 97c3226d72 Merge pull request #7773 from dotCooCoo/feat/variables-panel-sort-columns
Variables: Variables, Objects and type columns sort the variable list
2026-11-15 14:43:04 +07:00
BFlat 871dc96f7d Merge pull request #7775 from dotCooCoo/feat/recolor-new-row
Recolor Artwork: New Row adds a row that current colors can be merged into
2026-11-15 14:42:46 +07:00
BFlat 04b91c748e Merge pull request #7648 from dotCooCoo/feat/graph-type-dialog
Graphs: Graph Type is a dialog of its own with type buttons and a page per axis
2026-11-15 14:42:05 +07:00
dotCooCoo 63dab14ee7 Image Trace: Abutting traces draw seam fills under their paths
An Abutting trace with Fills now holds a "Seam Fills" group under its
paths. For each color it has one stroke, 1.5 image pixels wide, along
the edges where a filled path of that color meets a filled path drawn
after it, in that color. A renderer that anti-aliases each path on its
own no longer shows a light hairline along those edges. The traced
paths and their shared edges do not change, and edges against the
image's border, a transparent area or a color left out get no stroke.

- vectorcraft-trace: `seam_fills` finds the segments two filled paths
  share and strokes them in the lower path's color (one stroke per
  gradient path). Overlapping, traces without Fills and Flat Logo get
  none.
- Image Trace commands: the group comes under every path (right above
  the hidden image in a live trace). Expand keeps it, Expand by color
  leaves it under the color groups, and a trace whose paths have more
  than half of the anchor limit gets no seam fills.

Docs: docs/mcp.md, the params text, docs/target-app-parity.md.
2026-11-14 23:15:50 -08:00
dotCooCoo 5e4794a65c Align: a rejected select.key keeps the key anchor that was set
select.key {id, anchor} set the new key anchor before checking it, so a
point that is in the selection but not on the path cleared the key
anchor and then returned an error. The point is now checked first: an
anchor the path does not have is not a selected anchor point, and the
other conditions are checked on a copy of the selection.
2026-11-14 23:04:17 -08:00
dotCooCoo b4cea4d278 Merge main into fix/a-rasterize-effect-before-a-scaling-transform 2026-11-14 23:00:16 -08:00
dotCooCoo 0f67bbbddf Merge main into feat/3d-classic-preserve-spot 2026-11-14 22:56:34 -08:00
dotCooCoo ebe823d79b Merge main into fix/fileinfo-control-characters-message 2026-11-14 22:56:29 -08:00
dotCooCoo 5f18834e55 Merge main into fix/save-and-save-for-older-apps-read-the-placed 2026-11-14 22:52:49 -08:00
dotCooCoo c0b1c2e144 Merge main into feat/color-management-policies 2026-11-14 22:51:34 -08:00
BFlat 4a5f07b8c3 Merge pull request #7753 from dotCooCoo/feat/info-panel-tool-readouts
Info: the panel shows the move, transform, Zoom and Paintbrush values of the tool in use
2026-11-15 13:50:30 +07:00
BFlat 0cef4fa727 Merge pull request #7743 from dotCooCoo/fix/legacy-ai-artboard
.ai import: legacy PostScript .ai files open on their own artboard
2026-11-15 13:50:00 +07:00
BFlat 35a0d5ab04 Merge pull request #7755 from dotCooCoo/fix/clip-type-paint-export
Clipping: painted type keeps its fill and stroke in a group with geometry effects
2026-11-15 13:49:52 +07:00
BFlat b43372361e Merge pull request #7746 from dotCooCoo/fix/replace-clipped-psd-keeps-transform
Place: a plain image replacing a clipped PSD keeps its scale and rotation
2026-11-15 13:49:22 +07:00
BFlat bdfd445eef Merge pull request #7662 from ruchirguitar/feat/style-neon-glow
Graphic Styles: built-in Neon & Glow graphic style library
2026-11-15 13:49:11 +07:00
dotCooCoo 1f841dbeec Variables: Variable Options changes a variable's kind as well as its name
Variable Options in the Variables panel only renamed a variable, and no
command changed a variable's kind. variable.rename now takes
{name, newName?, kind?} and renames the variable, changes its kind, or
both, in one undo step, with none when nothing changes. A null or empty
value, an unknown kind, a taken name and locked variables are refused.

A kind change unbinds the objects that can't hold the new kind (text
keeps type with no other text variable, image keeps image objects,
graph keeps graph roots, visibility keeps every object) and drops the
variable's values in every data set. The dialog shows the variable's
name and kind and sends both.
2026-11-14 22:47:04 -08:00
dotCooCoo b2a83415d0 Merge main into fix/path-commands-do-not-skip-locked-or-hidden-paths 2026-11-14 22:44:05 -08:00
dotCooCoo d999d861de Color Settings: Convert to Working Space compensates CMYK black points
- CMYK colors converted between two loaded CMYK profiles now use the
  Color Settings black point compensation, as RGB colors already did:
  the conversion goes through linear ProPhoto RGB and maps the source
  profile's black onto the destination's.
- The edit.colorSettings, document.open and file.newFromTemplate params
  text and docs/mcp.md name file.newFromTemplate with the commands that
  apply the policies, and say that colorMode on open converts after the
  policies, through the profiles the document keeps.
- A test covers New from Template under the policies, and another the
  CMYK black point compensation.
2026-11-14 22:43:08 -08:00
dotCooCoo 92a23e02d3 Merge main into fix/one-undo-step-a-refused-brush-on-a-path-with-no 2026-11-14 22:42:59 -08:00
dotCooCoo f4dc71aee8 Flare: Ctrl/Cmd holds the center and Up/Down and ~ change the rings while they are placed
While the center is dragged out, Ctrl (Command on macOS) keeps the
center's diameter as the last drag showed it, and the drag sizes the
halo through shape.flare's growth: the halo's radius keeps the ratio to
the pointer's distance that it had when the key went down, within the
Flare Tool Options' 0 to 300 %. Letting the key go sizes the center with
the drag again, and the flare keeps the new growth.

While the rings' end point is placed, Up and Down Arrow add and remove
rings within 0 to 50, and leave the rays as the center drag left them.
Before, they changed the rays in both drags. Each press of ~ (backquote)
sends a new ringSeed. shape.flare takes ringSeed, a whole number below
2^53, and places the rings along the path from a sequence of its own,
keeping their count and sizes and the other parts. seed and ringSeed
given as a fraction, a negative number or a boolean are refused. The
canvas re-hovers the tool when backquote goes down or up, so ~ works with
the pointer held still.

With Rings off, the arrows and ~ do not change the flare in the second
step. Each new flare starts from the options' counts and growth, without
a ringSeed.
2026-11-14 22:39:10 -08:00
dotCooCoo 53249e406c Align: Distribute's docs and params text describe the key anchor with spacing and to
object.distribute uses spacing with a key anchor, and to: "selection" or
"artboard" makes the key anchor an ordinary point. docs/mcp.md and the
object.distribute and object.distributeSpacing params text still said
both commands ignore to and spacing with anchor points selected.
2026-11-14 22:31:22 -08:00
dotCooCoo b867dee0b8 Merge main into fix/an-opaque-16-bit-cmyk-tiff-s-inks-are-rounded 2026-11-14 22:30:11 -08:00
dotCooCoo c5b8754eb7 Recolor Artwork: New Row adds a row that current colors can be merged into
The Assign tab has a New Row button before Merge. With art selected it
adds a row with no current colors above the first selected row, or at
the top, with that row's new color, and selects it. Merge with the new
row first moves the other rows' current colors into it, and they take
its new color. The row shows an empty slot until then.

An empty row recolors nothing and does not count toward Colors. OK
sends it with the other rows. recolor.apply adds no library swatch for
it and gives a rewritten color group no color from it, in the dialog's
groupColors and in the command's default.
2026-11-14 22:22:55 -08:00
dotCooCoo d5ccac5646 Variables: Variables, Objects and type columns sort the variable list
The Variables panel drew each variable as one "name · object" line in
the order the variables were defined, with no headers and no sorting.

The list now has three columns with headers: the type icon, Variables
and Objects. A click on a header sorts the list by that column, and a
second click reverses the order. The new command variable.sort {by:
name|object|type|none, descending?} sets the order, which is panel
state: not saved and not an undo step. variable.list lists the
variables in that order and reports it as sort. An unknown by, or a
descending that is not true or false, is an error.
2026-11-14 22:21:08 -08:00