DSH 0.1.7-alpha.2 removed the visible [role="status"] turn status. The
running label now lives inside a <button data-turn-process> and reads
"Deep diving for 12s" (en) / "深度求索中,用时12s" (zh), rewritten every
second with the live duration. The only remaining [role="status"] is a
visually hidden screen-reader announcement, which the plugin previously
rewrote by mistake while the visible label went untouched.
- Locate the label via [data-turn-process], falling back to the legacy
[role="status"] text node on DSH <= 0.1.5.
- Match running labels by locale-aware prefix so duration rewording and
future locales keep working.
- Release the claim when the label stops meaning "a turn is running", so
the final "Worked for 12s" is never clobbered.
- Restore the label synchronously from the MutationObserver fast path:
observer callbacks run before paint, so React's per-second duration
rewrite no longer flashes the stock text through.
- Never touch the visually hidden announcement; screen readers still get
the real status.
- Wrap the effect in try/catch so an unexpected error disables the plugin
instead of breaking the chat view.
- 29 new phrases (125 total).
- Test suite expanded to twelve checks covering both DOM layouts,
turn-end release, and phrase-list integrity.