dsh-mobile-ux
界面增强 活跃维护

dsh-mobile-ux

qingshanyuluo/dsh-mobile-ux

提供纯CSS实现的移动端UI插件,搭配密码保护的Cloudflare隧道与轻量安卓WebView应用,无需额外配置即可在手机端使用对应服务。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
Shell
主要语言
MIT
开源协议
409 KB
仓库大小
26 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:qingshanyuluo/dsh-mobile-ux
git clone https://github.com/qingshanyuluo/dsh-mobile-ux.git
git clone git@github.com:qingshanyuluo/dsh-mobile-ux.git
README.md main

dsh-mobile-ux — DeepSeek Harness Mobile UX & Access Kit

npm
GitHub stars

The mobile experience pack for DeepSeek Harness: use the Harness web UI on your phone. A three-part kit, each usable on its own:

Part Where What it does
Mobile UI plugin client.js / styles/mobile.css Below 1024px: zero-space sidebar (floating pill + drawer), full-width conversation, tighter gutters. Pure CSS — dsh itself is untouched.
Public tunnel kit tunnel/ Password-protected public access via cloudflared + a local Caddy gateway, launchd-managed, URL change tracking built in.
Android app apk/ A fullscreen WebView shell that remembers your credentials and opens the tunnel URL — no password prompts, no browser chrome.

demo

Real capture on a phone (943×2048):

real capture

Mobile UI plugin

Below the shell's own narrow breakpoint (1024px) the plugin:

  • forces the three-column grid to a full-width center column — the sidebar and details stop allocating layout space;
  • collapses the sidebar into a 56px floating pill (tap to slide out a 280px drawer with a dimmed backdrop);
  • tightens conversation gutters from 32px → 12px, hides the column drag handles;
  • hides the session header strip (title bar + chat/trajectory tabs) — the whole surface belongs to the conversation;
  • leaves desktop view (≥1024px) and everything upstream untouched.

Known limitation: the details panel cannot open on phones — the shell's column math hard-forces it to 0 in narrow mode and CSS cannot override JS. The trajectory view tab is also hidden on narrow screens, so tool-call details are desktop-only until upstream adds narrow-mode support.

Install as a real dsh plugin (recommended)

  1. Install the package into your deployment profile's out-of-tree dependencies:

    cd ~/.dsh/profiles/<profile>
    pnpm add @qingshanyuluo/dsh-client-ui-mobile
  2. Append one row to the profile's user patch layer (cordis.patch.yml):

    - insert:
       - id: ui-mobile-ux
         name: '@qingshanyuluo/dsh-client-ui-mobile'
  3. Restart dsh web. Check the composed tree first with dsh --profile <profile> --dump-config.

The client half mirrors the shape of the official dsh-client-ui-* modules (exports./client), so no dsh installation files are changed — only the user-level profile. Full details: docs/dsh-plugin.md.

⚠️ CSS selectors (.pI_x6G_*, .wSkVaW_*, .Md3f7G_*, …) are pinned to the frontend build they were extracted from; re-pin them after dsh-web-frontend / dsh-client-ui-* upgrades.

Public tunnel (no domain required)

Random *.trycloudflare.com hostname + basic auth — the URL changes on every process start, so a small launchd agent records the current URL and shows a desktop notification.

brew install caddy cloudflared
bash tunnel/install.sh
cat ~/.dsh/public-tunnel/url.txt   # current public URL

Chain: Cloudflare edge → cloudflared (QUIC) → Caddy gate (127.0.0.1:3081, localhost-only, basic auth) → dsh web (:3080). Caddy rewrites Host/Origin to the loopback authority, which passes dsh's /api browser-trust fence (anti-DNS-rebinding) without touching dsh config — and keeps working when the tunnel URL changes.

For a stable hostname use your own domain on Cloudflare (free) with a named tunnel; this kit intentionally stays account-less.

Android app (DSHViewer)

Fullscreen WebView, HTTP Basic Auth answered automatically from saved credentials:

  • first run asks for URL / username / password; stored in SharedPreferences;
  • half-transparent ⚙ (bottom-right) reopens the tiny settings dialog (tunnel URLs change);
  • back button = browser back.
brew install --cask android-commandlinetools gradle
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools
yes | sdkmanager --sdk_root="$ANDROID_HOME" --licenses
sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "platforms;android-35" "build-tools;35.0.0"
cd apk && bash build.sh    # -> app/build/outputs/apk/debug/app-debug.apk

Security

  • A public tunnel exposes the whole Harness (it can run commands). Share only with people you trust; rotate the password from time to time; consider your own domain + Cloudflare Access for per-user, per-person audit.
  • This repository contains no real passwords, no tunnel URLs, no certificates.

License

MIT