Skip to content
dsh.fish
Bundle

dsh-draft-shield

Marks the DSH Web GUI as untranslatable (html translate=no + google notranslate meta) so browser page-translation can never rewrite React-owned DOM and wipe composer drafts.

Source
johndfowler
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-draft-shield

DeepSeek Harness Web GUI plugin that stops browser page-translation from wiping composer drafts.

## Problem

DSH uses a React-controlled textarea for its message composer. If the browser auto-translates the page (Chrome/Edge/Safari offer this when the GUI renders non-English UI), the translation pass rewrites DOM text nodes mid-typing — and React's next render loses control of the input, so **text you just typed disappears from the message box**.

This shows up as: type a few characters, the box silently empties. Intermittent, worse while idle, and only in a browser with translation enabled for the site (incognito/extension-free tabs are unaffected).

## Fix

Marks the document untranslatable at load:

- `<html translate="no">` + `notranslate` class
- `<meta name="google" content="notranslate">`

Chrome, Edge, and Safari respect these markers and stop offering/applying translation — so nothing rewrites the DOM, and drafts survive, on every profile and device.

## Install

```sh
cd /Users/jdf/.dsh/profiles/web
pnpm add file:/path/to/dsh-draft-shield
# then append "dsh-draft-shield" to dsh.profile.bundles in package.json,
# and restart `dsh web`.
```

## License

MIT

Install

dsh plugin --profile web add github:johndfowler/dsh-draft-shield

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source