chore: sync upstream (218 Commits) #18
No reviewers
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/wordcraft!18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/sync-upstream-20261105"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Upstream-Sync von
upstream/main(218 Commits). Fast-Forward.83bef65aCLI: reject malformed conversion format options (#5610)e919982fci: Dependabot groups Cargo minor/patch updates; breaking bumps by crate family (#3395)2f49c8adLayout: keep a cell's floats laid out in the cell inside it (layoutInCell) (#4545)334494a3Cap equation matrix size when writing OMML (#4000)db8d944cFonts: reuse shared MATH construction records (#4660)21a4e270Tests: the ink lookup and note conversion tests count work steps instead of timing (#5643)0c54f946Tests: the balloon anchor test counts all of the anchor walk's work (#5622)d4bbe8baMerge pull request #4367 from helenkwok/web/host-page1397669dTable formulas: read the Panamanian balboa B/. in numbers (#3546)737bab40Preserve text frame anchor locks (#5382)9c5b54a1Preserve paragraph grid indent settings in DOCX (#5384)5a8e6e48wordcraft-web: speak the host messages through craft-web-host22989a77web host mode: refuse an oversized host file before copying it, cap the name, and document trust and limits7f63cab7packaging/web: say that ?host=parent takes precedence over data-host="page"5f9bb3f1feat(web): page host mode, so a page can host WordCraft in its own document (#4366)Each list level's indent and hanging (`fo:margin-left` and `fo:text-indent` of `style:list-level-label-alignment`) and its label's alignment (`fo:text-align` of `style:list-level-properties`, ODF 1.3 §17.19-17.20) are read into the document's list levels, for lists and heading numbering, and written back. Every list was written 36 pt a level with left-aligned numbers, so LibreOffice's right-aligned numbers and closer bullets moved on a save (lists test document: 658 px apart in LibreOffice after a round trip, now 8). The flow label keeps the position in twentieths of a point, its prefix and suffix now up to 8 bytes ("Chapter " still fits), so list paragraphs stay as small as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBVQLyDnrG8Tn1yDQcUabCFields that were read as plain text now open as Word's, so Update Field recomputes them, and are written back as ODF's: - dates and times in their date or time style (`number:date-style`, `number:time-style`) ↔ `DATE`/`TIME \@ "picture"`: day, month (by number or name), year, weekday, hours (12-hour with AM/PM), minutes, seconds and the text between, both ways; data styles are written as automatic styles and the `number` namespace declared; - sequences numbering figures and tables (`text:sequence`) ↔ `SEQ` with its number format; on save the sequences are declared (`text:sequence-decls`); on open a bookmark named by the sequence's reference name covers the caption's label and number ("Figure 1"), what references to it show; - chapter fields (`text:chapter`) ↔ `STYLEREF "Heading n"`, by name or number (`\n`); - reference marks as bookmarks, and references to them and to sequences (`text:reference-ref`, `text:sequence-ref`) as `REF`/`PAGEREF`. Captions renumber, references to them and chapter fields refresh after Update Field (engine test `odt_fields.rs`). A LibreOffice document with all of them round-trips 13 px apart with the same text; the written content and styles validate against the ODF 1.3 schema. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBVQLyDnrG8Tn1yDQcUabCWord's Font › Emphasis mark (a mark over or under each character, used to stress East Asian text) wasn't modelled. DOCX `w:em` and ODT `style:text-emphasize` were dropped. - Model: `CharProps::emphasis` (dot, comma, circle, dot below, or none to turn off a style's). - Layout: a mark is drawn over (or under) each character, and the line is made taller to fit it. - `format.emphasisMark {"mark": …}` sets it, and Format state reports it. The catalog lists it under Home › Font. - DOCX: `w:em` is read, and written in its place in `w:rPr` (after `w:cs`, before `w:lang`). - ODT: `style:text-emphasize` maps to it: an accent is the comma, a disc the dot, a dot below the under-dot. Also fixes two problems from the previous commit (ODT variables): - Field updates blanked a SET field's stored result. The layout already draws nothing for SET, so its result stays as it was, as `ask_and_set_fields_draw_nothing` pins. - A clippy lint (manual char comparison) failed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBVQLyDnrG8Tn1yDQcUabCFound with LibreOffice's agenda templates. Saving wrote a table's first row as `table:table-header-rows`, which LibreOffice repeats at the top of each page, so a table crossing a page showed its first row twice ("<bring>" twice). The cause: the flow model marks a first row as a header when the table style's look has a header row, which Word's look has by default. That only affects the style's formatting, and HTML and Markdown still rely on it for heading cells. - The flow table now carries how many rows repeat (`TableExtra::header_rows`, Word's Repeat as header row). - The ODT writer writes only those rows as header rows. - That extra block is now always kept for ODT flows, where it had been dropped from tables without an alignment, width or row height. All 16 agenda templates now round-trip with their text the same; the modern and simple ones fall from about 5,200 differing pixels to 145. Across the corpus, documents with the same text after a round trip rise from 75 to 91 of 125, and the round-trip difference falls from 82k to 60k pixels. gaps.md row 19 and the ROADMAP log are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBVQLyDnrG8Tn1yDQcUabCFound with LibreOffice's style templates. - An in-line frame placed against the text (`style:vertical-rel` "text" or "char", with `middle`, `top` or `bottom`) stood on the baseline. It is now raised or lowered against the text's height, from the size of the text it sits in. Measured in LibreOffice, `middle` centres the frame on the text: its middle half the ascent less the descent above the baseline. Placement against the line still stands on the baseline. - An in-line picture or chart was saved with no placement style. In LibreOffice that puts it at the line's top (measured: the title beside the Finances logo moved up 19 pt). It is now saved standing on the baseline ("top" to "baseline"), as WordCraft and Word show it. Two templates' round-trip differences fall from 1,874 and 1,433 pixels to 521 and 586. Across the corpus the difference falls from 47k to 45k, and no document gets worse. Left in these templates: - template instantiation: LibreOffice refreshes a template's fixed dates and fills its sender fields from the user's data when opening it; - a first-page footer's frame placed against the page content; - a page background picture centred in the margins rather than on the page. gaps.md row 19 lists them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBVQLyDnrG8Tn1yDQcUabC688cce47) into ODT PR 8b9f726ea7