Commit Graph
2702 Commits
Author SHA1 Message Date
skylar taylor-barrick bc840130a4 Satisfy clippy's nonminimal_bool on rustc 1.96
Four sites already on main that `cargo xtask ci` cannot get past with the
current toolchain; each rewrite is the one clippy suggests and changes no
behaviour. `!x.is_some_and(f)` becomes `x.is_none_or(!f)`, and pdf_bounds
folds `!(a && b) || !c` into `!(a && b && c)` by De Morgan.

Unrelated to the merge they are committed beside; separated so that merge
stays a merge.
2026-10-16 20:20:36 -06:00
aiongg 1977a67886 Build: use craft-docpath from craft-libs 2026-10-17 02:20:16 +00:00
skylar taylor-barrick 0d541deab7 Merge upstream/main into codex/fix-relink-eps
Resolve 12 conflicted files. Where both sides changed the same code:

- format: keep main's bounded-read load_zip (MAX_ENTRIES, read_entry) and
  this branch's u64 version reporting, so a version above u32::MAX is named
  as written rather than clamped. Both sides had fixed the same truncation.
- render: main's natural_size supersedes image_natural_size (it already
  reads an EPS bounding box and also handles PDF pages); callers in table
  and data merge now use it.
- images: keep the DSC-aware header scan and (atend) trailer lookup, take
  main's classic-Mac line endings, and carry its overflow guard into
  parse_box. eps_proxy draws main's simple rectangles before falling back
  to the placeholder, still over a retained EPS source.
- engine/file: take main's placement shape (add_asset, crop box geometry,
  place cursor, finite_rect, object effects) and keep this branch's
  validate_placement in both branches; edit() works on a clone and commits
  only on Ok, so validating inside it stays all-or-nothing.
- engine/links: keep building the replacement before edit() so a file that
  cannot be read leaves the document untouched, and move main's crop_pdf
  refresh into relinked_asset, which both relink and update go through.
- engine/export: EPS preview warnings join the font-embedding warnings
  rather than shadowing them.
- idml: an EPS element keeps ActualPpi (its pixels are a preview raster);
  main's PDF exclusion is unchanged.

Cargo.lock regenerated. Tests and doc strings from both sides kept.
2026-10-16 19:57:08 -06:00
NetterSilverandClaude Haiku 5.5 3823d7d942 Ignore out-of-range font sizes in RTF import
Found while testing crates/textimport/src/rtf.rs:219

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 01:22:17 +00:00
NetterSilverandClaude Haiku 5.5 61387304b6 Ignore non-finite <cSize> values in Tagged Text import
Found while testing crates/textimport/src/tagged.rs:173

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 23:26:08 +02:00
NetterSilverandClaude Haiku 5.5 81cc1404b8 Skip phonetic guide text when importing XLSX strings
Found while testing crates/textimport/src/xlsx.rs:62 and :112 (shared strings are read with El::text, which includes <rPh> children; inline strings use the same call, crates/textimport/src/docx.rs:37)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 20:22:58 +02:00
Claude beb5ac0243 Merge upstream main into drop-cap-size
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
2026-10-16 17:11:07 +00:00
aiongg 8c3bbdc09f Read images inside SVGs only from data: URLs 2026-10-16 17:05:09 +00:00
aiongg 248e10908b Follow paths stored in documents only on this computer or the document's share
Links, data sources, IDML package links and book chapters go through
io::document_path (craft-docpath) before they reach the file system:
relative paths resolve beside the document, and paths to other computers,
devices and URLs are missing, with the reason in links.list and Preflight.

IDML and INDD packages read a linked file where its link points on this
computer, then from the link's trailing names beside the package, only
when it is a regular file up to 256 MB holding an image or a graphic. A
file URI that names a host keeps it as a network path.
2026-10-16 17:05:09 +00:00
NetterSilverandClaude Haiku 5.5 4b520066e3 Remove empty pages autoflow adds when placing into the primary frame
Fixes #1165

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:58:01 +02:00
Hamza 5316059405 Graphics: keep a failed OpenGL out of the instance (macOS)
`choose` pruned the failed list to this platform's candidates, which dropped an
OpenGL entry on macOS, where Metal is the only candidate. But OpenGL is not only
a candidate: off Windows it is the in-process fallback that `instance_backends`
adds whenever it has not failed. So a start that recorded OpenGL and never
showed a frame had the entry pruned a line later, and OpenGL went straight back
into the instance — the backend that had just failed was offered again on every
start, with nothing able to retire it.

