Commit Graph
14703 Commits
Author SHA1 Message Date
BFlat 54d20b303c Merge pull request #7860 from dotCooCoo/feat/variables-data-set-box-rename
Variables: the Data Set box renames the current data set
2026-11-16 01:33:45 +07:00
BFlat 1add7b2643 Merge pull request #7858 from dotCooCoo/fix/symbol-controls-spacer-keeps-transform-room
Control bar: symbol instance controls keep the Transform link's room in a narrow bar
2026-11-16 01:33:37 +07:00
BFlat 0be78d03a3 Merge pull request #7885 from dotCooCoo/fix/radial-blur-center-clamped-field
Effects: Radial Blur's dialog sends a saved Blur Center outside the bounds at the edge
2026-11-16 01:33:27 +07:00
BFlat f4f0c49501 Merge pull request #7892 from dotCooCoo/fix/psd-cut-short-slices-warn
PSD: a slices resource cut short warns that the slices were left out
2026-11-16 01:33:18 +07:00
BFlat a1ec9d7e84 Merge pull request #7852 from dotCooCoo/feat/3d-panel-export-3d-object
3D and Materials: Export 3D Object adds the selection to Asset Export
2026-11-16 01:33:09 +07:00
BFlat b759c9e369 Merge pull request #7874 from dotCooCoo/fix/pdf-dont-include-profiles-removes-image-profiles
PDF export: a set Don't Include Profiles removes image color profiles
2026-11-16 01:33:00 +07:00
BFlat a156cf31f7 Merge pull request #7859 from dotCooCoo/fix/peek-stays-until-pointer-moves
Window: panels shown from the edge hide only after the pointer moves away or a hold ends
2026-11-16 01:32:51 +07:00
BFlat 57e573d914 Merge pull request #7880 from dotCooCoo/fix/drop-target-import-dialogs
Place: an import dialog a drop opened places in the document the file was dropped on
2026-11-16 01:32:43 +07:00
BFlat eaadc48d5a Merge pull request #7835 from dotCooCoo/feat/contextual-task-bar-smooth-free-transform
Contextual Task Bar: the Smooth tool shows its Fidelity and Tool Options
2026-11-16 01:32:29 +07:00
BFlat e1f8a15d61 Merge pull request #7855 from dotCooCoo/fix/live-paint-shift-triple-click-joined-faces
Live Paint: test that a Shift-triple-click keeps joined faces of the same fill
2026-11-16 01:32:15 +07:00
BFlat adc0b1ca98 Merge pull request #7876 from dotCooCoo/fix/mcp-queued-psd-import-options
Docs: queued PSD files ask for their import options with Show Import Options on
2026-11-16 01:32:02 +07:00
BFlat 351e9cfe1e Merge pull request #7856 from dotCooCoo/fix/pdf-knockout-overprint-isolation
PDF import: an isolated group with overprinting art inside stays isolated
2026-11-16 01:31:50 +07:00
BFlat a505c34ceb Merge pull request #7853 from dotCooCoo/fix/svg-blur-by-direction
SVG import: a blur that differs by direction is kept as its SVG filter
2026-11-16 01:31:37 +07:00
BFlat fa7e26aa11 Merge pull request #7882 from dotCooCoo/fix/variable-options-fills-unset-field
Variables: Variable Options fills the field left unset after the Variable changes
2026-11-16 01:31:28 +07:00
BFlat 20e577fe45 Merge pull request #7758 from dotCooCoo/feat/recolor-find-colors
Recolor Artwork: Find shows the selected rows' art and dims the rest
2026-11-16 01:31:19 +07:00
BFlat fe5787405e Merge pull request #7879 from dotCooCoo/fix/screens-artboard-name-keys
Export for Screens: artboard name fields close on a first-frame key and commit when another opens
2026-11-16 01:31:09 +07:00
BFlat f23d7f9d00 Merge pull request #7744 from ruchirguitar/feat/4936-check-spelling-dialog
feat(ui): implement Check Spelling modal dialog (#4936)
2026-11-16 01:31:00 +07:00
BFlat 5bd8acfce9 Merge pull request #7762 from dotCooCoo/feat/3d-classic-track-cube
3D (Classic): the track cube turns the object on the Rotation tab
2026-11-16 00:04:07 +07:00
BFlat a391dedfe5 Merge pull request #7875 from dotCooCoo/fix/live-paint-bucket-click-history
Live Paint: Bucket double-click and triple-click match the paint from before a drag, a view-tool press or a joined edge
2026-11-15 23:56:28 +07:00
BFlat cf34cf8ed0 Merge pull request #7829 from dotCooCoo/fix/shadow-validation-builds-its-shadow-geometry
3D: shadow validation casts from the solids it checks
2026-11-15 23:56:19 +07:00
dotCooCoo dc8054fb39 PSD: a slices resource cut short warns that the slices were left out
When image resource 1050 declared more bytes than the image resources
hold, the lookup stopped as if the file stored no slices, and Open and
Place brought the artwork in without the warning that the slices were
left out. The new psdread::resource tells a cut-short resource 1050
apart from one that is absent or that follows another block cut short,
and the slices reader passes that error on, so the warning names it.
Other resource readers keep their behavior.
2026-11-15 08:45:10 -08:00
dotCooCoo 527a2142d9 Effects: Radial Blur's dialog sends a saved Blur Center outside the bounds at the edge
A Radial Blur whose saved centerX or centerY lies outside 0 to 1 draws
at the nearest edge, and its dialog showed the center there. The dialog
kept the saved value in its fields, though, so OK without moving the
center sent that value, and effect.setParams refused it.

The Blur Center box now writes the center it shows, kept within 0 to 1,
into the dialog's fields on every frame, so OK stores the edge.
2026-11-15 08:35:38 -08:00
dotCooCoo 1df834568d Variables: Variable Options fills the field left unset after the Variable changes
Setting the Variable field through ui.dialog.set clears Name and Kind
until a frame fills them from the chosen variable. Setting Name or Kind
alone before that frame marked the fields as filled, so the other field
stayed null and the dialog showed "null" for Name or a blank Kind. OK
already read a null field as the variable's own value, so only the
displayed field was wrong.

A frame now fills every field when the chosen variable changes, and
after that fills only a field that is still null, keeping a field that
was set.
2026-11-15 08:31:19 -08:00
dotCooCoo 9382b0ab0a Place: an import dialog a drop opened places in the document the file was dropped on
A file dropped on a canvas that asks for import options (a layered PSD,
a PDF with several pages, a DXF drawing, a text file) kept only its
placement params in the dialog. The dialog's OK then placed the file in
whichever document was active at that moment, and placed it even when
the dropped-on document had been reverted since.

The drop now carries its target document and revert count in the place
params, as the place cursor's import options carry their token. Placing
checks them on the drop and again on the dialog's OK: the file goes to
the document it was dropped on, which becomes active again, and is not
placed when that document has been closed or reverted. The dialog then
stays open and shows the reason. The checks drop_files ran itself now
run in that one place.
2026-11-15 08:30:35 -08:00
dotCooCoo e837dae7b3 Export for Screens: artboard name fields close on a first-frame key and commit when another opens
Escape or Enter pressed in the first frame that draws an artboard's name
field was dropped: the field asked for focus and skipped its key checks,
while the dialog kept itself open for the field. The field now ends the
edit on either key in that frame too.

A double-click on an earlier artboard's name, with both clicks in one
frame, replaced the edit of a later artboard before that artboard's field
was drawn, so the name typed there was lost. The typed name now goes to
its artboard before the new field opens.

Follows #7695.
2026-11-15 08:30:11 -08:00
dotCooCoo d089df0ab5 Recolor Artwork: Find tries every lighter tint down to 1%
When a selected row listed the twenty tints from 25% through 6% of a color
of an unselected row, Find left that color undimmed although its 5% tint
was free. The search now tries each tint a percent apart from 25% down to
1% before leaving a color as it is.
2026-11-15 08:28:08 -08:00
dotCooCoo 93c7f4d88b Merge main into fix/pdf-dont-include-profiles-removes-image-profiles 2026-11-15 08:19:34 -08:00
dotCooCoo 77fa739f2f Merge main into fix/live-paint-shift-triple-click-joined-faces 2026-11-15 08:08:20 -08:00
dotCooCoo e5f5bbd836 Merge main into feat/contextual-task-bar-smooth-free-transform 2026-11-15 08:07:59 -08:00
dotCooCoo 3f2b97a428 Merge main into fix/peek-stays-until-pointer-moves 2026-11-15 08:07:03 -08:00
dotCooCoo f0a154a8ed Merge main into fix/pdf-knockout-overprint-isolation 2026-11-15 08:06:45 -08:00
dotCooCoo fc6196d91f Merge main into feat/variables-data-set-box-rename 2026-11-15 08:06:29 -08:00
dotCooCoo dfc70cc825 Merge main into fix/symbol-controls-spacer-keeps-transform-room 2026-11-15 08:06:16 -08:00
ruchirguitar 104a844da1 feat(ui): implement Check Spelling modal dialog (#4936)
# Conflicts:
#	docs/roadmap.md
2026-11-15 21:33:12 +05:30
dotCooCoo 89f1415af7 Merge main into fix/svg-blur-by-direction 2026-11-15 07:55:03 -08:00
dotCooCoo 06c4efc9b6 Merge main into feat/3d-panel-export-3d-object 2026-11-15 07:54:51 -08:00
BFlat bd67a010f6 Merge pull request #7827 from dotCooCoo/feat/ai-export-writes-kinsoku-kinsoku-shori-type
.ai export: paragraphs keep Kinsoku, Kinsoku Shori Type, Burasagari and Bunri-Kinshi
2026-11-15 22:45:05 +07:00
BFlat 9c2f6ec53d Merge pull request #7838 from dotCooCoo/feat/ai-save-nested-envelope-editable
.ai import: an envelope straight in another envelope's contents block opens live inside it
2026-11-15 22:44:56 +07:00
BFlat 7ba0d2fd08 Merge pull request #7841 from MMexicann/patch-1
docs(G2): describe the shipped Effect Gallery preview
2026-11-15 22:44:48 +07:00
BFlat d5b8d51d64 Merge pull request #7843 from MMexicann/patch-2
docs(G6): complete the control method reference
2026-11-15 22:44:40 +07:00
dotCooCoo dd57562d46 Merge main into feat/3d-classic-track-cube 2026-11-15 07:42:24 -08:00
dotCooCoo 6437627050 Merge main into fix/shadow-validation-builds-its-shadow-geometry 2026-11-15 07:41:58 -08:00
dotCooCoo 80baae91cd 3D (Classic): the panel's and a dialog's track cubes each keep their own focus and drag
With the 3D and Materials panel and a classic 3D dialog both showing a
track cube, the two cubes shared one widget id, so the keyboard focus of
one moved the other, and a drag on one cube was read by the other: Escape
there put the first cube's settings into it, and its button-up check ended
the gesture before the cube being dragged saw the release. Each cube now
has its own id, keyed by its dialog or panel, and only the cube a drag
started on follows, restores or ends it.
2026-11-15 07:38:56 -08:00
BFlat 8803a9e31a Merge pull request #7857 from storytold/fix/ka-duplicate-rows
i18n: Georgian keeps one row of each duplicated message (fix main)
2026-11-15 22:38:46 +07:00
dotCooCoo ec4a1ac25d PDF export: a set Don't Include Profiles removes image color profiles
When Profile inclusion is set to Don't Include Profiles (`profiles:
"none"`), gray, RGB and CMYK images are written in device color spaces
without their ICC profiles, and a JPEG that is kept as is loses its
APP2 ICC_PROFILE segments. PDF/A-2b, PDF/X-3 and PDF/X-4 keep tagging
their images.

Leaving the setting out keeps the earlier output. `profiles` now
serializes as null when not set, `"default"` clears a preset's value,
and Save PDF > Output lists Default first. Presets and stored settings
saved earlier hold `"profiles": "none"`, so exports from them now drop
image profiles.
2026-11-15 07:27:08 -08:00
dotCooCoo 8e602cb980 Recolor Artwork: Find dims a row color given as a value, not a string
A row of the rows that aren't selected whose current color was given as a
color value (`[r,g,b]` or a CMYK, gray or Lab object) was left undimmed,
because only string entries went into the dimming map. Such a color now
dims under its color key, the form `recolor.apply` matches it by.
2026-11-15 07:21:00 -08:00
dotCooCoo d86c9871c6 Live Paint: a triple-click after a release across an edge matches the fill from before it
When a click's press lands in one face and its release in the next, the
drag fills both. The bucket now notes the fill every face the drag
crosses had before the press, the release included, so a double-click
or triple-click that follows on such a face compares that fill instead
of the one the first click gave it. This also holds when the release of
the last click crosses into the clicked face.

When the first click makes the Live Paint group, or merges the selection
into a selected group, the crossed face counts with the fill it was made
with: a kept face's paint from the merged group (an unplaced gradient
fixed to its fit), else the fill Make gives it, the topmost fill that
draws of the front-most source path over it that has one. A selected
group's edges no longer count as source paths.

A double-click whose two clicks land on two joined edges now paints the
edges joined through the other edge its clicks painted:
livePaint.strokeEdge takes `through`, edge ids that the join counts as
drawing with `match`, and the tool passes that edge. When the second
press lands on the next edge and is released back on the first, the
double-click matches the first edge's stroke paint from before the
first click.

A press that the view tools take (held Space, the middle button), or
that holds Cmd/Ctrl and goes to the lent selection tool, now counts as
a press that paints nothing, so the clicks around it are not taken for
one triple-click's: the session tells the tool through the new
Tool::press_elsewhere.

The tool doc, docs/mcp.md and the progress-doc line now say that a click
records an undo step only when it changes a paint, and that a
triple-click paints the faces that have the clicked face's fill (and the
edges that draw with the clicked edge's stroke paint) with the bucket's
paint.

Follows #7291.
2026-11-15 07:19:56 -08:00
dotCooCoo 216e14a6a7 Recolor Artwork: Find keeps the plain tint when only an exact key shares its hex
The tint Find gives a row that isn't selected was skipped when its hex
matched the hex of a selected row's exact key, though `recolor.apply`
matches an exact key only by its key. The lighter tint was taken, and when
every candidate collided the color was left undimmed. Only a "#rrggbb"
entry is now compared by hex.
2026-11-15 07:06:15 -08:00
dotCooCoo d1213a923e Merge branch 'feat/3d-classic-track-cube' into feat/3d-classic-track-cube 2026-11-15 06:56:42 -08:00
dotCooCoo c4754df6df Window: panels shown from the edge hide only after the pointer moves away or a hold ends
The hide timer started on every frame with no pointer over the window, so
panels shown by window.panels.peek hid 0.3 s later while the pointer had not
moved. It now starts when the pointer moves, is released or leaves the window,
and a pointer entering the window counts as a move on its first frame.

When a press, a dialog, a popup or a flyout stops holding the panels open
with the pointer away from them, the timer starts as well, so closing a
flyout with Escape hides them without the pointer moving.
2026-11-15 06:52:18 -08:00