Repository navigation
ODT: read and write tracked changes (text:tracked-changes) - #1517
Merged
Merged
Conversation
dkhlapov
force-pushed
the
feat-odt-revisions
branch
from
October 14, 2026 02:22
9ab3c0c to
95be776
Compare
dkhlapov
marked this pull request as ready for review
October 14, 2026 02:22
This was referenced Oct 14, 2026
LabDennis
added a commit
to LabDennis/wordcraft
that referenced
this pull request
Oct 14, 2026
…FODT M12: support OTT and FODT Writer documents and preserve paragraph spacing M12: integrate Writer stories, sections and revisions across ODF formats Adapt notes/comments from storytold#1057 and section/revision work from storytold#1506, storytold#1516 and storytold#1517. Extend the shared ODT/OTT/FODT paths with master-page stories, section export and combined regression tests. Source contributions and remaining fidelity limits are documented in docs/odf-compatibility.md. Integrate current upstream while retaining import behavior and embedded-font loading.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # ROADMAP.md # crates/engine/src/tests.rs # crates/formats/src/model.rs # crates/formats/src/odt.rs # docs/file-format-parity.md # docs/gaps.md
…sertion; one region per deletion Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
echelon
force-pushed
the
feat-odt-revisions
branch
from
October 14, 2026 18:34
eba2c33 to
1b7709a
Compare
LabDennis
added a commit
to LabDennis/wordcraft
that referenced
this pull request
Oct 14, 2026
…FODT M12: support OTT and FODT Writer documents and preserve paragraph spacing M12: integrate Writer stories, sections and revisions across ODF formats Adapt notes/comments from storytold#1057 and section/revision work from storytold#1506, storytold#1516 and storytold#1517. Extend the shared ODT/OTT/FODT paths with master-page stories, section export and combined regression tests. Source contributions and remaining fidelity limits are documented in docs/odf-compatibility.md. Integrate current upstream while retaining import behavior and embedded-font loading.
Member
|
Thanks for the contribution, @dkhlapov! This has landed in main. If you haven't already, come join us on Discord: https://discord.gg/artcraft |
LabDennis
added a commit
to LabDennis/wordcraft
that referenced
this pull request
Oct 14, 2026
…FODT M12: support OTT and FODT Writer documents and preserve paragraph spacing M12: integrate Writer stories, sections and revisions across ODF formats Adapt notes/comments from storytold#1057 and section/revision work from storytold#1506, storytold#1516 and storytold#1517. Extend the shared ODT/OTT/FODT paths with master-page stories, section export and combined regression tests. Source contributions and remaining fidelity limits are documented in docs/odf-compatibility.md. Integrate current upstream while retaining import behavior and embedded-font loading.
This was referenced Oct 15, 2026
LabDennis
added a commit
to LabDennis/wordcraft
that referenced
this pull request
Oct 15, 2026
…FODT M12: support OTT and FODT Writer documents and preserve paragraph spacing M12: integrate Writer stories, sections and revisions across ODF formats Adapt notes/comments from storytold#1057 and section/revision work from storytold#1506, storytold#1516 and storytold#1517. Extend the shared ODT/OTT/FODT paths with master-page stories, section export and combined regression tests. Source contributions and remaining fidelity limits are documented in docs/odf-compatibility.md. Integrate current upstream while retaining import behavior and embedded-font loading.
vangel76
added a commit
to vangel76/wordcraft
that referenced
this pull request
Oct 15, 2026
Notes and comments now work with ODT tracked changes (storytold#1517) and per-section page settings (storytold#1506); notes and comments read inside a note body never start a section. Adds a test for the combination. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Gap 19 in
docs/gaps.md(ODT depth): ODT files now keep their tracked changes.Builds on #1516 (RTF tracked changes). This branch contains #1516's two commits and uses the same revision model. Please merge #1516 first; after that, this PR's own diff is the ODT commits.
What was wrong
ODT import skipped
text:tracked-changes. The deleted text stored in each change region was lost, and inserted text became plain text. Export wrote no change tracking.What changed
crates/formats/src/odt.rs, following ODF 1.3 Part 3 §5.5:text:changed-regiongives its author and date.text:change-startandtext:change-endbecomes a tracked insertion.text:changepoint, the region's deleted content is put back as tracked-deleted text. Deleted whole paragraphs keep their deleted paragraph marks, so Accept All and Reject All give the right paragraphs.text:changepoint plus the region for deletions. Text that is both inserted and deleted is written as one deletion region with a nested insertion range.dc:dateis always written; the save time is used when a revision has no date.Shared model (
crates/formats/src/model.rs), on top of #1516's:RevMark.idkeeps separate ODT regions as separate revisions. RTF leaves it empty and keeps merging by kind, author and date.Para.mark_ins/mark_delcarry paragraph-mark revisions, and RTF: read and write tracked changes (insertions, deletions, authors, times) #1516'sfrom_doc_trackedexports them.js-sysis added for wasm32 only (already inCargo.lock), for the save time, ascrates/pdfdoes.Docs:
docs/file-format-parity.mdODT row (deleted pictures and tables are dropped from deletions),docs/gaps.mdgap 19, and aROADMAP.mdprogress-log entry, each with its status line and revision history.Tests
These failed before the change:
inserted_then_deleted_text_keeps_both_marks, with a single revision kept after a save;exported_changes_always_have_a_date_and_keep_paragraph_separators;odt_inserted_then_deleted_text_round_trips;a_deleted_mark_inside_an_insertion_is_not_inserted;odt_deleted_mark_inside_an_insertion_survives_reject_all.Coverage:
insertions_end_before_a_table_and_inside_a_cell, plus hostile-input tests (20,000 regions, bad ids, nesting).cargo xtask ci: all 6 steps passed (fmt, clippy, test, assets, layers, wasm). Not checked in LibreOffice.Review
model::Para.sectionand changes ODT import, so small textual conflicts are expected. ODT: read headers and footers from the master page (#863) #873, M12: RTF and ODT footnotes and endnotes round-trip #1075 and fix: resolve open issues and maintain multi-platform build scope #1472 also touchodt.rs.🤖 Generated with Claude Code