aiongg
4e41f2ea0a
Merge PR #1464 : Paragraph styles: a new style from the selected text, Next Style, Reset To Base
...
crates/ui-egui/src/dialogs/tests.rs: kept both sides' appended tests
crates/ui-egui/src/i18n/*.rs (table, ar, cs, it, ka, pl, pt_br, ru, uk): kept both sides' rows (unique keys)
2026-10-30 19:44:32 +00:00
aiongg
2ab37e009a
Merge PR #902 : Direct Selection: pressing on a corner of an unselected object pulls just that corner
2026-10-30 19:44:20 +00:00
Claude
26253e9da4
Parent pages: running headers show their name on the parent itself only
...
On a parent page a running-header variable shows <Name>, as InDesign shows it (it was blank). Text
with no page that isn't on a parent (a frame composition can't place on a page) keeps the
variable's text before and after: frames now record whether they are on a parent spread, and
the composed values are cached by page and parent.
Split from #1232 (parent-page-display), as asked in review.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
2026-10-30 17:02:10 +00:00
Claude
d48b650320
Merge storytold/main into xref-edited-text
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
# Conflicts:
# ROADMAP.md
2026-10-30 16:36:59 +00:00
texjer
4461ebd886
Import warnings: Show selects the frame a story warning is about
2026-10-30 11:50:41 -04:00
Dylan M. Taylor
15d13dde20
Update prompt shows the app icon and accent color instead of a letter ( #2023 )
...
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#7bb51c, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).
craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434 ).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/cmd/export/text_tests.rs
- crates/pdf/src/gradient_inks.rs
2026-10-30 01:28:06 -04:00
Zaxaerith
9ee25b1561
fix(fonts): find document fonts with bare file paths ( #2014 )
2026-10-30 11:52:30 +08:00
Brandon Thomas
7e841a073e
Merge pull request #1972 from VoiceLessQ/fix/1209-autoflow-parity-runaway
...
Autoflow: a frame a Start Paragraph option ends early sets no fill rate (fixes #1209 )
2026-10-29 21:54:51 -04:00
Brandon Thomas
8867f312e9
Merge storytold/main into PR #1972
2026-10-29 21:53:38 -04:00
Brandon Thomas
7c24b673af
Merge storytold/main into PR #1893
...
# Conflicts:
# crates/engine/src/cmd/xml.rs
2026-10-29 21:53:38 -04:00
Brandon Thomas
08e8fdf655
Merge pull request #1909 from Hamza0101/fix/unc-test-runs-on-windows
...
Data merge: the UNC refusal is tested on Windows too (#1601 )
2026-10-29 21:52:57 -04:00
Brandon Thomas
f9fabc3334
Merge pull request #1840 from dotCooCoo/fix/print-test-driver-default-color
...
Print: the Windows print test expects the driver's default color
2026-10-29 21:52:42 -04:00
Brandon Thomas
b4463b5b26
Merge pull request #1911 from Hamza0101/fix/merge-image-reads
...
Data merge: an image named by many records is read once (#1595 )
2026-10-29 21:52:38 -04:00
Brandon Thomas
1f20480194
Merge pull request #1948 from Silvertree2010/fix/h3527-placing-a-plain-text-file-keeps
...
Strip story marker characters from placed plain text files
2026-10-29 21:52:33 -04:00
Brandon Thomas
c0d1acd2b3
Merge pull request #1568 from Hamza0101/fix/table-insert-size
...
A table size Create Table cannot mean is refused
2026-10-29 21:52:22 -04:00
Brandon Thomas
0a05c1631c
Merge pull request #1233 from seanth/running-header-order
...
[fix] Running headers read a page in text order, not by height
2026-10-29 21:52:08 -04:00
Brandon Thomas
9d73109012
Merge pull request #1908 from Silvertree2010/fix/h2951-xml-export-writes-control-charac
...
Drop XML-forbidden control characters in file.exportXml
2026-10-29 21:51:57 -04:00
moppeeer and Claude Opus 5.5
741fbe9fac
Paragraph styles: create_para whole again, with the style name parameter helper before it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 23:06:21 +01:00
moppeeer and Claude Opus 5.5
e8b27c91f1
rustfmt
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 22:55:15 +01:00
moppeeer and Claude Opus 5.5
24b923dfc0
rustfmt
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 22:43:09 +01:00
moppeeer and Claude Opus 5.5
5335e0a92f
Tests: the branch's table tests beside main's moved test helpers and imports
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 19:51:12 +01:00
moppeeer and Claude Opus 5.5
ae28681b2c
rustfmt
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 19:43:55 +01:00
moppeeer and Claude Opus 5.5
4321999720
rustfmt
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 19:39:04 +01:00
moppeeer and Claude Opus 5.5
963ac447fa
Text Frame Options: the paragraph spacing limit set without another branch in text_frame_options
...
Keeps the function within clippy's cognitive complexity limit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 16:26:34 +01:00
moppeeer and Claude Opus 5.5
948482d60f
Tab in footnote text is typed, not taken for the next table cell
...
Footnote text is addressed as a cell too (as 2e44b190 handled for
Shift+Tab, Esc and the cell commands); text.insert now types the Tab
there instead of failing in table.nextCell.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 15:34:27 +01:00
moppeeer and Claude Opus 5.5
e96baa7f7f
Table keys: the selection helpers by their paths on main's split modules
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-29 12:19:19 +01:00
moppeeer
927e7f7ba7
Merge remote-tracking branch 'origin/main' into package-pdf-preset
...
# Conflicts:
# crates/engine/src/cmd/export.rs
# crates/engine/src/cmd/package.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
2026-10-29 12:17:14 +01:00
moppeeer
56b000a69c
Merge remote-tracking branch 'origin/main' into package-dialog
...
# Conflicts:
# crates/engine/src/cmd/package.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
2026-10-29 12:14:56 +01:00
moppeeer
c4479a1152
Merge remote-tracking branch 'origin/main' into find-change-format
...
# Conflicts:
# crates/engine/src/cmd/find.rs
# crates/engine/src/cmd/style.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/icons.rs
2026-10-29 12:07:04 +01:00
moppeeer
190a5908f3
Merge remote-tracking branch 'origin/main' into paragraph-style-general
...
# Conflicts:
# crates/engine/src/cmd/style.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
2026-10-29 11:52:24 +01:00
moppeeer
d4a00a207f
Merge remote-tracking branch 'origin/main' into character-style-from-selection
...
# Conflicts:
# crates/engine/src/cmd/style.rs
# crates/engine/src/cmd/text.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
2026-10-29 11:51:59 +01:00
moppeeer
35c96ee866
Merge remote-tracking branch 'origin/main' into table-convert-dialogs
...
# Conflicts:
# crates/doc/src/table.rs
# crates/engine/src/cmd/table.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
2026-10-29 11:48:24 +01:00
moppeeer
1fbe3f272a
Merge remote-tracking branch 'origin/main' into table-menu-insert
...
# Conflicts:
# crates/engine/src/cmd/table.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/menus.rs
2026-10-29 11:47:24 +01:00
moppeeer
89808ec42f
Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
...
# Conflicts:
# crates/tools/src/select.rs
2026-10-29 11:45:00 +01:00
moppeeer
42a3637bfc
Merge remote-tracking branch 'origin/main' into direct-select-delete-image
...
# Conflicts:
# crates/tools/src/select.rs
2026-10-29 11:44:41 +01:00
moppeeer
94dad76ac1
Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
...
# Conflicts:
# crates/idml/src/import.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
2026-10-29 11:44:26 +01:00
moppeeer
c0b4746c8d
Merge remote-tracking branch 'origin/main' into codex/toc-pdf-bookmarks
...
# Conflicts:
# crates/engine/src/cmd/style.rs
# crates/idml/src/export.rs
# crates/idml/src/import.rs
# crates/ui-egui/src/dialogs.rs
2026-10-29 11:44:22 +01:00
moppeeer
271d20ba7f
Merge remote-tracking branch 'origin/main' into properties-wrap-offsets
...
# Conflicts:
# crates/ui-egui/src/panels/properties.rs
2026-10-29 11:43:59 +01:00
moppeeer
8b7f17e60c
Merge remote-tracking branch 'origin/main' into loaded-cursor-thumbnail
...
# Conflicts:
# crates/engine/src/cmd/file.rs
# crates/tools/src/snap.rs
# crates/ui-egui/src/canvas.rs
2026-10-29 11:43:56 +01:00
moppeeer
b26ae037de
Merge remote-tracking branch 'origin/main' into corner-options-dialog
...
# Conflicts:
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/panels/properties.rs
2026-10-29 11:43:35 +01:00
moppeeer
00a64e5943
Merge remote-tracking branch 'origin/main' into direct-select-anchor-points
...
# Conflicts:
# crates/tools/src/select.rs
# crates/ui-egui/src/canvas.rs
2026-10-29 11:43:21 +01:00
moppeeer
5a4012bab8
Merge remote-tracking branch 'origin/main' into properties-anchor-points
...
# Conflicts:
# crates/tools/src/select.rs
# crates/ui-egui/src/canvas.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/panels/properties.rs
# docs/target-app-parity.md
2026-10-29 11:42:56 +01:00
moppeeer
e094562ef6
Merge remote-tracking branch 'origin/main' into clear-fitting-options
...
# Conflicts:
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
2026-10-29 11:42:45 +01:00
moppeeer
b6fec896f9
Merge remote-tracking branch 'origin/main' into effect-blend-modes
...
# Conflicts:
# crates/doc/src/item.rs
# crates/idml/src/export.rs
# crates/idml/src/import.rs
# crates/ui-egui/src/effects_dialog.rs
2026-10-29 11:42:14 +01:00
moppeeer
4145fcbc44
Merge remote-tracking branch 'origin/main' into text-frame-options-layout
...
# Conflicts:
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# docs/target-app-parity.md
2026-10-29 11:41:36 +01:00
moppeeer
6b57bebd6b
Merge remote-tracking branch 'origin/main' into insert-pages-dialog
...
# Conflicts:
# crates/engine/src/cmd/layout.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
# crates/ui-egui/src/panels/pages.rs
2026-10-29 11:40:06 +01:00
moppeeer
fffafb7122
Merge remote-tracking branch 'origin/main' into global-units-preferences
...
# Conflicts:
# crates/engine/src/cmd/file.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/menus.rs
2026-10-29 11:39:22 +01:00
moppeeer
f0b580074d
Merge remote-tracking branch 'origin/main' into direct-select-handles
...
# Conflicts:
# crates/tools/src/select.rs
# crates/ui-egui/src/canvas.rs
2026-10-29 11:38:53 +01:00
moppeeer
0d9b7c74ac
Merge remote-tracking branch 'origin/main' into table-cell-keys
...
# Conflicts:
# crates/engine/src/cmd/table.rs
# crates/engine/src/cmd/text.rs
2026-10-29 11:38:49 +01:00
Hamza
5a53a3807c
Check a parent page's frame on the pages that show it
...
The warnings composed every story once with no page. For a frame on a parent
page that is wrong twice over, and I measured both:
exportPdf {"pages": [2]}
["the story in frame 9: 76 character(s) do not fit and are not in the
export"]
Page 2 used no parent at all, so nothing of that frame was in its export to be
missing -- and the warning named no page, because a parent frame has no
document page of its own. It now resolves the pages that draw the parent page
and reports only those:
{"pages": [1]} ["page 1: 76 character(s) ... frame 9 ..."]
{"pages": [2]} []
The second half is page-dependent text. A parent frame 112 pt wide holding
"Continued on page <marker>" fits while the number is one digit and does not
once it is two, so composing it once could not tell:
{"pages": [1]} []
{"pages": [9]} []
{"pages": [10]} ["page 10: 1 character(s) ..."]
{} ["pages 10, 11, 12: 1 character(s) ..."]
Each page that shows the parent is composed as that page, and the pages are
grouped by how much they lose, so a story still gets one line.
Also from review: `story.get` now says `overset` is a UTF-8 byte offset into
`text`, not a character index. A test measures the difference on French text,
where the offset runs ahead of the character count.
2026-10-29 14:17:21 +05:00