Commit Graph
10781 Commits
Author SHA1 Message Date
BFlat 9a28264cfe Merge pull request #6557 from dotCooCoo/feat/script-alert-confirm-prompt
Scripts: alert, confirm and prompt open dialogs with Stop, and headless runs take their answers from script.run
2026-11-11 17:13:46 +07:00
BFlat e1c199a184 Merge pull request #6552 from dotCooCoo/docs/dynamic-symbols-edit-symbol-keeps-links
Docs: the Dynamic symbols entry says Edit Symbol keeps instances linked
2026-11-11 16:48:07 +07:00
BFlat d56ec4830d Merge pull request #6554 from dotCooCoo/fix/set-glyph-alternate-drawn-gid
Glyphs: text.setGlyphAlternate with gid null reports the glyph drawn
2026-11-11 16:47:58 +07:00
BFlat 6864cc0944 Merge pull request #6549 from dotCooCoo/fix/installed-script-includes
Scripts: a script chosen from File › Scripts reads its #include files and runs $.evalFile
2026-11-11 16:29:09 +07:00
BFlat 75e33a5467 Merge pull request #6553 from dotCooCoo/fix/task-bar-button-names
Contextual Task Bar: screen readers name the text buttons
2026-11-11 16:28:59 +07:00
BFlat 4986f66fe2 Merge pull request #6442 from Messhias/feat/g5-symbol-lib-inventory-icons
G5: built-in Inventory Icons symbol library
2026-11-11 16:12:59 +07:00
dotCooCoo c0adc6e9d7 Merge main into feat/script-alert-confirm-prompt 2026-11-11 01:09:54 -08:00
BFlat e9f98f0d2f Merge pull request #6546 from jmverges/fix/6541-tracking-horizontal-scale
Type: tracking and manual kerning take the Horizontal Scale
2026-11-11 16:05:27 +07:00
BFlat c272e7ebac Merge pull request #6550 from dotCooCoo/fix/reshape-empty-focal-radius
Reshape: an empty focal list cannot be combined with radius
2026-11-11 16:05:17 +07:00
dotCooCoo 1851f8769a Glyphs: text.setGlyphAlternate with gid null reports the glyph drawn
With no glyph choice left on the character, text.setGlyphAlternate
returned the font's default glyph for it: 0 for a character the font
lacks, which a fallback font draws, and the lowercase glyph for a
letter under All Caps. It now reports the glyph the character is drawn
with, as text.glyphAlternates does.
2026-11-11 01:05:16 -08:00
dotCooCoo 68042f0924 Docs: the Dynamic symbols evidence lists the Edit Symbol tests 2026-11-11 00:57:15 -08:00
dotCooCoo bc63dc7285 Scripts: the File › Scripts command help says it runs the script by path 2026-11-11 00:36:08 -08:00
dotCooCoo c941a1da5d Contextual Task Bar: screen readers name the text buttons
The bar's text buttons (Edit Path, Duplicate, Type on a Path Options and
the others) were painted labels on a click area with no accessible name,
so a screen reader announced them without one. Each button now reports
its label as a button, as the Home screen's file rows do.
2026-11-11 00:36:08 -08:00
dotCooCoo ba5eab7349 Docs: Edit Symbol keeps dynamic symbol instances linked
The Dynamic symbols entry still said Edit Symbol expands the symbol's
own art. Since #5064, Edit Symbol opens symbol editing mode: every
instance stays linked and a dynamic symbol's instances keep their
changes for the objects the edited art still has.
2026-11-11 00:36:07 -08:00
Fabio William Conceição f23f7ef321 G5: list Inventory Icons in the MCP symbol libraries docs 2026-11-11 08:35:19 +00:00
Fabio William Conceição 1b47f172c2 G5: list Inventory Icons in the UI parity checklist 2026-11-11 08:35:18 +00:00
Fabio William Conceição 50bf4fc5a3 G5: built-in Inventory Icons symbol library 2026-11-11 08:34:55 +00:00
dotCooCoo c09e1d3ebe Scripts: closing the quit question when the script it asked about has ended
A window-close request while a script waits at its alert, confirm or
prompt opens the quit question over that dialog, and Cancel shows the
script's dialog again. When the run then ended another way (script.stop,
or the run finishing), the quit question stayed open, and Cancel showed
a dialog for a script that was no longer running.

