Commit Graph
4324 Commits
Author SHA1 Message Date
BFlat 6016d6200f Merge pull request #7206 from dotCooCoo/fix/hindi-label-senses
i18n: Hindi labels use the interface sense of their English
2026-11-15 08:25:53 +07:00
BFlat 34ffc46cb5 Merge pull request #7687 from dotCooCoo/feat/links-copy-info
Links: Copy Info in the panel menu copies the selected links' file names
2026-11-15 08:25:44 +07:00
BFlat a53891b846 Merge pull request #7291 from dotCooCoo/feat/live-paint-bucket-multi-click
Live Paint: double-click floods across unstroked edges, triple-click paints the same paint
2026-11-15 08:25:35 +07:00
BFlat b63b99ba1a Merge pull request #7606 from dotCooCoo/fix/monitor-profile-after-blending
Canvas: translucent art blends with the paper before the monitor profile
2026-11-15 08:25:27 +07:00
BFlat 42043f1dbb Merge pull request #7696 from dotCooCoo/fix/svg-code-selection
SVG Options: Show Code under Export Selection shows the selection
2026-11-15 08:25:10 +07:00
BFlat d593b41961 Merge pull request #7691 from dotCooCoo/feat/variable-library-every-kind
Variables: Load and Save Variable Library hold visibility, image and graph variables
2026-11-15 08:24:45 +07:00
BFlat 2331fd44fa Merge pull request #7680 from dotCooCoo/feat/radial-blur-center
Effects: Radial Blur turns about a Blur Center set in its dialog
2026-11-15 08:24:28 +07:00
BFlat 905eb30384 Merge pull request #7716 from dotCooCoo/fix/svg-import-budget-shared
SVG import: bound selector matching and share the limits with linked and embedded SVGs
2026-11-15 08:24:10 +07:00
BFlat c18a83f028 Merge pull request #7698 from dotCooCoo/fix/save-checks-files-beside-read-file
Save: File > Save no longer writes over the file the document was read from through a file written beside the path
2026-11-15 08:23:45 +07:00
BFlat c605d0ded8 Merge pull request #7671 from dotCooCoo/fix/prefs-reset-row
Preferences: Reset Preferences shares the row of Export and Import
2026-11-15 08:23:38 +07:00
BFlat 17dfe41a7e Merge pull request #7672 from dotCooCoo/fix/export-selection-doc-save-panel
MCP: docs say document.exportSelection with options and no path still asks for the file
2026-11-15 08:23:31 +07:00
BFlat 410bb908ce Merge pull request #7695 from dotCooCoo/fix/issue-7275-rename
Fix #7275: Rename artboards in Export for Screens by double-clicking their names
2026-11-15 08:23:04 +07:00
BFlat 895e9493d2 Merge pull request #7693 from dotCooCoo/fix/hidden-chars-test-retry-edit
Tests: each Show Hidden Characters retry sets new text
2026-11-15 07:11:58 +07:00
dotCooCoo 89f20c45c4 SVG import: bound selector matching and share the limits with linked and embedded SVGs
The measurement that runs before the style cascade and usvg now covers
the inputs that still got past it:

- usvg matches a selector without keeping what it found, so one whose
  leftmost part matches nothing tests every set of ancestors in turn.
  The measurement counts those tests for each copy and stops at
  50,000,000; past that the SVG is refused with "the SVG's style sheets
  take too long to match". An SVG image's matching stops at what the
  SVG showing it left.
- A test counts one more for every 16 attributes a lookup scans and
  every 16 bytes of the value it compares, so many classes against a
  long class list count the work they do, in usvg's matching and in
  the import's own cascade.
- The declarations the import's own cascade keeps, once per element,
  count toward the 64 MB, including those of `:not()` rules, which usvg
  drops. Each `:not()` alternative counts as a test.
- A linked SVG file is measured before its cascade runs. The linked SVG
  files share one measurement: once they pass the limits together, the
  files after that are shown without their links. The tests a file past
  the limits made still count.
- SVG images share the element limit and the selector tests with the
  SVG showing them, as they already shared the 64 MB.

