Commit Graph
3053 Commits
Author SHA1 Message Date
Dylan M. Taylor bd7fb76d4c fix: annotate package output permissions (SonarCloud rust:S2612)
New packages are created with the ordinary 0666 request; the process umask
decides the effective mode. Annotated with that reason so the analyzer's
world-writable warning does not change the intended sharing behaviour.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-10-23 09:53:28 -04:00
Marco Arnulfo 13f6739f49 Layout: Next or Previous Spread at the last or first spread is no jump for Go Back
At the end of the document the spread command only centres the spread in view,
which can move the view from one facing page to the other. That move was
recorded as a jump, so Go Back went to the other page of the same spread
instead of the page viewed before.
2026-10-23 15:39:47 +02:00
Marco Arnulfo e7d16aeaaa docs: autoflow drops the pages it added for unused frames; threading into grouped frames is no longer a gap 2026-10-23 11:40:25 +02:00
Marco Arnulfo 5539e28647 Layout: Go Back after Presentation returns to the last spread presented
Presentation's spreads now count as one jump in the window's history, and
leaving it as a jump back to the view it was entered from, at the place the
view was. Before, the history stayed on the last presented spread while the
view was put back, so Go Back couldn't reach it.

docs/gaps.md: Go Back and Go Forward are two of the missing menu items, 149.
2026-10-23 11:26:32 +02:00
Marco Arnulfo 0160b7af07 Convert to Text (all instances): a caret in a table cell or a footnote keeps its place after the converted value; gaps: 150 missing menu items 2026-10-23 10:56:22 +02:00
aiongg bc1ccfa481 Merge remote-tracking branch 'upstream/main' into docking-trial
# Conflicts:
#	Cargo.toml
#	crates/ui-egui/src/i18n/fr.rs
2026-10-23 05:07:00 +00:00
aiongg e74208dd7e Merge pull request #1642 from aiongg/ci-speed
CI: one test binary per crate, nextest, line tables only
2026-10-22 23:59:30 -04:00
aiongg 62148670bd CI: apt packages through craft-common-actions' cached install 2026-10-23 02:54:21 +00:00
Marco Arnulfo 3cd235ee5c Type › Text Variables › Convert Variable to Text: the selected instances, or every instance of one variable, become the text they show on their page 2026-10-23 03:40:11 +02:00
Marco Arnulfo 86356d15be Layout: Go Back and Go Forward through the pages viewed, with InDesign's shortcuts 2026-10-23 03:19:47 +02:00
aiongg 0fd6e06ad6 CI: install nextest for the test step 2026-10-23 01:17:55 +00:00
aiongg 3ee11391ae CI: one integration-test binary per crate 2026-10-23 01:17:48 +00:00
skylar taylor-barrick d9477695e2 #249: test that menu rows are selectable across their full width
A menu row only reacted over its text because the column used a plain top-down layout. The test renders a menu column with a short Preferences row and clicks near the right end of the row, expecting the dialog to open. Without the justified layout the click misses and the test fails.
2026-10-22 17:57:36 -06:00
skylar taylor-barrick fecf5906c3 #248: test that the start screen offers every print preset including A6
The start screen showed only the first ten presets and had no A6 sheet. The test checks that the start screen paints a card for each print preset, that A6 exists at 105 x 148 mm, and that the Properties page-size list agrees. Without the fix it fails because the B5 card is cut off by take(10) and there is no A6.
2026-10-22 17:57:36 -06:00
skylar taylor-barrick 15e4fdd124 #329: test that the Help menu works on the start screen
The Help menu's links were greyed out when no document was open, because UI commands outside app. and window. needed a document. The test checks every help.* UI command is enabled with an empty session while another UI command (view.rulers) stays disabled. Without the help. exemption it fails on "help.discord must work from the start screen".
2026-10-22 17:57:36 -06:00
aiongg 40e86d48a5 CI: xtask runs tests with nextest, doctests apart, wasm in one check 2026-10-22 23:35:30 +00:00
aiongg 079b5bea82 CI: dev profile keeps line tables only 2026-10-22 23:31:37 +00:00
Marco Arnulfo 2caa39e130 Autoflow: fill the pages that follow before adding pages at the end
Autoflow (Shift-click, autoflow on Place, text.thread with autoflow) inserted
new pages right after the story's last frame, in front of the document's own
pages. As in InDesign, it now threads one frame per column on each page that
follows, whatever else the page holds, and only then adds pages at the end of
the document. It fills whole pages, so an estimate that stops inside a page
can't leave its later columns out of the thread. Frames it set past the end
of the text are removed again; the pages they were on stay. Smart Text Reflow
of the primary text frame keeps adding pages after the story's last page.

