wordcraft/docs
Valentin Klein 4b5ed293d7
Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476)
* Compare, Restrict Editing and AutoCorrect Options dialogs (#412)

- Compare / Combine Documents dialog: original (this document or a file) and
  revised document, label changes with, More >> comparison settings, word or
  character level, show changes in. review.compare honours case changes,
  white space, formatting (tracked formatting changes), tables (compared and
  kept, no longer dropped) and character level; the LCS no longer drops text
  past its size cap. Unsupported settings are accepted and reported.
- Restrict Editing pane: formatting restrictions (locked styles,
  w:formatting), editing restrictions, exceptions for everyone
  (w:permStart/permEnd), Start Enforcing Protection with an optional password
  (SHA-512, salt, spin count 100000; ECMA-376 §17.15.1.29) and Stop
  Protection. Enforced in Session::run: outside the exceptions nothing may
  change; undo can't lift protection; passwords never land in Repeat/macros.
  DOCX round trip of protection, hash attributes, locked styles and ranges.
- AutoCorrect Options dialog: replacement list (add/replace/delete, built-in
  entries too), capitalization options with exceptions, AutoFormat As You
  Type switches, Math AutoCorrect list. Saved per user in ui.json; damaged
  values read as defaults. Names of days are capitalised.

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

* Restrict Editing: verify Word's legacy protection hash; refuse unsupported forms (#412)

- Stop Protection checks Word's legacy w:documentProtection hash
  (w:cryptAlgorithmSid/w:hash/w:salt/w:cryptSpinCount) like Word: the password
  becomes the legacy 32-bit key (ECMA-376 Part 4 §14.8.1 initial code array and
  encryption matrix), its reversed bytes as an upper-case hex string are hashed
  with the salt prepended and the iteration number appended. A wrong password
  is rejected; the form no longer unlocks with any password.
- Unsupported or damaged hashes (MD2/MD4/MD5 and other SIDs, w:algIdExt,
  unknown algorithmName, spin counts above 10,000,000, bad base64) refuse with
  "This password type isn't supported" and the protection stays on. A
  protection without a hash still stops without a password.
- Known-answer tests: the specification's "Example" key 0x64CEED7E and an
  independently computed SHA-1 hash; pane message in all 9 catalogs.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-11 17:10:02 -04:00
..
brand M0.1–M0.6: workspace, geom, document model, fonts, layout, render 2026-10-05 22:30:16 -04:00
images M7/M14: comment balloons in the margin; ROADMAP alpha and parity estimates; README Review and Layout screenshots; cargo xtask alias 2026-10-06 01:38:55 -04:00
architecture.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#277) 2026-10-10 14:11:53 -04:00
contributors.md About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#6) 2026-10-07 21:17:02 -04:00
control-protocol.md i18n: add Russian (ru) interface translation (#300) 2026-10-11 11:53:41 -04:00
file-format-parity.md Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476) 2026-10-11 17:10:02 -04:00
gaps.md Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476) 2026-10-11 17:10:02 -04:00
hardware-parity.md Windows: use OpenGL when DirectX 12 has no GPU driver (#316) (#325) 2026-10-10 16:24:16 -04:00
layout-parity.md Dialogs: Line Numbers, Hyphenation, Language, Envelopes and Labels (#407) (#414) 2026-10-11 16:15:53 -04:00
localization-parity.md i18n: add Russian (ru) interface translation (#300) 2026-10-11 11:53:41 -04:00
localization-tr.md i18n: add Turkish (tr) interface translation (#494) 2026-10-11 11:16:22 -04:00
mcp.md Headless: file.setAuthor takes a name; review.trackChanges lists its value param (#90) (#224) 2026-10-10 09:43:05 -04:00
parity-checklist.md WordArt text effects and transforms, and shape connectors (#416) (#481) 2026-10-11 16:51:01 -04:00
releasing.md Bump version to 0.5.0; add Linux riscv64 release build (#394) 2026-10-10 19:41:30 -04:00
roadmap.md Draw: Lasso Select, Add Pen, Ink to Shape and Ink Replay (#395) (#408) 2026-10-11 15:53:47 -04:00
target-app-parity.md Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476) 2026-10-11 17:10:02 -04:00
typing-parity.md Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476) 2026-10-11 17:10:02 -04:00
ui-parity.md Compare, Restrict Editing and AutoCorrect Options dialogs (#412) (#476) 2026-10-11 17:10:02 -04:00
zotero.md Read Aloud: player with speed control, sentence skipping, skips citations (#190) 2026-10-10 08:36:19 -04:00