Commit Graph
10785 Commits
Author SHA1 Message Date
Dylan M. Taylor 90ef99cb2c Simplify file import and export checks 2026-10-28 16:44:05 +00:00
Brandon ThomasandClaude Opus 5.5 68b68a30ac Release 0.18.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.18.0
2026-10-28 12:09:18 -04:00
dotCooCoo 3c0c010522 Merge main into feat/trace-keep-colors 2026-10-28 02:58:05 -07:00
dotCooCoo d0cb4e3cc7 Merge main into fix/issue-3748 2026-10-28 01:22:42 -07:00
dotCooCoo eb65e64882 Docs: name VECTORCRAFT_TITLEBAR=desktop and qualify the Linux app bar line 2026-10-28 01:07:48 -07:00
dotCooCoo 33ea3f5300 Merge main into fix/batch-override-export-for-screens-folder 2026-10-27 23:06:19 -07:00
dotCooCoo 8b1ff5f32b Merge main into feat/character-anti-aliasing-method 2026-10-27 22:12:22 -07:00
Dylan M. Taylor 62588fd080 Separate selection tool pointer phases and clarify imports 2026-10-28 05:03:13 +00:00
Dylan M. Taylor 7e44df55a9 Make renderer and SVG module dependencies explicit 2026-10-28 05:03:00 +00:00
Dylan M. Taylor 317d270823 Clarify PDF import stages and module dependencies 2026-10-28 05:02:46 +00:00
Dylan M. Taylor 89d538e40c Separate metafile record parsing into focused handlers 2026-10-28 05:02:26 +00:00
Dylan M. Taylor a9e82efcf0 Clarify EPS import and interpreter stages for strict Clippy 2026-10-28 04:52:26 +00:00
Dylan M. Taylor e1bc6b235c Clarify effects dependencies and split parameter checks 2026-10-28 04:52:07 +00:00
dotCooCoo f3104b154c Undo: the budget test allows unreadable memory; docs name the 32-bit cap
the_default_budget_follows_the_installed_memory_read compares the default
budget with the 1 GiB fallback when the installed memory can't be read,
as default_history_budget does, instead of failing. The reader itself is
still checked by vectorcraft-render's installed_memory_is_read.