The svg_filters reader measures its SVG before the cascade too.
2026-11-14 16:10:10 -08:00
dotCooCoo 67fd1cd127 Merge main into feat/live-paint-bucket-multi-click 2026-11-14 15:48:45 -08:00
dotCooCoo 2b9325b9e0 Merge main into feat/links-copy-info 2026-11-14 15:21:36 -08:00
BFlat dafd993395 Merge pull request #7658 from dotCooCoo/feat/svg-filter-defaults
Effects: Effect › SVG Filters lists default filters
2026-11-15 06:18:12 +07:00
BFlat 4e42e2bbb0 Merge pull request #7681 from dotCooCoo/feat/east-asian-glyph-forms
Type: Glyphs panel menu draws the selected characters in an East Asian glyph form
2026-11-15 06:17:55 +07:00
BFlat 6d0c318951 Merge pull request #7689 from dotCooCoo/fix/links-brush-art-thumbnails
Links: rows of images in stored brush art show their thumbnails
2026-11-15 06:17:31 +07:00
BFlat 8b8daabf3e Merge pull request #7359 from dotCooCoo/fix/tr-message-rows
i18n: Turkish has a row for 1,811 of the messages the untranslated report lists
2026-11-15 06:16:00 +07:00
dotCooCoo 193470f80b Tests: check where each Export Selection with options writes
The test now asserts that the picked file and the given path receive the two writes, as well as the write count.
2026-11-14 14:57:39 -08:00
dotCooCoo 446a62841a SVG Options: Show Code under Export Selection shows the selection
Show Code in the SVG Options dialog that File > Export Selection opens
encoded the whole document at the first artboard, while OK writes the
selected objects alone, cropped to them. The code view now encodes the
same selection document OK writes, without the artboard options, and
encodes it again when the selection changes.
2026-11-14 14:46:42 -08:00
dotCooCoo fecb7149e4 Tests: each Show Hidden Characters retry sets new text
show_hidden_characters_lays_out_only_type_that_changed retries its two
frames when another test changes the fonts or the hyphenation exceptions
between them. Every retry set the same text, which after the first
attempt is no edit, so the object kept its marks and the test failed
with "the edited object is laid out again". Each attempt now sets
different text.
2026-11-14 14:45:07 -08:00
dotCooCoo 196231d233 Save: File > Save checks the files written beside the path against the file read from
File > Save to the document's own file planned the save with acknowledgeLoss
set, so that only its own path was asked about, and then wrote that plan. With
the acknowledgment in the plan, the files written beside the path (an EPS
saved with Use Artboards writes one per artboard) were not checked against the
file the document was read from. A document opened from one of those artboard
files, with things left out when it was read, was written over by File > Save
without the question. Save As and Save a Copy already plan again without the
acknowledgment before writing; File > Save now does the same.

Follow-up to #6751.
2026-11-14 14:37:55 -08:00
BFlat c290957988 Merge pull request #7483 from dotCooCoo/fix/uk-missing-message-rows
i18n: Ukrainian translates 114 messages that no catalog had a row for
2026-11-15 05:31:03 +07:00
BFlat 0fe02d8544 Merge pull request #7651 from dotCooCoo/feat/smart-punctuation-dialog
Type: Smart Punctuation replaces ligatures, extra spaces and fractions and reports results
2026-11-15 05:30:55 +07:00
BFlat c0ce77a912 Merge pull request #7663 from dotCooCoo/feat/perspective-auto-plane-positioning
Perspective: Perspective Grid Options has Automatic Plane Positioning
2026-11-15 05:30:40 +07:00
BFlat ada5c74c47 Merge pull request #7203 from dotCooCoo/fix/file-folder-param-classification
Automation: one classification of file and folder params
2026-11-15 05:30:12 +07:00
BFlat 8346001971 Merge pull request #7618 from dotCooCoo/fix/opentype-ligature-note-every-frame
OpenType panel: the tracked-ligatures note reads every selected story frame
2026-11-15 05:29:54 +07:00
BFlat d68b7f3990 Merge pull request #7670 from dotCooCoo/feat/open-pdf-pages-as-links
Import PDF: Import PDF pages as links opens each page linked to its file
2026-11-15 05:29:21 +07:00
BFlat dcd6e69e83 Merge pull request #7610 from dotCooCoo/fix/text-wrap-offset-refused
Text wrap: an out-of-range or non-number offset is refused
2026-11-15 05:29:05 +07:00
BFlat ccb62b0912 Merge pull request #7660 from dotCooCoo/fix/svg-use-chain-bounded
SVG import: refuse an SVG whose use copies and styles expand past the limits
2026-11-15 05:27:22 +07:00
BFlat 15ae607c63 Merge pull request #7667 from dotCooCoo/feat/links-sort-by-size
Links: Sort by Size in the panel menu lists the smallest file first
2026-11-15 05:27:12 +07:00
dotCooCoo aaae3fe378 Links: rows of images in stored brush art show their thumbnails
The panel collected the objects for its nested rows from the document
as it is between commands, where the art of the stored brushes is not
set, so rows whose owner is a brush found no object and drew a blank
thumbnail. When an id is not found otherwise, the panel now sets that
art on a copy of the document, as links.list does, and collects the
objects from it. A recheck of the files at the same revision keeps the
objects collected before.
2026-11-14 13:56:22 -08:00
dotCooCoo 7293cdf1fe Links: the panel menu's Copy Info copies the selected links' file names
The Links panel menu gets Copy Info, which runs the new UI command
links.copyInfo {ids?}: the file names of the selected rows (or of ids),
one per line in the order the panel shows them, go to the clipboard.
The item is off with no row selected. An id that is not an image or a
placed document, or a malformed ids, is an error and leaves the
clipboard as it was.
2026-11-14 13:51:22 -08:00
dotCooCoo 7a54b21579 Merge main into fix/issue-7275-rename 2026-11-14 13:51:13 -08:00
dotCooCoo 09c6d5dcf1 Fix #7275: a typed artboard name follows its artboard
The rename field in Export for Screens tracked the artboard by its index. If the
artboards changed order while a name was typed (a command from the control channel
or MCP), Enter renamed the artboard that had moved into that index. The field now
tracks the artboard by its id and by the document it was opened in. When that
artboard is deleted, or another document becomes active, while its name is typed,
the field closes, no artboard is renamed, and Escape closes the dialog again.
2026-11-14 13:50:32 -08:00
dotCooCoo aec1e2597d Merge main into feat/live-paint-bucket-multi-click 2026-11-14 13:49:49 -08:00
dotCooCoo 343d4a69e2 Merge main into fix/monitor-profile-after-blending 2026-11-14 13:48:09 -08:00
dotCooCoo b85e697ed9 Merge main into fix/prefs-reset-row 2026-11-14 13:47:25 -08:00
dotCooCoo a5868102ae Merge main into feat/radial-blur-center 2026-11-14 13:47:19 -08:00
dotCooCoo 4184ab0f93 Merge main into fix/hindi-label-senses 2026-11-14 13:42:46 -08:00
dotCooCoo 5831b1d23a Effects: Radial Blur turns about a Blur Center set in its dialog
Effect > Blur > Radial Blur... has a Blur Center box. A press or a drag
in the box sets the point the spin or zoom starts from, the arrow keys
move it 1% (10% with Shift), and Horizontal and Vertical fields take the
same position in percent. Screen readers get the box with both values.

