dsh-web-mobile
Manifest valid★ 176DSH Web UI Mobile Adaptation: Great on Narrow Screens, Suitable for Wide Screens

DSH Web UI 移动端适配:窄屏好用,宽屏适用
📦 Built into DSHA — the DeepSeek Harness Android launcher ships this plugin as its built-in mobile adaptation, ready to use straight from the APK. Thanks to author @qiannianhuanxiang for the integration and promotion 🙏
dsh-web-mobile is the mobile-adaptation plugin for the DeepSeek Harness Web UI — it makes DSH work well in portrait phone mode:
- Sidebar → drawer: portrait phones get an overlay drawer; conversation area full width; tapping a row auto-closes it; swipe right from left edge to open, swipe right inside to close
- Modals → floating layers: settings, file tree, previews become bottom sheets, touch-friendly
- Status bar safe: notch safe areas, dark/light themes, double-tap zoom handled
- Input area conflict-free: permission pills, model names, switcher menus don't overlap on narrow screens
- Long sessions save data: large JSON responses (history, etc.) auto gzip/brotli compressed, noticeably faster on mobile
- Tablets covered: 768–1023px touch devices capped & centered; ≥1024px large touch tablets keep ⋯ "Delete conversation" on rows; desktop (mouse) is a full no-op at any width — narrow windows/system scaling won't trigger mobile UI
- Diagnostics:
?mobile-nav-debug=1shows a floating diagnostics bar (viewport / overlay state / JS errors)
Results
| Conversation home | Directory drawer | Settings screen |
|---|---|---|
![]() | ![]() | ![]() |
Updates
Unreleased
New features
- File list gesture: swipe left from right edge to open, swipe right to close
Fixed
- Tapping nav items in the drawer (New chat / Task board / SSH / Search) performs the action and collapses the drawer
- The top row of the file list panel (tabs / New / Split / Exit fullscreen) is no longer hidden under the status bar
- The "Open file list" button in the session header is pinned to the top-right corner, symmetric with the drawer button on the left
- The "Background tasks" chip is now expandable: the pop-over is no longer clipped by the header or pushed off-screen; items are tappable, tap outside to collapse
- The mobile session header no longer collapses the mode name into an icon: mode name, session title and sub-agent count keep their text; on narrow screens only the background-tasks chip's long label yields space
- Session header compacted to two rows (97 → 77px); the title row is aligned with the drawer / file-list buttons on both sides
- The ⋯ menu on drawer session rows now works on phones: long-press opens it; tapping ⋯ only toggles the menu, no longer closing the drawer; menu and delete dialog display above the drawer and stay tappable
- The New chat input box is back to two rows tall: no scrollbar, prompt and input fully visible (card 84 → 108px)
- Message text now follows the "Font size" setting, no longer two sizes mixed with code blocks/tables
- Tapping a drawer session row now reliably switches sessions and collapses the drawer
v2.4.1
Fixed
- Large tablet landscape (≥1024px touch): the ⋯ menu on session rows lacked "Delete session". The delete item is no longer width-gated — available at any width on touch devices; the confirm dialog is centered and width-capped on wide screens; mouse desktops still get no injection at any width
- Dragging a floating widget (desktop pet) across the left edge would falsely trigger the sidebar. The gesture layer adds two-tier yielding: draggable floating windows use a position heuristic (yield when the touch-down lands on a
position:fixed|absolutefreely-positioned layer ≤200px — verified on the dsh-pet desktop pet); implementations may attach adata-mobile-nav-draggingmarker (held element/ancestor or body) to yield for the whole gesture. Yielding ≠ intercepting — the drag still executes
v2.4.0
New Features
- Mobile session deletion (ported from fork wzxmt-zhc v2.7.0): a "Delete Session" item is added to the session-row ⋯ menu, with a confirmation dialog. Takes effect once the host drawer renders the session list in session-row form (the 0.1.1-rc.2 drawer is an icon bar, a preparatory step for a host upgrade)
- dsh-file-viewer mobile adaptation (ported from fork wzxmt-zhc): the viewer panel adopts the mobile layout; zero impact when the plugin is not installed
Fixed
- On mobile, too many session view tabs would stack vertically character-by-character; they can now scroll horizontally (#41 by @782042369)
- Text selection starting at the left edge was hijacked by the drawer swipe-out gesture, dragging the selection away (#43 by @chstd)
- Dragging selection handles inside the input box would still open the drawer and clear the selection (#44 by @chstd)
- On iPhone, tapping the input box would auto-zoom the page and pinch couldn't zoom back out — the only option was to reopen the app (#45 by @pandady)
- After the host rewrites the viewport meta, notch safe-area adaptation broke (PR #46 by @BuvkB)
- Narrow desktop windows / system display scaling would falsely enable the mobile UI (the full set: top-right Files button, bottom status bar); mouse-driven windows now keep the desktop layout at any width
- Restored official styling for the "Plugins" config card and "Web UI Plugins" group card titles on the settings page: left-aligned, standard padding and spacing, arrows without gray background
- Mobile message flow layout is now compatible with the DSH 0.1.2-rc.1 Lexical input box; the input area no longer has left/right dead zones (PR #47 by @johnhom1024)
- While any session view tab is open (trace, file viewer, plugin registry view), left-edge horizontal swipes yield to the tab's horizontal content; the FAB button can still summon the drawer; file-viewer layout markers are triggered only by the viewer itself
- In sub-agent sessions, the context ring and send button on the right side of the input area are right-aligned
- On touch devices, user message bubbles display normally; tooltip suppression applies only to the message action row
- When the new-chat input box is centered, the git branch pill keeps its spacing from the input row
- Pinning and collapse rules for fixed input-area controls (model bar, context ring, send button) now cover the Lexical editable input box
- Response header matching for response compression is now case-insensitive
- On iPhone, after the keyboard is dismissed, tapping the send/stop/plus buttons no longer re-summons the keyboard to cover the conversation (PR #48 by @johnhom1024)
v2.3.0
New features
- Sidebar gesture (#16, PR #37 by @wingsky-1): swipe right within the left 45% of the screen to summon the sidebar; the same gesture swiping left closes it. The PR author made some "fine-tuning" to this feature
Optimizations
- Per-frame streaming overhead: status-bar TPS anchored fast path; market installed list coalesced, skipped when market closed
- Off-screen drawer session tree skips rendering, drawer stays snappy
Fixes
- 手势打开侧边栏后点背板要点两次才关
- 手势后短时间内真实点按(如点会话行)偶尔无响应
- 滑动开侧边栏偶尔没反应或开了又弹回
- 真机(Android Chrome)贴左缘右滑呼出侧边栏会触发浏览器「返回上一页」:根元素
overscroll-behavior-x: none抑制 Chrome 边缘历史导航手势 - 起指落在横向滚动容器(状态栏读出条、消息代码块)内时让位给原生滚动,不再误开侧边栏
- 系统开启「减弱动态效果」时侧边栏仍播放滑入滑出动画,现与设置面板一致直接禁用
?mobile-nav-debug=1诊断条在代码重组后没有接线,访问调试参数无任何显示
Refactor
- 侧边栏手势的左缘识别区改为纯几何判定:按视口宽度 45% 现算(390px 手机约 176px),横竖屏与平板自动跟随,不再注入宿主 DOM 的隐形热区元素
Compatibility
- Adapted for dsh 0.1.2-alpha.1 (session log download API coexists across two type generations)
- Peer dependency range widened to 0.1.2 pre-releases; missing UI peer made optional
v2.2.0
Fixes
- 修复 v2.1.5 版本安装后 node 报错问题,绷不住了(#31 by @Yurzi)
- 手机上点抽屉历史会话仍可能「抽屉收起但对话不打开」(#32 by @chstd)
- 上游子代理插件 0.1.0-rc.6 起芯片「点开一闪即退」(PR #33 by @EricJin2002)
- 手机端点插件市场搜索框触发 iOS 强制放大且无法恢复:搜索框字号提到 16px(PR #35 by @BuvkB)
- 刘海屏上界面能被上滑抬起、输入框下方露白、最新消息被压住
v2.1.5
新功能
- 大 JSON 响应透明压缩,减少流量消耗(移植自 fork wzxmt-zhc/dsh-web-mobile v2.5.0)
修复
- 顶部子代理 UI 弹出卡片点按不稳定,现可靠开合
- 触摸点选会话后抽屉正常自动收起
- 输入区右侧模型条、上下文圈、发送键固定贴近右侧,不再漂移
- dsh-web-ui 设置页错误显示
v2.1.1
修复
- 设置「模型分组」区在手机上卡片宽窄不一、首尾卡超出屏幕右缘
- 后台任务触发器存在时,正在运行的子代理计数不准确
- 移动端会话头部标题栏布局异常,隐藏多余的路径分隔符
- 手机上打开插件市场后设置导航被隐藏、无路可退(dshmarket ≥1.20 反制)
- 市场 Tasks 弹卡贴边不居中;出现待更新按钮时标题行被压成逐词竖排
- 输入区发送、加号、上下文按钮窄屏下被挤压漂移,现固定尺寸钉位
- viewport meta 改写保留宿主 maximum-scale,页面缩放行为与官方一致
优化
- 插件 dsh-meme 移动端表现
- Agent preset 模式选择菜单改为底部弹层,不再撑满竖屏
- 适配最新 dshmarket 移动端 UI(卡片画廊、已安装列表、标签头部)
重构
- 完成 phase 2-4 代码重组,优化 !important 使用
- 哈希类选择器全量改为子串匹配并补
:not守卫,救活一批静默失效的规则(PR #27/#28 系列)
兼容插件
- dsh-web-ui——0.1.20
- dshmarket——v1.38.0
- dsh-usage-stats——0.3.1
- dsh-genui——0.9.1
- dsh-meme——v0.1.39
- dsh-file-viewer——v0.3.1
安装
DSHA 用户无需单独安装:DSHA 已内置本插件,装 APK 即用。
从 npm 一行装(仓库自带构建产物,无需构建配置),装完重启 dsh web:
dsh plugin --profile web add dsh-web-mobile
旧版迁移:装过旧名
dsh-mobile-nav(更早为@dsh-external/dsh-mobile-nav)的用户请先移除再装新名——dsh plugin --profile web rm <旧键名>;patch 行 id 随包名一起换了,新旧并存会把同一插件注册两份,不迁移也会留下死依赖或加载失败。
GitHub 直装:dsh plugin --profile web add github:mexiaosqwq/dsh-web-mobile
本地开发:
dsh plugin --profile web add link:/path/to/dsh-web-mobile
构建
pnpm install
pnpm build
lib/ 与源码同步入库,改动源码后重新构建再提交。
贡献与工程
- 先读 AGENTS.md:带注释的仓库树、每条 Pitfall 的紧凑不变式与完整档案(
docs/maintenance/pitfalls.md)。 - 本地门:
pnpm verify(typecheck)→pnpm test:core(单测)→pnpm build;lib/随源码入库,漏构建会被 CI 的git diff --exit-code lib新鲜度门拦下。 - 回归探针:
scripts/probes/十七个锚点可单跑(会话删除探针兼作宿主升级绊线);主探针pnpm smoke:cdp、手势门scripts/cdp-swipe-failures.mjs、iOS 放大守卫scripts/cdp-zoom-probe.mjs(CDP 环境参数见 AGENTS.md)。 - 设计文档在
docs/specs/;宿主升级对账走docs/upstream/——node scripts/cdp-compat-contracts.mjs一键核对 CSS module 哈希是否漂移。
License
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 2.3.0 | — | — |
| 2.4.0 | — | — |
| 2.4.1 | — | — |
| 3.0.4 | — | — |
| 3.0.0 | — | — |
| 3.0.3 | — | — |
| 3.0.5 | — | — |
| 3.0.6 | — | — |
| 3.1.0 | — | — |
| 3.2.0 | — | — |
| 3.2.1 | — | — |
Comments
Loading…
Similar plugins
by kaijia323
DSH Web 的移动端外壳插件:抽屉式导航、触控尺寸控件、安全区适配、对话区占满整屏,桌面端行为不变。
★ 1
MIT
JavaScript
Oct 23, 2026
dsh plugin --profile web add dsh-mobile-uiby RyzeZhou
deepseek-harness手机端页面适配插件
★ 0
MIT
JavaScript
Aug 19, 2026
dsh plugin --profile web add dsh-ui-mobile-layoutby 21hbguo
DSH Web GUI 手机端 UI 适配插件:窄屏下全屏聊天布局(抽屉化侧栏/面板 + 顶部操作条 + 返回键退栈),桌面宽度零影响
★ 4
BSD-3-Clause
TypeScript
Aug 16, 2026
dsh plugin --profile web add @dsh-external/dsh-mobile-uiby ADXZXCD
Mobile layout enhancement plugin for DeepSeek Harness Web UI
★ 0
MIT
JavaScript
Sep 1, 2026
dsh plugin --profile web add dsh-web-mobileby huanxi-drxx
DSH Web UI 手机端适配插件:抽屉式布局、聊天背景+毛玻璃、AI 聊天气泡、消息头像、中英双语(桌面端与原版一致)
★ 4
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add @local/dsh-client-ui-mobileby Z-6354
基于deepseek-harness(dsh)的手机网页优化插件,修复了部分网页与手机端不适配的问题;
★ 18
↓ 329/wk
MIT
JavaScript
Oct 5, 2026
dsh plugin --profile web add dsh-mobile-hanui

