Commit Graph
1043 Commits
Author SHA1 Message Date
moppeeer dfd7091f64 Merge remote-tracking branch 'origin/main' into paragraph-shading-indesign
# 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
#	crates/ui-egui/src/icons.rs
2026-10-24 14:17:53 +02:00
moppeeer b16a4ccfdb Merge remote-tracking branch 'origin/main' into table-menu-insert
# Conflicts:
#	ROADMAP.md
2026-10-24 14:17:46 +02:00
moppeeer bce454453f Merge remote-tracking branch 'origin/main' into table-convert-dialogs
# 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:17:45 +02:00
aiongg d4c1322d97 Merge pull request #1709 from aiongg/w65-batch
Integration batch: book-chapter IDML baseline grids, hyphenation, and the Paragraph panel stack
2026-10-24 08:14:29 -04:00
dotCooCoo e51b2c6114 Type › Notes › Convert to Note: the selected text becomes a note, as in InDesign
The new command note.convertFromText removes the selected story text
and puts it into a new editorial note whose anchor sits where the text
was. It takes an optional author, and Convert Note to Text puts the text
back. DesignCraft refuses a selection in a table cell, or one that holds
a note, footnote, endnote, anchored object, index marker, text anchor,
cross-reference or table, and leaves the story unchanged. The item
follows New Note in Type › Notes, with translations in the catalogs that
already translate Convert Note to Text.
2026-10-24 04:18:18 -07:00
moppeeer 52c6ac3bf6 Merge remote-tracking branch 'origin/main' into paragraph-shading-indesign
# Conflicts:
#	ROADMAP.md
#	crates/compose/src/parabox.rs
2026-10-24 12:13:58 +02:00
moppeeer 77b69bc693 Merge branch 'direct-select-anchor-points' into properties-anchor-points 2026-10-24 11:46:24 +02:00
moppeeer 3cf44071fc Merge remote-tracking branch 'origin/main' into swatch-row-icons
# Conflicts:
#	docs/target-app-parity.md
2026-10-24 11:20:03 +02:00
moppeeer f677f1cd69 Merge remote-tracking branch 'origin/main' into text-frame-options-layout
# Conflicts:
#	docs/target-app-parity.md
2026-10-24 11:19:59 +02:00
moppeeer def888b6d8 Merge remote-tracking branch 'origin/main' into object-style-paragraph-styles
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-24 11:18:20 +02:00
moppeeer d2f6f7c338 Merge remote-tracking branch 'origin/main' into table-convert-dialogs 2026-10-24 11:13:15 +02:00
moppeeer e4cb6cffc7 Merge remote-tracking branch 'origin/main' into table-menu-insert 2026-10-24 11:06:43 +02:00
macadminHU 4ed5c7d9e6 Merge branch 'main' into codex/hungarian-localization 2026-10-24 10:44:09 +02:00
KnottyDyes 38d692089f PDF: preserve placed optional-content visibility in vector exports
Keep source defaults and per-frame hidden layers in plain and PDF/X-4 vector exports, including independent repeated placements, booklet output and book merging. Accept usage-application arrays and resource-only groups without a catalog configuration.

Use file-named warnings and all-ON defaults for recoverable default-configuration problems and unsupported base states. Add readable groups omitted from OCGs without discarding their visibility, combine concurrent recovery warnings, and generate missing names only when no frame override needs name matching. Retain errors for contradictory states, unresolved references and ambiguous name overrides.

Cache prepared variants per asset and hidden-name set while replaying recovery warnings through the existing deduplicating channel. Keep original source bytes when every group is visible and named, so reader-repaired cross-reference tables remain usable without an incremental layer update. When hidden groups or generated names require writing, reject an unusable cross-reference table with a file-named damage error and retain the first placement failure.

Cover visibility, recovery, names, independent placements, repaired cross-reference tables and vector output with 46 optional-content integration tests, plus preparation-cache and shared-buffer unit tests.
2026-10-24 01:54:58 -06:00
dotCooCoo a525894355 File Info: PDF export writes the document's title, author, description and keywords
File › File Info… opens a dialog with Document Title, Author,
Description, Keywords, Copyright Notice and Copyright Info URL, and the
document saves them. The new file.info command reads them with {} and
sets the fields it is given; "" or null clears a field, and keywords
are a list or one line split at semicolons and commas. file.info.get
returns the fields without editing the document, so opening the dialog
does not end a Data Merge preview.

