Commit Graph
5543 Commits
Author SHA1 Message Date
dotCooCoo aec1e2597d Merge main into feat/live-paint-bucket-multi-click 2026-11-14 13:49:49 -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
BFlat bb59d1c711 Merge pull request #7657 from dotCooCoo/feat/asset-export-panel-menu-options
Asset Export: Create Sub-folders, Open Location after Export and Format Settings in the panel menu
2026-11-15 04:23:01 +07:00
BFlat a901c024e5 Merge pull request #7387 from dotCooCoo/feat/arrange-nest
Cutting Tools: Nest Shapes packs the selected objects onto a sheet or roll
2026-11-15 04:22:37 +07:00
BFlat 20ae675b9b Merge pull request #7622 from dotCooCoo/fix/graph-label-restyle-keeps-plot
Graphs: restyling the labels leaves the plot where it is at the next redraw
2026-11-15 04:22:27 +07:00
BFlat 88dd37d2d9 Merge pull request #7527 from dotCooCoo/fix/3d-masked-cap-graphic-once
3D: a gradient fill with transparent stops and its stroke draw their graphic once
2026-11-15 04:22:18 +07:00
BFlat 88b83a8689 Merge pull request #7546 from dotCooCoo/fix/svg-raster-keeps-resolution
SVG import: a raster stored again as PNG keeps its resolution
2026-11-15 04:22:10 +07:00
dotCooCoo 0e6e7df695 Merge main into feat/live-paint-bucket-multi-click 2026-11-14 13:02:52 -08:00
dotCooCoo c0d9c76ecd Live Paint: a triple-click matches what its double-click reached
When the third click of a triple-click landed on a face or edge that
the double-click before it had painted (a neighbor the flood or the edge
walk reached), the triple-click sent that part's new paint as match,
since only the clicked part's paint was recorded. The bucket now records
the fill or drawn stroke paint of every other part a double-click
reaches, and a triple-click on one of them matches the paint it had
before the double-click. docs/mcp.md says so.
2026-11-14 12:32:02 -08:00
dotCooCoo c10b1b3933 Merge main into feat/arrange-nest 2026-11-14 12:28:19 -08:00
BFlat b0470e9b53 Merge pull request #7450 from dotCooCoo/fix/learn-panel-commands
Learn: the tabs, skill and tutorial rows and Back run commands
2026-11-15 03:23:07 +07:00
BFlat 2e3fc0b59a Merge pull request #7616 from dotCooCoo/fix/ai-save-outlined-wrap-object
.ai save: type written as outlines keeps wrapping by its bounds
2026-11-15 03:22:56 +07:00
BFlat 1a8614f00c Merge pull request #7550 from dotCooCoo/fix/graph-wedge-legend-black-kept
Graphs: a black fill set on wedge legend labels stays black on dark wedges
2026-11-15 03:22:47 +07:00
BFlat ddfe6fda67 Merge pull request #7560 from dotCooCoo/fix/type-no-op-undo-more
Undo: no step when Ruby, Character or another type command changes nothing
2026-11-15 03:22:37 +07:00
BFlat 85ce363b93 Merge pull request #7548 from dotCooCoo/fix/objects-on-path-widgets-flatten-once
Objects on Path: the widgets flatten the group's path once per lookup
2026-11-15 03:22:27 +07:00
BFlat 0a1445a0d9 Merge pull request #7623 from dotCooCoo/fix/artboard-history-index-wrong-type
MCP: a malformed artboard or history index is reported as not a whole number
2026-11-15 03:22:19 +07:00
BFlat bd214c124d Merge pull request #7640 from dotCooCoo/feat/canvas-character-alternates
Type: a selected character's alternate glyphs show beside it on the canvas
2026-11-15 03:22:11 +07:00
BFlat 7389d6669d Merge pull request #7396 from dotCooCoo/feat/smooth-keeps-corners
Smooth tool: keep corners where the path turns by more than 57.5°
2026-11-15 03:22:01 +07:00
BFlat 2c6c88ebc5 Merge pull request #7604 from dotCooCoo/fix/pdf-art-bounds-printing-layers
Export: a page of the art's bounds is measured on the art the file draws
2026-11-15 03:21:52 +07:00
BFlat 6970c4efec Merge pull request #7609 from dotCooCoo/fix/transform-copies-raster-effects
Effects: each copy of a Transform effect draws the raster effects listed before it
2026-11-15 03:21:43 +07:00
BFlat 6ee761e327 Merge pull request #7639 from dotCooCoo/feat/global-edit-rotated-copies
Global Edit: rotated copies are matched and take each edit turned by their angle
2026-11-15 03:21:03 +07:00
BFlat bac95f9902 Merge pull request #7631 from dotCooCoo/fix/composite-font-lent-document-only
Type: a document draws only its own composite font definitions
2026-11-15 03:20:55 +07:00
BFlat 3a76cd89ac Merge pull request #7620 from dotCooCoo/fix/live-paint-info-every-row
MCP: livePaint.info lists every appearance row of a face or edge
2026-11-15 03:20:38 +07:00
BFlat 2d9793d6f1 Merge pull request #7637 from dotCooCoo/perf/remove-breaks-thread-frames-once
Remove Breaks: a partly selected story's frames are gone through once
2026-11-15 03:20:29 +07:00
dotCooCoo f46e0ad809 Live Paint: the bucket paints the stroke an edge shows
livePaint.strokeEdge wrote the paint and weight into an edge's topmost
stroke even when that stroke was hidden. An edge whose hidden top stroke
sat over a drawn one kept drawing its old paint, and since the edge
scopes now match the paint an edge draws, a samePaint or connected
stroke reached such edges and changed nothing on screen. The command now
paints the topmost stroke that is shown, and adds a stroke above the
others when every stroke is hidden or there is none. The "nothing
changes" check reads the same stroke.