- blur.radial takes centerX and centerY, from 0 to 1 across and down the
  object's bounds (0.5 each by default), so the center moves and scales
  with the object. An effect saved without them draws as before.
- effect.apply and effect.setParams refuse a value outside 0 to 1, or
  one that is not a number; a saved one draws at the nearest edge.
- The raster's margin is measured from the center, and the center stays
  in the object's own bounds when a Rasterize splits the stack.
- Params text, docs/mcp.md, the evidence line in
  docs/target-app-parity.md and a Blur Center row in every catalog.
2026-11-14 13:39:57 -08:00
dotCooCoo f4a5d65f6b Type: Glyphs panel menu draws the selected characters in an East Asian glyph form
With Show East Asian Options on, the Glyphs panel menu lists Traditional
Forms, Expert Forms, JIS 04, JIS 90, JIS 78 and JIS 83 Forms, Monospaced
Full-Width, Half-Width, Third-Width and Quarter-Width Forms, and Revert
To Default Forms. Each form draws the selected characters with the
font's OpenType feature for it (trad, expt, jp04, jp90, jp78, jp83,
fwid, hwid, twid or qwid). A form is checked when every selected
character has it and disabled when none of the faces that draw the
selected text, fallback faces included, has the feature.

The form is a new character attribute, glyphForm, one form at a time
(text.setFormat, text.setRangeStyle). It is saved only when set,
character styles carry it, and runs that differ only in their form
shape as one piece of text. SVG writes it in font-feature-settings;
PDF draws the glyphs from the layout.
2026-11-14 13:29:30 -08:00
dotCooCoo 056083e824 Merge main into fix/export-selection-doc-save-panel 2026-11-14 13:27:57 -08:00
dotCooCoo 9120268b7e Merge main into fix/tr-message-rows 2026-11-14 13:27:33 -08:00
dotCooCoo c5649c7529 Merge main into feat/variable-library-every-kind 2026-11-14 13:25:37 -08:00
dotCooCoo 75ec4fea77 Preferences: Reset Preferences shares the row of Export and Import
Export Preferences… and Import Preferences… had a row to themselves,
and Reset Preferences started the next row, left of Previous, Next,
Cancel and OK. Reset Preferences now follows Import Preferences… on the
first row, which wraps when it is wider than the dialog, and the row
below holds only the category buttons, Cancel and OK.

Tests check that the three buttons share a row in English, and that in
every language the dialog keeps its 760 pt content width with each
button inside it and above the OK row. Hindi, Gujarati, Georgian,
Japanese, Korean and Chinese are measured with fallback fonts, since
the tests do not load the craft-fonts faces or installed fonts those
languages are drawn with.
2026-11-14 13:24:53 -08:00
BFlat 9ddbf25bef Merge pull request #7553 from dotCooCoo/feat/da-complete-messages
i18n: Danish translates status and error messages
2026-11-15 04:23:09 +07:00
dotCooCoo e90c4e6fb2 Variables: Load and Save Variable Library hold visibility, image and graph variables
Load Variable Library defines each variable with the kind of its trait
(textcontent, visibility, fileref, graphdata; any other or none is the
unknown kind) and reads visibility values from true or false, image
values from a file's absolute path or file: URL, and graph values from
a data element of series names and rows. A document variable declared
with the same name and kind keeps its bindings. Save Variable Library
writes every kind in the same forms and is enabled with any variable.
Image values that aren't absolute paths and graph data past what a
graph holds are refused, so every saved file loads back.
2026-11-14 13:23:02 -08:00