Commit Graph
4115 Commits
Author SHA1 Message Date
moppeeerandClaude Opus 5.5 69e8ab0d3a Searched UI commands test: a text selected context, where Convert Text to Table runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 18:51:44 +01:00
Zinadin ZidanandClaude Opus 5.5 2e8bda16d0 Rectangle dialog: every ruler unit shows the size and reads it back (#1964)
A test for all eleven ruler units (points to Ha): the width and height
the dialog shows read back as the frame's size, so OK never resizes it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 23:08:46 +06:00
Claude 239ac1bbb2 Cross-references: saved text counts as generated only on an exact match
An imported cross-reference's text is regenerated only when it is exactly what its format
generates for its destination (Document::drop_generated_xref_text, once the destinations are
resolved); "Page 7, revised" is an edit and is kept, as is the text of one whose destination is
gone. The loose in-order match (matches_format) is gone. Page numbers are recognised by the
instance's AssociatedTextVariable (a cross-reference page number variable, or InDesign's name
for it when the file doesn't define it) rather than its Name, and text inside tracked-change
wrappers counts as shown (insertions in, deletions out). Export writes generated text with its
page numbers as the live variable too, so it reads back as generated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
2026-10-30 17:02:17 +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 e1d072f3bc Parent pages: this branch keeps only the canvas fix
The running-header placeholder on parent pages moves to its own branch
(running-header-placeholder), as asked in review, so each lands on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
2026-10-30 16:56:41 +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
Claude d13ebdf777 Merge storytold/main into parent-page-display
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
moppeeerandClaude Opus 5.5 2505d8972c rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:05:43 +01:00
texjer 4461ebd886 Import warnings: Show selects the frame a story warning is about 2026-10-30 11:50:41 -04:00
moppeeerandClaude Opus 5.5 133536f0e7 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:48:55 +01:00
MarekSpodBiedry 759ab3ba7c Separate the CJK commands from Insert Math Expression in the Type menu (#2043) 2026-10-30 16:39:22 +01:00
MarekSpodBiedry 69cadd9aa9 Spellcheck squiggles follow the text frame rotation (#2042) 2026-10-30 16:38:34 +01:00
MarekSpodBiedry 93d21bc089 Add File > Quit to the in-window menu on Windows and Linux (#2044) 2026-10-30 16:37:44 +01:00
Zinadin ZidanandClaude Opus 5.5 cdb2057aab Rectangle dialog: width and height in the ruler units, not always picas (#1964)
A click with a frame tool opened the Rectangle dialog in picas whatever
Preferences > Units & Increments or the rulers' unit menus said. It now
shows the width in the horizontal ruler unit and the height in the
vertical one, and reads bare numbers typed in each field the same way.
The properties panel and the control channel open it the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 21:36:32 +06:00
moppeeerandClaude Opus 5.5 7e3bca3d91 egui 0.37: the renamed APIs in this branch's code
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:32:41 +01:00
moppeeerandClaude Opus 5.5 7cb620608a rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:23:18 +01:00
moppeeerandClaude Opus 5.5 559f8f590b rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:56:16 +01:00
moppeeerandClaude Opus 5.5 e73209a4e5 Table of Contents: every field named by its label, for screen readers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:50:46 +01:00
moppeeerandClaude Opus 5.5 f4e12a5b50 egui 0.37: the renamed APIs in this branch's code
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:42:16 +01:00
moppeeerandClaude Opus 5.5 dd0b891ef0 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:35:16 +01:00
moppeeerandClaude Opus 5.5 00e26ce428 Paragraph Style Options: Next Style named by its label, for screen readers; craft_ui dropdown
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:11:34 +01:00
tareq 00604b74f2 Toolbar: accept slot releases that drift outside the button.
egui still counts a click when the pointer leaves the tool rect; keep the release modifiers when the press started on the slot. The Alt-cycle test now uses 1 ms frames so an Alt-then-plain pair is a real double-click that must not open Polygon Settings.
2026-10-30 14:31:53 +01:00
tareq 9476b39e89 Toolbar: bind click modifiers to the slot rect.
Ignore primary releases outside this tool button so another widget cannot steer Alt-cycle or suppress dialogs; harden the Alt-click test to clear i.modifiers before release.
2026-10-30 13:56:25 +01:00
moppeeerandClaude Opus 5.5 278b8e8bf4 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:21:04 +01:00
tareq db4f8a4d6d Toolbar: assert Alt-click wrap-around in the flyout cycle test.
CodeRabbit nitpick: after the last group tool, the next Alt-click must return to the first and keep the flyout closed.
2026-10-30 13:21:01 +01:00
moppeeerandClaude Opus 5.5 5b52b23b00 IDML export: the paragraph box overprints in their own function
Keeps para_box_attrs within clippy's cognitive complexity limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:07:37 +01:00
moppeeerandClaude Opus 5.5 d1b647ac8c egui 0.37: the renamed APIs in this branch's code
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:05:20 +01:00
tareq 4880b917ee Toolbar: read click modifiers from the pointer release.
Prefer the primary-release event's modifiers for Alt-cycle, and suppress polygon/transform dialogs when either click of a double was modified.
2026-10-30 13:02:19 +01:00
tareq 5ec44d213e Toolbar: ignore double-click dialogs after an Alt-click.
egui pairs a plain click with a prior Alt-click as a double-click; remember the previous click's Alt so polygon/transform dialogs only open for two plain clicks.
2026-10-30 12:43:59 +01:00
moppeeerandClaude Opus 5.5 d4b7e66592 Table convert dialogs: menu_enabled from main's split menu state module
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:33:53 +01:00
macadminHU 4cb6ad4f8a HU1: retain menu assertions under the upstream complexity limit
Introduced a new test function to check Georgian menu label translations and replaced the previous inline implementation with a call to this new function.
2026-10-30 12:07:19 +01:00
macadminHU 453a3256f9 HU1: translate the Story Editor depth-ruler caption 2026-10-30 12:06:41 +01:00
macadminHU 9e1e9d0795 HU1: retain upstream Georgian captions without duplicates
Removed Georgian translations for 'File Info...' and 'Check for Updates...'.
2026-10-30 12:04:03 +01:00
tareq 4652ad2bbc Toolbar: Alt/Option-click cycles the flyout tool group.
Matches InDesign/Photoshop: plain click keeps the shown tool; Alt-click advances the slot without opening the menu.
2026-10-30 12:00:47 +01:00
macadminHU 53d8805bb0 Merge branch 'main' into codex/hungarian-localization 2026-10-30 11:51:47 +01:00
moppeeerandClaude Opus 5.5 fd3d2f4e49 Document properties: the page box field in its own function
Keeps document_sections within clippy's cognitive complexity limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:46:43 +01:00
moppeeerandClaude Opus 5.5 0403b988c1 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:46:38 +01:00
moppeeerandClaude Opus 5.5 7366589464 Anchor point tests: transform_anchors from main's split Properties object module
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:41:28 +01:00
ashokram-si b68885b990 Spread::page_seams: draw the spine only where pages meet
The canvas worked out page boundaries itself, pairing pages in list
order and drawing a line between each pair. Pages that don't touch (an
imported spread can keep gaps between them) got a false spine in the
gap, and list order isn't position order for every spread.

Spread::page_seams, next to spine_x, now gives the edges where two of a
spread's pages meet: pages in position order, facing edges that touch,
each seam spanning both pages' heights. The canvas draws exactly those.

Test: page_seams for a facing pair in either list order, three pages
(two seams), a single page (none), a gap (none) and pages of different
heights.
2026-10-30 14:37:18 +05:30
ashokram-si 80055969e8 Merge remote-tracking branch 'origin/main' into feat/spread-spine-line-1838
# Conflicts:
#	ROADMAP.md
2026-10-30 14:37:17 +05:30
NetterSilverandClaude Sonnet 5.5 e5621e16e0 fix: combine inline decoration overrides with the character style in EPUB export
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-30 06:18:46 +00: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
VoiceLessQ b2d8d8809a Merge storytold/main into PR #1975 2026-10-30 00:42:27 -02:00
VoiceLessQ be81d5db0e Images: check the RGBA budget before GIF tone and CMYK TIFF decodes (#1586)
tone() decoded a GIF to RGBA and decode_cmyk_tiff() called read_image()
without the header check decode_rgba() runs. Both now call
too_large_to_decode() first. The decoders' own limits (image 512 MiB,
tiff 256 MiB) already refused these files; the guard refuses them from
the header instead.
2026-10-30 00:40:00 -02:00
Brandon Thomas a1e9bea41b Merge storytold/main into PR #1879 2026-10-29 21:55:46 -04:00
Brandon Thomas ee50a741dc Merge storytold/main into PR #1985 2026-10-29 21:55:34 -04:00
Brandon Thomas 56decd96e2 Merge storytold/main into PR #1990 2026-10-29 21:55:23 -04:00
Brandon Thomas 7137006d55 Merge pull request #1238 from seanth/inline-objects-under-text
[fix] Inline objects paint under their frame's text
2026-10-29 21:55:02 -04:00
Brandon Thomas b7e5b8f963 Merge pull request #1952 from Silvertree2010/fix/h3606-tagged-text-import-accepts-a-sig
Skip signed hex codes in Tagged Text <0x…> tags
2026-10-29 21:54:59 -04:00