Commit Graph
1575 Commits
Author SHA1 Message Date
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
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
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
aiongg 8fc2edd51e docs: tidy agent, contributor and asset docs 2026-10-31 04:15:25 +00: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
aiongg f2389b791c Merge PR #1461: Text Frame Options
crates/ui-egui/src/dialogs.rs: both dialog tests kept
crates/ui-egui/src/i18n/*.rs: union of keys
docs/target-app-parity.md: main's change line plus the Text Frame Options entry
2026-10-30 23:16:09 +00:00
aiongg 0e4cb1f294 Merge PR #1451: Effects blend modes for Drop Shadow, Inner Shadow and Outer Glow
crates/ui-egui/src/effects_dialog.rs: kept both the angle dial tests (main) and the blend mode test (PR); the stray 'The dialog's body.' doc line moved back onto show.
2026-10-30 23:16:03 +00:00
aiongg b9f884f002 Find/Change: Change and Change/Find (PR #1498's own change on main's Find/Change)
Applied as the diff of #1497 to #1498's head; the older copy of #1496 is not taken.
crates/engine/src/cmd/find.rs: PR's found-text Change path; format_only keeps main's cleared-attributes case
crates/ui-egui/src/dialogs/tests.rs: main's tests kept, the PR's Change test added
crates/ui-egui/src/i18n/*.rs: union of keys
docs/target-app-parity.md: main's text plus the Change wording
2026-10-30 23:15:51 +00:00
aiongg 8d55602ef1 Merge PR #1430: Properties: Anchor Point(s) with Convert Points and Delete Point(s), as in the reference app
crates/tools/src/select.rs: took the PR's later anchor_selection and moved_points use; kept main's content-mode-off corner pull
crates/ui-egui/src/canvas/frames.rs: kept the handle_shown filter from #1657
crates/ui-egui/src/panels/properties.rs: kept main's imports
crates/ui-egui/src/panels/properties/tests.rs: kept both sides' tests
crates/ui-egui/src/i18n/{ar,cs,de,it,ja,ka,pl,pt_br,ru,uk}.rs: union of both sides' keys
2026-10-30 23:15:49 +00:00
aiongg b142604cb3 Merge PR #1392: Place cursor thumbnail and proportional drag 2026-10-30 23:15:22 +00:00
aiongg 6561878d9f Find/Change: Find Format (PR #1497's own change on main's Find/Change)
Applied as the diff of #1496 (already in main) to #1497's head; the old copy of #1496 (story.rs paras_touching, paragraph.rs ranges) is not taken.
crates/engine/src/cmd/find.rs: main's tests kept, paragraph style outside the non-empty check as in main
crates/ui-egui/src/i18n/*.rs: union of keys
docs/target-app-parity.md: main's text plus the Find Format wording
2026-10-30 23:15:09 +00:00
aiongg 9b36f1f139 Merge PR #1657: Direct Selection: handles around the selected anchors only, and no bounding box
crates/tools/src/select.rs: dropped the doubled corner-pull block (the PR's copy of the old code and main's); kept one with main's content-mode fix and the stack's others field
crates/engine/src/tests.rs: kept main's tests and the PR's new test
crates/ui-egui/src/canvas/frames.rs: kept the PR's handle_shown filter
2026-10-30 23:15:07 +00:00
aiongg 3b79317e03 Merge PR #1416: Direct Selection: select anchor points with a marquee across paths and move them together
crates/engine/src/tests.rs: kept main's tests and the PR's new tests
crates/tools/src/tests.rs: kept main's tests and the PR's new tests
2026-10-30 23:14:41 +00:00
aiongg 916ec9cb9a Merge review fixes: minors and docs 2026-10-30 21:34:10 +00:00