The running-script poll now closes the quit question once the run ends,
and forgets the script's dialog under it once the run no longer waits at
that dialog.
2026-11-11 00:33:28 -08:00
BFlat b37241f5ae Merge pull request #6547 from dotCooCoo/fix/appearance-active-row-aligned-remove
Appearance: aligned Remove Item and Duplicate Item keep the active row
2026-11-11 15:33:06 +07:00
BFlat 8c80110544 Merge pull request #6544 from dotCooCoo/fix/char-style-tint-error-names
Character Styles: a tint error names the Fill Tint or Stroke Tint field
2026-11-11 15:18:27 +07:00
BFlat 18c34d93a7 Merge pull request #6542 from dotCooCoo/fix/placed-document-composite-fonts
Render: a placed document drawn exactly lends its own composite fonts
2026-11-11 15:18:18 +07:00
jmverges af29e7b71a Merge remote-tracking branch 'upstream/main' into fix/tracking-horizontal-scale
# Conflicts:
#	docs/file-format-parity.md
2026-11-11 08:10:00 +00:00
BFlat ed234780f2 Merge pull request #6540 from dotCooCoo/fix/pdfx1a-flatten-clipping
PDF export: PDF/X-1a, X-3 and 1.3 keep the art under the hidden part of cropped art
2026-11-11 15:08:42 +07:00
dotCooCoo 6684650425 Reshape: an empty focal list cannot be combined with radius
path.reshape refused focal with radius only when focal named an anchor.
Since an empty focal list chooses the focal-point rule, a call with
"focal": [] and a radius was accepted and used the radius falloff,
although the params text and docs/mcp.md say the two cannot be used
together. Any focal other than null now goes with radius as an error.
2026-11-11 00:01:50 -08:00
dotCooCoo cc2ec8f292 Scripts: a script chosen from File › Scripts reads its #include files and runs $.evalFile
File › Scripts ran an installed script as source text, so the run had no
file: an #include line ended it with "script file read refused", and
$.evalFile was refused too. The menu now checks the script as before and
runs it with script.run {path}, as docs/mcp.md describes, so its
included files and the files $.evalFile runs are read beside it.
2026-11-11 00:00:52 -08:00
BFlat 03266ce4b7 Merge pull request #6537 from dotCooCoo/fix/expand-tinted-symbol-adjustment
Expand Appearance: tinted symbols keep their colors under a color adjustment
2026-11-11 15:00:39 +07:00
dotCooCoo 99b7fb0ab8 Appearance: aligned Remove Item and Duplicate Item keep the active row
After an aligned Remove Item or Duplicate Item, the active row was
re-pointed by the indices of the first object in paint order. When the
first selected object paints above the others, its own rows that changed
are different ones, so the active row could be dropped or land on the
wrong row, and a later paint edit changed that row instead.

The active row now follows the rows removed or copied in the first
selected object's own stack.

