fix(word-addin): give copied documents their own chat identity
WHY THIS MATTERS The add-in identifies a document by a UUID stored in Office.context.document.settings -- and Office embeds those settings in the .docx itself. "Save As" or a file copy therefore carries the UUID into the copy, which silently inherits the original's ENTIRE chat history (cloud and local storage are both keyed by this ID) and its tracked-edit anchor registry. Chats about one contract surface inside a different file; anchors point at revisions that don't exist there. WHAT IS THE FAILURE MODE Document settings are the right place for identity (they survive renames and moves), but they conflate "same document" with "same file lineage". A second identity signal is needed to tell a moved original apart from a spawned copy. HOW IT WORKS A companion setting stores the normalized document URL next to the UUID. On load: - both stored and current URL known and different -> this is a copy: mint a fresh UUID (createSecureUuid), persist it with the new URL, and clear the stale anchor registry -- all batched into one saveAsync; - stored URL missing (first open after upgrade) -> keep identity, adopt the current URL; - current URL empty or unavailable (unsaved doc) -> keep identity, store nothing. Normalization is trim + trailing-slash strip + lowercase, deliberately without SharePoint URL canonicalization: an over-eager "copy" verdict would orphan real chat history, so ambiguity always resolves to keeping the existing identity. The e2e Office mock gains a seedable document.url; new specs cover the Save As path (fresh document_id, updated URL setting, anchor registry cleared) and both keep-identity paths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015U1iPxsADQ2yuksNmDuvvW
| Repository | open-legal-products/mike |
|---|---|
| Author | Amal <mamalanand3@gmail.com> |
| Authored | |
| Committed | |
| Parents | 2f9d007f |
| Stats | 4 files changed , +157 , -2 |
| Part of | Bring the Word add-in chat experience in line with the web app |
Capture this commit into my fork
Download a Markdown prompt that tells Claude how to port this
exact commit into your working tree. Run it via
claude -p < capture-commit-daf680f3.md
from inside the repo you want the change in.