Commit Graph
3330 Commits
Author SHA1 Message Date
dotCooCoo 5e80810605 Merge main into feat/custom-arrowheads 2026-11-12 05:00:21 -08:00
dotCooCoo 0a3abb8534 Stroke: custom arrowheads cap subpaths, file size and preview size
- A custom arrowhead path allows at most 4,096 subpaths; stroke.set
  refuses a longer one and reading drops it.
- A symbol whose shapes cannot be united or clipped is listed in
  skipped instead of becoming a head that misses part of its art.
- The arrowheads file is refused when its document unpacks to more
  than 64 MB.
- Edit Arrowheads creates the starter file only when none exists and
  otherwise opens the file unchanged.
- After a save to the arrowheads file, the heads are read back from
  the written file.
- The plug-in argument check accepts path under startArrow.Custom and
  endArrow.Custom in stroke.set.
- A custom head's menu preview is scaled to fit its box, and rows
  outside the visible part of the menu do not render previews.
2026-11-12 05:00:15 -08:00
BFlat 7f9866f42a Merge pull request #6818 from dotCooCoo/feat/korean-line-break-anywhere
Type: Korean words break at spaces unless Korean Line Break Anywhere is on
2026-11-12 19:13:57 +07:00
BFlat 0b4ccdfb5d Merge pull request #6830 from dotCooCoo/fix/artboard-files-ask-before-replacing
Save and Export: files written beside the picked one ask before replacing a file there
2026-11-12 19:13:47 +07:00
BFlat 79ef41b50b Merge pull request #6858 from storytold/feat/remove-background-quick-action
Images: Remove Background in the task bar, Properties and the Control bar
2026-11-12 19:06:53 +07:00
bflatastic e399ac3290 Images: Remove Background in the task bar, Properties and the Control bar
A selected image offers Remove Background in the Contextual Task Bar, Properties'
Quick Actions and the Control bar, as the reference app does. A click runs it at
once with its defaults, as one undo step; Object > Plug-ins > Image Tools keeps
the dialog with Preview.
2026-11-12 18:25:12 +07:00
BFlat 4306a1d1fb Merge pull request #6808 from dotCooCoo/feat/stencil-bridges
Cutting Tools: Stencil Bridges keeps the islands of a stencil attached
2026-11-12 18:19:57 +07:00
BFlat a8879b9fb8 Merge pull request #6760 from dotCooCoo/feat/brushes-bristle-library
Brushes: built-in Bristle Brushes library with one bristle brush for each tip shape
2026-11-12 18:19:32 +07:00
BFlat f4df78ef4a Merge pull request #6790 from dotCooCoo/feat/hpgl-export
File formats: HP-GL (.plt) plots export for pen plotters and cutters
2026-11-12 18:19:22 +07:00
BFlat bdea9ac39a Merge pull request #6822 from dotCooCoo/feat/gradients-holographic
Swatch libraries: Gradients › Holographic adds iridescent foil and glow gradients
2026-11-12 18:18:50 +07:00
BFlat 14c764218f Merge pull request #6840 from dotCooCoo/fix/tab-stops-limit
Tabs: the ruler and Repeat Tab stop at 256 tab stops, and a paragraph with more can lose them
2026-11-12 18:18:21 +07:00
BFlat b6e58f728e Merge pull request #6667 from slafebre/fix/5111-kern-paragraph-start
Fix #5111: kerning at the caret before a line's first character moves it
2026-11-12 18:18:10 +07:00
bflatastic 0f65f6d3f4 Revert "Merge pull request #6656 from dotCooCoo/fix/inspect-library-ids-whole"
This reverts commit 3ed0dc64a8, reversing
changes made to 70ba41bb2b.
2026-11-12 16:35:41 +07:00
BFlat 61650e44a2 Merge pull request #6814 from dotCooCoo/feat/brush-replace-art
Brushes: Alt-drag art onto a brush to replace its art
2026-11-12 16:02:52 +07:00
BFlat 87c0d5cb5e Merge pull request #6826 from dotCooCoo/feat/3d-classic-rotate
3D (Classic): Rotate (Classic) turns flat art in 3D with the No Shading and Diffuse surfaces
2026-11-12 16:02:41 +07:00
BFlat 744c37d12f Merge pull request #6669 from dotCooCoo/feat/dynamic-text-release-path
Type: Release Type on a Path keeps the size Dynamic Text drew the type at
2026-11-12 16:02:25 +07:00
BFlat 183b2ed7e4 Merge pull request #6770 from dotCooCoo/feat/learn-panel
Learn: a Learn panel lists tutorials by skill, opened from Explore tutorials on the app bar
2026-11-12 16:02:15 +07:00
BFlat 3ed0dc64a8 Merge pull request #6656 from dotCooCoo/fix/inspect-library-ids-whole
MCP: a hidden library's shown id names it in requests, and replies hide its path wherever it appears
2026-11-12 16:01:54 +07:00
dotCooCoo cc2d090335 Merge main into fix/artboard-files-ask-before-replacing 2026-11-12 00:41:07 -08:00
dotCooCoo f4384486ca Merge main into feat/gradients-holographic 2026-11-12 00:41:03 -08:00
dotCooCoo fdbf49d73a Merge main into feat/korean-line-break-anywhere 2026-11-12 00:40:59 -08:00
dotCooCoo aba45b7249 Merge main into feat/brushes-bristle-library 2026-11-12 00:40:51 -08:00
Sven Lafebre f757f9ef43 Merge remote-tracking branch 'origin/main' into fix/5111-kern-paragraph-start
# Conflicts:
#	docs/target-app-parity.md
2026-11-12 09:29:30 +01:00
Sven Lafebre ab17837cba Merge remote-tracking branch 'origin/main' into fix/5111-kern-paragraph-start
# Conflicts:
#	docs/target-app-parity.md
2026-11-12 09:24:22 +01:00
dotCooCoo a6ff24d0c4 Tabs: the ruler and Repeat Tab stop at 256 tab stops
With 256 stops, a click on an empty part of the Tabs panel's ruler adds
no stop and shows "at most 256 tab stops" in the status bar; the stops
and the selection stay as they were. Repeat Tab adds copies only up to
256 stops and shows the same message when it stops early. Before, both
built a longer list that text.tabs.set refused, so nothing changed and
no message showed.
2026-11-12 00:19:38 -08:00
BFlat eb608bb8b5 Merge pull request #6813 from dotCooCoo/feat/brush-place-art
Brushes: drag a brush onto the canvas to place a copy of its art
2026-11-12 15:14:18 +07:00
BFlat edeca27469 Merge pull request #6785 from dotCooCoo/fix/read-roots-save-export-results
MCP: save, export and package replies leave out paths outside a confined client's read roots
2026-11-12 15:14:09 +07:00
BFlat 1a7aa834db Merge pull request #6786 from dotCooCoo/fix/save-export-show-every-note
Save and Export: the status bar's hover lists every note
2026-11-12 15:13:51 +07:00
BFlat dcab893acd Merge pull request #6791 from dotCooCoo/feat/styles-painted-sketched-library
Graphic Styles: a built-in Painted and Sketched library adds watercolor, charcoal and ink styles
2026-11-12 15:13:39 +07:00
BFlat fd4bf3999c Merge pull request #6810 from dotCooCoo/fix/shortcut-opens-menu-dialog
Shortcuts: a single-key shortcut opens its menu item's slider or dialog
2026-11-12 15:13:30 +07:00
BFlat 0d550c6e6d Merge pull request #6796 from dotCooCoo/feat/patterns-grit-textures
Swatch libraries: Patterns › Grit Textures adds seamless grain, speckle and stipple patterns
2026-11-12 15:13:22 +07:00
BFlat ba2aefb5dd Merge pull request #6815 from dotCooCoo/feat/para-style-options-tabs
Paragraph Styles: Style Options edits a style's tab stops
2026-11-12 15:12:55 +07:00
BFlat 27d00baaad Merge pull request #6689 from danngreen/feat/ruler-origin-snap
Rulers: the origin dragged out of the rulers' corner snaps as a drawn point does
2026-11-12 15:12:35 +07:00
dotCooCoo 7da7c2c456 Merge main into fix/artboard-files-ask-before-replacing 2026-11-11 23:51:03 -08:00
dotCooCoo 08de741ca9 3D (Classic): Rotate (Classic) turns flat art in 3D with the No Shading and Diffuse surfaces
Effect › 3D and Materials › 3D (Classic) › Rotate (Classic)… turns every
fill and stroke as one flat plane, as Rotate does, and shades it with the
classic No Shading or Diffuse surface.