An entry that can still be reached is kept now. A non-candidate entry still
cannot be chosen as a backend, since `pick` only looks at candidates, so which
backend starts is unchanged; it only stops a failed OpenGL being handed back to
the instance.

This is what `a_start_records_its_backend_until_a_frame_is_presented` asserts,
and that test failed on macOS: `cargo xtask ci` stopped in the `designcraft` bin
before the rest of the workspace ran, so the gate could not go green there at
all.
2026-10-16 20:23:31 +05:00
Abdelrehman Fouad d78783b6bd Fonts: Type › Reload Fonts reads fonts changed on disk again
Fonts installed, edited or removed while the app runs needed a restart
(#328, #547). font.reload rescans the font folders, lets go of the shared
faces whose installed file changed (length or modification time) or is
gone, so the next lookup reads the file as it is now, and recomposes the
open documents with a new composition cache. It isn't an undo step.
2026-10-16 17:15:47 +02:00
aiongg c2609f921b Merge pull request #1139 from aiongg/next
Integration batch: 197 PRs on main
2026-10-16 10:08:19 -04:00
aiongg 8e18800280 Integration: #1075 and #1077 progress log lines 2026-10-16 12:43:06 +00:00
aiongg 3294c4a9bb Merge #1077 update 2026-10-16 12:42:33 +00:00
aiongg f90c0de884 Merge #1075 update 2026-10-16 12:42:32 +00:00
aiongg 95337b96f3 Merge #305 update 2026-10-16 12:42:08 +00:00
harrisonoconnorhover 91a32730ef fix: allow deleting parent pages (#956) 2026-10-16 08:02:23 -04:00
Hamza cf5b54e72c Record the Greek language in the work list
gaps.md's header asks for a ROADMAP progress-log line and a timestamp when a gap
is closed or shrunk. Gap 13 was shrunk in the first commit (four hyphenating
languages became five); this adds the two it was missing.

Docs only; the fix itself is unchanged.
2026-10-16 16:06:36 +05:00
Hamza b5cc353c6d Close gap 27 in the work list
gaps.md asks for it in its own header: "When you close a gap, delete its entry
(or shrink it), add a line to the ROADMAP progress log and update the
timestamps." The entry was still listed, which is how a second contributor picks
up work that is already done.

Docs only; the fix itself is unchanged.
2026-10-16 16:06:09 +05:00
Youssef Azriouil e6878edac2 Shaping: Arabic keeps contextual alternates
Contextual alternates are part of how many Arabic fonts join (connecting
strokes, tatweel and letter variants). InDesign keeps them in Arabic text
when Contextual Alternates is off, so `calt` off is now dropped for
Arabic runs.
2026-10-16 11:55:18 +02:00
Youssef Azriouil ec86a8fd3c Breaker: keep a page number's digits together
The emergency break inside a word wider than the measure could fall
between glyphs of one source character: an automatic page number wider
than its frame came out as "13" over "4". Glyphs sharing a cluster (the
generated digits of a page number, multi-glyph clusters) now stay together
and the number hangs out of its frame, as in InDesign.
2026-10-16 11:55:18 +02:00
aiongg 852db92b05 Merge branch 'fix-macwin' into next-integ 2026-10-16 06:40:54 +00:00
aiongg f309b08562 Integration: #1036 test that a selected group paints both ports of its text frame 2026-10-16 06:40:28 +00:00
aiongg e99783c756 Integration: "&" shows in native menu labels 2026-10-16 06:40:28 +00:00
sanyamsingh001andCodex 745712fa7d Merge tested main a930276fd7 into PR #305
Preserve the reviewed PR behavior and tested upstream base.

Co-Authored-By: Codex <codex@openai.com>
2026-10-16 16:36:49 +10:00
aiongg 98be512f79 Merge branch 'fix-panelmenu' into next-integ 2026-10-16 06:27:33 +00:00
aiongg debcc641c3 Merge branch 'fix-esc' into next-integ 2026-10-16 06:27:33 +00:00
aiongg 11810ecbfc Integration: panel menus stay reachable in the docking layout 2026-10-16 06:27:17 +00:00
aiongg a9e2229cd6 Integration: Esc that closes a dialog doesn't reach the canvas 2026-10-16 06:25:01 +00:00
aiongg 39fe594553 Integration: Window › Minimize (⌘M) on macOS 2026-10-16 06:16:17 +00:00
NetterSilverandClaude Haiku 5.5 230b29be60 Refuse table row moves across the header/footer boundary
Found while testing crates/doc/src/table.rs:882 (Table::move_row, called from crates/engine/src/cmd/table.rs:1437 and :1369)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 05:54:41 +00:00
aiongg 199bfcfacb Merge PR #826 new head 2da46a8a3 (main merges only; content already in) 2026-10-16 05:07:29 +00:00
aiongg 402935d359 Merge PR #763 new head 7242c4508 (main merges only; content already in) 2026-10-16 05:07:29 +00:00
aiongg 3921158a12 Merge PR #753 new head 78997e391 (main merges only; content already in) 2026-10-16 05:07:29 +00:00
aiongg 31d7e8f5ac Merge PR #699 new head b3fb92a97 (main merges only; content already in) 2026-10-16 05:07:28 +00:00
aiongg a00b77e06a Merge PR #689 new head 8ca022a11 (main merges only; content already in) 2026-10-16 05:07:28 +00:00
aiongg c98202bb7c Merge PR #643 new head c8cbe0a0d (main merges only; content already in) 2026-10-16 05:07:28 +00:00
aiongg e09d2667ad Merge PR #490 new head a8cb7de59 (main merges only; content already in) 2026-10-16 05:07:28 +00:00
aiongg 3018115fb1 Merge PR #456 new head b20a94aa6 (main merges only; content already in) 2026-10-16 05:07:28 +00:00
aiongg f72644ad3c Merge PR #454 new head 0ca435b17 (main merges only; content already in) 2026-10-16 05:07:27 +00:00
aiongg 528eab7aae Merge PR #358 new head a52102668 (main merges only; content already in) 2026-10-16 05:07:27 +00:00
aiongg 33f208f40f Merge PR #319 new head eb8263259 (main merges only; content already in) 2026-10-16 05:07:27 +00:00
aiongg 6753887e86 Merge PR #253 new head 6f127f9a4 (main merges only; content already in) 2026-10-16 05:07:27 +00:00
aiongg d6307cf399 Merge PR #121 new head b6a569cb0 (main merges only; content already in) 2026-10-16 05:07:27 +00:00
aiongg 3ce41169e3 Merge PR #803 new head 30e1b7626 (main merges only; content already in) 2026-10-16 05:06:37 +00:00
aiongg 78bf14afb4 Merge branch 'fix-1067' into next-integ 2026-10-16 05:02:21 +00:00
aiongg 763c4fac08 Integration: #1067 large parent icons in a short Pages panel don't crash 2026-10-16 05:01:19 +00:00
aiongg 8f93a48c4d Integration: #1067 Panel Options' parent Show Thumbnails and size drive the parents' rendered thumbnails 2026-10-16 04:56:38 +00:00
aiongg dbf495bee9 Merge PR #1066 and #1067: Pages panel scroll areas, divider and Panel Options
- panels/pages.rs: #635's parent rows (rendered thumbnails, parents by id, the shown parent selected, double-click shows that parent) sit in #1066's parents scroll area, vertical and side by side; Panel Options' parent size sets the parent icon height (Extra Small: blank pages); thumbnail key = (uid, revision, page or parent, height); pages use ThumbOf::Page; #869/#870/#1058 kept (canvas refit after leaving parents, Delete Page/Spread through the delete-pages question, applyParent by id); #1067's narrow-spread label kept; tests: both sides.
- dock.rs: #343's floating-window frame kept, its body goes through scrolled_body so a floating Pages panel keeps its footer.
- dialogs.rs: deletePages, newWorkspace (#1058 and ours) and pagesPanelOptions arms side by side; HEAD's dialog widths plus pagesPanelOptions at 380.
- lib.rs: skip_delete_pages_warning and pages_parents_height/pages_panel both kept.
- i18n.rs, i18n/{ar,de,it,ja,ka,pt_br,uk}.rs: both sides' rows, no duplicate keys.
- ROADMAP.md: the two new lines in the log's style; dropped four 2026-10-14 lines the union merge duplicated.
2026-10-16 04:56:09 +00:00