Commit Graph
5637 Commits
Author SHA1 Message Date
dotCooCoo f37b8f3c83 Merge main into fix/tr-message-rows 2026-11-14 05:56:57 -08:00
dotCooCoo aca4f3dcd1 Merge main into fix/ja-message-rows 2026-11-14 05:56:44 -08:00
dotCooCoo e599fcb738 Docs: Hindi pages state the untranslated report's Hindi gaps
The Hindi localization page said the untranslated report has no Hindi
section, and the language table said Hindi has no gaps in it. On main
f793044f83 the report lists 608 missing Hindi rows (28 menu strings,
30 tl! strings, 11 undo labels and 539 messages) and 68 more that every
checked language lacks (10 menu strings, 2 undo labels and 56 messages).
Both pages now give these counts, and the table's remaining work for
Hindi includes the reported rows.
2026-11-14 05:51:34 -08:00
dotCooCoo d02bef929a Merge main into fix/hu-message-rows 2026-11-14 05:50:45 -08:00
dotCooCoo a3d468b226 Docs: the localization page lists Indonesian once and marks Bosnian by what it translates
Indonesian had a row in both tables with different counts. Keep the row
in the key-language table and give it the counts on main at a47d7eec91.

Bosnian was described as having complete messages, but `bs` is not in
COMPLETE_MESSAGES. Its row now gives its counts and the menu, `tl!`
and undo gaps the untranslated report lists, and the measurement note
names Bosnian with the other languages outside COMPLETE_MESSAGES.
2026-11-14 05:45:14 -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
dotCooCoo b718b756cb Merge main into fix/paste-copied-file-size-limit 2026-11-14 05:39:15 -08:00
BFlat 9f91f96f18 Merge pull request #7286 from dotCooCoo/fix/actions-load-reports-unknown-commands
Actions: Load Actions reports steps with unknown command ids
2026-11-14 20:39:02 +07:00
BFlat 8d1aa857d5 Merge pull request #7276 from dotCooCoo/fix/issue-6784
Contextual Task Bar: Smooth opens the Smooth slider with Direct Selection
2026-11-14 20:38:54 +07:00
BFlat 94237e00a9 Merge pull request #7268 from dotCooCoo/fix/ai-warped-image-pieces-cropped
.ai export: the pieces of a warped image write only the pixels they show
2026-11-14 20:38:46 +07:00
dotCooCoo 1304014e65 Merge main into fix/text-wrap-offset-refused 2026-11-14 05:38:38 -08:00
BFlat 035d22b3e2 Merge pull request #7476 from dotCooCoo/fix/svg-clip-path-effects
Effects: a clipping path's geometry effects shape the clip on the canvas
2026-11-14 20:38:37 +07:00
dotCooCoo e464b612cf Paste: a copied file over 64 MiB is skipped before it is read
Paste read a file copied in a file manager whole with std::fs::read,
with no size limit. It now checks the opened file's size against
MAX_BYTES (64 MiB, the limit the Wayland clipboard reads already use,
now shared) before reading its first bytes, and reads the rest with a
bounded reader, so a file that grows after the check is read to at
most one byte past the limit and skipped. A skipped file lets the next
copied file that is art paste, as an unreadable one does.
2026-11-14 05:38:36 -08:00
BFlat 678a64259d Merge pull request #7575 from dotCooCoo/fix/recovery-write-keeps-newer-status
Recovery: a recovery copy that finishes later keeps a newer status line
2026-11-14 20:38:29 +07:00
BFlat 31f6a9f15e Merge pull request #7367 from dotCooCoo/fix/ai-calligraphic-samples
.ai import: Calligraphic paths with pen samples keep their drawn look
2026-11-14 20:38:22 +07:00
BFlat 4bcb0026da Merge pull request #7569 from dotCooCoo/perf/3d-validation-builds-once
3D: effect validation builds each Extrude and Inflate solid once
2026-11-14 20:38:09 +07: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 e5153bd625 Merge pull request #7574 from dotCooCoo/fix/issue-7411
Fix #7411: a selection grabbed by an anchor snaps it onto other paths
2026-11-14 20:37:33 +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 a967f28548 Merge pull request #7421 from dotCooCoo/fix/art-brush-proportional-weight
Brushes: Scale Proportionately art grows with the stroke weight
2026-11-14 20:37:17 +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
BFlat 50ac301797 Merge pull request #7416 from dotCooCoo/fix/plugin-unlinked-stop-plates
Plug-ins: unlinking a gradient stop's spot swatch also clears its plates
2026-11-14 20:37:02 +07:00
BFlat a1d320917e Merge pull request #7438 from dotCooCoo/feat/ai-import-kinsoku-settings
.ai import: reads Kinsoku, Kinsoku Shori Type, Burasagari and Bunri-Kinshi
2026-11-14 20:36:54 +07:00
BFlat f793044f83 Merge pull request #7587 from dotCooCoo/fix/open-dimension-labels-own-fonts
Dimensions: an opened file redraws its labels in its own composite fonts
2026-11-14 20:36:46 +07:00
BFlat f8faab6597 Merge pull request #7429 from dotCooCoo/fix/live-shape-replay-negative-radius
Live Shapes: saved object.setLiveShape steps with a negative radius or out-of-range sides replay again
2026-11-14 20:36:38 +07:00
BFlat 48b947692b Merge pull request #7576 from dotCooCoo/fix/svg-path-type-before-start
SVG import: type on a closed path wraps around past the path's start
2026-11-14 20:35:12 +07:00
BFlat 9aa328047a Merge pull request #7420 from dotCooCoo/fix/dxf-ellipse-doc-line
Docs: DXF export of a non-circular ellipse is listed as a native ELLIPSE
2026-11-14 20:35:00 +07:00
BFlat d2b4b5f956 Merge pull request #7410 from dotCooCoo/fix/de-missing-message-rows
i18n: German translates the messages no catalog had a row for
2026-11-14 20:34:51 +07:00
BFlat bbb5a38100 Merge pull request #7362 from dotCooCoo/fix/nl-message-rows
i18n: Dutch translates 1,813 of the status and error messages the untranslated report lists
2026-11-14 20:34:40 +07:00
BFlat 8deaeda1f5 Merge pull request #7516 from ruchirguitar/feat/symbol-weather-icons
Symbols: built-in Weather Icons symbol library
2026-11-14 20:34:29 +07:00
dotCooCoo f00ddcbaa9 Effects: each copy of a Transform effect draws the raster effects listed before it
A path's Drop Shadow, glow, blur, Feather or pixel filter listed before a
Transform effect that makes copies was drawn once under all the copies, at
the object's own distances. Each copy now carries those raster effects,
scaled by the copy's mean scale, with a Drop Shadow's offset turned,
reflected and scaled with the copy. Raster effects listed after the
Transform effect still paint once around all the copies. Copies that stop
at the effect budget keep their effects, and a Transform effect without
copies draws as before.