Follows #5591.
2026-11-10 23:58:23 -08:00
BFlat 902f217ef6 Merge pull request #6539 from dotCooCoo/fix/break-link-keeps-new-art-selected
Symbols: Break Link keeps new art on a locked artboard selected
2026-11-11 14:52:56 +07:00
BFlat 5fc66d5373 Merge pull request #6538 from dotCooCoo/fix/quick-bounds-nine-slice-moved
Symbols: an instance that only moves holds the art its 9-slice guides move
2026-11-11 14:52:48 +07:00
BFlat df7a185cb2 Merge pull request #6534 from dotCooCoo/fix/reshape-earlier-steps
Reshape: a step recorded without focal points plays by the earlier rule
2026-11-11 14:48:26 +07:00
BFlat 05f2be5588 Merge pull request #6528 from dotCooCoo/fix/insert-anchor-keeps-selection
Paths: Add Anchor Point keeps the same anchors and segments selected
2026-11-11 14:48:16 +07:00
BFlat 7771355529 Merge pull request #6535 from jmverges/fix/3179-half-stroke-box
.ai import: stroked type in an envelope maps from its glyphs grown by half its stroke
2026-11-11 14:39:40 +07:00
BFlat 0127ed3ec9 Merge pull request #6536 from dotCooCoo/feat/script-include-directives
Scripts: #include and the other preprocessor lines run, and $.evalFile runs a file
2026-11-11 14:31:44 +07:00
dotCooCoo 2443d1250b Character Styles: a tint error names the Fill Tint or Stroke Tint field
An out-of-range or non-numeric tint in Character Style Options and New
Character Style gave "Tint must be a number from 0 to 100" for both
fields, so the message did not say which of the two to correct. It now
names "Fill Tint" or "Stroke Tint", the names the two fields carry.
2026-11-10 23:27:36 -08:00
BFlat 6a5854ec5f Merge pull request #6533 from dotCooCoo/fix/char-style-tint-names
Character Styles: the Fill and Stroke Tint fields have distinct names
2026-11-11 14:23:48 +07:00
BFlat 3e642efce6 Merge pull request #6530 from dotCooCoo/fix/vertical-path-sideways-glyphs
Type: on a vertical path, letters lie a quarter turn clockwise from upright glyphs, in a column centered on the path
2026-11-11 14:22:33 +07:00
dotCooCoo a2c09544c8 Render: a placed document drawn exactly lends its own composite fonts
A placed document drawn without a bitmap (renders without progressive
placed art, exports) drew type in the placed document's own composite
font in the fallback font: only the outer document's composite fonts were
lent to the font database. The placed document's composite fonts are now
lent while its art is drawn.
2026-11-10 23:22:00 -08:00
BFlat dac55268e3 Merge pull request #6529 from dotCooCoo/fix/store-put-size-bound
Stores: saving a preset, profile or plug-in reads at most one byte past it from the file it replaces
2026-11-11 14:17:50 +07:00
jmvergesandClaude Opus 5.5 df50bbf0f3 Type: tracking and manual kerning take the Horizontal Scale
In horizontal type, tracking and manual kerning are now thousandths of
the em as the Horizontal Scale draws it: at 50%, a tracking of 100 adds
0.05 em after each character. They were added at the full em while the
glyph advances took the scale, so narrow tracked type drifted from the
page of users' .ai files letter by letter. That page writes such type's
character spacing as the tracking itself in a text space as wide as the
scale, which PDF scales by it (ISO 32000-1 9.4.4). Vertical type keeps
the full em: its advances down the column don't all take the scale.

vectorcraft_text::spacing_scale gives the factor. Shaping, inline
graphics and the Optical pairs use it, and so do the conversions from
points back to thousandths of an em: the automatic kerning the Character
panel reads and Touch Type's limits (glyph_em), Combine Point Text, and
PDF import, whose tracking is now the file's Tc. Scale Text Attributes
now keeps tracked type where a horizontal stretch drew it.
SVG export writes letter-spacing in thousandths of the font size it
writes (the vertical scale), so uniformly scaled type keeps its spacing
in a viewer.

Type with both a Horizontal Scale other than 100% and tracking or manual
kerning lays out differently than before, in every document.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 07:16:55 +00:00
BFlat 298523348d Merge pull request #6531 from dotCooCoo/docs/roadmap-duplicate-rows
Docs: the roadmap lists each milestone once
2026-11-11 14:13:17 +07:00
dotCooCoo 22189986a9 PDF export: flattening for PDF/X-1a, X-3 and 1.3 keeps art across clipping layers
- PDF/X-1a, PDF/X-3 and PDF 1.3 files leave the layers they don't print
  out of the flattening. A flattened group no longer takes the place of
  art in a layer that doesn't print, so the art of a clipping layer over
  such a layer prints, and art of a layer that doesn't print stays out
  of the file.
