Commit Graph
3613 Commits
Author SHA1 Message Date
BFlat 14d12ac5bd Merge pull request #2444 from marcoarnulfo/fix/ai-compound-holes
AI import: a compound path whose subpaths' group is marked like a look keeps its holes
2026-10-17 15:09:49 +07:00
BFlat 4cd0757512 Merge pull request #2445 from dotCooCoo/feat/eps-ccittfax
EPS: images encoded with CCITTFaxDecode draw
2026-10-17 15:09:33 +07:00
BFlat 86bd11a271 Merge pull request #2448 from marcoarnulfo/fix/cmyk-image-alpha-smask
PDF export: a CMYK image's own soft mask is written as its /SMask, not a luminosity mask
2026-10-17 15:09:18 +07:00
BFlat b7ffd4a91e Merge pull request #2454 from marcoarnulfo/fix/recolor-wheel-handles
Recolor Artwork: dragging a wheel handle of CMYK art keeps the linked handles in place
2026-10-17 15:09:04 +07:00
BFlat 5e88acde4d Merge pull request #2456 from EricKuck/fix/mesh-patch-backing
Gradient mesh: an opaque patch is backed by its outline, so patches that narrow to slivers leave no holes
2026-10-17 15:08:53 +07:00
BFlat 582d527612 Merge pull request #2458 from marcoarnulfo/fix/missing-fonts-folder
Missing Fonts: a folder the search refuses says why in the dialog, not "Not found"
2026-10-17 15:08:41 +07:00
BFlat 82047aca3e Merge pull request #2461 from dotCooCoo/feat/open-postscript-files
File formats: PostScript (.ps) and .epsf files open and place
2026-10-17 15:08:27 +07:00
BFlat 9cf044b9f4 Merge pull request #2464 from marcoarnulfo/fix/dup-text-font
Type: emptying the text while editing keeps its character style
2026-10-17 15:08:18 +07:00
BFlat 307bb3b3cc Merge pull request #2467 from dotCooCoo/feat/release-guide-double-click
Guides: a Cmd/Ctrl+Shift double-click releases the guide under the pointer
2026-10-17 15:08:01 +07:00
BFlat c10677f385 Merge pull request #2479 from dotCooCoo/fix/character-reset-panel-all-attributes
Character: Reset Panel resets every attribute the panel shows except the font and size
2026-10-17 15:07:49 +07:00
BFlat 76f8f68849 Merge pull request #2483 from dotCooCoo/feat/layers-save-selection-menu
Layers: the panel menu's Save Selection submenu saves, lists and updates saved selections
2026-10-17 15:07:34 +07:00
BFlat 3e65dd7cf3 Merge pull request #2488 from webdevtodayjason/fix/1968-transparency-grid
View: Show Transparency Grid is saved with the document
2026-10-17 15:07:24 +07:00
Marco Arnulfo 9739eeb333 AI import: a compound path whose subpaths' group is marked like a look keeps its holes (fixes #980) 2026-10-17 14:46:20 +07:00
bflatastic 77f7f02acc Docs: file-format-parity keeps one EPS and one PostScript row 2026-10-17 14:46:20 +07:00
Marco Arnulfo 025ce255ae PDF export: a CMYK image's own soft mask is written as its /SMask, not a luminosity mask (fixes #2159) 2026-10-17 14:43:14 +07:00
Marco Arnulfo 8e69146160 Recolor Artwork: dragging a wheel handle of CMYK art keeps the linked handles in place (fixes #1733) 2026-10-17 14:43:14 +07:00
EricKuckandClaude Opus 5.5 7add248dc3 Gradient mesh: an opaque patch is backed by its outline, so patches that narrow to slivers leave no holes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:43:14 +07:00
Marco Arnulfo cb968353a5 Missing Fonts: a folder the search refuses says why in the dialog, not "Not found" (part of #2200) 2026-10-17 14:43:14 +07:00
dotCooCoo 08dc614938 File formats: PostScript (.ps) and .epsf files open and place
The EPS reader read PostScript by any name, but the Open and Place
dialogs hid .ps and .epsf files, and a .ps or .epsf file whose header
is only %! could not be opened or placed ("not a format VectorCraft
reads"). The reference app lists .eps, .epsf and .ps under Open and
Place.

- A read-only PostScript format (ps) joins the format table. A .ps
  file opens and places through the EPS reader and reports the
  ps format. document.export does not write .ps; file.print does.
- .epsf is an EPS extension.
- OPEN_EXTS and PLACE_EXTS list epsf and ps, so the dialogs, the CLI
  help and the MCP open_file description list them.
  UNASSOCIATED_EXTS lists them too: the macOS bundle declares neither.
- A .ps or .epsf file whose header is only %! now pastes as EPS when
  copied in a file manager, as one with a %!PS header already did, and
  clipboard.importEps reads PostScript whose header is only %!, which
  it rejected before.

Docs: docs/mcp.md, docs/file-format-parity.md (.ps row),
docs/target-app-parity.md.
2026-10-17 14:43:14 +07:00
dotCooCoo a070d83be3 EPS: images encoded with CCITTFaxDecode draw
The PostScript interpreter that reads EPS and PostScript files had no
CCITTFaxDecode filter. Reading a file whose image data went through it
stopped at an error naming the filter, and the file opened from a
fallback, such as its preview or the art drawn before the image, or
did not open.

CCITTFaxDecode now decodes CCITT Group 4 (ITU-T T.6) and Group 3
one-dimensional and mixed (ITU-T T.4) data to rows of 1-bit samples.
It reads K, Columns, Rows, EndOfBlock, EndOfLine, EncodedByteAlign and
BlackIs1 (PLRM 3rd ed., §3.13; ISO 32000-2, §7.4.6). With EndOfBlock
the data ends at its EOFB or RTC regardless of Rows, and the RTC of
mixed Group 3 data, six EOLs each with a tag bit, is found by the
filter. Damaged data keeps the rows decoded before it, and damage in
the first row is an ioerror. Columns outside 1 to 65,535 and Rows
below 0 are a rangecheck, and data that would decode to more than
256 MiB is refused. hayro-ccitt 0.3.0, already in Cargo.lock through
hayro-syntax, becomes a dependency of vectorcraft-eps.

The tests encode their images in the test, with the fax crate's
Group 4 encoder and T.4 run codes (a dev-dependency, already in
Cargo.lock through tiff), and fail without the change. The import fuzz
tests read a Group 4 and a Group 3 image coded by hand from the T.4
and T.6 tables, read the same file with random damage, and add the
filter and its parameters to the hostile programs.

Docs: docs/file-format-parity.md, docs/target-app-parity.md.
2026-10-17 14:43:14 +07:00
Marco Arnulfo 63b95c8dd3 Type: emptying the text while editing keeps its character style (fixes #2119) 2026-10-17 14:43:13 +07:00
dotCooCoo b275eb04d0 Guides: a Cmd/Ctrl+Shift double-click releases the guide under the pointer
A double-click on a ruler guide with the Selection, Direct Selection or
Group Selection tool did nothing, whatever keys were held. A guide could
be released only with View › Guides › Release Guides.

With the Selection, Direct Selection or Group Selection tool, a
double-click with Cmd/Ctrl and Shift held now runs view.guides.release
on the ruler guide under the pointer (index) or, when no ruler guide
is there, on the guide path under it (ids). Nothing is released while
guides are hidden or locked, and a double-click without both keys does
what it did before.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-17 14:43:13 +07:00
dotCooCoo 4650ccbe26 Character: Reset Panel resets every attribute the panel shows except the font and size
The Character panel menu's Reset Panel reset tracking, leading,
kerning, baseline shift, the scales, rotation, underline,
strikethrough and All Caps, but left Small Caps, superscript or
subscript, Character Alignment, Proportional Metrics and Digits at
their custom values.

Reset Panel now also sets those five to their defaults in the same
text.setFormat call, with the values taken from CharStyle::default().
It resets them in the same characters as the other attributes: those
of the selected type, or, while the Type tool edits text, its
selection (all of that text at a caret). It resets them whether or
not Show East Asian Options and Show Indic Options (Preferences ›
Type) are on.
2026-10-17 14:43:13 +07:00
dotCooCoo 4f1e4979fc Layers: the panel menu's Save Selection submenu saves, lists and updates saved selections
The Layers panel menu had no saved-selection items, and the Select
menu was the only menu that listed saved selections. The reference
app's help also names a Save Selection menu in the Layers panel that
lists the saved selections and holds Save Selection, Update Selection
and Edit Selection.

The Layers panel menu now has a Save Selection submenu after Locate
Object. It holds Save Selection…, Update Selection and Edit Selection…,
which are enabled and run as in the Select menu, and below them the
active document's saved selections. Choosing a name runs select.recall
with that name, as the Select menu's list does.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-17 14:43:13 +07:00
webdevtodayjason 3895694a9b View: Show Transparency Grid is saved with the document
Native files remember the grid like the saved view, so reopening restores it.
Toggling it is still view state: no undo step, document not marked modified.

Fixes #1968
2026-10-17 14:43:12 +07:00
BFlat e6b58f5142 Merge pull request #2649 from storytold/pr/batch-1017-i18n-docs
i18n and docs: rows and ROADMAP entry for the community PRs landed on 2026-10-17
2026-10-17 14:40:56 +07:00
BFlat afa1c992bf Merge pull request #2404 from marcoarnulfo/fix/transform-percent-size
Transform: a percentage typed alone in W or H scales the size it shows
2026-10-17 14:39:18 +07:00
BFlat 8548cf272d Merge pull request #2400 from marcoarnulfo/fix/transform-menu-flip-origin
Transform panel: the menu's Flip Horizontal and Flip Vertical keep the reference point
2026-10-17 14:38:41 +07:00
BFlat d890ab337d Merge pull request #2507 from dotCooCoo/fix/rgba-within-decode-limit
Images: sampling and recoloring decode images past 512 MB, up to 2 GB
2026-10-17 14:38:07 +07:00
BFlat c1f543dd75 Merge pull request #2567 from dotCooCoo/feat/artboards-duplicate-copy-cut-selected
Artboards: Duplicate Artboards, Copy and Cut take every selected artboard
2026-10-17 14:37:15 +07:00
BFlat dbef720363 Merge pull request #2590 from dotCooCoo/fix/i18n-variable-site-rows
i18n: file filters, preset names and mark styles are translated in every complete language
2026-10-17 14:36:58 +07:00
BFlat 67fbb3c18d Merge pull request #2597 from dotCooCoo/fix/save-as-template-extension
Templates: Save as Template always writes a file with a template extension
2026-10-17 14:36:45 +07:00
BFlat a2aa0fc303 Merge pull request #2617 from dotCooCoo/fix/effect-color-param-refuses-unreadable
Effects: effect.apply and effect.setParams refuse a color the effect can't draw
2026-10-17 14:36:33 +07:00
BFlat 99220d50e1 Merge pull request #2621 from dotCooCoo/fix/pattern-cache-keeps-decode-warning
Render: every raster export warns about an undecodable image inside a pattern
2026-10-17 14:36:21 +07:00
BFlat 770213b295 Merge pull request #2501 from dotCooCoo/fix/para-style-redefine-default-attrs
Type: redefining a text style back to a default updates the text that uses it
2026-10-17 14:36:04 +07:00
BFlat f72d5060f2 Merge pull request #2504 from dotCooCoo/fix/batch-data-set-file-names
Actions: Batch keeps files named after data sets inside the destination folder
2026-10-17 14:35:47 +07:00
BFlat 3c2fa5917d Merge pull request #2508 from dotCooCoo/fix/character-small-caps-super-subscript-buttons
Character: Small Caps, Superscript and Subscript buttons and menu items set the text
2026-10-17 14:35:29 +07:00
BFlat 7ddc8d9c8a Merge pull request #2513 from dotCooCoo/feat/ai-drop-shadow-darkness
.ai import: a Drop Shadow with Darkness comes in with its Darkness
2026-10-17 14:35:05 +07:00
BFlat 85baa19884 Merge pull request #2554 from dotCooCoo/fix/kerning-pairs-across-style-runs
Type: a change of paint, baseline shift or rotation on one character keeps the font's kerning
2026-10-17 14:34:51 +07:00
BFlat f4000408a2 Merge pull request #2574 from dotCooCoo/fix/svg-justify-all-letter-gaps
SVG export: justified and Mojikumi lines keep their letter spacing in live text
2026-10-17 14:34:32 +07:00
BFlat 2cdf8465b9 Merge pull request #2578 from dotCooCoo/feat/zh-hans-messages
i18n: Simplified Chinese translates status-bar and error messages
2026-10-17 14:34:16 +07:00
BFlat 8f42ac1892 Merge pull request #2580 from dotCooCoo/chore/type-parity-hyphenation-row
Docs: type-parity and the roadmap list the Hyphenation options as done
2026-10-17 14:34:05 +07:00
BFlat ab2f745cd3 Merge pull request #2598 from dotCooCoo/fix/tiff-planar
TIFF: planar grayscale files with extra channels, and planar CMYK files, open and place
2026-10-17 14:33:49 +07:00
BFlat 7a97db06b7 Merge pull request #2602 from dotCooCoo/test/devanagari-shaping
Type: a click in a Devanagari syllable goes to its nearer end, and shaping is tested
2026-10-17 14:33:35 +07:00
BFlat 17a1c9835b Merge pull request #2608 from dotCooCoo/feat/dataset-import-tabs-no-name
Variables: Import Data Sets… reads tab-separated files and files without a name column
2026-10-17 14:33:24 +07:00
BFlat 0990c7bbd3 Merge pull request #2607 from dotCooCoo/feat/print-preset-by-name
Print: Print, Print Preview and Print Setup take a print preset by name
2026-10-17 14:33:02 +07:00
BFlat 41d79128f5 Merge pull request #2623 from dotCooCoo/feat/swatch-alt-click-stop
Swatches: Alt-click on a swatch recolors the selected gradient stop
2026-10-17 14:32:47 +07:00
BFlat eff0baad56 Merge pull request #2611 from dotCooCoo/fix/icon-buttons-accessible-names
Accessibility: buttons, toggles, checkboxes and sliders have names for screen readers
2026-10-17 14:32:32 +07:00
BFlat f7d1c354fd Merge pull request #2547 from vangel76/fix/2168-persist-presets-profiles
Persistence: saved PDF presets and loaded ICC profiles survive a restart (#2168, #2174)
2026-10-17 14:32:20 +07:00
BFlat 66374d0835 Merge pull request #2546 from vangel76/fix/2165-mcp-cancel-export
MCP: cancel long exports, answer while one runs, report progress (#2165, #2171)
2026-10-17 14:31:57 +07:00