Commit Graph
4827 Commits
Author SHA1 Message Date
moppeeerandClaude Opus 5.5 eaef6e94f5 Format the conversion test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:11:30 +02:00
moppeeer bc7e4bb0c6 Merge branch 'table-menu-insert' into table-convert-dialogs
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/dialogs.rs
2026-10-23 22:05:28 +02:00
moppeeer e963fa3f4d Merge remote-tracking branch 'origin/main' into table-convert-dialogs
# Conflicts:
#	ROADMAP.md
2026-10-23 22:05:07 +02:00
moppeeerandClaude Opus 5.5 dd2d7e6949 Insert Table: the style in the same step, and the engine's limits in the dialog
- table.insert takes tableStyle and applies it in its own edit, so one Insert
  Table is one undo, and a style that is gone (or not a name) changes nothing.
  The dialog passes it instead of running style.table.apply afterwards.
- The dialog's fields stop at table.insert's limits (500 body rows, 200
  columns, 100 header or footer rows; now public constants), so the table made
  is the one shown.

Found by CodeRabbit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:42 +02:00
moppeeer bbe29dfecc Merge remote-tracking branch 'origin/main' into table-menu-insert
# Conflicts:
#	ROADMAP.md
2026-10-23 21:59:50 +02:00
moppeeerandClaude Opus 5.5 f5a67336ad Esc on a cell selection starting in a merged cell selects that cell's text
selection.cells may start at a covered grid position; the toggle now goes to
the merged cell (its owner at the top left), whose story holds the text.
Found by CodeRabbit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:59:37 +02:00
moppeeer 7a0c350114 Merge remote-tracking branch 'origin/main' into table-cell-keys
# Conflicts:
#	ROADMAP.md
2026-10-23 21:57:04 +02:00
Marco Arnulfo 005030404c Save dialogs: only a file name goes after the folder, and no name keeps no folder (#1653) 2026-10-23 21:41:16 +02:00
aiongg 1fd8463af9 i18n: missing translations are reported, never a failure (#1677)
A string without a translation shows in English, and an empty catalog row
counts as untranslated. Tests keep duplicate-key and placeholder checks and
the lookup, context, plural-caption and right-to-left mechanics; coverage,
stale-key, wording and per-language literal checks are removed.

`cargo xtask i18n-report`, also a `cargo xtask ci` step, runs the ignored
missing_translations_report test and prints the missing strings per language.
2026-10-23 15:39:24 -04:00
aiongg 2c32ee389b Engine: Export PDF and Print take a creation date, so the print test's two exports match (#1680) 2026-10-23 15:38:43 -04:00
Marco Arnulfo b5342e48cd Save and export dialogs start in the document's folder, or the last one used (#1653) 2026-10-23 21:32:05 +02:00
moppeeerandClaude Opus 5.5 cb988aef83 Show Hidden Characters marks table cells, as InDesign
Every text cell now shows its own hidden characters: spaces, tabs, paragraph
returns and an end-of-story # after its text (an empty cell shows just the #).
The table paragraph's return sits after the table's bottom right corner.
Cells showed no marks at all, so an empty table looked like plain lines.

The table marks come from table_hidden_marks (frame space), drawn with the
story's own marks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:31:06 +02:00
moppeeerandClaude Opus 5.5 cbb2a974d1 Tables: InDesign's Convert Text to Table and Convert Table to Text dialogs
Table › Convert Text to Table… and Convert Table to Text… open dialogs laid
out as InDesign's instead of converting at once with tabs and paragraphs:
- Column and Row Separator: Tab, Comma, Paragraph from the field's menu, or
  any characters typed.
- Number of Columns (Convert Text to Table), available when both separators
  are the same: the cells fill rows of that many.
- Table Style (Convert Text to Table), applied to the new table in the same
  undo step.

table.convertFromText takes rowSeparator, columns and tableStyle, and any
characters as separators; table.convertToText takes both separators
(Table::text_with). Convert Text to Table is available only with text
selected outside a table, as in InDesign. New strings are translated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:21:32 +02:00
macadminHU e4fc34e2bb HU1: correct historical context-caption count
Correct only the 2026-10-17 narrative from four to two context captions, matching the dated revision history and ROADMAP. The current catalog still has four context captions. All eight local CI stages passed.
2026-10-23 21:19:46 +02:00
moppeeerandClaude Opus 5.5 10cd0cac3c Table menu in InDesign's order; Insert Table dialog laid out as InDesign's
- Table menu: Insert Table… (Cmd+Alt+Shift+T), Convert Text to Table,
  Convert Table to Text | Cell Options | Insert, Delete, Select | Merge,
  Unmerge, Split Horizontally/Vertically, Convert Cell Type, Convert Rows |
  Distribute Rows Evenly, Distribute Columns Evenly. The Table panel item left
  the menu (it is in Window › Type & Tables, Shift+F9).
- Cmd+Alt+Shift+T opens the Insert Table dialog, as InDesign's; it ran
  table.insert with its defaults, so the shortcut and the menu did different
  things.
- The Insert Table dialog: InDesign's title, a narrow window, Body Rows and
  Columns then Header and Footer Rows as numbers with spinners and
  right-aligned labels, and a Table Style applied to the new table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:57:03 +02:00
NetterSilverandClaude Opus 5.5 913bce948f Keep non-finite IDML numbers out of imported documents
Fixes #1589

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:48:11 +00:00
macadminHU 5614ce58ea HU1: record localization merge test repairs
Record the test integration fixes, preserve both sides of the merge, and align the current Hungarian catalog count with the validated sources.
2026-10-23 20:47:57 +02:00
macadminHU 306aceb9c8 HU1: document localization test integration
Record the merge test repairs and the verified catalog count of 1,904 entries plus four context captions. Part of the locally validated four-file update.
2026-10-23 20:46:55 +02:00
macadminHU 99761bdbad HU1: remove unused Hungarian catalog entries
Remove only 13 unused entries identified by the shared integrity test; retain all active translated UI labels. Validated with the complete four-file update: 14 localization tests and all eight CI stages passed.
2026-10-23 20:45:54 +02:00
macadminHU 89f7162457 HU1: restore localization tests after merging main
Restore the separate catalog and caption tests, preserve both merge parents’ assertions, and include Hungarian in the shared integrity checks. Part of the four-file update validated by all eight local CI stages (2,993 tests passed).
2026-10-23 20:41:05 +02:00
moppeeerandClaude Opus 5.5 3886ad2fd1 Tables: Shift+Tab goes back a cell and Esc toggles text and cell selection
As in InDesign (Learn Skills Daily / Adobe "How to make a table" lesson):
- With the Type tool in a table cell, Shift+Tab goes to the previous cell.
  It went on to the next one: the tool sent a plain Tab whatever the
  modifiers.
- Esc in a cell toggles between the text and the cell: the insertion point
  or text in a cell selects that cell, and selected cells select the text of
  the first one. Esc left the table and selected the frame.

New engine command table.toggleSelection does the toggle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:33:44 +02:00
Marco Arnulfo 7362530591 MCP: --automation-read-root and --automation-write-root may each be given more than once (#1552)
A path passes when it lies inside one of the roots of its kind. The roots'
common parent, a sibling named like a root, `..` or a link out of them and
the other kind's roots stay refused; a folder given twice counts once.
2026-10-23 20:30:07 +02:00
aiongg ae5a6d549c CI: run the gate through craft-common-actions' shared gate.yml; FreeBSD nightly and on release (#1645)
ci.yml calls the shared workflow (cached apt packages, nextest, main-only cache saves, Cargo.lock check). FreeBSD and Windows ARM64 run nightly and on pushes to release instead of on pull requests. Depends on storytold/craft-common-actions#69.
2026-10-23 14:21:51 -04:00
andeecollard da8d3a2937 PDF: accept forward xref links and reject cycles 2026-10-23 19:19:20 +01:00
moppeeer d2944377db Merge branch 'direct-select-anchor-points' into properties-anchor-points 2026-10-23 19:44:28 +02:00
moppeeer d3960f90df Merge branch 'direct-select-anchor-points' into direct-select-handles 2026-10-23 19:38:36 +02:00
moppeeerandClaude Opus 5.5 8daf036a3e Add Anchor: an invalid subpath is an error, not the last subpath
path.appendAnchor read `subpath` with as_u64, so -1 or "0" counted as omitted
and the point went onto the last subpath. Only an omitted (or null) subpath
means the last one now; any other value must be a valid index.

Found by CodeRabbit on #1657.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:38:24 +02:00
macadminHU b83e2cfaf8 Merge branch 'main' into codex/hungarian-localization 2026-10-23 19:32:53 +02:00
moppeeerandClaude Opus 5.5 c6821516e5 Edit › Clear with points selected deletes the points, not their paths
The Delete key already ran path.deletePoints under Direct Selection, but
Edit › Clear (the menu item, a native accelerator, or the control channel)
called edit.clear, which removed every path whose points were selected. With
points selected and no ids given, edit.clear now deletes those points, as
InDesign's Clear does.

Found by CodeRabbit on #1657.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:32:08 +02:00
Marco Arnulfo 85552ca0f3 Selection: a key object needs at least two selected objects 2026-10-23 19:03:26 +02:00
aiongg 1991fd5df6 Merge branch 'print-color' into print-color-x1a 2026-10-23 16:52:47 +00:00
aiongg 4c29b60700 Print color: PDF/X-1a conformance level, intent profile and review fixes
- Write GTS_PDFXConformance (PDF/X-1a:2003) in the document information and
  XMP; check_pdfx1a requires it.
- A registered printing condition (Coated FOGRA39) has no DestOutputProfile,
  so no ICC v4 profile goes into the PDF 1.4 file; an unregistered condition
  needs an ICC v2 profile, else the export fails.
- Images the flattener can't read fail the export, naming the page and its
  graphics.
- Shadow mask coverage (with - without) / (255 - without), so partly
  transparent objects drawn over their shadow give the rendered pixel back.
- The dropped-inks warning says their tints were dropped and won't print.
- Type 3 fonts pass; their glyph procedures are checked like page content.
2026-10-23 16:52:05 +00:00
andeecollard 62a26d9e35 PDF: preserve catalogs and full references in layer variants 2026-10-23 17:47:18 +01:00
aiongg 39f7ed4349 Print color: Separations Preview separates again when the CMYK working space changes 2026-10-23 16:44:57 +00:00
NetterSilverandClaude Opus 5.5 55f9e690e3 Reload ICC profiles loaded in Color Settings at start-up
Fixes #1474

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:27:41 +02:00
Marco Arnulfo a0790bcb55 Layout: Go Back and Go Forward wait for the view to be fitted 2026-10-23 18:08:05 +02:00
MarekSpodBiedry 708feab5cd find: search and change text inside table cells in document scope (#1624) 2026-10-23 17:37:45 +02:00
MarekSpodBiedry f40aca9d37 Make the start screen scrollable on short windows (#1655) 2026-10-23 17:37:35 +02:00
MarekSpodBiedry 32412eb6c5 Fill the empty or graphic frame under the pointer when a file is dropped on it (#1646) 2026-10-23 17:36:12 +02:00
MarekSpodBiedry 7b91a1eefc idml: explicit zero cell edge weights hide the default table border (#1623) 2026-10-23 17:35:51 +02:00
Dylan M. Taylor 2e36dcf909 packaging: harden shell scripts (SonarCloud S7688/S7679/S7682/S131) (#1640)
- Use bash's [[ ]] instead of [ ] for conditional tests (S7688).
- Copy positional parameters into named locals in render(), has() and
  sha256() (S7679).
- End the env.sh helper functions with an explicit return, which keeps
  the last command's status (S7682).
- Give the appimagetool checksum case a default branch for architectures
  without a pinned download (S131).

No behaviour change; shellcheck -x is clean.
2026-10-23 11:16:54 -04:00
Dylan M. Taylor df1db1646b web: let the browser zoom the page (SonarCloud Web:S7926) (#1641)
The viewport no longer sets user-scalable=no, so people who need to zoom
the page can (WCAG 1.4.4). The canvas takes touch-action: none, so pinch
and pan gestures on it still go to the app's own zoom, as eframe's touch
handlers expect, instead of zooming the page.
2026-10-23 11:16:49 -04:00
moppeeer db1e7b182c Merge branch 'direct-select-anchor-points' into properties-anchor-points
# Conflicts:
#	ROADMAP.md
2026-10-23 17:00:40 +02:00
Marco Arnulfo 8eab33eba1 Align: no key object once the selection is down to one object (#1637) 2026-10-23 16:54:21 +02:00
moppeeer f7197e1e0b Merge branch 'direct-select-anchor-points' into direct-select-handles 2026-10-23 16:51:43 +02:00
moppeeerandClaude Opus 5.5 9442f5d9c8 Selected points follow their path: Toggle Selection and Add Anchor at the start
- selection.toggle dropping an item from the selection now drops its selected
  points too. They stayed in selection.anchors, so the arrow keys still moved
  points of a frame that was no longer selected.
- path.appendAnchor at the start moves the sub-path's selected points up one
  place, as path.reverse remaps them, so they keep naming the same anchors.

Found by CodeRabbit on #1657.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 16:51:31 +02:00
moppeeer 3c2d4abeb0 Merge remote-tracking branch 'origin/main' into direct-select-handles
# Conflicts:
#	ROADMAP.md
2026-10-23 16:40:46 +02:00
Marco Arnulfo c764454ed3 Align: a click on one of several selected objects makes it the key object (fixes #1637) 2026-10-23 16:22:52 +02:00
MarekSpodBiedry c0daace441 Lay out the parent-page side lookup so rustfmt passes (#1577) 2026-10-23 16:08:36 +02:00
MarekSpodBiedry 5344faf9f0 IDML export: clip a table cell's graphic to the cell (#1551) 2026-10-23 16:08:12 +02:00