ConstAttaches the toolbar-action + desktop-tabs listeners (idempotent) and injects the
desktop button into an already-rendered tab strip (catch-up for late subscription
/ registry recreate). appendShareButtonToTabs is itself gated (opt-out) and
idempotent, so the catch-up is safe when the seam also fires.
Registry destroy / test seam: undoes everything init() did to a DOM the
capability does not own — the two document listeners, the injected desktop
button, and an open modal.
The last two are not symmetry for its own sake. Both survive a destroy() with
no re-init: the button stays painted in the tab strip with its click listener,
and an open modal keeps a document-level keydown handler plus a full-screen
overlay on top of a torn-down capability. closeShareModal() is a no-op when
no modal is open, so ordering against openShareModal never matters.
Idempotent lifecycle for the share capability.