The doc comments of the scopes and of the press record describe the
drawn stroke paint, and the engine names Paint through its parent module
instead of in the import list. Live Paint Selection's comment on a
triple-click states that the tool takes no action on it.

New tests cover the edge the tool matches on a multi-click over a hidden
or fully transparent edge, the connected edge scope through transparent
and hidden edges, and painting the shown stroke.
2026-11-14 12:20:03 -08:00
BFlat 2eb5894748 Merge pull request #7619 from dotCooCoo/fix/learn-reset-progress-doc
Docs: only learn.markStep checks a tutorial id, not learn.resetProgress
2026-11-15 03:20:03 +07:00
BFlat 013ee019e3 Merge pull request #7607 from dotCooCoo/fix/paste-copied-file-size-limit
Paste: a copied file over 64 MiB is skipped before it is read
2026-11-15 03:19:47 +07:00
BFlat c6c06b2c68 Merge pull request #7442 from dotCooCoo/fix/eps-ryumin-light-h
EPS import: Ryumin-Light-H and GothicBBB-Medium-V read as Japanese type without their CIDFont
2026-11-15 03:19:37 +07:00
BFlat a33a296ccc Merge pull request #7530 from dotCooCoo/fix/vi-missing-message-rows
i18n: Vietnamese translates 115 status and error messages it lacked
2026-11-15 03:19:06 +07:00
BFlat 8b351d475b Merge pull request #7613 from dotCooCoo/docs/localization-indonesian-bosnian
Docs: the localization page lists Indonesian once and marks Bosnian by what it translates
2026-11-15 03:18:47 +07:00
dotCooCoo b7748581d5 Merge main into feat/asset-export-panel-menu-options 2026-11-14 12:12:44 -08:00
dotCooCoo df257c2d53 Merge main into fix/svg-raster-keeps-resolution 2026-11-14 12:12:06 -08:00
dotCooCoo a19646b2f3 Asset Export: Create Sub-folders, Open Location after Export and Format Settings in the panel menu
Create Sub-folders and Open Location after Export are check items that set
the settings the panel shares with Export for Screens, and the panel's
Export follows them. Create Sub-folders is checked as the dialog opens on
it: on for a document without export settings, and on for remembered
folders per row, format or item, which the panel's Export now uses too.
Format Settings... opens Export for Screens on the Assets tab showing the
first row's format settings.

assets.settings.set takes openLocation (kept in document.exportSettings,
not in presets), refuses a subfolders or openLocation value that is not
true, false or null, and with subfolders false given alone also ends a
remembered folder per format or item. Export for Screens reads remembered
empty folders as none, as an export does.
2026-11-14 11:26:20 -08:00
dotCooCoo 7ef603db40 Live Paint: bucket scopes follow the stroke an edge draws
The Live Paint Bucket's connected and samePaint scopes kept their own
copies of the face flood and the edge walk. They read an edge's stored
stroke paint, so an edge that is fully transparent or whose stroke is
hidden stopped a face flood and matched as stroked. The face flood also
required outlines within 0.0001 pt of an edge, which a curved face that
the planar map refits can miss.