The canvas, the object's bounds, export, baking and Expand Appearance use
the same art. Type, images, symbol instances, groups, a fill's or stroke's
own copying Transform effect, and paths with Rasterize or an SVG filter
before the copying effect keep one set of raster effects.
2026-11-14 05:32:43 -08:00
dotCooCoo 5fba145353 Merge main into fix/mesh-point-color-panel 2026-11-14 05:29:50 -08:00
dotCooCoo b0961a29af Merge main into fix/single-line-composer-remeasure 2026-11-14 05:29:48 -08:00
dotCooCoo f97998e64a Docs: the menu-stub list names only menus that are not wired up
The From the code bullet in docs/target-app-parity.md listed SVG Filters,
Graph › Column, Live Paint Gap Options, Optical Margin Alignment, the
global and video rulers, Window › Arrange, SVG Interactivity, Other
Script… and Start Global Edit as menu stubs, and repeated half the list
on two broken lines. All of those are bound to commands or panels now.
The list names the three menu items that are still todo entries:
Effect › 3D and Materials › Materials, Edit › Spelling › Check Spelling
and Help › VectorCraft Help. The dated counts are unchanged.
2026-11-14 05:29:13 -08:00
dotCooCoo 9f253e0fb7 Merge main into fix/flat-logo-gray-between-black-and-white 2026-11-14 05:28:44 -08:00
dotCooCoo 87900ab512 Export: a page of the art's bounds is measured on the art the file draws
With useArtboards off, PDF, .ai and HP-GL exports sized their one page
by every visible object, including art they then leave out. A PDF
without includeNonPrinting or createLayers drops non-printing layers, so
art on such a layer made the page larger than what was drawn, and a
document whose only visible art did not print came out as a blank page.
An HP-GL plot draws nothing of non-printing layers, objects at 0%
opacity, placed images, gradient meshes whose every point is at 0%
opacity and paths that paint nothing, and such art moved the plot's
origin.