- `effect.apply` with `threeD.classicRotate`: the Position rotation and
  Perspective, `surface` (`none` or `diffuse`), the classic lights,
  Ambient Light, Blend Steps and Shading Color. It has no highlight, no
  Draw Hidden Faces and no shadow.
- The dialog shows Position on the Rotation tab and the surface and
  lights on the Lighting tab, with no Object tab.
- Groups and layers turn about one shared center, and the effect also
  goes on a fill or stroke, as Rotate's does.
- `effect.lightingPreset` refuses it, as it refuses the other classic
  3D effects.
- Unknown parameters, numbers out of range, bad flags, a surface other
  than No Shading or Diffuse and bad shading colors are refused with an
  error.
2026-11-11 23:44:11 -08:00
dotCooCoo b262d10e89 Save and Export: files written beside the picked one ask before replacing a file there
A save or export that writes a file per artboard, linked images or image
maps names them after the file picked in the save panel, which asked only
about that name. A file already there under one of the other names was
replaced without a question.

Save As, Save a Copy, Save as Template, Save and Export now check those
files before writing anything. When any is there, nothing is written and
a replaceFiles question names it (and lists all of them when there are
several). OK runs the save or export again on the document that asked and
replaces the named files; a file it would now write that the question did
not name is asked about again. Cancel writes nothing. A background save
or export checks from its worker and asks once it ends, after a dialog
open then. Files the document's last Save or Save As wrote are replaced
without asking.

