Commit Graph
1931 Commits
Author SHA1 Message Date
dotCooCoo aea9296fa2 Character and Paragraph Styles: a style made by the New style dialog or the panel menu is highlighted
Squashed from #4713 onto main.
2026-10-30 23:45:42 +07:00
bflatastic f4c245286e Add-ons: Color Effects — live Vector Halftone effect
Effect › Color Effects › Vector Halftone… (addon.color.halftone, also in
Object › Plug-ins › Color Effects) draws its object as the halftone dots
Object › Vector Halftone makes, live: mono (one dot colour, or each dot in
the art's colour under it) or CMYK screens, the five dot shapes,
frequency, angle, invert and clip to the art's outline.

- The screens, dots and caps move to vectorcraft_effects::addons::halftone,
  shared by the command (its behaviour and tests unchanged) and the effect.
- The renderer samples the art (vectorcraft_render::addons::halftone) and
  keeps the dots by the object's content and what it reads from the
  document, so unchanged art isn't sampled again; past 100000 cells per
  screen the object draws as it is.
- Expand Appearance turns the object into its dots, and the SVG, PDF, EPS
  and AI exporters write them as paths.
- Its dialog reuses the command's fields, without Keep Original.

Deferred: stochastic and radial patterns, a dot-gain curve, per-screen
separation settings, type or symbols as dots.
2026-10-30 22:13:33 +07:00
dotCooCoo 3b724a0a79 Text styles: Select All Unused highlights the unused styles, and Delete deletes them all
Squashed from #4486 onto main.
2026-10-30 21:16:33 +07:00
bflatastic 27ed249b1f Add-ons: Parametric Shape Tool — re-editable stars, polygons, rings, arrows, gears and more
Path Precision Tools gains the Parametric Shape Tool: ten kinds of shape
(rectangle, ellipse, polygon, star, ring, arrow, cross, heart, gear,
speech bubble) that stay editable as numbers.

- Geometry in vectorcraft_pathops::addons::pathtools::shapes: each kind's
  outline, corner rounding limited to the middle of a side, a fingerprint
  of the outline, recovery of centre, size and rotation after a move,
  turn or scale, and recognition of plain rectangles, ellipses and
  regular polygons.
- The tool (parametricShape, All Tools drawer and Object › Plug-ins ›
  Path Precision Tools only, no shortcut): drag from the centre (Shift:
  45° steps), arrow keys change the count and values while dragging,
  handles edit a selected shape, double-click places one.
- Commands addon.pathtools.shape.create / .set / .convert, one undo step
  each; params checked (counts 3..1000, sizes up to 16384 pt).
- A shape keeps its numbers in one object-data entry (vc-pathtools-shape)
  that SVG export already leaves out; anchor edits make it a plain path.
- Parametric Shape panel, cursor stand-in, catalog rows in all 25
  languages, docs and tests.
2026-10-30 20:55:14 +07:00
Dan Green 7688b41a40 Libraries panel: art and colours dragged in are added where they are dropped
Art dragged off the canvas and colours dragged in from elsewhere (swatches, another library's)
used to be added at the end of the ungrouped items, wherever they were dropped. They now land
as items dragged within the list do: on another item of their kind, just before or after it by
the pointer's half and in its group; on a group, into it; away from the items, ungrouped at the
end as before.

library.add takes group and before/after, placed as library.moveItem places an item (the
placement is shared). A library change that fails partway now leaves the library as it was.
2026-10-30 20:20:17 +07:00
Patrik LermonandClaude Opus 5.5 d38994c77d i18n(sv): translate 32 new strings, use the agreed terms in 11
Brings the Swedish catalog up to date with upstream main (a8ec515e1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 20:20:14 +07:00
ashokram-si 7a2fc777f4 Gradient panel: presets to apply, save and delete (G13)
People reuse the same gradients across documents and rebuilt them by
hand. The Gradient panel now has a Presets menu: the presets of the
app's built-in gradient libraries, grouped by library (theme), then
the saved ones. Choosing one gives the gradient behind the active
proxy (or a solid paint) the preset's type, stops, method and dither,
keeping its placement, as one undo step, through paint.editGradient.
The panel menu saves the current gradient as a preset (named in a
dialog) and deletes saved ones; Hide/Show Presets toggles the row.

Saved presets are kept with the preferences, next to the other user
preset lists (width profiles, flattener, perspective). Stops linked to
a document swatch keep their colour, unlinked, since a preset is used
in other documents. Built-in presets can't be deleted; names are
unique.

Commands: gradient.presets.list, .apply, .save and .delete. The menu's
rows are drawn only while in view, as its headings are.

Tests: engine tests for list, apply (fill and stroke, placement kept,
one undo step), save (unique names, unlinked swatch stops) and delete;
panel tests for applying from the menu and saving, deleting and
hiding presets from the panel menu, including scrolling the menu to
the saved presets. Docs: gaps G13, target-app and UI parity, ROADMAP.
2026-10-30 19:50:25 +07:00
Adam 55bfb7033e feat: show six Distribute Objects buttons in Control bar when 2+ objects selected (Illustrator parity)
Squashed from #4561 onto main.
2026-10-30 19:50:23 +07:00
bflatastic e214b3c981 Presentation Mode fits the active artboard and hides selections, guides, grids and artboard edges 2026-10-30 18:20:11 +07:00
bflatastic 992055204f Add-ons: Color Effects — select by color kind (spot colors, color effects, RGB, CMYK and grayscale images) 2026-10-30 18:20:06 +07:00
bflatastic 9ec7805e54 Gradient stop popover: an eyedropper samples the stop's colour from the art (#4681) 2026-10-30 17:49:06 +07:00
bflatastic 70512352bf Full Screen and Presentation Mode fill the screen (#4365) 2026-10-30 17:49:01 +07:00
bflatastic ad1bb39d62 View › Hide Artboards hides their edges and shows the canvas as paper (#4038)
Squashed from #4694 onto main.
2026-10-30 17:15:48 +07:00
bflatastic 9646feb672 Contextual Task Bar: stays up through a click on another object, hides only for a drag (#4681)
Squashed from #4692 onto main.
2026-10-30 17:12:17 +07:00
bflatastic 89b673a826 Draw Inside marks the corners of the object it draws into (#4319) 2026-10-30 17:12:17 +07:00
bflatastic 33d15bec56 Fields: only a plain Enter commits a field early, so Ctrl/Cmd+Enter in X or Y keeps editing 2026-10-30 17:12:16 +07:00
bflatastic a385b5cbf5 Fields: drop a leftover debug print from the invalid-input highlight 2026-10-30 16:55:57 +07:00
Taha-Mahmoodi 092cb2ab04 Tests: assert rendered field text displays 4 pt after sub-minimum commit and invalid input rejection 2026-10-30 16:55:55 +07:00
Taha-Mahmoodi 6ec5178708 Text: remove debug print in recessed_text and test invalid input in single dialog session 2026-10-30 16:55:55 +07:00
Taha-Mahmoodi 956412e978 Tests: assert rejection highlight and dialog retention on invalid Enter commit 2026-10-30 16:55:55 +07:00
Taha-Mahmoodi e2828bc064 Dialogs: keep dialog open on invalid Enter commit and prevent lock nesting in numeric widget 2026-10-30 16:55:55 +07:00
Taha-Mahmoodi 5da8c8e495 Numeric: clamp committed values in point units, schedule rejection highlight repaint, and update roadmap/area evidence 2026-10-30 16:55:55 +07:00
Taha-Mahmoodi 418f1bffc3 Fix #4638: clamp bounded effect length inputs on commit and reject invalid input visibly
In effect dialogs (like Color Halftone), length fields with defined bounds
(e.g. Max Radius 4..127 pt) were previously checked only after num_field
returned, leaving the field's temporary buffer holding the un-clamped string
(e.g. '0.5 px'). Subsequently entering invalid text caused the field to
fall back to that sub-minimum buffer.

- Added num_field_within to pass effect parameter bounds directly to unit_field.
- When committed, clamp the parsed value within bounds and update the field
  buffer to the formatted clamped value so the UI reflects what is applied.
- When invalid text is committed, clear the invalid buffer and trigger a
  one-frame border highlight so invalid input is rejected visibly.
2026-10-30 16:55:55 +07:00
bflatastic 1ca3db1b51 Add-ons: Smart Pen — draw and edit paths with one tool, panel
A built-in add-on under Object › Plug-ins › Smart Pen:
- The Smart Pen Tool draws and edits Bézier paths without switching
  tools: a click adds the next segment straight or curved (a panel
  toggle; Tab flips the segment being placed or the last one), a drag
  makes a smooth point (Alt breaks the handle, Shift snaps to 45°, Space
  moves the point), a curve after a straight segment joins it tangent.
- On existing paths it selects and moves points, removes a point keeping
  the shape (Alt-click), toggles smooth/corner (double-click), drags
  handles, reshapes a segment by dragging it and inserts a point on it
  (Alt-click); it closes, continues and joins open paths.
- The Smart Pen panel: next segment straight or curved, remove points
  keeping shape, make smooth, make corner, retract handles, close or
  join.

The tool stays out of both toolbars as shipped; the All Tools drawer
lists it under the add-on's heading. Commands are addon.pen.*; the
existing Pen tool, commands and menus are unchanged.
2026-10-30 16:02:27 +07:00
bflatastic 25828cdcd7 Anchor Inspector: the Close Path buttons share a row under their label 2026-10-30 15:20:38 +07:00
bflatastic dc7f147608 Add-ons: Path Precision Tools — anchor eraser brush, extend path, measure, anchor inspector, crossings
A built-in add-on under Object › Plug-ins › Path Precision Tools:
- Anchor Eraser Brush: painting over selected paths removes the anchors
  under the brush that the outline can do without within a tolerance,
  refitting the handles beside them (Alt ignores the tolerance, Cmd/Ctrl
  deletes without refitting, pen pressure can scale the brush); one undo
  step per stroke.
- Extend Path tool: dragging an end of an open path carries it on
  straight, by stretching its last curve or along the circle it curves
  on, or shortens it back along itself.
- Measure & Inspect tool: drag to measure distance and angle; hover a
  path to read segment and path length, area, curvature, tangent and
  anchor angles and handles, in the document's units.
- Anchor Inspector panel: the selected anchor's position and handles as
  numbers, with Make Smooth (auto-smooth rule), Make Corner, Equalize
  Handles, Remove Points Keep Shape, Add Points and three ways to close.
- Add Points at Crossings and Split at Crossings.

The tools stay out of both toolbars as shipped; the All Tools drawer
lists them under the add-on's heading. Commands are addon.pathtools.*;
the existing commands, tools and menus are unchanged.
2026-10-30 15:20:38 +07:00
bflatastic 427752ce65 Add-ons: Color Effects — live exposure, desaturate and invert, apply as filter, panel
A built-in add-on in Effect › Color Effects and Object › Plug-ins › Color Effects:
- Exposure (stops of linear light, offset and gamma), Desaturate and
  Invert Colors as live colour adjustments, evaluated in stack order with
  those of Effect › Color Adjustments.
- addon.color.filter applies any colour adjustment to the colours
  themselves, through the Edit Colors pass, as one undo step.
- A panel picks an adjustment and its values, then adds it as a live
  effect or applies it as a filter.

The add-on lives in its own modules (effects, engine and ui-egui addons
folders) and leaves the existing effects, commands and menus as they
were.
2026-10-30 14:14:33 +07:00
bflatastic ac85b529fe Add-ons: Artwork Cleanup — simplify keeping shape, health check, deep ungroup, rejoin
A built-in add-on under Object › Plug-ins › Artwork Cleanup:
- Simplify Anchors (Keep Shape) removes anchors while the outline stays
  within a tolerance, optionally keeping sharp corners.
- Document Health Check finds and fixes 16 kinds of problems in the
  selection or the document (stray points, duplicate and collinear
  anchors, tiny handles, nearly closed paths, needless groups, compound
  paths and clipping groups, unpainted and invisible objects, duplicate
  objects, art off every artboard, empty artboards…), with Show, Fix
  Selected and Fix All, each fix one undo step.
- Deep Ungroup and Rejoin Path Pieces.

The add-on lives in its own modules (pathops, engine and ui-egui
addons folders) and leaves the existing commands, tools and menus as
they were.
2026-10-30 13:11:20 +07:00
Dylan M. Taylor a24d811c7b Update prompt shows the app icon and accent color instead of a letter (#4671)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#e8573f, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/svg/src/import/fx.rs
- crates/tools/src/text/tool.rs
2026-10-30 01:27:35 -04:00
bflatastic acde3ea312 Spinners: a held arrow repeats after a pause (#4267) 2026-10-30 11:04:28 +07:00
bflatastic 687f4c84b8 Control bar: Replace menu for selected symbol instances (#4121) 2026-10-30 11:04:24 +07:00
bflatastic 3e6693045d Tests: the mixer's menu checks the shown mode 2026-10-30 11:04:21 +07:00
bflatastic bd1df49813 Tests: find the mixer's menu button by its size 2026-10-30 11:04:21 +07:00
bflatastic 6fd46e445a Color Mixer popover: the Color panel's menu, with its color modes (#4249) 2026-10-30 11:04:21 +07:00
bflatastic eeb6a2dcfc Touch: a second finger cancels a tool gesture the first one started; the pinch pans and zooms (#4198) 2026-10-30 11:04:18 +07:00
bflatastic beb0ae6515 SVG export: rectangles, circles, ellipses, lines and straight paths as SVG shape elements (#4652) 2026-10-30 09:45:59 +07:00
C0ukiandClaude Sonnet 5.5 f398f319da i18n(ja): translate the update check and the trace progress labels
The Help > Check for Updates… item, the update window and the Image Trace
progress labels had no ja row and drew English. Wording follows the
PhotoCraft ja catalog for the update strings.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K5NRZNWfaSLBWVzV8hivyS
2026-10-30 09:01:17 +07:00
datatimp 6a80e43b68 Effect dialogs keep a typed distance within the effect's range (#4637) 2026-10-30 09:01:11 +07:00
bflatastic 494de9dfa2 Guides: a ruler guide shows while dragged with Real-time Drawing off (#4646)
With Preferences > Performance > Real-time Drawing and Editing off, tool
previews are deferred to the release, so a guide dragged out of a ruler
(guide.add) or moved with a selection tool (guide.move) showed only its
position label until the button was released. Guide previews now always
apply as the guide is dragged: the guide is all such a drag shows.

#4646's units and guides lost on reopen don't reproduce for a native
file: a new millimetre document's ruler guides and units survive Save,
Close and Open in .vectorcraft, PDF, .ai and EPS (new regression test,
and live in the app with Background Save). An SVG saved without Preserve
Editing reopens in pixels with no guides, as the reporter saw.
2026-10-30 08:13:49 +07:00
bflatastic 23ba6ae4c1 Path: Average & Join with a corner or smooth choice, Cmd+Alt+Shift+J (G1) 2026-10-30 06:37:12 +07:00
Don Omondi 4fe7e0ae6b Fix #4469: Direct Selection's task bar offers the path's anchor actions
With the Direct Selection tool active (after the bar's Edit Path, or
switching to it) and a path selected whole, the Contextual Task Bar kept
the Selection tool's Edit Path, Offset Path and Simplify: its anchor
actions showed only for anchors picked out one by one.

The public overview lists, for a path the Direct Selection tool selects,
Simplify and the anchor actions. A path selected whole now offers Corner
and Smooth (path.convertAnchors converts every anchor of a fully
selected path), Connect for an open path, and Simplify. Remove Anchor
Points and Cut Path need anchors picked out and still wait for them.
Edit Path, which only switches to the tool already in use, is left out,
for compound paths too.
2026-10-30 04:47:08 +07:00
Don Omondi 6fe71df1cf Fix #4233: Direct Selection drags art onto Asset Export and the other panels
Art dragged off the canvas reached the panels (Asset Export, Graphic
Styles, Swatches, Symbols) only from the Selection tool: drag_art_out
checked for that tool by id. With the Direct Selection or Group
Selection tool the move stayed on the canvas, so nothing dropped.

Those tools now hand over a move too when every selected object is
selected whole (a press on its fill). A drag of anchor points or
segments, which they also call Move, stays a reshape and isn't handed
to the panels.
2026-10-30 04:47:04 +07:00
bflatastic d56bbb49ff Gradient Mesh: select several mesh points; move, color and opacity reach them all (#4207, #4208, #4170) 2026-10-30 03:37:43 +07:00
bflatastic 5d4b4b9b35 Type: Character panel › Show Snap to Glyph Options (#4232) 2026-10-30 02:41:25 +07:00
bflatastic 513b02233f Align: Align to Glyph Bounds for point and area type (#4231) 2026-10-30 02:01:58 +07:00
bflatastic 71fbdf5ff0 Eraser: Size follows the pen pressure too (#3961)
Eraser Tool Options' Size takes Fixed or Pressure and a Variation as the
Blob Brush's does: the tool records the pen, and path.eraseRegion outlines
the squashed drag at the pen's widths, stretched back to the tip's angle
and roundness. The pressure parsing and outline move to draw2's common
helpers, shared by both commands.
2026-10-30 01:13:20 +07:00
bflatastic c65286666c Blob Brush: Size follows the pen pressure (#4590)
Blob Brush Tool Options' Size takes Fixed or Pressure and a Variation, as
the brush options' Size does: with Pressure the brush is Size − Variation
wide where the pen presses lightest and Size + Variation where it presses
hardest. The tool records the pen pressure of each point and shows each
step of the drag as wide as the pen pressed there; path.blob takes
[x, y, pressure] points with sizeMode and sizeVariation and outlines the
stroke with that width profile. A stroke without pressure keeps the Size,
and Fixed with no variation stays the default.

https://helpx.adobe.com/illustrator/desktop/paint-and-fill/learn-painting-basics/blob-brush-options-and-best-practices.html
2026-10-30 01:13:13 +07:00
VoiceLessQ 3301db5817 Image Trace: starting a background trace asks for a frame
The frame a trace starts in may already have asked for its next one before the trace started, so with no input the finished trace could wait. From the review of #4617.
2026-10-30 00:15:59 +07:00
VoiceLessQ 2e54e882d6 Image Trace: a library colour changed meanwhile makes a background trace stale, and running traces keep frames coming
From the review of #4605. TraceParams::swatches isn't in the settings' JSON (serde skip), so a Document Library trace whose swatches were edited while it ran still applied, with the old colours; the trace's inputs now hold them. The 100 ms repaint that keeps background work moving left traces out, so without input a finished trace could wait for the next event.
2026-10-30 00:15:59 +07:00
bflatastic 5165b6eb1d Pathfinder: live compound shapes (Make, Shape Mode, Release, Expand Compound Shape)
Squashed from #4621 onto main.
2026-10-30 00:15:58 +07:00