Commit Graph
5020 Commits
Author SHA1 Message Date
BFlat 2985970a84 Merge pull request #7403 from dotCooCoo/feat/colr-gradient-repeat
Type: COLR glyphs with repeating or reflecting gradients draw as vector art
2026-11-14 16:50:37 +07:00
BFlat edc2a68138 Merge pull request #7350 from dotCooCoo/fix/ko-message-rows
i18n: Korean has a row for 1,813 of the messages the untranslated report lists
2026-11-14 16:50:20 +07:00
BFlat 3382abdd05 Merge pull request #7484 from dotCooCoo/fix/wayland-clipboard-stuck-pipe
Clipboard: a Wayland read or send ends when the other app moves no data for 2 s
2026-11-14 16:50:11 +07:00
BFlat 040311b658 Merge pull request #7486 from dotCooCoo/fix/zh-hans-missing-message-rows
i18n: Simplified Chinese translates 114 status and error messages that no catalog had
2026-11-14 16:50:03 +07:00
BFlat 534ca0a9a3 Merge pull request #7479 from dotCooCoo/test/trace-mixed-width-scene
Image Trace: centre-lines quality measures Create Strokes' split on a mixed-width body
2026-11-14 16:49:45 +07:00
BFlat e419f931ff Merge pull request #7496 from dotCooCoo/fix/svg-tspan-bidi
SVG import: a nested tspan keeps its direction and unicode-bidi
2026-11-14 16:49:38 +07:00
BFlat e229c5948e Merge pull request #7497 from dotCooCoo/fix/palette-layer-delete-once
Command Palette: Delete Selection asks first, as the Layers panel does
2026-11-14 16:49:30 +07:00
BFlat 73c59de0c2 Merge pull request #7424 from ruchirguitar/feat/layers-row-context-menu
Layers: row context menu and actions
2026-11-14 16:49:22 +07:00
ruchirguitar 22fc487cb5 #6613: reconcile main and preserve Czech parameter literals 2026-11-14 14:05:01 +05:30
ruchirguitar 71df7e0e6d #6613: apply approved Gujarati proofreading corrections 2026-11-14 12:20:13 +05:30
BFlat 2e9c9ab200 Merge pull request #7392 from dotCooCoo/fix/hindi-literal-values
i18n: messages keep bracketed field names and accepted values in English
2026-11-14 13:44:17 +07:00
BFlat 9ce826bc24 Merge pull request #7358 from dotCooCoo/feat/actions-button-mode
Actions: Button Mode shows actions as colored buttons that play on a click
2026-11-14 13:44:09 +07:00
BFlat 05409f76f5 Merge pull request #7394 from dotCooCoo/fix/ai-linked-image-warp
.ai save: a linked image with a Warp keeps its live Warp and its link
2026-11-14 13:44:00 +07:00
BFlat 44aebeba77 Merge pull request #7393 from dotCooCoo/fix/recovery-keeps-open-notes
Recovery: restoring documents keeps their linked-file lines and warnings
2026-11-14 13:43:52 +07:00
BFlat 6beeb9e2a4 Merge pull request #7262 from dotCooCoo/feat/smooth-cursor-without-path
Smooth: the cursor shows Not Allowed when no path is selected to smooth
2026-11-14 13:43:44 +07:00
BFlat 27f8cf90f5 Merge pull request #7351 from dotCooCoo/fix/titlebar-pref-note
Preferences: System Title Bar says when the desktop keeps the title bar either way
2026-11-14 13:43:36 +07:00
BFlat 2169e229f6 Merge pull request #7376 from dotCooCoo/fix/int-param-wrong-type
MCP: an integer given as a string or a fraction is refused as the wrong type, not reported as missing
2026-11-14 13:43:27 +07:00
BFlat ab959b95a8 Merge pull request #7369 from dotCooCoo/fix/ai-hidden-ruler-guide
.ai import: hidden ruler guides open as ruler guides with their own state
2026-11-14 13:43:11 +07:00
BFlat 18266da1e1 Merge pull request #7328 from dotCooCoo/fix/save-unused-option-notes
Save, Export for Screens: warnings name an option the file doesn't read
2026-11-14 13:42:55 +07:00
BFlat 0f88bb1fa9 Merge pull request #7372 from dotCooCoo/feat/home-learn-section
Home: a Learn section lists the tutorials and the Quick skill guide
2026-11-14 13:42:47 +07:00
BFlat 0ca2952093 Merge pull request #7363 from dotCooCoo/fix/stained-instance-export
Symbols: a stained instance keeps its stain in SVG, PDF and the other exports
2026-11-14 13:42:39 +07:00
BFlat aa5b635b32 Merge pull request #7388 from dotCooCoo/fix/snap-glyph-parametric-slice
Smart Guides: Parametric Shape and Slice tools snap as the drawing tools do
2026-11-14 13:42:31 +07:00
BFlat be93e4b3f2 Merge pull request #7377 from dotCooCoo/fix/symbol-expand-reset-bbox
Symbols: Break Link and Expand keep an instance's bounding box
2026-11-14 13:42:23 +07:00
BFlat 2a56e33953 Merge pull request #7355 from dotCooCoo/fix/cs-message-rows
i18n: Czech translates 1,813 of the status and error messages the untranslated report lists
2026-11-14 13:42:12 +07:00
BFlat 4b3df93745 Merge pull request #7371 from dotCooCoo/fix/batch-swatch-default-paint
Swatches: swatch steps in a batch change the paints for new art
2026-11-14 13:42:04 +07:00
BFlat 57933a8046 Merge pull request #7385 from dotCooCoo/fix/type-panels-story-wide
Type: Character and Paragraph panel changes apply to every frame of a selected story
2026-11-14 13:41:46 +07:00
BFlat 8cc8ab0781 Merge pull request #7352 from dotCooCoo/fix/zh-hant-message-rows
i18n: Traditional Chinese has a row for 1,813 of the messages the untranslated report lists
2026-11-14 13:41:36 +07:00
BFlat d8f180006a Merge pull request #7382 from ncic/pencil-alt-close-straight
Pencil: a closed stroke closes with a straight segment
2026-11-14 13:41:27 +07:00
dotCooCoo d1bd70fba9 Merge main into feat/colr-gradient-repeat 2026-11-13 22:37:59 -08:00
dotCooCoo 380b67f1bc Command Palette: Delete Selection asks first, as the Layers panel does
The palette listed the Layers panel's Delete Selection twice: as
Window › Layers › Delete Selection, which ran layer.delete and deleted a
layer holding art without asking, and as a bare Delete Selection, which
ran ui.layerDelete and asked first.

