Templates and Add-ins: attached template, update styles, Organizer (#377) (#382)

* Templates and Add-ins: attached template, update styles, Organizer (#377)

- Model + DOCX: Settings keep the attached template (w:attachedTemplate's external
  relationship of the settings part) and w:linkStyles; both round-trip, written in
  CT_Settings order (after w:mirrorMargins, before w:trackRevisions).
- Engine: tools.templates (state), tools.attachTemplate, tools.detachTemplate,
  tools.linkStyles, tools.updateStyles (copy the template's styles and defaults, one
  undo step; path or base64 data), styles.organizer (list), styles.copyFrom (copies
  missing bases, linked halves and the lists a style numbers with), styles.rename.
  The template path comes from the document, so it is never read automatically (not on
  open either): only an explicit tools.updateStyles / attach with update reads it.
- UI: View > Templates > Templates and Add-ins dialog (path, Attach..., automatically
  update document styles, Organizer...) and a two-list Organizer (Copy, Delete,
  Rename...); strings in every catalog, Estonian included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Review fixes for #382: never follow a template path to another machine

A document's w:attachedTemplate can name \\host\share\T.dotx, //host/share or
file://host/share. Opening it (Update Styles, Organizer) would make Windows
authenticate to that host over SMB and leak the user's NTLM credentials.
local_path now returns None for network paths; regression test added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* #377: refresh catalog count and parity checklist after rebase

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
This commit is contained in:
authored and GitHub committed 2026-10-11 19:35:06 -04:00
1 parent 2e5ecb916b
commit e46133817a
30 files changed
+1091 -14

No files matched your search

+2 -6
View File
@@ -2,7 +2,7 @@
Generated by `cargo xtask parity` (`wordcraft-cli parity --markdown`): the word-processor feature catalog (`crates/engine/src/catalog.rs`) compared with the live command registry.
**458 of 475 catalog features have commands (96.4%).**
**459 of 475 catalog features have commands (96.6%).**
| Tab | Live | Total |
|---|---|---|
@@ -26,7 +26,7 @@ Generated by `cargo xtask parity` (`wordcraft-cli parity --markdown`): the word-
| Chart Design | 5 | 5 |
| Header & Footer | 5 | 5 |
| Editing | 38 | 38 |
| Tools | 5 | 6 |
| Tools | 6 | 6 |
## Missing
@@ -64,7 +64,3 @@ Generated by `cargo xtask parity` (`wordcraft-cli parity --markdown`): the word-
- Tools › Ink Equation (`insert.inkEquation`)
### Tools
- Templates › Templates and Add-ins (`tools.templates`)