Commit Graph
4827 Commits
Author SHA1 Message Date
aiongg 39a4364fd3 Merge t14-a: #837 #849 #853 #855 #859 #858 #553 #829, stray dialogs.rs.orig removed 2026-10-13 22:51:34 +00:00
aiongg f0f9a4619c Find/Change: first:true changes only the first match, not one per story 2026-10-13 22:43:44 +00:00
aiongg 5ff7c4f956 Merge #854: index duplicate asset candidates by content (#727)
# Conflicts:
#	docs/file-format-parity.md
2026-10-13 22:41:06 +00:00
aiongg e44a9dc2f1 Integration: #846 stroke edges of a partly selected merged cell are classified against the selection grown to whole cells, in table.setCell and table.getCellStroke 2026-10-13 22:40:35 +00:00
aiongg 71309b993e Integration: cargo fmt 2026-10-13 22:40:00 +00:00
aiongg a68bdae052 Merge #846: resolve selected merged-cell owners
# Conflicts:
#	crates/engine/src/cmd/table.rs
2026-10-13 22:39:51 +00:00
aiongg b9cbfca8cf Merge #843: Placed PDFs: render with pdfcraft's patched hayro crates
# Conflicts:
#	Cargo.toml
#	ROADMAP.md
#	crates/render/src/lib.rs
2026-10-13 22:38:19 +00:00
aiongg cd317a235a Merge #553: docs: add user docs in docs/user 2026-10-13 22:36:18 +00:00
aiongg 0c965691b6 Merge #858: macOS DMG: hdiutil create -srcfolder, so the installed app passes codesign --strict 2026-10-13 22:36:17 +00:00
aiongg 283d04e14f Integration: #859 drop the control-channel safety note from the editing gap, which lists missing features 2026-10-13 22:36:08 +00:00
aiongg 450bee203a Merge #859: Control: bound click and drag input before queuing events 2026-10-13 22:36:03 +00:00
aiongg b14e5feae7 Integration: #839 previews keep the link's format and pixel size, share one buffer per preview, and preflight still reports their missing links 2026-10-13 22:35:59 +00:00
aiongg b98d1521df Merge #855: fix: repaint canvas when entering and leaving parent editing 2026-10-13 22:35:26 +00:00
aiongg 9ceb7011a5 Merge #840: Object > Fitting with the reference shortcuts
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/menus.rs
2026-10-13 22:34:54 +00:00
aiongg 7f8eb704c8 Merge #853: Compose: cross-reference index no longer rebuilds itself 2026-10-13 22:34:26 +00:00
aiongg 4989cc6e27 Merge #849: Canvas: baseline grid draws only the lines on the page 2026-10-13 22:34:13 +00:00
aiongg 588e83199b Merge #839: INDD graphics whose linked file is missing show the document's preview
# Conflicts:
#	crates/engine/src/cmd/interchange.rs
#	crates/idml/src/import.rs
#	crates/idml/src/tests.rs
2026-10-13 22:33:58 +00:00
aiongg f28456d9d3 Integration: #836 a grey stop beside a CMYK stop exports as the K ink, keeping the PDF shading in DeviceCMYK 2026-10-13 22:33:46 +00:00
noah1400 554019cdd5 Tables: table.options limits header and footer rows (#861)
table.options added as many rows as the requested header and footer
counts needed, without a limit. A large number typed into the Table
panel's Header Rows field froze the app and exhausted memory. Both
counts are now capped at 100, the limit table.insert already has.
2026-10-14 00:32:16 +02:00
aiongg e94e04fb6e Merge #837: Preferences: Story Editor size stays finite and in range 2026-10-13 22:31:39 +00:00
aiongg dc2dda7717 Merge #836: gradients between process colours blend as inks
# Conflicts:
#	ROADMAP.md
2026-10-13 22:31:16 +00:00
Tomasz Lewandowski bac3841e35 i18n(pl): translate Story as "wątek", keep "artykuł" for Article
Story and Article both read "artykuł", so the Story Editor and the
Articles panel looked the same. Story is now "wątek" (Edytor wątków),
the usual Polish DTP term; Article stays "artykuł".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DukHNvUY45rjRnvtz91x33
(cherry picked from commit 951496c4f1)
2026-10-13 22:31:06 +00:00
aiongg 896929c5c0 Integration: remove a stray merge backup of dialogs.rs 2026-10-13 22:30:57 +00:00
moppeeerandClaude Opus 5.5 cc13e80c9d feat(tools): Page tool selects pages; handles preview the liquid rule, Alt-drag resizes
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (0:42–
2:06) selects a page with the Page tool, gets its bounding box with
handles, drags a handle (the page springs back: a liquid-rule preview),
holds Option to really resize it, Shift for proportions, and reads the
size in a tooltip by the cursor. DesignCraft's Page tool only opened a
generic Page Size dialog on click.

- tools: the Page tool selects the page under a click (none on the
  pasteboard); the selected page shows its outline, eight handles and
  its liquid page rule ("Scale", "Object-Based"…) above it. Dragging a
  handle previews layout.pageSize (the liquid rule re-flows the
  objects) and springs back on release; Alt resizes, Shift keeps the
  proportions; a W/H readout follows the pointer; resize cursors on the
  handles. Double-click a page for the Page Size dialog.
- doc: Selection.page (the Page tool's page); engine: layout.selectPage
  (no undo step).
- layout.pageSize `anchor` (0-8): the page grows away from the
  reference point and its objects and guides keep their place relative
  to it (a handle drag anchors the opposite edge); liquid rules work
  from that.
- canvas: PageHandles and Tag overlays; translations for the tags and
  the Resize Page undo label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 00:29:55 +02:00
Seon-Jin YoonandClaude Opus 5.5 0aaaa9600d fix(compose): odd/even page starts keep their parity at the top of a frame
Start options were skipped for a paragraph at the top of a frame. That is
right for Next Page, Next Frame and Next Column (there is nothing to break
away from), but a Next Odd Page paragraph that lands at the top of an even
page stayed there, as did Next Even Page at the top of an odd page, and the
same went for odd and even page break characters. A part or chapter opener
whose previous section ended exactly at the bottom of an odd page therefore
opened on a left-hand page.

Cursor::start_at_top now moves such a paragraph to the next page of the
asked parity, for paragraphs, tables and break characters alike. Other
start options at the top of a frame are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:12:08 +09:00
aiongg 1cd3b38af1 Recent files: look them up on disk at most every 3 s, not every frame; Open Recent names the file without an undocumented param (#706)
From aiongg's review of #802 (acb63fe1, and the UI part of 548d700b on aiongg/next).
2026-10-14 00:03:57 +02:00
Andreas Haraminac 5024ed8870 #732: bound control-channel click and drag event queues 2026-10-13 21:55:44 +00:00
sanyamsingh001andCodex bfa536352d FIX-CHILD-NOTE-PASTE: filter unsupported markers in child stories
Co-Authored-By: Codex <codex@openai.com>
2026-10-14 07:54:46 +10:00
Daniel van LithandClaude Opus 5.5 1e153c5c45 macOS DMG: hdiutil create -srcfolder, so the app inside passes codesign --strict
makehybrid -hfs gave every file in the image a com.apple.FinderInfo, so the app in the
DMG, and a copy installed from it, failed codesign --verify --strict --deep ("resource
fork, Finder information, or similar detritus not allowed"), though Gatekeeper accepts
it. Build the image as VectorCraft (#1085) and PdfCraft (#823) do now: hdiutil create
-srcfolder with a few tries for CI's "Resource busy", and verify the mounted app with
--strict --deep so the regression can't ship again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:36:52 +13:00
harrisonoconnorhover 2d07bc5295 fix: refresh canvas when switching parent editing 2026-10-13 17:28:38 -04:00
LabDennis 0fd627aa44 perf(assets): index duplicate candidates by content (#727) 2026-10-13 23:12:09 +02:00
Fabio Lussi aa3220bc99 Merge remote-tracking branch 'origin/main' into svg-installed-fonts
# Conflicts:
#	crates/fonts/src/fontdb.rs
2026-10-13 23:09:37 +02:00
noah1400 1bddba0e75 Compose: cross-reference index no longer rebuilds itself (#851)
The cross-reference index composed its destination stories through
the cache. One with a running header asked for the running-header
index, which composed the story holding the cross-reference, which
asked for the cross-reference index again: the stack overflowed and
the app aborted. Destination stories with a running header are now
composed without it, like those with cross-references already were.
2026-10-13 23:07:21 +02:00
aiongg 923479bd05 Integration: #610 a linked text file with a future time is remembered once instead of read on every poll 2026-10-13 14:59:01 -06:00
aiongg b141bc335f Integration: renaming or deleting a paragraph style also updates the table of contents' entry and title styles (#755) 2026-10-13 20:46:27 +00:00
aiongg e19b6b1fd9 Merge toc-dialog: Table of Contents dialog, entry options and IDML TOC styles (#755)
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/tests_idml.rs
#	crates/idml/src/import.rs
#	crates/ui-egui/src/dialogs.rs
2026-10-13 20:44:30 +00:00
aiongg 129adfa429 Layout: Table of Contents dialog with entry styles, page number position and IDML TOC styles (#755) 2026-10-13 20:41:56 +00:00
Fabio LussiandClaude Opus 5.5 a134dbb056 Drop the root AGENTS.md docs rule; keep the PR to docs/user/
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:37:33 +02:00
aiongg d5c26cc781 Merge t13-commands: #764 #757 #802 #803
# Conflicts:
#	crates/engine/src/cmd/object.rs
2026-10-13 20:28:49 +00:00
aiongg da8a3daa8c Integration: #803 layout.marginsAndColumns' parent note in parentheses, so its description parses 2026-10-13 20:26:51 +00:00
noah1400 3539a72b2f Canvas: baseline grid draws only the lines on the page (#844)
The grid was walked from its start, one line per step, with no
bound. A start far above the page (from document.preferences, a
saved file or an IDML package) made the next frame draw lines until
the app ran out of memory. The lines are now the ones inside the
page, found without walking those above it, and never more than one
per point of the tallest page.
2026-10-13 22:23:48 +02:00
aiongg 3911c60a24 Integration: #610 the web build doesn't import the file fingerprint it never uses 2026-10-13 20:21:24 +00:00
sanyamsingh001andCodex f4f2f0bb08 FIX-TABLE-SELECTION: resolve selected merged-cell owners
Co-Authored-By: Codex <codex@openai.com>
2026-10-14 06:20:41 +10:00
sanyamsingh001andCodex 4760a000db PARITY-FIND-SCOPE: respect search scope and first-match limits
Co-Authored-By: Codex <codex@openai.com>
2026-10-14 06:16:28 +10:00
aiongg 0278f6bbea Integration: cargo fmt 2026-10-13 20:16:12 +00:00
aiongg d03b17ef56 Integration: #803 guide.add, layout.marginsAndColumns, layout.numberingOptions and file.savePreset describe every param they take 2026-10-13 20:15:59 +00:00
aiongg b9060d0350 Merge #803: Refuse command params the description doesn't name
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/cmd/mod.rs
#	crates/engine/src/cmd/object.rs
#	crates/engine/src/cmd/prefs.rs
#	crates/engine/src/cmd/table.rs
#	crates/engine/src/lib.rs
2026-10-13 20:13:51 +00:00
aiongg acb63fe198 Integration: #802 the start screen and Open Recent menu look recent files up on disk at most every 3 s, not every frame 2026-10-13 20:12:43 +00:00
aiongg 548d700b9f Integration: #802 a document that can't be serialized fails Save and Save a Copy instead of writing an empty file; Open Recent's alert names the file without an undocumented param 2026-10-13 20:08:28 +00:00
aiongg 65f0310fbe Integration: cargo fmt 2026-10-13 20:08:19 +00:00