{"content":"Development journal for commit 93acd0a0 (fix: never linkify inside contenteditable — pinId pastes lose text in the DSH composer).\n\nRoot cause (proven with a live DOM mutation log on 3080): browser-links' BARE_URI_RE matches bare 64-hex+i0 pinIds, and its body-wide MutationObserver walked the DSH composer too — a Lexical contenteditable. ~0.5s after a paste containing a pinId, wrapRange split the editor-owned text node and inserted a foreign ; Lexical's reconciler then destroyed the anchor AND the text after it, so only the prose before the hash survived (head tail → 'head '). Fix: isSkippable now skips every text node under a [contenteditable] region (any attribute value — chips carry contenteditable=false and are editor-owned too). Messages stay linkified: transcript DOM is not editable. Regression test tests/browser-links.test.mjs pins the fence; scoped verify: npm --prefix dsh-plugin test (457/457).\n\nVerification:\nnpm --prefix dsh-plugin test\n\nFiles:\ndsh-plugin/src/client/browser-links.ts\ndsh-plugin/tests/browser-links.test.mjs","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}