Commit Graph
5498 Commits
Author SHA1 Message Date
dotCooCoo ae39914b9f Remove Breaks: a partly selected story's frames are gone through once
When only some frames of a threaded story are selected, Remove Line
Breaks and Remove Paragraph Breaks built the story's frame list again
for every selected frame of it, so the work grew with the square of the
frame count. The command now notes a thread once its story is found not
to be selected in full, and reads that thread's other selected frames
on their own without going through the thread again. Each selected
frame still loses its own breaks, in the order selected, as one undo
step.

A test-only counter in threads.rs counts story_in calls, and
remove_breaks_goes_through_a_partly_named_story_once checks both break
kinds with frames named out of order and twice.
2026-11-14 08:58:57 -08:00
dotCooCoo 10225d82e5 Export: an HP-GL plot of the art's bounds leaves out images in symbol art
The bounds of a plot of the art's bounds no longer count the objects a
plot leaves out (placed images, objects at 0% opacity, unpainted paths)
when they sit in the art of a symbol. An instance whose symbol holds
nothing else is left out, so a document with only such instances is
refused with "nothing to export". The art of a dynamic symbol, and of a
group with effects, fills or strokes of its own, is measured whole.
2026-11-14 08:50:21 -08:00
dotCooCoo dac3fe54d8 Learn: Gujarati rows for the new command labels
The Gujarati catalog lists every menu and command label, and it had no
rows for Show Learn Tab, Show Skill and Back One Level. It now has them.

docs/mcp.md said the For you and Skills tab buttons run learn.tab. A tab
button runs it only when the panel shows the other tab, and the page now
says so.
2026-11-14 08:49:48 -08:00
ruchirguitar 415783e926 Symbols: add right-click context menu to panel items 2026-11-14 21:59:45 +05:30
dotCooCoo 46c9f922c2 Type: a document draws only its own composite font definitions
While a document's composite fonts are lent, type naming a composite font
the document does not define is set as in a missing font, even when the
front document or the document a placed document sits in defines one of
that name. A document that defines no composite font gets an empty scope
too, so a document in the back, a tiled window, a thumbnail or an export
made while another document is in front no longer borrows the front
document's definitions. A temporary document drawn while a document draws
keeps that document's fonts, and type laid out with nothing lent still uses
the registered ones.

- FontDb::composite_font looks only in the latest loan of the database.
- lend_composite_fonts lends an empty set at the top level when the
  database holds composite fonts; lend_document_composite_fonts also lends
  one inside another loan, for placed documents, back-document measuring
  and threaded reflow on open.
- A loan that leaves out a registered font gets its own generation, so
  layouts made with that font are not reused under it.
2026-11-14 08:16:02 -08:00
dotCooCoo 745dccb376 Merge main into fix/learn-panel-commands 2026-11-14 08:15:49 -08:00
dotCooCoo 93f9ec0346 Docs: only learn.markStep checks a tutorial id, not learn.resetProgress
docs/mcp.md said that for both learn.markStep and learn.resetProgress a
missing, non-string or unknown `tutorial` is an error. learn.resetProgress
takes no params and clears the progress without reading `tutorial`
(crates/ui-egui/src/panels/learn.rs), so the sentence now names the
tutorial errors under learn.markStep alone, and the rule that an error
changes nothing stays with them.
2026-11-14 07:59:21 -08:00
dotCooCoo 10f94b544d MCP: livePaint.info lists every appearance row of a face or edge
livePaint.info reported only the top fill of each face and the top
stroke and weight of each edge, so a lower row that draws under an
unpainted top row was not visible to a client. Each face and edge now
also carries `appearance`: every fill and stroke row, bottom first, as
{index, kind, paint, opacity, visible, width (strokes only), drawn}.
`drawn` follows Expand's rule row by row: the part is shown with an
opacity above 0, and the row is shown, has paint and an opacity above
0, and a stroke has a weight above 0. The existing `fill`, `stroke`,
`width`, `bounds`, `sources`, `gapOptions` and `gaps` fields are
unchanged.

The params text no longer says the group defaults to the selection:
the command takes `group`, or `id` when `group` is left out, and
returns an error without either.
2026-11-14 07:57:56 -08:00
dotCooCoo fbf2bee87b MCP: a malformed artboard or history index is reported as not a whole number
The artboard commands that take `index` or `indices`, a replayed
`selectedArtboards`, the artboard Align and Distribute commands
(`artboard`, `activeArtboard`), `edit.newDocumentFromState` and Paste in
Place, in Front and in Back now report a value that is not a whole number
with "`<key>` must be a whole number" or "`<key>` must contain whole
numbers", naming the key. A whole number that names no artboard or state
keeps `no such artboard`, `no history state N` or the paste range message.

- A null artboard `index` is `missing index`, as for other required keys.
- An `indices` value that is not a list, an empty list and a malformed
  entry each have their own message naming the key.
- `edit.newDocumentFromState` still uses the current state for an omitted
  or null `index`.
