Commit Graph
5069 Commits
Author SHA1 Message Date
Dylan M. Taylor 3ebeb2ac96 Merge pull request #2669 from dotCooCoo/feat/object-style-text-frame-options
Object styles: a style sets its frames' paragraph styles and Text Frame General Options
2026-11-12 15:25:59 -05:00
Dylan M. Taylor 6790d009fe Merge pull request #2651 from dotCooCoo/fix/placed-image-resolution
Place: images come in at the resolution stored in the file
2026-11-12 15:25:55 -05:00
FredApps 1c3552de8b Merge pull request #2699 from dotCooCoo/fix/typing-recomposes-edited-part
Compose: an edit composes only the paragraphs it can change
2026-11-12 20:11:53 +01:00
Codex fe631061db Use mutable row iteration in render fixture 2026-11-12 19:49:14 +01:00
Codex b5fad8e858 Use mutable subpath iteration for current Clippy 2026-11-12 19:45:08 +01:00
Codex 2a2d73ead9 Merge main preserving incremental composition and alpha-wrap caching 2026-11-12 19:41:39 +01:00
FredApps 113d196168 Merge pull request #2668 from dotCooCoo/fix/feathered-inner-effects
Render: a feathered object's bevel and inner effects fade with it
2026-11-12 19:40:26 +01:00
FredApps 17b74601fb Merge pull request #2663 from dotCooCoo/feat/alpha-channel-text-wrap
Text Wrap: Alpha Channel contours follow a transparent image's visible pixels
2026-11-12 19:38:50 +01:00
FredApps e9cc26df8a Merge pull request #2664 from dotCooCoo/feat/type-shortcuts-carry
Type: Justify All Lines ⇧⌘F, Em Space ⇧⌘M, En Space ⇧⌘N and Paragraph Rules ⌥⌘J
2026-11-12 19:31:45 +01:00
dotCooCoo 6446622464 Merge main into feat/object-style-text-frame-options 2026-11-12 10:14:11 -08:00
dotCooCoo d9afe26fc8 Merge main into feat/type-shortcuts-carry 2026-11-12 10:10:51 -08:00
dotCooCoo f0e63b333d IDML: a style without a category flag takes it from its based-on style
An object style that gives neither EnableStrokeAndCornerOptions nor
corners of its own takes the category from the style it is based on, and
one without EnableTextFrameGeneralOptions does the same for its text
frame options. A style based on [None] still sets neither, and [None]
keeps the corners it sets itself.
2026-11-12 10:01:16 -08:00
FredApps f5f7084fc3 Merge pull request #1845 from dotCooCoo/feat/table-go-to-row
Tables: Table › Go to Row… selects a row by its number
2026-11-12 18:58:57 +01:00
dotCooCoo 737fcfec04 IDML: an item without corners keeps none over its object style
Object styles now export their corners, and an import gives an item
without corner attributes the corners of its style chain and of [None].
An item with no corners whose style, a style it is based on, or [None]
sets corners now writes None for each corner, so it keeps no corners
after export and import. The lookup runs once per style.
2026-11-12 09:53:54 -08:00
autocraft-bot[bot] f82f147127 Merge pull request #2703 from dotCooCoo/fix/text-frame-inset-link-mixed
Text Frame Options: link the insets only when every selected frame has even sides
2026-11-12 17:51:29 +00:00
dotCooCoo b0f282f607 Object styles: the dialog changes only the document it opened for
New Object Style and Object Style Options record the document they open
on, with the epoch that File > Revert changes. OK is refused, and the
dialog stays open with the reason, when another document is active, the
document was closed, or it was reverted. Apply Style to Selection applies
the new style to the objects selected when the dialog opened that still
exist, not to a selection made while it was open.
2026-11-12 09:40:38 -08:00
autocraft-bot[bot] 8ee3c1f7d0 Merge main into fix/text-frame-inset-link-mixed 2026-11-12 17:34:04 +00:00
FredApps fa671a104c Preserve latest incremental-composition documentation 2026-11-12 18:15:44 +01:00
FredApps 3bdae7cec1 Merge main and preserve PR #2668 behavior 2026-11-12 18:14:28 +01:00
FredApps 2348380198 Merge main and preserve PR #2663 behavior 2026-11-12 18:14:28 +01:00
FredApps 268f432385 Merge main and preserve PR #2699 behavior 2026-11-12 18:14:28 +01:00
Codex 7f8b352196 Merge main and retain shortcut and preflight documentation 2026-11-12 18:13:30 +01:00
Codex e81b2ea99e Merge main and preserve table query options and ID guidance 2026-11-12 18:13:30 +01:00
dotCooCoo 970e98fcc5 Compose: say where reuse resumes after an edit that moves lines
An edit that moves lines into other frames composes on until a paragraph
starts in the same frame and place as before, or to the story's end, as
an_edit_that_moves_lines_composes_up_to_the_next_frame_the_text_starts_in
shows. The ROADMAP line no longer cites an issue about selection lag.
2026-11-12 09:12:05 -08:00
dotCooCoo 58cf0ba28a Place: WebP EXIF stops at the declared RIFF end
The RIFF size counts the bytes after its own field, so the container ends at
offset 8 plus the size, not 12. An EXIF chunk that ran up to four bytes past
the declared container was read when trailing bytes followed it. A new test
covers an exact size with and without trailing bytes, a size declared four
bytes short, and a file cut inside the EXIF chunk.
2026-11-12 09:08:51 -08:00
FredApps ed6bb0e093 Merge pull request #2696 from dotCooCoo/fix/idle-frame-page-count
Canvas: an idle frame paints and looks up only the spreads in view
2026-11-12 18:07:19 +01:00
FredApps 65dd56d7a6 Merge pull request #2671 from dotCooCoo/fix/satin-follows-image-edge
Render: satin and center inner glow on an image follow its painted edge
2026-11-12 18:06:50 +01:00
FredApps 04597b0652 Merge pull request #2657 from dotCooCoo/fix/keep-shadow-images
Render: keep drop shadow and outer glow images while an object moves
2026-11-12 18:06:07 +01:00
FredApps a5be0905dd Merge pull request #2649 from dotCooCoo/fix/merge-image-fields
Data merge: an image field in text places the image, not its path
2026-11-12 18:05:02 +01:00
FredApps 9aa103b3a8 Merge pull request #1843 from dotCooCoo/fix/copied-story-anchor-table-ids
Copy: copied text gets text anchors and tables of its own
2026-11-12 18:04:28 +01:00
dotCooCoo 49792c9ad5 Text wrap: look up Alpha Channel outlines by binary search
The document keeps its outlines sorted by image and threshold, and the
lookup uses a binary search. The data merge test now checks that the
merged document has the image's outline, and that a bounding box wrap
leaves the same caption overset.
2026-11-12 09:04:11 -08:00
FredApps 31d4c7f7f4 Merge pull request #2665 from dotCooCoo/feat/paste-clipboard-image
Paste: images on the system clipboard paste as embedded images
2026-11-12 18:03:55 +01:00
FredApps f3f5cd3e23 Merge pull request #2589 from dotCooCoo/fix/nested-anchored-frame-placement
Anchored text frames: place a frame anchored inside another anchored frame
2026-11-12 18:02:52 +01:00
FredApps e8276337a3 Merge pull request #2354 from dotCooCoo/fix/table-story-target
Reject ambiguous table IDs across stories
2026-11-12 18:02:30 +01:00
FredApps 811c349b39 Merge pull request #2653 from dotCooCoo/fix/pages-thumbnails-per-edit
Pages: an edit no longer renders every page thumbnail again
2026-11-12 18:01:44 +01:00
FredApps b70472bc52 Merge pull request #2647 from dotCooCoo/feat/non-rectangular-frame-inset
Text Frame Options: a non-rectangular frame shows one Inset field
2026-11-12 18:00:15 +01:00
FredApps 448ec5e468 Merge pull request #2660 from dotCooCoo/fix/cmyk-view-conversion
CMYK view: convert the blended inks to screen colours on the render threads
2026-11-12 17:59:36 +01:00
FredApps 4d86f3e34a Merge pull request #2355 from dotCooCoo/fix/mcp-dirbuilder-windows
Fix MCP temporary directory build on Windows
2026-11-12 17:58:36 +01:00
FredApps b7321d31b8 Merge pull request #2659 from dotCooCoo/feat/justification-auto-leading-single-word
Justification: the dialog sets Auto Leading and Single Word Justification
2026-11-12 17:58:12 +01:00
FredApps 6e50ee3974 Merge pull request #2650 from dotCooCoo/feat/paragraph-value-checks
Text: paragraph spacing and justification values are checked
2026-11-12 17:57:35 +01:00
FredApps 2522b78ef3 Merge pull request #2656 from dotCooCoo/fix/preflight-off-interface-thread
Preflight: check the document on a background worker, not on every edit
2026-11-12 17:56:38 +01:00
Dylan M. Taylor e2b5dbaa8a Merge pull request #2648 from dotCooCoo/fix/issue-1999
Compose: vertical Center, Bottom and Justify measure to the last baseline
2026-11-12 11:29:27 -05:00
dotCooCoo 20319e991e Text Frame Options: link the insets only when every selected frame has even sides
The dialog turned the inset link on when the first selected frame had the
same inset on all four sides. With a second frame whose sides differ, typing
one side then set all four sides of every selected frame, so the second
frame lost its other insets.

