v0.11.0
What's Changed
Features
- feat(docx-core): from-scratch generation phase 1 — DocumentSpec skeleton, structural checks, OpenSpec change by @stevenobiajulu in #397
- feat(docx-core): from-scratch generation phase 2 — styles.xml + run/paragraph formatting by @stevenobiajulu in #402
- feat(docx-core): conformance adapter bin + docx-platform-tests self-check (M2 of #283) by @stevenobiajulu in #394
- feat: native DOCX → ODT conversion (convertDocxToOdt + convert_to_odt tool) by @stevenobiajulu in #401
- feat(docx-core): from-scratch generation phase 3 — sections, headers/footers, PAGE/NUMPAGES fields by @stevenobiajulu in #407
- feat(gate): stamp-or-rerun on synchronize (closes #410) by @stevenobiajulu in #412
- feat(docx-core): from-scratch generation phase 4 — tables by @stevenobiajulu in #414
- feat(odf-core): DOCX → ODT phase 3 — richer style fidelity by @stevenobiajulu in #415
- feat(docx-core): from-scratch generation phase 5 — numbering and legal recipes by @stevenobiajulu in #417
- feat(docx-core): from-scratch generation phase 6 — drafting notes as anchored comments by @stevenobiajulu in #422
- feat(docx-core): from-scratch generation phase 7 — compatibility sign-off and repositioning by @stevenobiajulu in #428
- feat(docx-mcp): expose comment range metadata in get_comments by @stevenobiajulu in #442
- feat(docx-mcp): inline footnote bodies in read_file via include_footnotes by @stevenobiajulu in #445
- feat(docx-core): add AI revision validator with MCP transactional enforcement by @stevenobiajulu in #454
Bug Fixes
- fix(safe-docx): keep server.json description within the MCP registry's 100-char cap by @stevenobiajulu in #400
- fix(docx-core): run docx-comparison bin when invoked via node_modules/.bin symlink by @stevenobiajulu in #404
- fix: minimal edit saves — preserve untouched paragraphs, DEFLATE re-pack (#408) by @stevenobiajulu in #420
- fix(docx-core): write hyperlinkKey NUL separator as an escape; guard source against raw control bytes by @stevenobiajulu in #429
- fix(docx-core): stabilize empty paragraph atom hashes by @stevenobiajulu in #432
- fix(docx-mcp): restore untouched redline blocks by @stevenobiajulu in #433
- fix(docx-mcp): surface tracked restore post-pass errors by @stevenobiajulu in #437
- fix(docx-core): rewrite serialized deletion text via DOM traversal by @stevenobiajulu in #439
- fix(docx-core): keep matched multi-paragraph comment ranges on rebuild by @stevenobiajulu in #441
- fix(docx-core): screen rebuild output through round-trip safety checks by @stevenobiajulu in #443
- fix(docx-core): renumber colliding auxiliary part IDs before comparison by @stevenobiajulu in #447
- fix(docx-core): reconstruct explicit moveFromRange*/moveToRange* markers on rebuild by @stevenobiajulu in #449
- fix(docx-core): atomize proofErr-only paragraphs as empty-paragraph atoms by @stevenobiajulu in #457
- fix(docx-core): reconstruct permStart/permEnd paragraph-level markers on rebuild by @stevenobiajulu in #440
- fix(docx-core): keep paragraph sectPr inside diffmatch paragraphs by @stevenobiajulu in #458
- fix(docx-core): replace duplicate rPrChange snapshots by @stevenobiajulu in #459
- fix(docx-core): reuse ordered paragraph mark revisions by @stevenobiajulu in #460
- fix(docx-core): restamp colliding comment paraIds before comparison by @stevenobiajulu in #465
- fix(docx-core): cover cross-implementation spec scenarios by @stevenobiajulu in #468
- fix(docx-core): interleave logical start/end cell margins in CT_TcMar order by @stevenobiajulu in #478
- fix(docx-core): restore untouched hyperlink paragraphs by @stevenobiajulu in #479
- fix(docx-core): merge paragraph-mark revisions into the following paragraph by @stevenobiajulu in #464
Documentation
- docs(openspec): propose cross-implementation conformance suite (M0 of #283) by @stevenobiajulu in #392
- docs(openspec): archive add-cross-implementation-conformance-suite by @stevenobiajulu in #419
- docs(openspec): archive add-docx-generation by @stevenobiajulu in #430
- docs: translated README generation parity + ODT generation boundary proposal by @stevenobiajulu in #435
- docs(github): add issue and pull request templates by @stevenobiajulu in #466
- docs(docx-core): record commentsIds OPC string provenance by @stevenobiajulu in #474
- docs(docx-core): correct root comment revision support by @stevenobiajulu in #475
- docs(readme): add Report Bug / Request Feature quick links under badges by @stevenobiajulu in #476
CI / Infrastructure
- ci(release): pack all publishable packages into the preflight runtime smoke by @stevenobiajulu in #396
- ci(llm-gate): add checklist item catching re-derived facts vs canonical sources by @stevenobiajulu in #405
- ci(docx-core): validate emitted document.xml against the ECMA-376 schema by @stevenobiajulu in #455
Refactoring
- refactor: expose footnote refs as document-view node metadata — one derivation, not five fldChar walks by @stevenobiajulu in #413
Other Changes
- chore(release): bump workspace versions to 0.11.0 by @stevenobiajulu in #423
- chore: relicense MIT → Apache-2.0 by @stevenobiajulu in #424
- [codex] fix compare stats range counts by @stevenobiajulu in #434
- test(docx-core): add required tblGrid to synthetic tables by @stevenobiajulu in #461
- test(docx-core): lock the author->compare round-trip guarantee (#483) by @stevenobiajulu in #484
Full Changelog: v0.10.0...v0.11.0