A filled glyph joins a run of the same fill whatever its stroke, so with
fill and stroke rendering shown a glyph at a time, the stroke replayed
over the last glyph restyled the whole run: glyphs before it took its
cap, join and miter limit. When that stroke differs from the run's, the
glyph's text now splits off into a run of its own; the line's text is
unchanged, so slots, gaps and authored flags still line up.
Also record the change in the parity and roadmap docs.
Merge current main and retain both the Pencil snapping documentation and Tech Circuit library evidence. Only docs/mcp.md required manual conflict resolution. Focused checks passed: no conflict markers or whitespace errors, all 28 catalogs retain four unique nonempty labels, and brush implementation/tests remain unchanged. No full local Cargo CI rerun.
The rename field in Export for Screens tracked the artboard by its index. If the
artboards changed order while a name was typed (a command from the control channel
or MCP), Enter renamed the artboard that had moved into that index. The field now
tracks the artboard by its id and by the document it was opened in. When that
artboard is deleted, or another document becomes active, while its name is typed,
the field closes, no artboard is renamed, and Escape closes the dialog again.
Preserve Weather Icons and the Tech Circuit library while resolving documentation and Hungarian catalog conflicts. Validated all 13 cargo xtask ci gates on Linux and a fresh deep CodeRabbit review with zero findings.
* PDF import: outlined Indic glyphs keep their own stroke and transparency (#5235)
Follow-up to #6906, for two review findings on how a line kept as
outlines is joined into paths:
- Glyphs were joined when their stroke widths matched; dash, cap, join
and miter limit were ignored, so a dashed glyph took the stroke of the
solid one before it. They join only when the whole stroke matches.
- Translucent glyphs were joined into one fill, where overlapping marks
paint once instead of compositing as the file draws them. Only opaque
glyphs join.
Also records the fix in the PDF row of docs/target-app-parity.md and in
docs/roadmap.md, as AGENTS.md asks.
Tests: outlined_glyphs_stroked_differently_stay_apart and
outlined_translucent_glyphs_stay_apart (both fail without the change).
* PDF import: outlined Indic glyphs under a soft mask stay apart; check kept geometry (#5235)
Review follow-ups on #6957 and #6906:
- Glyphs kept as outlines under a soft mask were joined into one path,
so the mask was applied once to all of them where the file applies it
to each glyph. They now join only when no soft mask is active.
- The fallback tests counted outline nodes only. A new test compares the
kept outlines (element count and bounding box) with the same file
opened as outlines, so a dropped or moved glyph fails it.
Tests: outlined_glyphs_under_a_soft_mask_stay_apart (fails without the
change) and kept_glyphs_are_where_the_file_draws_them.
* PDF import: mask outlined Indic glyphs one by one under a soft mask (#5235)
Review follow-up on #6957. Keeping glyphs out of one shared path was not
enough: each path still went into the soft mask's queue and
flush_masked wrapped them all in one masked group, so a mask that is not
constant was applied once to every glyph, where overlapping glyphs
composite one by one in the file.
With a soft mask active the queued art is now drained before the first
glyph and after each one, so every glyph gets a mask of its own.
Test: outlined_glyphs_under_a_varying_soft_mask_are_masked_one_by_one
checks that each outlined glyph carries its own mask (0 of 3 without
the change).
* #6957: clarify soft-mask exception in glyph grouping docs
---------
Co-authored-by: ruchirguitar <info@jeevantirth.org>
Pin craft-ui to c4b8405d, which adds a top edge and the canvas-side top
corner to icon-strip flyouts and saves the moved top per group. Accept
its new MoveFlyoutTop docking action, and restore the saved top when a
group returns to its place. A docking regression checks the cursors, an
upward top-edge and free-corner drag with the bottom and icon-column edge
fixed, and the top after reopening and in a saved layout.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Codex <codex@openai.com>
Adds Gujarati to the target-app-parity localization evidence list and
the docs/roadmap.md milestone notes, following the Hindi entries, and
marks the catalog as reviewed by a native speaker with zero/one
singular plurals. Scores and estimates unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Window › Brush Libraries gains Ink and Wash after Art Ribbons: Tapered Ink, an art brush broad near its start that thins to a fine tip; Brush Pen, a calligraphic brush whose size follows the pen pressure; and Soft Wash and Pooling Wash, art brushes of translucent gray layers. The art brushes take the stroke color as tints. The names, shapes and opacities are VectorCraft's own.
Docs: docs/mcp.md, docs/gaps.md, docs/roadmap.md, docs/target-app-parity.md.