Commit Graph
4827 Commits
Author SHA1 Message Date
moppeeer ff235445b3 Merge remote-tracking branch 'origin/main' into paragraph-shading-indesign
# Conflicts:
#	ROADMAP.md
2026-10-24 15:22:34 +02:00
dotCooCoo 42d2857fcc Type › Notes › Previous Note and Next Note: the insertion point moves from note to note, as in InDesign
The new commands note.previous and note.next move the insertion point
to the previous or next editorial note in its story and put the caret
after the note's anchor. Previous Note skips the note whose anchor the
caret directly follows, so repeated use reaches every note. Each item
is unavailable when no note lies in its direction in the story, or when
the insertion point is in a table cell or a footnote. The items follow
the Notes panel item in Type › Notes, with translations in the catalogs
that already translate Next Document and Previous Document.
2026-10-24 06:17:31 -07:00
moppeeerandClaude Opus 5.5 ebed87e192 Checkbox: one widget_info call
The merge of main kept both the branch's and main's accessibility call, so a
click emitted two Clicked events. Main's (with the enabled state) stays.
Found by CodeRabbit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:59:52 +02:00
hslrmnp27 07547f0b97 T.DE1: resolve PR conflicts with current upstream documentation
Merge upstream/main 4be45a71, preserving German 2006 hyphenation. Keep current documentation summaries, both progress histories, and the new cross-column hyphenation behavior description.