The page is now measured with that art hidden, and a document with no
other visible art is refused. A .ai file is measured with the PDF
options it is written with, so it keeps non-printing layers unless both
createLayers and includeNonPrinting are off. The PDF writer's own
non-printing filter uses the same helper, and the HP-GL writer's
plots_nothing says which objects a plot draws nothing of. Export As
measures an HP-GL plot of the art's bounds the same way, so a document
with nothing the plot draws stays in the dialog before the save panel.
2026-11-14 05:21:54 -08:00
dotCooCoo 1ec44403c1 SVG import: reading the links of linked SVG files stops at the read and text limits
Reading an SVG file that an <image> links to, and gathering its own
links, counts toward the 1,024 reads and 512 MB of text, wherever the
file is linked from. Inside a linked SVG file, every file read for its
links, raster or SVG, also counts toward the 512 MB before it is
decoded, and once either limit is passed no file is read there: the
image is left out with a warning. An SVG file the imported SVG links to
is still shown past the limits, but the files its own links name are
not read, with the same warning. Rasters the imported SVG links to are
read as before.

Every SVG file read is kept by its file, wherever it was read, so
another href to it (another spelling, or the same file from another SVG
file) does not read it again, past the limits too. An SVG file whose art
depends on where it is shown (too deep there for its links to be read,
or with a link that leads back) is not kept, so a link to it from a
shallower place shows the rasters it links to.
2026-11-14 05:20:31 -08:00
dotCooCoo 7dbbd8334f Merge main into fix/svg-nested-image-links-read 2026-11-14 05:20:28 -08:00
dotCooCoo 2c897e62f5 Merge main into fix/trace-flat-16-levels 2026-11-14 05:19:16 -08:00
dotCooCoo 49ed212582 Merge main into fix/text-zoom-marquee-space-moves 2026-11-14 05:15:49 -08:00
dotCooCoo 36c62e14d2 Panels: drag autoscroll scrolls the right way in a short list
In a list view shorter than 56 pt the 28 pt top and bottom bands of the
drag autoscroll overlapped, so their speeds partly canceled: in a 40 pt
view a pointer 19 pt down scrolled at 20 pt/s instead of 74. In a view
shorter than 28 pt a pointer just outside one edge scrolled toward the
other. Each band is now at most half the view, so the pointer is in one
band at most. Views of 56 pt or more keep their bands and speeds.

The band and speed math moves into drag_scroll_speed, with a test of
short, tall and invalid view heights.
2026-11-14 05:14:11 -08:00
dotCooCoo b562fc1c54 Text wrap: an out-of-range or non-number offset is refused
object.textWrap.make and object.textWrap.options kept an offset outside
-1000 to 1000 pt at the nearer end of the range, and read an offset that
is not a number, or an invert that is not true or false, as if it had
been left out. Both commands now return an error for such a value and
leave the wrap options and the undo history unchanged. An omitted or
null value still takes the default (6 pt and no invert for Make, the
current options for Text Wrap Options), and Text Wrap Options with only
null values reads the current options. A stored offset outside the range
is kept when only Invert Wrap changes.

The MCP text_wrap tool checks offset, invert and release before it
changes the selection, so a refused call changes nothing, and a release
that is not true or false is an error instead of making a wrap.
2026-11-14 05:12:58 -08:00
dotCooCoo 7aad123a00 Merge main into fix/invert-wrap-offset-band-exact 2026-11-14 05:11:42 -08:00
dotCooCoo b3c2fdab21 Merge main into fix/svg-raster-keeps-resolution 2026-11-14 05:11:34 -08:00
dotCooCoo 01359bc753 Image Trace: a trace made off the UI thread applies only in its own document
A trace handed in for imageTrace.make or imageTrace.makeAndExpand was
matched by its object, image, pixels and settings alone, so a trace made
in one document could stand in for the command in another open document
with the same image and settings. The trace's inputs now carry the
document's uid: TraceRun::current is false in any other document, and the
commands there drop the trace handed in and trace their own image, as one
undo step.

Test: a_trace_run_applies_only_in_its_own_document.
2026-11-14 05:11:34 -08:00
dotCooCoo 7c4fc5ea62 Merge main into docs/mcp-own-folders-arrowheads 2026-11-14 05:11:34 -08:00
dotCooCoo 0c1858f91e Merge main into fix/inflate-lazy-puffs 2026-11-14 05:11:29 -08:00
dotCooCoo dbb145a88b Merge main into fix/type-no-op-undo-more 2026-11-14 05:11:18 -08:00