Commit Graph
1588 Commits
Author SHA1 Message Date
dotCooCoo a92a3363b6 Merge main into feat/table-go-to-row 2026-11-02 14:41:10 -08:00
FredApps f704f481d5 Merge remote-tracking branch 'origin/main' into pr1654
# Conflicts:
#	ROADMAP.md
2026-11-02 18:25:00 +01:00
dotCooCoo e021658519 Merge main into feat/table-go-to-row 2026-11-02 07:24:50 -08:00
Brandon Thomas 1b02e5427f Merge remote-tracking branch 'origin/main' into land-2109 2026-11-01 14:50:36 -05:00
Brandon Thomas 3bd5adfb19 Merge pull request #2108 from Tom-R-Main/openbytes-title
file.openBytes: title a .designcraft file without its extension
2026-11-01 14:49:27 -05:00
Brandon Thomas d2045c4a82 Merge pull request #2081 from Silvertree2010/fix/h4609-script-parse-errors-report-the-w
Report script parse error line numbers from the original text
2026-11-01 14:49:20 -05:00
Brandon Thomas e3aea68cca Merge pull request #2084 from Silvertree2010/fix/h4663-math-svg-does-not-clamp-the-size
Clamp math.svg size to the same range as math.insert
2026-11-01 14:49:13 -05:00
Brandon ThomasandClaude Opus 5.5 9e12d58887 Math SVG: drop XML-forbidden characters before layout so they take no width
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:37:27 -05:00
Tom MainandClaude Opus 5.5 700c4bb344 file.openBytes: test titles that aren't ASCII
Names with characters outside ASCII, one shorter than the extension,
lose a trailing .designcraft or keep their names like the others.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApvpyStzzHbKyDBNxpzn2Y
2026-11-01 13:47:00 -05:00
Tom MainandClaude Opus 5.5 472869598f font.list: a face without an OS/2 table reports a null fsType
A font with no readable OS/2 table doesn't say what its licence allows,
and reporting fsType 0 made it look installable. FontFace::fs_type() now
returns None for it, and font.list reports fsType and the five flags as
null. restricted_licence() and bitmap_only() still treat it as
unrestricted, so export behaviour doesn't change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApvpyStzzHbKyDBNxpzn2Y
2026-11-01 13:31:06 -05:00
makesomethingshit 5c364f9897 #1620: Port parent resizing to current layout modules 2026-11-01 15:18:55 +09:00
Tom MainandClaude Opus 5.5 f0c86e77e0 file.openBytes: title a .designcraft file without its extension
file.openBytes used the name it was given as the document's title as is. The
IDML path strips .idml/.indd/.indt, but a native document opened as
"Brochure.designcraft" kept the extension, and everything that adds it back
doubled it: Save in the browser downloaded Brochure.designcraft.designcraft,
Save As suggested that name, and the File Name variable showed it. The app's
own drop and open paths strip the extension before calling, so only hosts and
scripts that pass a file name hit it.

The title now drops one trailing .designcraft (any case). Other names are
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApvpyStzzHbKyDBNxpzn2Y
2026-10-31 11:33:13 -04:00
Tom MainandClaude Opus 5.5 1d9e577e36 font.list: report each face's fsType embedding bits
font.list now gives, for the face that sets the text, its raw OS/2 fsType
and what the bits mean: restrictedLicence, bitmapOnly, noSubsetting,
editable and previewPrint (null when the face is missing). A host that
makes print PDFs can then refuse a face whose licence doesn't allow the
export, including system fonts and the bundled fonts, without reading the
font files itself. PDF export subsets every font, so a caller needs
noSubsetting as well as the restricted and bitmap-only bits.

FontFace gains fs_type(); restricted_licence() and bitmap_only() read it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApvpyStzzHbKyDBNxpzn2Y
2026-10-31 11:23:21 -04:00
NetterSilverandClaude Haiku 5.5 9caae9c542 Drop XML-forbidden control characters from math SVG text
Found while testing crates/engine/src/math.rs:909 (to_svg, the `esc` closure used for each <text> glyph)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 14:07:33 +01:00
NetterSilverandClaude Haiku 5.5 c128548111 Clamp math.svg size to the same range as math.insert
Found while testing crates/engine/src/cmd/mathexpr.rs:~50 (the math.svg query) vs insert at ~64

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 10:52:55 +01:00
NetterSilverandClaude Haiku 5.5 4b9a800899 Report script parse error line numbers from the original text
Found while testing crates/engine/src/script.rs:30-47 (parse: `t.lines().enumerate()` runs over the trimmed text)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:41:28 +01:00
dotCooCoo 2ba27b840b Tables: Go to Row scrolls the row to the middle of the view
Go to Row's OK moved the view only when the row's page was not the page
at the center of the view, and then centered that page. When zoomed in,
a row on the page in view stayed off screen, and a row on another page
could stay off screen too.

