dsh-iphone-mode
August 30, 2026 · View on GitHub
Mobile/touch optimizations for the DeepSeek Harness (DSH) Web GUI — makes the harness genuinely usable from a phone browser (e.g. over Tailscale).
What it fixes
| Problem on iPhone | Fix |
|---|---|
| iOS Safari zooms into any input under 16px on focus (composer, search boxes) and the layout never recovers | font-size: 16px on all inputs under @media (pointer: coarse) — desktop untouched |
| Content hidden under the notch / home indicator | viewport-fit=cover + env(safe-area-inset-*) body padding (portrait bottom, landscape sides) |
| Tiny touch targets | gentle 36px minimums on buttons/options under coarse pointers |
| Stock GUI dialogs render off-viewport at desktop width on a phone (Commands palette "doesn't work" — it opens, you just can't see it; menus clip both edges) | viewport clamp: every [class*="_dialog_"] capped to calc(100vw - 24px) on narrow screens, with 16px inputs inside them too |
Pure client-side plugin: injects one <style> tag and ensures the viewport meta allows cover fitting. No server-side work.
Install
cd /path/to/your-dsh-profile # e.g. ~/.dsh/profiles/web
pnpm add github:johndfowler/dsh-iphone-mode
# append "dsh-iphone-mode" to dsh.profile.bundles in package.json
# restart `dsh web`
Pairs with (the mobile stack)
- dsh-voice — voice dictation mic (shared composer-tools toolbar)
- dsh-photos — photo upload via the stock paste pipeline
- dsh-serena-lens — Serena dashboard lens panel
- dsh-model-search — searchable model picker with viewport-clamped sheets
- dsh-draft-shield — blocks page translation from wiping composer drafts
License
MIT