Shrinks gap 26: flowing into the primary text frame of the following pages
is left.
2026-10-22 23:28:22 +02:00
Brandon ThomasandClaude Opus 5.5 5e8ef67832 Release 0.12.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.12.0
2026-10-22 15:38:12 -04:00
MarekSpodBiedry d292dd2acd IDML export: write the graphic placed in a table cell (#1551) 2026-10-22 21:06:54 +02:00
MarekSpodBiedry ce486fda63 Fix slice panics in the PDF post-passes on malformed page trees and metadata (#1591) 2026-10-22 21:05:48 +02:00
MarekSpodBiedry fd3d5087fc Cursors: paint the tool cursors in the window on Wayland, so they keep the system size (#1544) 2026-10-22 21:03:58 +02:00
MarekSpodBiedry 62c71d004a Align towards/away from spine on parent-page folios by page side (#1577) 2026-10-22 21:03:00 +02:00
NetterSilverandClaude Haiku 5.5 2ddcf6d2a1 Decode UTF-16 plain text files by BOM on import
Found while testing crates/textimport/src/lib.rs:117

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 20:08:56 +02:00
NetterSilverandClaude Haiku 5.5 bbb95930a2 Skip control words and symbols used as RTF \uN fallbacks
Found while testing crates/textimport/src/rtf.rs:197-243 (the \u handler at :235-242; control words never decrement `pending`)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 19:26:49 +02:00
Davit MatchakhelidzeandClaude Opus 5.5 6c25107508 ui: the Discord button widens to fit its label instead of spilling out
The start screen's community card reserves the button's measured width, so
the line beside it wraps before the button. Georgian's label overflowed the
fixed 190 px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
2026-10-22 21:23:52 +04:00
Hamza e6d78a71d0 A right-to-left paragraph's first-line indent is at its right edge (#1448)
The first-line indent was added to the left indent whatever the paragraph's
direction, so a right-to-left paragraph's first line moved the wrong way. With
the hanging indent a numbered list uses — right indent 10 mm, first line
−10 mm — the first line went 10 mm outside the frame on the left while the
wrapped lines sat where it should have been.

It is the paragraph's start-side indent, which is the right one in a
right-to-left paragraph; the drop-cap case beside it already made that
distinction.

Measured on a 200 pt column with that hanging indent:

  first line    right edge 200     (the frame's edge, as InDesign sets it)
  wrapped       right edge 171.65  (10 mm in)
  every line    left edge >= 0     (nothing outside the frame)

and the same paragraph left to right is unchanged, first line at 0 and wrapped
lines 10 mm in.

The test checks both directions; the right-to-left half fails without the
change. 359 composition tests pass unchanged.
2026-10-22 22:20:41 +05:00
PiMinusMaxandClaude Opus 5.5 d080a5635a Swatches panel: a gradient dropped on a colour group row is kept too
The drop zone held the ungrouped swatches only, so releasing the
gradient over a colour group's row did nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 19:13:31 +02:00
KnottyDyes bba31c17b6 PDF: report visible unembedded fonts in PDF/X-4 (#909)
Track text state through graphics saves and drawn forms; exempt invisible text. Report font names and pages in export warnings and validation without embedding or outlining placed fonts.
2026-10-22 10:31:21 -06:00
moppeeer c97bdb9316 Merge branch 'hyphenation-settings' into paragraph-panel-indesign 2026-10-22 17:32:39 +02:00
moppeeer 883bcddac1 Merge branch 'control-panel-lists-shading' into paragraph-panel-indesign 2026-10-22 17:32:39 +02:00
moppeeer daad84ac69 Merge branch 'list-buttons-hanging-indent' into control-panel-lists-shading 2026-10-22 17:30:19 +02:00
moppeeerandClaude Opus 5.5 b3896d8122 List buttons: track the hanging indent they set (listHang)
A paragraph attribute records that the Bulleted or Numbered List button set
the hanging indent; turning the list off takes the indent away only then
(and while it is still as applied), and clears the mark. A paragraph whose
own indents were 18/-18 before the list keeps them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:30:14 +02:00
moppeeerandClaude Opus 5.5 08b356cf44 Hyphenation Settings: a mixed checkbox turns on first; refused settings show why
A checkbox that differs across the selected paragraphs starts off, so the
first click turns it on for all (egui toggles the value under the
indeterminate look). Settings type.para refuses no longer count as
previewed: the paragraphs go back, the reason shows and they are not tried
again until they change; OK keeps the dialog open with the reason.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:15:22 +02:00
moppeeer 7f9d7c2d41 Merge branch 'hyphenation-settings' into paragraph-panel-indesign
# Conflicts:
#	ROADMAP.md
2026-10-22 17:01:04 +02:00
moppeeer 66fcf3ddce Merge branch 'control-panel-lists-shading' into paragraph-panel-indesign
# Conflicts:
#	ROADMAP.md
2026-10-22 17:01:04 +02:00
moppeeer c427640726 Merge remote-tracking branch 'origin/main' into control-panel-lists-shading
# Conflicts:
#	crates/ui-egui/src/i18n/fr.rs
2026-10-22 16:53:56 +02:00
moppeeer 6bd8fe7c4a Merge remote-tracking branch 'origin/main' into control-panel-text-modes
# Conflicts:
#	crates/ui-egui/src/i18n/fr.rs
2026-10-22 16:52:21 +02:00
moppeeer a320b8888a Merge remote-tracking branch 'origin/main' into properties-more-options
# Conflicts:
#	crates/ui-egui/src/i18n/fr.rs
2026-10-22 16:51:06 +02:00
moppeeer 42d55734de Merge remote-tracking branch 'origin/main' into hyphenate-across-column
# Conflicts:
#	ROADMAP.md
2026-10-22 16:35:55 +02:00
moppeeer 7971b8e9bd Merge remote-tracking branch 'origin/main' into hyphenation-settings
# Conflicts:
#	ROADMAP.md
2026-10-22 16:35:50 +02:00
aiongg e44662305f i18n tests: the same checks for every language, none fail on a missing translation (#1576)
* i18n: missing French strings don't fail tests

* i18n: drop the Czech tool-name translation check

* i18n tests: one catalog check for every language, no translated literals

One test checks every catalog (each language's table and context table, and
the shared tables' columns) for duplicate and stale keys, empty translations,
placeholders, padding, ellipses and label colons. One test selects, persists
and checks document data for every interface language. Context lookup,
fallback, built-in names and RTL are checked over every language against the
catalogs. Asserts on particular translated text, and checks that particular
strings are translated, are gone.

* i18n: drop a stale German entry
2026-10-22 10:25:46 -04:00
aiongg 9bd85a14b2 i18n: complete the French interface (#1347)
* i18n: complete the French interface (#644)

* i18n: French uses gabarit for parent pages; fixes

* i18n: French for the guide commands and the shortcut-set import
2026-10-22 09:30:03 -04:00
aiongg 8f98f3dc8b Keyboard Shortcuts: import an InDesign shortcut set (#1296)
* #1180: import an InDesign keyboard shortcut set

Edit > Keyboard Shortcuts gets Import InDesign Set..., which reads the
.txt that InDesign's Show Set writes (window.importShortcuts {path|text}).
Matched commands take the set's Default shortcut, or lose theirs when
every occurrence says [none defined]; other commands give up keys the
set takes. The report lists changes, cleared conflicts, and the items
that could not be matched or read. Tool keys stay fixed.

* #1180: read the set file through the checked reader

* #1180: when two items want the same keys, the later one takes them
2026-10-22 09:28:11 -04:00
aiongg 291b39a1f3 Edit: the Paste in Place shortcut pastes in place (#1346)
* Edit: the Paste in Place shortcut pastes in place

* Edit: the Paste in Place chord handling is native-only (web gets the key press)
2026-10-22 09:27:00 -04:00
aiongg 1500b444b5 Hidden characters: trailing spaces show their dots before the paragraph mark (#1345)
* Hidden characters: trailing spaces show their dots before the paragraph mark (#594)

* Hidden characters: skip glyphs whose offset isn't a character boundary
2026-10-22 09:26:51 -04:00
aiongg d2bdb0866f Paste: other apps' text goes into a text caret after copying objects (#1344)
* Paste: other apps' text goes into a text caret even after copying objects (#212)

* Paste: text that matches a copied frame still pastes; groups with text frames aren't anchored (#212)
2026-10-22 09:26:43 -04:00
aiongg 22a40fd57e Merge pull request #1144 from aiongg/land-402-404
Land the rebased #402 and #404
2026-10-22 09:26:38 -04:00
moppeeer e262fb907d Merge branch 'hyphenation-settings' into paragraph-panel-indesign 2026-10-22 15:09:35 +02:00
moppeeer ede36e55b7 Merge branch 'control-panel-lists-shading' into paragraph-panel-indesign 2026-10-22 15:09:35 +02:00