The view now scrolls so the row is in the middle of the view from top to
bottom, at the same zoom, on the page in view or another. It scrolls
sideways only when no part of the row is in view across.
table.goToRow also returns the spread that shows the row, a document
or parent spread, and the row's bounds on that spread. A composed table fragment lists its rows with their top and
bottom, so a row inside cells merged across several rows is bounded by
its own height. A row in an anchored text frame is found where the
host story places the frame.
2026-10-30 23:34:39 -07:00
Dylan M. Taylor ea214dd44d Merge pull request #2070 from aiongg/docs-tidy
docs: tidy agent, contributor and asset docs
2026-10-31 01:06:18 -04:00
Brandon Thomas 99f90cbe2b Merge storytold/main into PR #2052 2026-10-31 01:02:00 -04:00
Brandon Thomas 74b9944ba3 Merge storytold/main into PR #1239 2026-10-31 01:01:49 -04:00
Brandon Thomas 400e96c200 Merge storytold/main into PR #2052
# Conflicts:
#	crates/ui-egui/src/dialogs/tests.rs
2026-10-31 01:00:57 -04:00
Brandon Thomas faa2bf5089 Merge storytold/main into PR #1239
# Conflicts:
#	crates/doc/src/xref.rs
2026-10-31 01:00:56 -04:00
Brandon Thomas 8ff43f55fc Merge storytold/main into PR #2057 2026-10-31 01:00:55 -04:00
Brandon Thomas 100b8b1cf8 Merge pull request #2061 from Silvertree2010/fix/h4137-file-importxml-drops-the-text-of
Keep text of nested inline elements in file.importXml
2026-10-31 01:00:22 -04:00
dotCooCoo 327b9cc7a3 Tables: selecting a row puts the caret in the merged cell that covers it
table.select and table.goToRow put the caret at the range's first grid
position, which has no cell of its own when a merged cell from the row
above covers it, so the caret was not drawn. The caret now goes in the
cell that covers that position.
2026-10-30 21:46:49 -07:00
dotCooCoo cc49395696 Tables: Go to Row names the page under the row and reads no cell text
table.goToRow took the page from the frame's center, so a row in a
frame that spans two pages of a spread could name the other page, and
the view moved there. It now takes the page under the row's first cell.

table.get takes cells: false to leave out the cells, and the Go to Row
dialog uses it, so opening the dialog on a large table does not copy
every cell's text.
2026-10-30 21:41:12 -07:00
dotCooCoo c2b4514ee6 Tables: Go to Row shows the caret in the frame that shows the row
table.goToRow and table.select naming a table in another story kept
the previous caret's frame, so frame commands that follow acted on the
other story's frame. The caret's frame is now kept only within the same
story, and Go to Row puts it in the frame that shows the row.