The undo history line in docs/target-app-parity.md says the budget is at
most a quarter of the address space in a 32-bit build.
2026-10-27 20:47:51 -07:00
dotCooCoo 5d5b775e27 Merge main into feat/native-save-precision 2026-10-27 20:34:51 -07:00
dotCooCoo 8dcffb3bd3 Merge main into feat/visibility-variables-drive-locked-art 2026-10-27 20:19:07 -07:00
dotCooCoo 29e1e73940 Merge main into fix/linux-title-bar 2026-10-27 19:40:53 -07:00
dotCooCoo 86e1d1c2d1 Merge main into fix/undo-history-follows-memory 2026-10-27 18:56:49 -07:00
aiongg 9997ff0215 ci: run the printps tests under their moved path and fail when none run (#4305)
The module layout moved tests_printps to tests::printps, so the print
workflow's filter matched nothing and the step passed with 0 tests.
2026-10-27 21:09:33 -04:00
dotCooCoo 93677c26ec Shape Builder: a large selection merges on another thread
A Shape Builder click or drag over a selection of more than 128
segments merged on the UI thread, so the app stopped drawing and
answering until the merge was done. The tool now computes such a
merge on another thread from the map it built for the hover.
Meanwhile the canvas keeps drawing, the touched regions stay
highlighted and the pointer is the busy pointer. When the merge is
done, the tool runs shapeBuilder.merge with the gesture's params as
one undo step, and the command takes the computed shapes when it
would compute the same ones. The web build merges in the command, as
before.

A press while the map is still being built no longer waits for it on
the UI thread: the tool records the gesture and makes it once the map
is there.

Clicks, drags and the Shape Builder's arrow keys made during the
merge, and commands, menu items, the app's own dialogs, saves and tool
or document switches, run after it on the merged art; engine queries
that only read run at once. A change to the selected paths made
outside a command drops the merge. The headless host and ui.pointer
reply once the merge is applied.

The Shape Builder and the Live Paint Bucket keep their map of the
selection over a new revision of the document when the selected paths
and their outlines are unchanged, instead of building it again.
2026-10-27 17:26:38 -07:00
dotCooCoo d50ac14da2 Outline Stroke: a stroke whose geometry effects leave no path is outlined to nothing
A stroke-only path whose Offset Path or other geometry effect leaves no path
paints nothing on the canvas. Outline Stroke reported "no stroked paths
selected" for it, and Expand and Flatten Transparency kept the live stroke.
An empty group now takes the path's place.
2026-10-27 14:31:17 -07:00
aiongg 54c4f82638 Merge pull request #4295 from Jeremy8776/feat/install-scope-policy
Windows installation policy: VectorCraft
2026-10-27 17:16:50 -04:00
Jeremy ddf9845a27 test(installer): cover the compiled folder searches, resolver chains and wizard folder replay
The policy check now reads the compiled AppSearch and RegLocator rows for the
remembered-folder properties (registry root, key, value name and type for both
scopes) and runs the DIR, FOLDER, PATH and legacy exe actions in sequence order
against seeded values, so their precedence and the preset-folder guard cannot
regress. It also replays the wizard folder actions in sequence order (a
remembered folder beats the new-install default, a typed folder beats both) and
requires the machine restore action between the scope page and costing.
2026-10-27 21:13:29 +00:00
skylar taylor-barrick 0051b8af76 Merge pull request #3283 from el-j/fix/compound-path-pen-join
M2.1: allow Pen tool and path.join to continue, close, and join compound paths (#3274, #3276, #3379, #3380)
2026-10-27 15:13:15 -06:00
aiongg 28b5b9249c ci: use storytold/craft-common-actions at the merged installer-policy commit 2026-10-27 20:52:02 +00:00
dotCooCoo c273227cf8 Merge main into fix/outline-stroke-keeps-effects-on-outline 2026-10-27 13:51:06 -07:00
vangel76andClaude Sonnet 5.5 896e5c6e2b Format import re-exports
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:27:53 +01:00
vangel76andClaude Sonnet 5.5 bc19e29c61 Merge upstream/main into fix/2414-svg-classes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:26:05 +01:00
Jeremy 1440538ab6 fix(installer): check the exact architecture-specific machine folder
The pre-signing check matched any folder named Program Files, so it rejected
a valid MSI when Windows resolves Program Files elsewhere, accepted the 64-bit
root for an x86 package and accepted a different app name. Build the expected
folder from the package architecture's resolved root and the policy name.
2026-10-27 19:08:52 +00:00
skylar 9952b4950c Merge main (8622d0c7) into fix/explicit-join-ends-3283 2026-10-27 12:20:09 -06:00
skylar be49005d5f Merge main (e6d84c9d) into fix/explicit-join-ends-3283 2026-10-27 12:12:21 -06:00
Dylan M. Taylor 407c41fb1e docs: clarify crate lint placement 2026-10-27 18:03:32 +00:00
Dylan M. Taylor 0e2815629f refactor(text): split flow and ruby layout phases 2026-10-27 17:47:12 +00:00
Dylan M. Taylor daad363da4 docs: require workspace lint inheritance 2026-10-27 17:47:12 +00:00
Dylan M. Taylor dec8b90e3a refactor(text): clarify line adjustment inputs 2026-10-27 17:47:12 +00:00
Dylan M. Taylor efad21adb5 fix(xtask): validate workspace lint policy 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 542a5ae58c refactor(pathops): extract planar sweep graph builder 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 7b05e55a69 refactor(trace): separate graph construction and quantization 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 3d0188a5bc refactor(doc): name text model dependencies explicitly 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 010979864a refactor(doc): make live shape imports explicit 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 4accdf6b00 refactor(doc): clarify appearance and document dependencies 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 951127f585 refactor(affinity): replace model globs with explicit imports 2026-10-27 17:47:12 +00:00
Dylan M. Taylor 8b2439678b refactor(scriptcheck): simplify lexer imports and state 2026-10-27 17:47:12 +00:00
Dylan M. Taylor e985394460 chore(lints): apply strict workspace Clippy policy 2026-10-27 17:47:12 +00:00
aiongg 8622d0c71c Merge pull request #4359 from Silvertree2010/perf/export-speed
Make SVG export def ids linear instead of quadratic
2026-10-27 13:40:44 -04:00
skylar 1ffc04506c fix(engine): honor explicit ends when joining direct selections 2026-10-27 11:11:36 -06:00
skylar taylor-barrick e6d84c9d60 ci(deps): split Dependabot cargo group into lockstep families (#4223)
Group lockstep crate families into one PR each and batch only patch bumps of everything else, so a crate that needs code changes no longer blocks the rest. No ignore rules; security updates unchanged. open-pull-requests-limit 10.
2026-10-27 09:59:01 -06:00
Jeremy d5aeea632e fix(installer): resolve the wizard scope and folder correctly
Real msiexec runs (per-user and all-users, silent and wizard) found two defects
that the metadata fixtures cannot see:

- "Only for me" published ALLUSERS=2, so FindRelatedProducts treated the run as
  per-machine and skipped the existing per-user copy. An interactive upgrade
  left two registered products and uninstall left files behind. The page now
  leaves ALLUSERS unset for a per-user choice.
- Windows Installer resolves Program Files once, for the context it started in,
  so choosing "Everyone" in the wizard installed into the user profile with a
  machine-wide registration. The wizard now sets the new-install folder itself
  after the choice (Program Files, Program Files (x86) for 32-bit, or the
  per-user Programs folder). Silent installs are unchanged.

check-install-policy.ps1 now fails if either regresses.
2026-10-27 15:32:39 +00:00
aiongg 13d837363d Dropdowns: menus grow back after a search with no matches (#4337)
* chore(deps): pin craft-libs to 62bb0e1d (shared combo box)

* fix(ui-egui): dropdown menus grow back after their contents shrink

Every combo box is craft_ui::ComboBox, whose menu follows its contents'
height while it is open (egui#5225); clippy.toml bans egui::ComboBox.

The font family menu is a craft_ui::combo::Menu under its field, with the
search field and filters in its header and the family rows scrolling under
them, still laid out only in view. The menu keeps to the room on its side
of the field, so the list's minimum height and the popup's room are gone.

* fix(ui-egui): the shortcut import's target picker grows back after a search

Its search field, "No equivalent" and the row's choices are the header of
a craft_ui::combo::Menu, and Keyboard Shortcuts' entries scroll under
them. That was the last menu on the popup path that capped itself at the
room left, so that path and combo's `searchable` flag are gone.

* chore(deps): craft-libs 60d60d48 (dropdown fixes)

* chore(deps): craft-libs 4d7b82f7 (dropdown fixes)

* chore(deps): craft-libs 92d392cf (#387 merged)

* chore(xtask): pdf-deps expects craft-libs 92d392cf
2026-10-27 10:36:58 -04:00
el-j 464a0710b7 Merge remote-tracking branch 'upstream/main' into fix/compound-path-pen-join 2026-10-27 14:33:06 +01:00