- Paste checks the form of both `artboard` and `artboards` before either
  range.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-11-14 07:57:00 -08:00
dotCooCoo 7d76b35710 .ai save: type written as outlines keeps wrapping by its bounds
Type that the editing copy writes as its outlines (mirrored type, type in
a clip or symbol, type the text document can't hold) put its Text Wrap
Options on the group of glyph outlines. The reader then wrapped area type
around the glyph shapes instead of the type's bounds, so the wrap region
changed when the file was opened.

The group now ends with an unpainted closed rectangle at the type's
geometric bounds, with the type's lock and hidden state, that carries the
wrap options; the group keeps the type's name and has no options of its
own. The `.ai` reader already reads an unpainted path with its own
options (`text_wrap` in crates/eps/src/import/ai/read/document.rs), and
wrap resolution descends into a group without options. The rectangle
counts toward the object limit; without room for it the options are left
out with the limit's warning. Type without finite bounds gets no
rectangle, as it had no wrap region before saving.
2026-11-14 07:48:03 -08:00
dotCooCoo 978b94cef1 i18n: localization doc marks Vietnamese messages as partial
The Vietnamese row's message column said "all" while the same cell counts messages without a Vietnamese row. It now says dialogs and tooltips are complete and messages are partial, as the Indonesian row does. The row and the evidence line in docs/target-app-parity.md give the catalog's current counts: 1,750 @msg and 49 @msgplural rows, with 1,875 messages in the untranslated report.
2026-11-14 07:45:06 -08:00
dotCooCoo e2cdedc6d0 Docs: recount Indonesian and Bosnian on current main
The Indonesian and Bosnian rows now give the catalog counts and the
untranslated-report gaps measured on main at 676f0524cc: Indonesian has
6,825 rows (1,036 @msg) and lacks 60 menu strings and 2,508 scanned
messages; Bosnian has 6,887 rows (1,144 @msg) and lacks 97 menu strings
and 2,416 scanned messages.
2026-11-14 07:36:08 -08:00
dotCooCoo 15e64f4057 Merge main into docs/localization-indonesian-bosnian 2026-11-14 07:25:48 -08:00
dotCooCoo 8c607c8070 Merge main into fix/type-no-op-undo-more 2026-11-14 07:24:09 -08:00
dotCooCoo a3f65c677a Merge main into fix/graph-wedge-legend-black-kept 2026-11-14 07:24:01 -08:00
dotCooCoo 132becf3ad Merge main into feat/smooth-keeps-corners 2026-11-14 07:20:07 -08:00
dotCooCoo 32e90d5e2c Merge main into fix/paste-copied-file-size-limit 2026-11-14 07:18:49 -08:00
dotCooCoo 17fcbe9950 Merge main into fix/vi-missing-message-rows 2026-11-14 07:16:52 -08:00
dotCooCoo fbb6546621 Merge main into fix/pdf-art-bounds-printing-layers 2026-11-14 07:15:53 -08:00
dotCooCoo 09eab2c93c Merge main into fix/blend-reversed-key-stroke-direction 2026-11-14 07:14:47 -08:00
BFlat 16d5710e8e Merge pull request #7430 from dotCooCoo/fix/es-missing-message-rows
i18n: Spanish translates 114 messages that no catalog had a row for
2026-11-14 21:55:57 +07:00
BFlat 2ebf037bc5 Merge pull request #7360 from dotCooCoo/feat/learn-progress-rings
Learn: steps get check boxes, and skill rings fill as tutorials are finished
2026-11-14 21:55:49 +07:00
BFlat 898553c79d Merge pull request #7563 from dotCooCoo/fix/text-zoom-marquee-space-moves
Zoom: Space moves a text-edit zoom marquee after Cmd is let go
2026-11-14 21:55:29 +07:00
BFlat edefbd0e7d Merge pull request #7449 from dotCooCoo/fix/links-stored-brush-art
Links: placed images in stored brush art get Links rows
2026-11-14 21:55:20 +07:00
BFlat cbba5e85fe Merge pull request #7528 from dotCooCoo/feat/ai-style-named-gradients
PDF/.ai import: graphic styles that paint with a named gradient load with it
2026-11-14 21:54:55 +07:00
BFlat b541d97a06 Merge pull request #7586 from dotCooCoo/fix/blend-spot-stop-plates
Blend: steps between gradients linked to the same spot swatch keep its process plates
2026-11-14 21:54:47 +07:00
BFlat 55939c1c54 Merge pull request #7594 from dotCooCoo/fix/panel-autoscroll-short-list
Panels: drag autoscroll scrolls the right way in a short list
2026-11-14 21:54:31 +07:00
BFlat 27a259e2db Merge pull request #7505 from dotCooCoo/fix/no-op-undo-steps
Undo: no step when Randomize Opacity or a type setting changes nothing
2026-11-14 21:54:21 +07:00
BFlat 32fbd81796 Merge pull request #7552 from dotCooCoo/fix/issue-7525
Fix #7525: Extrude & Bevel cuts sharp corners square instead of spiking
2026-11-14 21:54:11 +07:00
BFlat 66d24335e1 Merge pull request #7599 from dotCooCoo/fix/trace-hand-in-same-document
Image Trace: a finished trace is applied only to the document it was made in
2026-11-14 21:54:04 +07:00
BFlat 8863c41560 Merge pull request #7581 from dotCooCoo/fix/pdf-cmyk-image-keeps-icc
PDF export: CMYK images that keep their numbers carry their ICC profile
2026-11-14 21:53:33 +07:00
BFlat bde7be4390 Merge pull request #7447 from dotCooCoo/fix/text-inset-skips-seams
Type: area type insets stop at the frame's edges, not at an edge its contours share
2026-11-14 21:53:24 +07:00
BFlat 68b246851b Merge pull request #7261 from dotCooCoo/fix/smooth-keeps-closed-start
Smooth tool: smoothing over a closed path's first anchor keeps its start
2026-11-14 21:53:16 +07:00
BFlat 5762ec729b Merge pull request #7598 from dotCooCoo/fix/symbol-art-bounds-nested
Symbols: a symbol nested in symbol art is measured by its own art
2026-11-14 21:53:07 +07:00
BFlat 011d5c2b5d Merge pull request #7457 from dotCooCoo/fix/action-batch-step-number
Actions: Batch errors name the step by its place in the commands sent
2026-11-14 21:52:59 +07:00
BFlat aa21f10dd2 Merge pull request #7431 from dotCooCoo/fix/shortcut-optional-typed-params
Keyboard Shortcuts: panel menu commands with typed optional params can take a shortcut
2026-11-14 21:52:50 +07:00
BFlat 6e3ec907de Merge pull request #7592 from dotCooCoo/fix/brush-freehand-unknown-brush
Brushes: brush.freehand refuses a brush or style it cannot use
2026-11-14 21:52:42 +07:00
BFlat 158558c3d5 Merge pull request #7539 from dotCooCoo/fix/perspective-grid-noop-undo
Perspective: reapplying the current grid preset adds no undo step
2026-11-14 21:52:35 +07:00
BFlat c248d097ac Merge pull request #7545 from dotCooCoo/fix/remove-breaks-named-locked-type
Artwork Cleanup: text tools act on the locked or hidden type that ids names
2026-11-14 21:52:18 +07:00
BFlat 64dd5eb174 Merge pull request #7418 from dotCooCoo/fix/reflected-dimension-line
Dimension tool: a reflected aligned dimension has its line on the reflected side
2026-11-14 21:52:10 +07:00
BFlat 508a0b0180 Merge pull request #7597 from dotCooCoo/fix/separations-spot-stop-plates
Print: a spot gradient stop prints its process plates on the separations
2026-11-14 21:51:47 +07:00
BFlat 09f882b9d2 Merge pull request #7534 from dotCooCoo/fix/tiled-documents-own-profiles
Color management: documents behind the front one draw through their own profiles
2026-11-14 21:51:30 +07:00
BFlat 4807a2b6de Merge pull request #7596 from dotCooCoo/test/swatch-batch-spot-options-defaults
Swatches: test Spot Colors options and Default Swatches replace in a batch
2026-11-14 21:51:21 +07:00
BFlat a15b44fbe4 Merge pull request #7492 from dotCooCoo/fix/eps-bitmap-glyph-rollback-test
EPS: a test covers type taken back with its color bitmap glyph images
2026-11-14 21:51:13 +07:00
BFlat ea8aaa1a56 Merge pull request #7469 from dotCooCoo/fix/trace-flat-16-levels
Image Trace: clean flat art of 10 to 16 evenly spaced levels traces as flat color
2026-11-14 21:51:05 +07:00
BFlat b8b6a4a474 Merge pull request #7404 from dotCooCoo/fix/web-open-keeps-both-link-lines
Links: a web open with missing and modified links shows both lines
2026-11-14 21:50:57 +07:00
BFlat d4982efeab Merge pull request #7451 from dotCooCoo/fix/flat-logo-gray-between-black-and-white
Image Trace: Flat Logo traces a gray between black and white as one shape
2026-11-14 21:50:41 +07:00
BFlat ca546d0831 Merge pull request #7473 from dotCooCoo/fix/map-links-stop-plates
Swatches: a gradient stop unlinked from its spot swatch also drops its plates
2026-11-14 21:50:25 +07:00
BFlat 4c9d678863 Merge pull request #7591 from dotCooCoo/fix/swatch-edit-gradient-aspect
Swatches: a replacement gradient or pattern is stored the way a new swatch stores it
2026-11-14 21:50:09 +07:00
BFlat fc779c9412 Merge pull request #7506 from dotCooCoo/fix/cs-missing-message-rows
i18n: Czech translates 114 status and error messages that no catalog had
2026-11-14 21:49:35 +07:00