The Table menu order test lists Go to Row after Distribute Columns
Evenly.
2026-10-30 21:25:42 -07:00
aiongg 8fc2edd51e docs: tidy agent, contributor and asset docs 2026-10-31 04:15:25 +00:00
dotCooCoo a50bcc8f94 Merge main into feat/table-go-to-row 2026-10-30 21:01:13 -07:00
aiongg baf6e1b85e Integration: #1676 the Insert Table limits test uses the limits, not sizes above them
Main refuses a size outside the limits instead of clamping it, so the test inserts the largest table and checks one step over each limit is refused.
2026-10-31 01:02:16 +00:00
aiongg 8ef2702660 Integration: cargo fmt 2026-10-31 00:37:39 +00:00
aiongg 0e3fc9cfc6 Integration: #1497 one copy of the Change Format test, with the null-attribute check 2026-10-31 00:35:59 +00:00
aiongg e040354eb4 Integration: #1679 table.convertFromText refuses more rows than a table holds 2026-10-31 00:34:45 +00:00
aiongg 9555dbfc48 Integration: #1416 edit.cut removes the copied objects, not only their selected points 2026-10-31 00:34:31 +00:00
aiongg 28de0675d3 Integration: #1416 erase and smooth clear the item's stored point selection 2026-10-31 00:34:23 +00:00
aiongg d7c7e88c46 Integration: #1416 path.deletePoints takes named points without a selected object 2026-10-31 00:34:08 +00:00
aiongg 22a8292db4 Integration: #1451 object.effects patches keep the default mode of a new inner shadow or glow 2026-10-31 00:33:45 +00:00
aiongg f3e0f614fd Integration: #1416 Clear acts on live points only; reset anchor_release on press 2026-10-31 00:13:37 +00:00
aiongg 4b29760ffd Merge track 6
Conflicts: dialogs.rs dialog widths (both kept); i18n/*.rs adjacent rows (both kept).
2026-10-30 23:57:22 +00:00
aiongg 0979d0b722 Merge track 4 (pages, tables)
Conflicts: dialogs/tests.rs and i18n/*.rs: adjacent additions, both kept.
2026-10-30 23:57:01 +00:00
aiongg aae929eb97 Merge track 3 2026-10-30 23:56:48 +00:00
aiongg 9806f66fed Merge track 2 (Direct Selection stack)
Conflicts: panels/properties.rs imports (union); i18n/*.rs adjacent rows (both kept).
2026-10-30 23:56:47 +00:00
aiongg 00fd6c4e85 Integration: cargo fmt 2026-10-30 23:51:21 +00:00
NetterSilverandClaude Haiku 5.5 5321e27220 Keep text of nested inline elements in file.importXml
Found while testing crates/engine/src/cmd/xml.rs:~215-245 (parse: the Start/Text/End depth handling; text at depth >= 4 matches no arm)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 00:32:37 +01:00
aiongg 46aaa5aed7 Merge PR #1515: Package dialog PDF options refactor
crates/ui-egui/src/dialogs.rs: kept the Enter-stays-local fix
crates/ui-egui/src/package_dialog.rs: kept the summary wording and the fix; took the PR's pdf option value
crates/ui-egui/src/i18n/*.rs: kept the reworded keys and the PR's PDF Preset rows
Also (the PR's own CI failure): package.rs calls check_pdf_options and pdf_report on wasm, so those two re-exports are no longer wasm-gated (only pdf_export is).
2026-10-30 23:29:02 +00:00
aiongg 1fb973c3ad Merge PR #1514: Package dialog
crates/ui-egui/src/dialogs.rs: kept main's Insert Pages dialog and the PR's MULTILINE_FOCUS key
crates/ui-egui/src/i18n/*.rs: kept both sides' rows
2026-10-30 23:27:02 +00:00
aiongg 35697cb807 Merge PR #1255: TOC separator and style notation
crates/idml/src/tests.rs: kept the PR's TOC tests, dropped the duplicate copy from #1249
crates/engine/src/tests/idml.rs: main's createBookmarks plus the PR's right-indent separator
crates/ui-egui/src/dialogs.rs: main's labelled_by fields plus the PR's special-character menu
crates/ui-egui/src/i18n/*.rs: kept both added rows
2026-10-30 23:26:42 +00:00
aiongg 450b3ae963 Merge PR #1679: Convert Text to Table and Table to Text
crates/engine/src/cmd/table.rs: both export lists.
crates/engine/src/cmd/table/structure.rs: #1676's Insert Table validation, #1679's MAX_CONVERTED_CELLS.
crates/ui-egui/src/dialogs.rs, dialogs/tests.rs: kept #1676's Insert Table dialog, Insert Pages and #1679's Convert dialogs and tests.
crates/ui-egui/src/menus/tables.rs, tests.rs, ui_commands.rs: flat Convert Cell items; Convert dialogs in the menu.
crates/ui-egui/src/i18n/*.rs: kept both sides' keys.
2026-10-30 23:25:57 +00:00
aiongg 4f8cc475c5 Integration: #1676 flat Convert Cell items 2026-10-30 23:25:19 +00:00
aiongg b86264b887 Merge PR #1676: Table menu
crates/engine/src/cmd/table.rs: kept both exports.
crates/engine/src/cmd/table/structure.rs: main's strict size validation with #1676's limit constants and table style.
crates/ui-egui/src/dialogs.rs: kept Insert Pages dialog and #1676's Insert Table dialog; dialog title and width from #1676.
crates/ui-egui/src/dialogs/tests.rs: kept both sides' tests.
2026-10-30 23:24:59 +00:00