The link is now on only when every frame the dialog changes has even sides:
the selected items, else the caret's frame, else every frame of the caret's
story.
2026-11-12 08:07:12 -08:00
dotCooCoo 7604db695f Copy: point copied cross-references at copied anchors in one pass
Each copied story with text anchors walked every story copied before it
to retarget their cross-references, so copying many such frames took
time quadratic in their number. The copies' cross-references are now
pointed at the copied anchors once, after the last item is copied.
2026-11-12 07:57:27 -08:00
jayzed80 5c484618ca Save: a TIFF, BMP or PSD too big for opening to inflate is stored as is, so the document reopens (#2283) (#2701)
save deflated every asset that isn't PNG, JPEG, GIF or WebP, with no size
cap, while opening refuses a deflated asset over 1 GiB or deflated entries
over 4 GiB together. An asset past either cap is now stored as is, which
opening reads at any size. Smaller assets are deflated as before, and the
zip bomb guard on load is unchanged.
2026-11-12 15:53:23 +00:00
dotCooCoo 329806477e Data merge: an explicit QR role in text is refused, and the caret follows each field
data.placeholder.add with role qr and the insertion point in text bound
the QR code to the first selected frame, which the caret was not in. It
now returns "qr placeholders bind to a frame", as a QR field there does.

A field inserted at the insertion point left the caret before its
marker, so a second field went in front of the first. The caret now
moves past the marker, as after typing.

Docs: docs/agents.md.
2026-11-12 07:45:10 -08:00
dotCooCoo c2a1543528 Copy: mark the renumber results as must-use
renumber and its helpers return false when a copy nests deeper than
MAX_COPY_DEPTH and must not be inserted. They now carry #[must_use], so
a caller that drops the result fails to build under -D warnings.
2026-11-12 07:40:29 -08:00
dotCooCoo 092c46c148 Render: list layers among the kept shadow image's dependencies
The doc comment on with_kept_filters now names the document's layers next to its colors, styles and images, as Deps holds them.
2026-11-12 07:39:06 -08:00
Adithya Shankaran 92043b4c48 Automation roots: refuse COM¹ to LPT³ and a device name before a colon (#2383)
* Automation roots: refuse COM¹ to LPT³ and a device name before a colon

is_device_name missed COM¹, COM², COM³ and LPT¹, LPT², LPT³, which Windows reserves as it does COM1.
It also cut the name only at a period, so COM1: and NUL:x were not seen as device names.

* Credit my name in the About window

* Automation roots: document the device-name tests

CodeRabbit's docstring check counts the touched tests. same_component stays without a doc comment, because #2205 deletes that function and a doc line above it conflicts.

* Automation roots: record the device-name refusal

The MCP roots description and the roadmap now name COM¹ to LPT³ and a device name before a colon.
2026-11-12 15:09:39 +00:00
dotCooCoo e22a6362cc Compose: list every case that composes a story whole in gap 20
docs/gaps.md now lists the same cases as docs/architecture.md and
reuse::plain. A doc comment on rejoin says that a run style an edit uses
for the first time stops the reuse until the old composition reaches the
same style at the same index.
2026-11-12 06:53:12 -08:00