Repository navigation
Preserve editable ink strokes across XLSX saves - #712
Merged
h-a-n-a-s-h-i merged 2 commits intoOct 13, 2026
Merged
Conversation
# Conflicts: # ROADMAP.md # crates/xlsx/src/tests/mod.rs # docs/file-format-parity.md # docs/gaps.md
Member
|
Merged — thank you @jonathanwxh-cell for the contribution! I merged main into your branch to resolve conflicts with other PRs that landed first. If you haven't already, come join us on Discord: https://discord.gg/artcraft |
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.
Preserves the ink portion of #551. Draw a stroke, save as XLSX and reopen: previously the stroke became a filled rectangle with point coordinates as its caption, and Ink to Shape could no longer find it. Strokes now retain their path, colour, integer width, anchor and GridCraft editability across repeated saves.
The writer emits standard, unfilled DrawingML polylines with explicit line styling and no private metadata. The reader accepts only a bounded subset the current Ink model can represent; curves, multiple/closed paths, fills, transforms, captions and unsupported line styles stay on the existing fallback. It validates an entire path before converting it and caps strokes at 20,000 points. Signed and fractional points, zero-axis strokes and highlighter opacity at the default scale are covered.
This is editable polyline geometry, not native Office InkML. Icons remain a follow-up, so this does not close #551. #685 changes the same drawing reader for grouped shapes; this patch adds a separate helper and a small call site.
Validation on Windows x64 / Rust 1.99.0, baseline 85bfcdf:
cargo test -p gridcraft-xlsx --lockedandcargo test -p gridcraft-engine --test ink_roundtrip --locked).cargo xtask ci: all eight gates passed (formatting, Clippy with warnings denied, full workspace tests, assets, layering, WebAssembly, parity and keytips).External Excel rendering and repair-free opening have not been observed. Unsupported custom shapes retain the existing fallback; this PR does not add a general custom-geometry renderer. Prepared with AI assistance, independent test authorship and a separate agent's code review.
DrawingML references: Path, MoveTo, Outline.