DSH Hub

AliceLJY/dsh-thumb

dsh-thumb

UIWeb UI0 GitHub stars· updated 2026-08-25

A phone shell for the DeepSeek Harness (dsh) web GUI — sidebar becomes an overlay drawer, settings goes full-screen single column. Zero hardcoded host class hashes.

Install

npx @deepseek-ai/dsh plugin --profile web add github:AliceLJY/dsh-thumb

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-thumb DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-thumb.svg)](https://dshhub.dev/plugins/dsh-thumb)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from AliceLJY/dsh-thumb, cleaned of badges and images.

dsh-thumb

A phone shell for the DeepSeek Harness (dsh) web GUI. The sidebar stops squeezing the chat and becomes an overlay drawer, tapping a session closes it, the settings sheet goes full-screen single column, and the transcript is retuned for a phone reading distance. Desktop is untouched.

中文说明

Personal tool, published as-is. Written for one person's phone and one dsh version (0.1.0-rc.6). No maintenance and no issue response are promised. If a dsh upgrade breaks it, the four entries in LOCATORS at the top of src/client.js are where to look — that is a minutes-long edit.

Why

On a phone, dsh's first screen is fine — the sidebar auto-collapses to a 56px icon rail and the composer fits. Everything breaks only after the sidebar is expanded, which happens to be the one path you must take to switch sessions.

Measured on an iPhone 14 Pro viewport (393×660), dsh 0.1.0-rc.6, before this plugin:

SituationBeforeAfter
Collapsed railfineuntouched
Sidebar expandedtakes 71% of the screen and squeezes chat to 113pxoverlays; chat keeps its full 393px
After tapping a sessionstays open, so you read in the 113px slotcloses itself
Dismissing itonly via the collapse buttontap anywhere on the scrim
Settings sheet800px two-column layout crammed into 393px; every English word wraps; value pickers fall off-screenfull-screen single column, text wraps normally, pickers on-screen
Clipped elements in settings71
Transcript height (3-turn session)610px — sized for a desktop reading distance490px, a fifth shorter

This is not a bug upstream — it is a stated contract. From the column solver in @deepseek-ai/dsh-client-ui-layout:

The sidebar never concedes: its rendered width is always the drag preference (or the collapsed rail), and center absorbs any remaining deficit as the last resort.

With SIDEBAR_DEFAULT = 280, a 393px viewport gives exactly 393 − 280 = 113. The concession chain shrinks the details panel, then closes it, and then the center column eats whatever is left. Reasonable in a narrow desktop window with a few hundred pixels to spare; not on a phone.

Install / remove / switch off

# install
dsh plugin --profile web add github:AliceLJY/dsh-thumb
# confirm "dsh-thumb" is in dsh.profile.bundles in ~/.dsh/profiles/web/package.json, then restart the service

# remove
dsh plugin --profile web remove dsh-thumb
# again, confirm it is gone from the bundles array, then restart

There is no npm package: dsh plugin add hands its arguments to pnpm, so a github: specifier installs the repository directly. Measured at 8.9s on a cold store, and dsh appends it to dsh.profile.bundles on its own.

Working on it locally instead? Point the same command at a path:

dsh plugin --profile web add link:/absolute/path/to/dsh-thumb

⚠️ Rolling back means undoing two things: package.json and the link in node_modules. Restore only the former and the next pnpm add sees the link still present, decides "Already up to date", and writes nothing while reporting success — it looks installed but isn't.

To switch off without restarting anything:

  • append ?thumb=0 to the URL, or
  • run localStorage.setItem('dsh-thumb','0') in the console and reload

How this differs from the similar plugins on GitHub

Related plugins