kelai141/dsh-host-web-compat

dsh host plug-in - injects old kernel browser polyfill into the page via webserver hook

A DeepSeek Harness host plugin that injects legacy-browser polyfills into every served page through the webserver tapIndex hook, and bridges the companion shell APK's directory picker and path-open channels. It exists because older kernels lack APIs the host page calls directly: a missing AbortSignal.any() breaks the workspace directory picker's concurrent RPC cancellation, a missing Promise.withResolvers() breaks the host boot-ready tail script and fails the plugin tree, and a missing global Iterator (Chrome 122+) makes upstream 0.1.5 client bundles throw Iterator is not defined at import time. The README's table lists the injected polyfills — AbortSignal.any/timeout, structuredClone, Object.hasOwn, Array.prototype.at, String.prototype.replaceAll, crypto.randomUUID, iterator helpers, Object.groupBy/Map.groupBy, Set methods and Array.fromAsync — each skipped when already present.

Infrastructure & Deployment ★ 2 updated 2026-09-21 ✅ runtime-tested
View on GitHub ↗

Install

⚠️ Install command not yet confirmed — check the README on GitHub for the exact command.

Compatibility

Android-oriented DeepSeek Harness deployments: the README targets older kernels — MuMu's bundled browser and older WebViews — and its patch row is guarded by disabled: !!js process.platform !== 'android', so it activates only on Android. The host plugin installs into the profile's node_modules and is mounted through the profile's cordis.patch.yml; it needs a DSH host that exposes the webserver tapIndex hook.

Details

Recent updates

The README documents the injection mechanism, the polyfill table and the mount row rather than a versioned changelog; there is no release history or migration section and no published package version. Verify the current install instructions in the repository before installing.

FAQ

How do I install dsh-host-web-compat?
The README says to package it into the profile's node_modules and mount it with an insert row in the profile's cordis.patch.yml (id: web-compat, name: '@dsh-android/dsh-host-web-compat', disabled off-Android), then restart — no one-line install command is published, so verify the repository first.
What does it fix?
Pages served to old kernels fail because the host page calls modern APIs: missing AbortSignal.any() breaks the workspace directory picker, missing Promise.withResolvers() breaks the boot-ready tail, and a missing global Iterator makes upstream 0.1.5 client bundles throw at import time.
Does it affect desktop deployments?
The README's patch row is disabled: !!js process.platform !== 'android', so it only activates on Android.

Alternatives

Lum1104/dsh-browser · Clizo1209/dsh-playwright-browser · titanwings/dsh-better-browser

More plugins in Infrastructure & Deployment

Browse more in Infrastructure & Deployment

Guides for Infrastructure & Deployment plugins