Services::exists is now an Arc<dyn Fn(&str) -> bool + Send + Sync>.
2026-11-11 23:39:32 -08:00
dotCooCoo 656d63e4d2 Merge main into feat/learn-panel 2026-11-11 23:31:06 -08:00
dotCooCoo 9c5d22bccc Merge main into feat/hpgl-export 2026-11-11 23:31:04 -08:00
dotCooCoo 55570c10d1 Merge main into fix/inspect-library-ids-whole 2026-11-11 23:31:03 -08:00
dotCooCoo 2c6bd2826b Merge main into feat/dynamic-text-release-path 2026-11-11 23:31:01 -08:00
dotCooCoo fc8a7e46c6 Swatch libraries: Gradients › Holographic adds iridescent foil and glow gradients
Window › Swatch Libraries › Gradients gains Holographic, after Organic
Fades: seven foils (opaque linear gradients of six narrow pastel and
pearl bands with off-center midpoints) and seven glows (radial
gradients from a bright center out to a clear edge), all mixed with the
Perceptual method. They also list in the Swatches panel's library menu,
swatch.library.list/get/add and the Gradient panel's Presets.

The names, colors and stops are VectorCraft's own. A saved preset that
already uses one of the new names is renamed with the first free number
when the preferences load.

Docs: docs/target-app-parity.md Swatches line, ROADMAP.
2026-11-11 23:19:16 -08:00
BFlat 48e066f475 Merge pull request #6755 from dotCooCoo/fix/ui-params-wrong-type
Commands: app and control channel params of the wrong type are refused
2026-11-12 14:17:29 +07:00
BFlat 8782f6c697 Merge pull request #6794 from dotCooCoo/feat/blend-create-spine
Blend: the Blend panel's Create Spine menu sets whether new blends get a spine
2026-11-12 14:17:20 +07:00
BFlat 5e63104d88 Merge pull request #6800 from dotCooCoo/fix/plugin-automation-install-approval
Plug-ins: an install that automation asked for is not approved in its dialog
2026-11-12 14:16:59 +07:00
BFlat f00acd0228 Merge pull request #6802 from dotCooCoo/fix/plugin-manifest-commands-errors
Plug-ins: a wrongly shaped `commands` value gets an error every catalog translates
2026-11-12 14:16:41 +07:00
BFlat abfd776ef4 Merge pull request #6797 from dotCooCoo/feat/dxf-leave-out-images-hatches
DXF: export options leave placed images and fill hatches out, and CNC / CAM turns both off
2026-11-12 14:16:20 +07:00
dotCooCoo ff826ed1bd Type: Korean words break at spaces unless Korean Line Break Anywhere is on
Korean text broke after every Hangul syllable. A paragraph now has
Korean Line Break Anywhere, set from the Paragraph panel menu (with the
East Asian options), from the East Asian Composition Settings section of
Paragraph Style Options, and with `text.setFormat {koreanLineBreakAnywhere}`.