The engine now calls the shared flood_faces and connected_edges that
Live Paint Selection uses (#7342), and compares edges by lp_stroke_paint,
the paint of the topmost stroke that draws. The tool records that same
paint as the match for a double-click or triple-click on an edge. The
params text and docs/mcp.md describe the drawn stroke paint.
2026-11-14 11:24:56 -08:00
datatimp 8d3f8d1ce5 Merge branch 'main' of https://github.com/storytold/vectorcraft into fix/7340-guide-row-clicks 2026-11-14 13:36:34 -05:00
dotCooCoo 1c4cc88e90 Merge main into feat/live-paint-bucket-multi-click
# Conflicts:
#	crates/tools/src/builder/live_paint.rs
2026-11-14 10:19:24 -08:00
BFlat 0adbdce6cb Merge pull request #7621 from ruchirguitar/feat/symbols-item-context-menu 2026-11-15 01:14:51 +07:00
dotCooCoo 7cbbf97b74 Merge main into fix/pdf-art-bounds-printing-layers 2026-11-14 10:03:22 -08:00
dotCooCoo 7ff186bd31 Type: a selected character's alternate glyphs show beside it on the canvas
With a Type tool and exactly one character selected, the canvas shows up
to five of that character's alternate glyphs in a row beside it. A click
runs the command the Glyphs panel's double-click runs, as one undo step;
an arrow at the end opens the Glyphs panel on Alternates for Current
Selection when the character has more. Preferences > Type > Show
Character Alternates (showCharacterAlternates, on by default) turns the
row off.
2026-11-14 10:00:04 -08:00
dotCooCoo 951f689e8f Export: an HP-GL plot of the art's bounds measures images by the art their effects add
An image or a gradient mesh with a visible Crop Marks effect, or with a
Vector Halftone effect that makes dots, is measured in a plot of the art's
bounds. A halftone that makes no dots, such as one past the effect's cell
limit, leaves the image out as before.
2026-11-14 09:59:27 -08:00
dotCooCoo 7e390fe079 Merge main into fix/3d-masked-cap-graphic-once 2026-11-14 09:55:12 -08:00
dotCooCoo e1da80a2c8 Merge main into fix/learn-panel-commands 2026-11-14 09:52:25 -08:00
dotCooCoo 283c13dfd8 Merge main into fix/type-no-op-undo-more 2026-11-14 09:49:48 -08:00
dotCooCoo 769d14ee7a Merge main into feat/arrange-nest 2026-11-14 09:47:03 -08:00
dotCooCoo 59f715ca00 Merge main into feat/da-complete-messages 2026-11-14 09:46:18 -08:00
dotCooCoo f43d16268a Global Edit: rotated copies are matched and take each edit turned by their angle
Select > Start Global Edit now also takes rotated copies of the selected
object or group, in the highlights before the start, in the Global Edit
Options' Results count and in the started edit. An edit reaches each copy
turned by that copy's angle, so an anchor moved to the right on the
selected object moves downward on a copy turned a quarter turn clockwise.

The copy's angle is the one that lays the selected object's anchors and
handles on the copy's in order (a least-squares fit in the unit box),
and the copy is the same shape when each point then lies within a
millionth of the larger side of the copy's box. Reflected copies and
copies stretched along one direction stay unmatched. With Size, a rotated
copy matches when it is the object rotated without scaling. The no-match
message now names only reflected copies, in every catalog that has it.

Docs: docs/mcp.md, docs/gaps.md, docs/ui-parity.md and the evidence list
in docs/target-app-parity.md.
2026-11-14 09:43:51 -08:00
dotCooCoo c51d14262f Merge main into fix/composite-font-lent-document-only 2026-11-14 09:42:51 -08:00
dotCooCoo 3674865d62 Merge main into feat/smooth-keeps-corners 2026-11-14 09:42:14 -08:00
BFlat 78131ae11c Merge pull request #7419 from dotCooCoo/fix/type-dialogs-story-wide
Type: Justification, OpenType, text styles and Convert to Text change every frame of a selected story
2026-11-15 00:42:04 +07:00
dotCooCoo 0bd4a1c331 Merge main into fix/artboard-history-index-wrong-type 2026-11-14 09:41:57 -08:00