Commit Graph
359 Commits
Author SHA1 Message Date
Brandon Thomas 290ea6c19c Merge PR #824
# Conflicts:
#	contributors/people.toml
2026-10-14 22:33:53 -04:00
Brandon Thomas ed3acb0f82 Merge PR #979 2026-10-14 22:05:13 -04:00
Brandon Thomas 35563d0f2f Merge PR #978 2026-10-14 22:05:13 -04:00
Brandon Thomas fddb3538fa Merge PR #966 2026-10-14 22:05:13 -04:00
Brandon Thomas c5ea51ec4d Merge PR #964 2026-10-14 22:05:13 -04:00
Brandon Thomas 88fee015ce Merge PR #958 2026-10-14 22:05:13 -04:00
Brandon Thomas 2e5e3c4000 Merge PR #951 2026-10-14 22:05:13 -04:00
Brandon Thomas 6c2064ae48 Merge PR #949 2026-10-14 22:05:12 -04:00
Brandon Thomas 79a5c52e9d Merge PR #933 2026-10-14 22:05:12 -04:00
Brandon Thomas 452b0920e6 Merge PR #917 2026-10-14 22:05:12 -04:00
Brandon Thomas 7f9598558d Merge PR #914 2026-10-14 22:05:12 -04:00
Brandon Thomas b14b1fd805 Merge PR #913 2026-10-14 22:05:12 -04:00
Brandon Thomas f4333338b3 Merge PR #889 2026-10-14 22:05:12 -04:00
Brandon Thomas 411ef4c454 Merge PR #881 2026-10-14 22:05:12 -04:00
Brandon Thomas 3549d76594 Merge PR #819 2026-10-14 22:05:12 -04:00
Brandon Thomas ebb2322671 Merge PR #812 2026-10-14 22:05:11 -04:00
Brandon Thomas a593ae07af Merge PR #795 2026-10-14 22:05:11 -04:00
Brandon Thomas 4bd1fbab37 Merge PR #765 2026-10-14 22:05:11 -04:00
Brandon Thomas 412ce96ff0 Merge PR #691 2026-10-14 22:05:11 -04:00
Brandon Thomas 3cdda36680 Merge PR #657 2026-10-14 22:05:11 -04:00
Brandon Thomas 4cd3a8fa5e Merge PR #648 2026-10-14 22:05:11 -04:00
Brandon Thomas e26147470b Merge PR #606 2026-10-14 22:05:10 -04:00
Brandon Thomas 0e63dcad11 Merge PR #604 2026-10-14 22:05:10 -04:00
Brandon Thomas c5643529af Merge PR #599 2026-10-14 22:05:10 -04:00
Brandon Thomas b379a5f0a5 Merge PR #577 2026-10-14 22:05:10 -04:00
Brandon Thomas 0c3e140be3 Merge PR #567 2026-10-14 22:05:10 -04:00
Brandon Thomas f268e17986 Merge PR #559 2026-10-14 22:05:10 -04:00
Davit Matchakhelidze 9792aa025e Merge upstream main into ka-language 2026-10-15 03:38:25 +04:00
moppeeerandClaude Opus 5.5 89f6adb6fb Find Font: a style that differs only in spacing isn't missing
Montilla Design's Flex Layout file names its body face "Regular " (with a
trailing space, as the designer's copy of Articulat CF did). Face lookup
already ignores spacing and case, so the text is drawn in Regular, but
font.list (Find Font) compared names exactly and reported the style
missing. It now uses the lookup's comparison (designcraft_fonts::same_style).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:25:04 +02:00
midasmatterhorn a393ab2018 script.run: roll a failed script back instead of stranding its edits
A script whose later step failed kept the successful prefix in the document
but truncated the prefix's undo entries (and returned before the command's
aggregate undo entry was recorded), so the edits could not be undone at all.
A failed script now restores the document, selection and history from before
it started: all-or-nothing.

Regression test: frame.create followed by an unknown command is an error, the
document has no frame, nothing is left to undo, and the next edit undoes
normally. The one-undo-step success path still holds.
2026-10-14 23:57:21 +03:00
midasmatterhorn 7a1ba45d18 layout.section: keep the settings the command does not name
The command removed the section at a nonzero start with retain() and only then
looked it up to keep its properties, so the lookup always fell back to the
defaults: editing one field (a marker, a start number) silently reset the
style, prefix, include-prefix flag and start number. The existing section is
now read before the list is rebuilt.