- The palette now lists one Window › Layers › Delete Selection result,
  which runs ui.layerDelete, so a pick asks before deleting a layer or
  sublayer that holds art. Scripts and the control channel still run
  layer.delete at once.
- New Brush…, Brush Options…, Symbol Options…, Import SVG Filter… and
  Convert to Text were also listed twice under the same name, once as
  the engine command, which the palette ran with no params. Each is now
  listed once, as the UI command that opens its dialog or file chooser
  or acts on the edited paragraphs.
- A search for a wrapped engine command's id or menu path still finds
  the one result.

Docs: docs/target-app-parity.md (Layers panel deletion).
2026-11-13 22:23:25 -08:00
dotCooCoo a008a0d68e SVG import: a nested tspan keeps its direction and unicode-bidi
A <tspan>, <textPath> or <a> inside a <text> whose unicode-bidi is embed
now gives its characters its direction as their Character Direction. An
element with normal stays in its parent's embedding, unicode-bidi is not
inherited (inherit takes the parent's value), and the <text> keeps its
own paragraph direction. A run that SVG export writes with direction and
unicode-bidi="embed" now opens with its Character Direction again.

Character Direction holds one level of embedding and no override or
isolation, so bidi-override, isolate and isolate-override are imported
as embeddings in their direction, plaintext as an embedding in the
direction of its first strong character, and an embedding inside
another as an embedding of its own, each with an import warning.
unicode-bidi: plaintext on the <text> runs and anchors each paragraph
in the direction of its first strong character.

https://www.w3.org/TR/SVG11/text.html#RelationshipWithBi-directionality
https://www.w3.org/TR/css-writing-modes-3/#unicode-bidi
2026-11-13 22:21:42 -08:00
dotCooCoo 3341061ca3 i18n: Simplified Chinese translates 114 status and error messages that no catalog had
untranslated_report lists 167 status and error messages that no
complete-message catalog translates. zh-hans.tsv gains 114 @msg rows for
the ones no open pull request covers: 3D and Revolve limits, image export
and encoding errors, color profiles, color books and swatch exchange
files, binary DXF and DWG import, path operations, swatch, graphic style
and action set libraries, and zip, script and regular expression errors.
Placeholders, backticked names, command ids and listed values stay as the
English writes them.

The other 53 (composite fonts, SVG filters, read roots and graph design)
are left to #7211, #7378 and #7405. docs/localization-parity.md and
docs/target-app-parity.md give the new counts: 3,554 @msg rows, and 55
messages the report lists for zh-hans, all of them translated by open
pull requests.
2026-11-13 22:11:05 -08:00
dotCooCoo 82842e4fe0 Clipboard: a Wayland read or send ends when the other app moves no data for 2 s
On the core Wayland clipboard, a read waited for the app that copied to
close its pipe, and a send wrote until the app that pastes took all of
the data. An app that left its pipe open and stopped held the one read
worker, so later pastes failed at once, or held one of the eight send
threads until it closed its end.

Reads and sends now use the pipe nonblocking and wait for it with poll.
When no byte moves for 2 s (VectorCraft's own limit, the existing text
wait) the read fails without pasting partial data and the send stops;
both close their pipe. The wait starts again after each byte that moves,
so a large transfer that keeps going is not cut short.
2026-11-13 22:09:17 -08:00
dotCooCoo b386d54264 Image Trace: centre-lines quality measures Create Strokes' split on a mixed-width body
The centre-lines class gains a mixed-width body scene: one disc of radius
24 px with arms of 2, 3 and 5 px that start inside it, Stroke 6 px, and no
other ink. A test checks that the scene is one connected shape and that
both the anti-aliased and hard input trace as one fill and three strokes
that reach all three free ends.

docs/image-trace-quality.md's centre-lines section is measured again on
current main (24 scenes, two runs identical in every column but ms). The
new scene finds 100.0% of its arms with 99.3% / 98.3% of the disc filled;
mix now traces as 6+3 paths with 99.9% / 99.8% found and 7/7 ends, where
the earlier whole-blob rows showed 3+1, 57.3% and 6/7. All other rows
are unchanged except ms.
2026-11-13 21:48:57 -08:00
ruchirguitar 7929c95ce9 #6613: guard web Gujarati selection and address local review 2026-11-14 10:29:25 +05:30
ruchirguitar f965fd6f4a Merge branch 'upstream/main' into feat/layers-row-context-menu 2026-11-14 09:58:09 +05:30
ruchirguitar 05aef1f2c2 Merge remote-tracking branch 'origin/main' into pr-6613 2026-11-14 09:52:17 +05:30
dotCooCoo fb9d7208d5 Merge main into fix/ko-message-rows 2026-11-13 20:20:23 -08:00
ruchirguitar 0ff98d0380 feat(layers): implement row context menu and actions
- Add right-click context menu on layer, group, and object rows:
  - Options... / Layer Options... / Options for Selection...
  - Duplicate <name> / Duplicate Selection
  - Delete <name> / Delete Selection
  - Lock Others / Unlock All Layers
  - Hide Others / Show All Layers
  - Locate Object
  - Collect for Export
- Select unselected row on right-click; preserve multiselection if already highlighted
- Dispatch actions via registered engine commands with Undo/Redo tracking
- Add headless egui tests covering selection, dispatch, and state integrity
- Update gaps and ui-parity documentation for G12
2026-11-14 09:47:46 +05:30
ruchirguitar 6f6746bd72 #6613: reconcile Gujarati catalog and complete current interface coverage 2026-11-14 09:44:24 +05:30
dotCooCoo 3d40ba6c8e Type: COLR glyphs with repeating or reflecting gradients draw as vector art
A COLRv1 linear or radial gradient whose color line repeats or reflects
made the whole glyph an image. Such a gradient now reads into a vector
gradient with the same spread. The COLR specification repeats the
interval from the first color stop to the last, so one run of the stops
spans the gradient's vector:
https://learn.microsoft.com/en-us/typography/opentype/spec/colr

A repeating or reflecting radial gradient that starts at a circle stays
an image, and so does a repeating or reflecting gradient with a stop
whose palette index is outside the palette. A color line with an extend
value the specification does not define now pads, as the specification
says, instead of making the glyph an image.
2026-11-13 19:30:58 -08:00
Dylan M. Taylor 1e4e3534f5 Merge pull request #7398 from storytold/feat/craft-libs-migration
Migrate CAD (DXF), EPS/PostScript, and SVG to craft-libs (#778)
2026-11-13 22:14:10 -05:00
dotCooCoo 485636acf8 Merge main into fix/zh-hant-message-rows 2026-11-13 19:09:36 -08:00
dotCooCoo 751b50bf58 i18n: messages keep bracketed field names and accepted values in English
49 status and error messages in the Hindi, Bulgarian, Danish,
Indonesian, Dutch, Brazilian Portuguese, Swedish and Turkish catalogs
translated the field names in brackets, such as `[subpath, anchor]` or
`[start, end]`, which the parameter documentation spells in English, or
the values an `unknown` or `bad model` message lists, such as
`(points, lines)` or `(left|right|top|bottom)`. Commands match those
values against the English words, so a user who passed the translated
value got the same error again. These rows now keep the English names
and values and translate the rest of the sentence.

A new test, translated_messages_keep_the_field_names_and_values_their_english_lists,
checks every catalog for bracketed field lists, `a|b|c` value lists and
the values listed in parentheses after `unknown` and `bad model`.
2026-11-13 19:01:48 -08:00
dotCooCoo 87c8def043 .ai save: a linked image with a Warp keeps its live Warp and its link
A linked image whose appearance is one Warp effect, with no opacity mask,
was saved to the .ai editing data as its drawn art, so its live Warp was
lost. It is now written with an art style of that Warp, as an embedded
image is: its bent pieces are its drawn look, and the image itself
follows on %_ lines as a placed file with its path, its folder relative
to the document's and its preview. In an opacity mask's art the copy is
embedded, with the existing warning for linked images in masks.

Opening such a file reads the image back linked, with its Warp live.
A hidden image with a Warp, embedded or linked, is now compared with its
drawn look shown, so it keeps its Warp too; before, the look drew
nothing and the image came in as its drawn pieces.
2026-11-13 18:51:03 -08:00
dotCooCoo fecf724501 Smart Guides: Parametric Shape and Slice tools snap as the drawing tools do
The Parametric Shape tool's center and the Slice tool's corners snapped
with Smart Guides to the bounds of the art only, so View › Snap to Glyph
had no effect on them, and neither did the anchors and segments of
paths that the other drawing tools snap to. The point dragged out from a
Parametric Shape's center did not snap at all, and neither tool showed
Smart Guides while hovering before a press.

Both tools now snap through the drawing tools' shared snapping
(DrawSnap). A Parametric Shape's center (from a drag or a double-click),
the point dragged out from it, and a slice's corners land on glyph
guides and on path anchors and segments. The guides show while hovering
and during the drag. When a ruler guide then takes a slice corner, the
Smart Guides are no longer shown. A click with the Parametric Shape tool
still draws nothing when its center snaps a few pixels from the pointer.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-11-13 18:50:03 -08:00
dotCooCoo 59084a3aab Merge main into fix/recovery-keeps-open-notes 2026-11-13 18:48:54 -08:00
dotCooCoo 01de2a14cf Recovery: restoring documents keeps their linked-file lines and warnings
After Restore in the dialog Data Recovery shows at launch, the status
bar wrote the restore count over the line about the restored document's
linked files, and the warnings each copy restored with were never shown.

The status bar now shows the count followed by the first of the
restored documents' notes: each document's lines about its linked
files, then its warnings, what reading the copy left out first, named
with the document's title when more than one was restored. Hovering
the message lists them all. The count is the number of documents
restored.

The questions about each restored document's missing or modified
linked files now come one document at a time, with that document made
the current one, so a later document's question no longer replaces an
earlier one's. When a copy can't be restored, the status bar shows the
error and its hover keeps the count and the restored documents' notes.
2026-11-13 18:47:55 -08:00
BFlat 446bf59bc2 Merge pull request #7265 from dotCooCoo/feat/live-paint-cursor-swatch-preview
Live Paint Bucket: Cursor Swatch Preview and arrow keys pick swatches
2026-11-14 09:33:39 +07:00
BFlat 02dd94e9b8 Merge pull request #7347 from dotCooCoo/fix/corner-set-member-keys
Path Precision Tools: Corner commands refuse unknown item keys
2026-11-14 09:33:31 +07:00