Validation: fmt, PDF dependency checks, workspace Clippy, layers and German hyphenation tests pass. Full CI stops at four known Windows engine test failures in unchanged upstream paths and directory-redirect checks.
2026-10-24 14:54:00 +02:00
Andee CollardandClaude Opus 5.5 aeccc9c5d3 PDF: validate an actual layer rewrite for explicit all-on choices
skylartaylor's review: a PDF can list readable layers yet fail the visibility
rewrite. On a synthetic 33-section xref history, object.layerOptions with
useDefaults:false and an empty hidden list was accepted (only hidden names
triggered #1670's rewrite check), the canvas could not draw the choice and
PDF export then failed.

Every explicit choice now runs one actual pdf_hide_layers rewrite per
distinct source before any item is edited or undo is recorded; this subsumes
the separate layerless check. Resetting to file defaults (useDefaults:true
or the legacy empty list) needs no variant and bypasses the check. #1670's
fail-closed canvas handling is kept alongside the explicit-override state: a
stored explicit choice (including all-on) whose source can no longer be
rewritten draws nothing rather than the unmodified source, and export errors.

The new regression test fails before this change (the all-on request is
accepted) and covers both selection orders, atomicity, undo depth, reset
bypass and the stale all-on fail-closed path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:51:48 +01:00
Andee CollardandClaude Opus 5.5 96a4a9060b Format: test one version 4 reader keeping both layer capabilities
skylartaylor review of #1647/#1671: both PRs introduced native format 4 for
different capabilities. Stacked on #1647, version 4 is one capability:
required_version (the single place that picks a version) asks for it when a
document has retained placed-graphic layer options or an explicit all-on PDF
layer choice, so a version 4 reader understands both. That merge was made
while rebasing "PDF: distinguish all-on layer choices from file defaults",
which also replaced its Document::all_items scan (document spreads only)
with Document::has_explicit_all_on_pdf_layers, covering parent spreads,
groups, anchored objects and nested story content; an all-on PDF on a parent
page previously saved as version 2.

This save/reopen test holds both features in one document, checks each
alone still needs 4, that documents with neither keep 3 (EPS) or 2, and that
a parent-spread all-on choice needs 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:51:37 +01:00
moppeeerandClaude Opus 5.5 7a50e48081 Text wrap: an all-null offset array keeps a custom boundary
{"offset": [null, null, null, null]} parsed as an offset edit, so the custom
wrap boundary (from IDML) was dropped although no side changed. An array with
no number in it is no offset edit. Found by CodeRabbit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:35:32 +02:00
aiongg 4be45a713a Anchored text frames compose against the grid and page where they are placed (#1710)
* Anchored text frames compose against the grid and page where they are placed

An anchored text frame is not a spread item, so frame_specs composed it at
its stored transform: no page, no page side, no page rect, and a baseline
grid phase taken from that transform. A note set to Only Align First Line
to Grid snapped to the wrong line, and page-number markers and
spine-relative alignment inside it saw no page.

The composer now looks up the host story's composition first, finds where
it placed the frame (in its frames' anchored objects, footnotes or table
cells) and composes the frame's story against that placement
(ComposeOptions::placed). The cache does the same and adds the placement
to the entry's signature, so a note recomposes when its host moves it.
Host lookups stop after eight levels, which bounds stories anchored in
each other.

* Anchored text frames: the cache keys on the placed spread's pages
2026-10-24 08:30:03 -04:00
moppeeer 4400fb7868 Merge remote-tracking branch 'origin/main' into global-units-preferences
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/cmd/file.rs
2026-10-24 14:29:28 +02:00
moppeeer 3dd80c84c3 Merge remote-tracking branch 'origin/main' into hyphenation-french-italian
# Conflicts:
#	ROADMAP.md
#	docs/typography-parity.md
2026-10-24 14:28:37 +02:00
andeecollard 57658368af PDF: validate layer overrides and query mixed selections 2026-10-24 13:23:02 +01:00
andeecollard 8d295b101e PDF: distinguish all-on layer choices from file defaults 2026-10-24 13:23:02 +01:00
Andee CollardandClaude Opus 5.5 2633fe8b5d Format: choose the native version in one place; share v4 with #1671
skylartaylor's review: #1647 and #1671 each introduced native format 4 for a
different capability, so a reader that understood only one could accept a
file carrying the other and silently drop its settings. No release has shipped
v4 (main and v0.12.0 still write at most 3), so v4 is defined as one
capability covering both retained placed-graphic layer options and explicit
all-on PDF layer choices; #1671 is stacked on this branch.

Move the version choice into required_version so every new capability is
decided in one place, document the shared v4 contract on VERSION, and test
that plain, EPS-only and layer-option documents keep 2, 3 and 4 respectively.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:22:08 +01:00
andeecollard b7e36bf616 M6: retain layer order when native parents reopen closed subtrees 2026-10-24 13:22:08 +01:00
andeecollard 3d362d0bdf M6: preserve nested graphic layers and retain export diagnostics 2026-10-24 13:22:08 +01:00
andeecollard 7074dc8a85 M6: preserve per-placement graphic layer options 2026-10-24 13:22:08 +01:00
moppeeer 1931ac6d26 Merge remote-tracking branch 'origin/main' into object-menu-order
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:21:30 +02:00
moppeeer 47dfcc3f4a Merge remote-tracking branch 'origin/main' into codex/pages-panel-sections
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:52 +02:00
moppeeer d42d31d29f Merge remote-tracking branch 'origin/main' into codex/new-section-dialog
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:50 +02:00
moppeeer 5ea8bef42d Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:49 +02:00
moppeeer 2a972a01c1 Merge remote-tracking branch 'origin/main' into direct-select-delete-image
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:46 +02:00
moppeeer 39bf3da8a4 Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 14:19:44 +02:00
moppeeer 8da257ff83 Merge remote-tracking branch 'origin/main' into codex/toc-dialog-title-width
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 14:19:43 +02:00
moppeeer ddb83321d3 Merge remote-tracking branch 'origin/main' into codex/toc-more-options
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:41 +02:00
moppeeer bd03c931dd Merge remote-tracking branch 'origin/main' into codex/pages-section-marker-dialog
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:40 +02:00
moppeeer 346a79a3e7 Merge remote-tracking branch 'origin/main' into properties-opacity-slider
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:37 +02:00
moppeeer 54e86b3e8c Merge remote-tracking branch 'origin/main' into properties-wrap-offsets
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:35 +02:00
moppeeer f5788a27a1 Merge remote-tracking branch 'origin/main' into loaded-cursor-thumbnail
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:34 +02:00
moppeeer 5be975d4df Merge remote-tracking branch 'origin/main' into properties-auto-fit
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/widgets.rs
2026-10-24 14:19:30 +02:00
moppeeer 6ac4a609fb Merge remote-tracking branch 'origin/main' into snap-page-centre
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:27 +02:00
moppeeer 74c994270f Merge remote-tracking branch 'origin/main' into corner-options-dialog
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:19:23 +02:00
moppeeer 2a748ed828 Merge remote-tracking branch 'origin/main' into type-drag-new-frame
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:21 +02:00
moppeeer 05fdba8d57 Merge remote-tracking branch 'origin/main' into create-guides-spread
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:20 +02:00
moppeeer 8f361c98cd Merge remote-tracking branch 'origin/main' into centimeters-four-decimals
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:18 +02:00
moppeeer 5b5077fb8b Merge remote-tracking branch 'origin/main' into corner-menu-icons
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:19:15 +02:00
moppeeer a2ed2364f6 Merge remote-tracking branch 'origin/main' into direct-select-anchor-points
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:13 +02:00
moppeeer cf6d926d35 Merge remote-tracking branch 'origin/main' into indesign-default-swatches
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:12 +02:00
moppeeer f435140443 Merge remote-tracking branch 'origin/main' into frame-readout-document-units
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:11 +02:00
moppeeer 05b6362d8b Merge remote-tracking branch 'origin/main' into properties-text-frames-apply-to
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:07 +02:00
moppeeer 051154c99e Merge remote-tracking branch 'origin/main' into graphic-frame-x-corners
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:04 +02:00
moppeeer d579cb9d7a Merge remote-tracking branch 'origin/main' into drawing-feedback
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:03 +02:00
moppeeer 49a5971175 Merge remote-tracking branch 'origin/main' into properties-anchor-points
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:19:01 +02:00
moppeeer 4cfe79a1d7 Merge remote-tracking branch 'origin/main' into swatch-row-icons
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
#	docs/target-app-parity.md
2026-10-24 14:19:00 +02:00
moppeeer badcf57cf6 Merge remote-tracking branch 'origin/main' into clear-fitting-options
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/de.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:18:57 +02:00
moppeeer 1b74e4dbb6 Merge remote-tracking branch 'origin/main' into align-to-glyphs
# Conflicts:
#	ROADMAP.md
2026-10-24 14:18:51 +02:00
moppeeer 0f653bcc73 Merge remote-tracking branch 'origin/main' into effect-blend-modes
# Conflicts:
#	ROADMAP.md
2026-10-24 14:18:42 +02:00
moppeeer 7ac7c4718d Merge remote-tracking branch 'origin/main' into effects-angle-dial
# Conflicts:
#	ROADMAP.md
2026-10-24 14:18:41 +02:00
moppeeer 43bba37498 Merge remote-tracking branch 'origin/main' into text-frame-options-layout
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
#	docs/target-app-parity.md
2026-10-24 14:18:33 +02:00
moppeeer 7e7346ee9b Merge remote-tracking branch 'origin/main' into paragraph-rule-types
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:18:32 +02:00
moppeeer 0724d00dc1 Merge remote-tracking branch 'origin/main' into paragraph-style-general
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/cs.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ka.rs
#	crates/ui-egui/src/i18n/pl.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/ru.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-24 14:18:30 +02:00