Export PDF, PDF/X-4 and Print Booklet write the title, author,
description and keywords into the PDF's document information and XMP.
EPUB export takes the title and author from File Info, and HTML export
takes the title. A title or author given to the export replaces File
Info's, and an empty Document Title leaves the document's name as the
title. Export PDF's dialog no longer sends the document's name as the
PDF title, so the PDF takes its title from File Info; the file name
still comes from the document's name.
2026-10-24 00:20:21 -07:00
skylar taylor-barrick 7427a15863 M6: harden placed PDF layer variants (#1670)
Integrate current main (d8d78851) without rewriting the contributor's commits, retaining craft-libs 9f75d3dc.

Accept literal null trailer entries while rejecting actual or ambiguous encryption/hybrid markers. Structurally inspect bounded xref/trailer history instead of adopting trailer-looking comments. Preflight all selected source variants before editing/undo; preserve reset-to-defaults. Suppress stale unrewritable canvas overrides rather than revealing source content. Keep conservative all-content crop fallback without overcropping layerless/null stubs.

Validation: cargo xtask ci, all 9 gates passed; 3062 tests passed, 6 skipped; all 16 WASM-safe crates checked. 17 supported variants passed independent qpdf, logical preservation and Poppler pixel checks; 6 unsupported/repair-only cases refused. Direct-harness Claude Opus 5 reviewed the exact main-relative delta with no blocking findings.

No native-format changes or unrelated layer features. Synthetic regression fixtures are generated in test code.
2026-10-24 00:18:22 -06:00
aiongg 92c565e854 Merge #1570: Paragraph panel: InDesign's layout and panel menu
# Conflicts:
#	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 06:02:06 +00:00
aiongg 6d4b1f797f Merge #1486: Control panel (¶): Bulleted and Numbered List, Shading and Border, as InDesign's
# Conflicts:
#	crates/ui-egui/src/chrome.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
#	crates/ui-egui/src/panels/properties.rs
2026-10-24 06:01:20 +00:00
aiongg c428083d74 Merge #1483: Bulleted and Numbered List buttons give InDesign's default hanging indent
# Conflicts:
#	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 06:00:59 +00:00
aiongg 3903519c80 Merge #1459: Control panel: the text controls have InDesign's Character (A) and Paragraph (¶) modes
# Conflicts:
#	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 05:59:51 +00:00
aiongg 48ff7aa03e Merge #1457: Properties: ••• expands Character and Paragraph in place, as in InDesign
# Conflicts:
#	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 05:56:55 +00:00
aiongg 4cbeea2232 Merge #1572: Hyphenate Across Column: no column or frame ends in a hyphen when it's off 2026-10-24 05:52:41 +00:00
aiongg e11f9f6202 Merge #1703: Baseline grid: Relative To Top Margin starts the grid at each page's top margin
# Conflicts:
#	crates/compose/src/lib.rs
2026-10-24 05:51:57 +00:00
aiongg d8d7885172 Anchored objects: Relative to Spine mirrors custom positions on right-hand pages (#1702)
* Anchored objects: Relative to Spine mirrors custom positions on right-hand pages

* Anchored objects: page side from the frame's spread position; footnote cache keyed by page side
2026-10-24 01:34:05 -04:00
aiongg 14da000a35 Baseline grid: Relative To Top Margin starts the grid at each page's top margin
The setting was imported and editable but never read: the composer, the
canvas grid and baseline snapping measured the grid from the page top.
BaselineGrid::origin gives the first line on a page (start, plus the
page's top margin for Top Margin), and all three use it. The composition
cache tracks the setting and the pages' top margins.

Also adds a left-to-right facing-pages guard test for mirrored margins
and the right parent page's guides and running head.
2026-10-24 04:28:34 +00:00
aiongg 4823b59492 PDF: shared reader from craft-libs 9f75d3dc (input bounds and crash fixes) (#1701)
* PDF: craft-pdf, krilla and hayro from craft-libs main (input bounds and crash fixes)

* PDF: craft-libs 9f75d3dc, with hayro-cmap from its vendored copy
2026-10-23 23:03:36 -04:00
moppeeer 74ed763507 Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	crates/idml/src/tests.rs
2026-10-24 00:21:11 +02:00
macadminHU 5fcd99d492 Merge branch 'main' into codex/hungarian-localization 2026-10-23 23:55:36 +02:00
Brandon Thomas 058b369b53 Merge storytold/main into squad/pdfx-unembedded-fonts
# Conflicts:
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-23 17:30:20 -04:00
Brandon Thomas f0907d3831 Merge pull request #1665 from MarekSpodBiedry/issue-1624
find: search and change text inside table cells in document scope (#1624)
2026-10-23 17:27:58 -04:00
Brandon Thomas c882fd0f58 Merge storytold/main into feat/save-dialog-folder 2026-10-23 17:27:23 -04:00
Brandon Thomas f064aeed7f Merge pull request #1613 from MarekSpodBiedry/issue-1551
IDML export: write the graphic placed in a table cell (#1551)
2026-10-23 17:26:55 -04:00
Brandon Thomas dc968ecdff Merge pull request #1629 from marcoarnulfo/feat/autoflow-existing-pages
Autoflow: fill the pages that follow before adding pages at the end
2026-10-23 17:26:42 -04:00
moppeeer 812310ff6a Merge branch 'direct-select-anchor-points' into properties-anchor-points
# Conflicts:
#	crates/engine/src/cmd/object.rs
2026-10-23 22:28:43 +02:00
moppeeer 3f1c847927 Merge remote-tracking branch 'origin/main' into paragraph-panel-indesign
# Conflicts:
#	ROADMAP.md
2026-10-23 22:16:55 +02:00
moppeeer ce0a2b0e38 Merge remote-tracking branch 'origin/main' into hyphenation-french-italian
# Conflicts:
#	ROADMAP.md
2026-10-23 22:16:41 +02:00
moppeeer db77b3c740 Merge remote-tracking branch 'origin/main' into hyphenate-across-column
# Conflicts:
#	ROADMAP.md
2026-10-23 22:16:36 +02:00
moppeeer e963fa3f4d Merge remote-tracking branch 'origin/main' into table-convert-dialogs
# Conflicts:
#	ROADMAP.md
2026-10-23 22:05:07 +02:00
moppeeer bbe29dfecc Merge remote-tracking branch 'origin/main' into table-menu-insert
# Conflicts:
#	ROADMAP.md
2026-10-23 21:59:50 +02:00
aiongg 1fd8463af9 i18n: missing translations are reported, never a failure (#1677)
A string without a translation shows in English, and an empty catalog row
counts as untranslated. Tests keep duplicate-key and placeholder checks and
the lookup, context, plural-caption and right-to-left mechanics; coverage,
stale-key, wording and per-language literal checks are removed.

`cargo xtask i18n-report`, also a `cargo xtask ci` step, runs the ignored
missing_translations_report test and prints the missing strings per language.
2026-10-23 15:39:24 -04:00
Marco Arnulfo b5342e48cd Save and export dialogs start in the document's folder, or the last one used (#1653) 2026-10-23 21:32:05 +02:00
moppeeerandClaude Opus 5.5 cbb2a974d1 Tables: InDesign's Convert Text to Table and Convert Table to Text dialogs
Table › Convert Text to Table… and Convert Table to Text… open dialogs laid
out as InDesign's instead of converting at once with tabs and paragraphs:
- Column and Row Separator: Tab, Comma, Paragraph from the field's menu, or
  any characters typed.
- Number of Columns (Convert Text to Table), available when both separators
  are the same: the cells fill rows of that many.
- Table Style (Convert Text to Table), applied to the new table in the same
  undo step.

table.convertFromText takes rowSeparator, columns and tableStyle, and any
characters as separators; table.convertToText takes both separators
(Table::text_with). Convert Text to Table is available only with text
selected outside a table, as in InDesign. New strings are translated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:21:32 +02:00
macadminHU e4fc34e2bb HU1: correct historical context-caption count
Correct only the 2026-10-17 narrative from four to two context captions, matching the dated revision history and ROADMAP. The current catalog still has four context captions. All eight local CI stages passed.
2026-10-23 21:19:46 +02:00
moppeeerandClaude Opus 5.5 10cd0cac3c Table menu in InDesign's order; Insert Table dialog laid out as InDesign's
- Table menu: Insert Table… (Cmd+Alt+Shift+T), Convert Text to Table,
  Convert Table to Text | Cell Options | Insert, Delete, Select | Merge,
  Unmerge, Split Horizontally/Vertically, Convert Cell Type, Convert Rows |
  Distribute Rows Evenly, Distribute Columns Evenly. The Table panel item left
  the menu (it is in Window › Type & Tables, Shift+F9).
- Cmd+Alt+Shift+T opens the Insert Table dialog, as InDesign's; it ran
  table.insert with its defaults, so the shortcut and the menu did different
  things.
- The Insert Table dialog: InDesign's title, a narrow window, Body Rows and
  Columns then Header and Footer Rows as numbers with spinners and
  right-aligned labels, and a Table Style applied to the new table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:57:03 +02:00
macadminHU 306aceb9c8 HU1: document localization test integration
Record the merge test repairs and the verified catalog count of 1,904 entries plus four context captions. Part of the locally validated four-file update.
2026-10-23 20:46:55 +02:00
Marco Arnulfo 7362530591 MCP: --automation-read-root and --automation-write-root may each be given more than once (#1552)
A path passes when it lies inside one of the roots of its kind. The roots'
common parent, a sibling named like a root, `..` or a link out of them and
the other kind's roots stay refused; a folder given twice counts once.
2026-10-23 20:30:07 +02:00
macadminHU b83e2cfaf8 Merge branch 'main' into codex/hungarian-localization 2026-10-23 19:32:53 +02:00
andeecollard 62a26d9e35 PDF: preserve catalogs and full references in layer variants 2026-10-23 17:47:18 +01:00
MarekSpodBiedry 708feab5cd find: search and change text inside table cells in document scope (#1624) 2026-10-23 17:37:45 +02:00
hslrmnp27 1f979b521f T.DE1: merge upstream 0.12.0 while preserving German hyphenation
Merge upstream/main e74208dd into the working branch and retain PR #1254 unchanged. Resolve ROADMAP.md by preserving both progress histories.

Validation: fmt, pdf-deps and workspace Clippy passed; compose 364 passed, 1 ignored, including all 4 German tests. Full CI stops at 4 pre-existing Windows engine tests (paths and symlink privileges); their sources match upstream. Assets check flags the two untracked local chronicle documents.
2026-10-23 15:18:57 +02:00