- Off, a word that contains Hangul (the characters between spaces) breaks
  only at its spaces and after East Asian punctuation, or where the word
  is wider than the line. Both composers follow it, and the word takes no
  hyphen. On, a line may break between any two syllables, as before.
- New type has it off. Paragraphs and text objects saved before the
  option read as on, so their lines do not move; the value is saved only
  when it is off.
- Paragraph styles carry it, Reset Panel turns it off, and the .ai writer
  reports it as lost for Korean paragraphs.

The help page: https://helpx.adobe.com/illustrator/desktop/design-with-text/fonts-and-scripts/set-line-breaks-korean-text.html

The command is described in docs/mcp.md, and docs/target-app-parity.md
lists the option.
2026-11-11 23:06:55 -08:00
dotCooCoo 5d8065e929 3D (Classic): Revolve (Classic) sweeps a profile with Angle, Cap and Offset and the classic surfaces
Effect › 3D and Materials › 3D (Classic) › Revolve (Classic)… sweeps the
profile round a vertical axis, as Revolve does, and draws every face with
the Wireframe, No Shading, Diffuse and Plastic surfaces of Extrude & Bevel
(Classic).

- `effect.apply` with `threeD.classicRevolve`: Angle (0 to 360), Cap,
  Offset (0 to 1000 pt) from the left or right edge of the profile's
  bounds, the Position rotation and Perspective, and the classic lights,
  Ambient Light, highlight, Blend Steps and Shading Color.
- Groups and layers revolve about one shared axis, and the effect also
  goes on a fill or stroke, as Revolve's does.
- `effect.lightingPreset` refuses it, as it refuses Extrude & Bevel
  (Classic).
- Revolve faces carry their view-space normal, and
  `three_d::revolve_facets` hands them to the classic surface code.
- Unknown parameters, numbers out of range and bad flags, edges,
  surfaces and colors are refused with an error.
2026-11-11 23:04:22 -08:00
dotCooCoo 44d5d20f58 Paragraph Styles: Style Options edits a style's tab stops
Paragraph Style Options and New Paragraph Style gain a Tabs section. It
lists the style's stops and edits the selected stop's Alignment, position
(X:, or Y: for vertical type), Leader and Align On character. Add puts a
left stop 36 pt past the furthest one, Delete Tab removes the selected
stop, and Clear All Tabs leaves the style with no stops. OK sorts the
stops by position and keeps the stop edited last when two share one
position. Reset Panel removes the style's tabs.

paraStyle.new, paraStyle.setAttrs and paraStyle.edit check changed tabs
stop by stop: at most 256 stops, and each changed stop's position from 0
to 100000 pt and leader of at most 8 characters. Stops the style already
has are kept as they are. Changed tabs are sorted by position, keeping
the first of stops at one position. text.tabs.set rejects a leader longer
than 8 characters, an Align On value of more than one character and more
than 256 stops. Loading paragraph styles skips a style whose indents,
spacing, hyphenation, justification or tabs are out of range.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-11-11 23:02:47 -08:00
dotCooCoo 1c28809333 Merge main into feat/patterns-grit-textures 2026-11-11 22:45:36 -08:00