- A flattened group goes into a lower layer only when that layer prints,
  shows and is a template as the clipping layer does, the clipping layer
  and the groups it leaves have no opacity, blend mode or isolation, and
  the clipping path has no fill. Otherwise the group holds only the art
  inside the clipping layer, drawn over the clipping path's fill and the
  art below, and the art below is flattened on its own. Before, the fill
  covered the group, the group lost the layer's opacity, or the clipping
  path cut the art below.
- Transparent art that a clipping path hides entirely, such as one of
  area type holding only a space, is removed. Before, the export failed
  because the art kept its transparency.

Object › Flatten Transparency follows the same rules. Documents without
clipping layers or layers that don't print export the same bytes as
before.
2026-11-10 23:08:31 -08:00
dotCooCoo badcf3f63f Symbols: an instance that only moves holds art its 9-slice guides move
A symbol whose natural size is not 20 x 20 is drawn through its 9-slice
guides by an instance that only moves, so art the guides move can draw
outside the art box moved by the instance. The visual box took that
moved art box alone, and the renderer culled the instance when only the
moved art was in view. The visual box now measures such an instance as
it does a scaled one.
2026-11-10 23:07:27 -08:00
dotCooCoo de5323efb6 Expand Appearance: tinted symbols keep their colors under a color adjustment
Expand Appearance on a symbol instance with a fill tint and a color
adjustment applied the adjustment to the untinted art, so the expanded
colors differed from the canvas. The expand path now passes the tinted
instance art to adjust_in_document.
2026-11-10 23:05:53 -08:00
BFlat fe346e53be Merge pull request #6527 from dotCooCoo/fix/dimension-follow-both-ends
Dimension tool: both ends of a dimension follow the art it measures
2026-11-11 14:03:40 +07:00
dotCooCoo 9bfd6b7be5 Paths: describe the anchor added on a selected segment as an end of its halves
A selected segment that path.insertAnchor splits stays selected as its
two halves. The new anchor is the end both halves share, so it moves
with them, and Delete cuts both halves. docs/mcp.md and the comment on
renumber_after_insert called it a direct-selected anchor; they now
describe it as an end of the halves that moves with them.
2026-11-10 23:00:40 -08:00
dotCooCoo 988bfeb6ec Symbols: Break Link keeps new art on a locked artboard selected
Break Link to Symbol on an instance just placed on a locked artboard
selected nothing: the art that replaced the instance has a new id, so the
locked-artboard check did not see it as new art. The art of an instance
that was new art is now checked without the locked artboards, and the
session keeps it selected as new art. The art of an older instance on a
locked artboard, named by id, is still left out of the selection.
2026-11-10 22:54:05 -08:00
jmvergesandClaude Opus 5.5 6701a1f8e5 .ai import: stroked type in an envelope maps from its glyphs grown by half its stroke
With Distort Appearance, the stroked candidate for type in an envelope
mapped from the type's bounds with strokes, which for a stroke on the
type's appearance (or on a group round it) reach as far as a miter join
may at a corner, the miter limit times half the weight. In users' files
the drawn art maps from the glyphs grown by what the strokes paint along
a side: half the weight of a centred stroke. The candidate now uses that
box. Character strokes keep the measure the type's bounds with strokes
already give them (they have no miter allowance), and other objects in
the contents keep their bounds with strokes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 06:49:26 +00:00
dotCooCoo 2fc07fe3c0 Merge main into feat/script-alert-confirm-prompt
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/app.rs
#	docs/target-app-parity.md
2026-11-10 22:40:45 -08:00
dotCooCoo 08387a22ec Merge main into feat/script-include-directives 2026-11-10 22:39:32 -08:00
BFlat 8b6c7444be Merge pull request #6524 from dotCooCoo/fix/native-open-budget-no-reread
Native files: a document past a read budget is refused after one read
2026-11-11 13:38:32 +07:00