Regression test: a Roman-numbered page-2 section with prefix A- and marker
First, then marker Second keeps startNumber, style, prefix and includePrefix.
2026-10-14 23:47:55 +03:00
moppeeerandClaude Opus 5.5 d5d8621780 Pathfinder keeps the frontmost object, as InDesign does
InDesign's Pathfinder result takes the attributes (and content) of the
frontmost object, except Subtract, which keeps the backmost. DesignCraft
kept the backmost for every op but Minus Back, so a photo placed over
strips and intersected with them was deleted and the black strips stayed
(Zero2Graphic's magazine tutorial, 7:19).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:22:17 +02:00
NetterSilverandClaude Haiku 5.5 8b834d0533 Fix overflow in layout.pages.insert when after is u64::MAX
Found while testing crates/doc/src/build.rs:377 (Document::insert_pages), called from crates/engine/src/cmd/layout.rs:91

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 19:17:09 +00:00
zydvc26s67-webandCopilot App 4516989e51 Type: let a blank line's hidden paragraph mark take leading immediately
Selecting an empty paragraph (a blank line) puts a collapsed caret on its
hidden paragraph mark, the only character on that line. Previously
type.char either deferred the formatting to the next typed character (in
a non-empty story) or dropped it on the floor for composition, so there
was no way to change a blank line's height — matching InDesign's ability
to select the pilcrow and adjust leading.

- engine/cmd/text.rs: recognize an empty paragraph's own caret position
  (empty_para_mark) and apply character attributes straight to that
  byte's run instead of deferring to typing format.
- compose/lib.rs: an empty paragraph has no glyphs of its own, so resolve
  the hidden mark's run (if overridden) for the paragraph's base leading
  instead of always falling back to the paragraph's plain default.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-14 12:05:35 -07:00
moppeeerandClaude Opus 5.5 11b1566c09 Type tool: a press over a locked empty frame draws a new text frame instead of converting it
Adobe's "Set up a modern magazine layout" (Brian Wood, 2:12–4:23) locks a
page frame drawn round the spread (Cmd+L), then draws the text frames on
top of it with the Type tool. In DesignCraft the press landed in the
locked frame, which the Type tool turned into a text frame, putting the
caret in it; no new frame was drawn.

- The Type tool takes a hit only on text frames (locked or not, as
  InDesign lets you edit their text) and unlocked empty frames; over a
  locked empty frame, the press starts a new text frame.
- text.placeCaret refuses to convert a locked empty frame (or one on a
  locked layer).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:22:54 +02:00
aiongg d72307ec02 Merge remote-tracking branch 'upstream/main' into place-loads-cursor
# Conflicts:
#	crates/engine/src/cmd/file.rs
2026-10-14 17:01:12 +00:00
Brandon Thomas 0df9238c73 Merge PR #850 2026-10-14 12:56:09 -04:00
Davit MatchakhelidzeandClaude Opus 5.5 5d4ed2a663 text: Georgian document language; no initial capitals for Georgian
Georgian is a Properties text language (IDML "Georgian" maps to ka). Georgian has no initial capitals: Mtavruli is only for all-caps text, so Change Case title and sentence case and index section heads leave Mkhedruli as it is (doc::capitalizes); upper case still gives Mtavruli.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
2026-10-14 20:55:04 +04:00
Brandon Thomas 4f193834bd Merge PR #870 (with #869) 2026-10-14 12:40:07 -04:00
Brandon Thomas 50a6b60072 Merge PR #868 2026-10-14 12:39:59 -04:00
Brandon Thomas b8d975b094 Merge PR #866 2026-10-14 12:39:59 -04:00
Brandon Thomas 23aeddb354 Merge PR #864 2026-10-14 12:39:58 -04:00
Brandon Thomas c1a1970168 Merge PR #862 2026-10-14 12:39:58 -04:00
Brandon Thomas a6e7e2a0c7 Merge PR #838 2026-10-14 12:39:58 -04:00
Brandon Thomas 6ceb57d4f5 Merge PR #845 2026-10-14 12:39:58 -04:00
Marco Arnulfo 52eac14f2c PDF: a placed PDF 1.7 with /Version /1.7 in its catalog goes into PDF/X-4 exports (fixes #907) 2026-10-14 16:48:52 +02:00
Marco Arnulfo b12e94c11d Package: a missing link stays missing, with no empty file in Links/ (fixes #908) 2026-10-14 16:37:55 +02:00
Marco Arnulfo 455442615b Color parsing: bare CMYK is always 0..100, so C 1 is a 1 % tint (fixes #910) 2026-10-14 16:29:10 +02:00
moppeeerandClaude Opus 5.5 188c4f7007 Facing pages take their side from their section's page numbers
Chris Nielsen's "Numbering Page Sections" (7:03): starting a section at
page 1 on a left page (the spread 8–9 selected) turns it into a lone
right-hand page 1 in InDesign, and the pages after it shuffle. DesignCraft
kept the page on the left, so odd page numbers sat on left pages.

- Document::repaginate gives each facing page the side of its number in
  its section (odd: right, or left bound right to left). Document Setup's
  Start Page # is one case of it.
- layout.section repaginates when a section starts, changes or is removed;
  objects go with their pages, in one undo step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:03:58 +02:00
sanyamsingh001andCodex 44485e08da Merge tested main 0f4f382b0e into PR #845
Preserve the reviewed PR behavior and tested upstream base.

Co-Authored-By: Codex <codex@openai.com>
2026-10-14 19:33:57 +10:00