Bundle
dsh-mobile-upgrade
Mobile UI fixes for the DeepSeek Harness web profile: composer attachment upload, a restart row, input-modality switches, a narrow-screen drawer and settings tabs, a full-width model menu, a stuck-request network chip, and a throttled reaction to streaming message storms.
- Source
- langyo
- stars
- 1 stars
- License
- SySL-1.0
- Updated
- Updated 19 hours ago
Readme
# dsh-mobile-upgrade English | [简体中文](docs/zh-Hans/README.md) | [繁體中文](docs/zh-Hant/README.md) | [日本語](docs/ja/README.md) | [한국어](docs/ko/README.md) | [Español](docs/es/README.md) | [Français](docs/fr/README.md) | [Deutsch](docs/de/README.md) | [Русский](docs/ru/README.md) Mobile quality-of-life fixes for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`) web profile, shipped as a single plugin. Everything renders through the host's own slots and state signals — no layout takeover, no floating widgets, no DOM polling of chat content. ## What you get - **Composer attachment upload** — a paperclip button beside the composer's tool row. Images go through the editor's native paste-attachment path; any other file is uploaded to the server and its absolute path is pasted into the draft so the agent can read it with its file tools. - **Restart row** — a "Restart service" entry in Settings → General. Confirms first, restarts the `dsh` process, and reloads the page automatically once the service answers again. - **Input-modality switches** — text/image/video checkboxes on every model row of the native provider editor, writing the model's `input` array into `settings.yaml` (with a backup next to the file). Catalog models without a user-customised route show the switches read-only. - **Narrow-screen drawer** — below 1024px the sidebar collapses to a small corner chip that keeps the host's own toggle; expanding it floats the full sidebar as a drawer over full-width content, and picking a session closes it again. - **Narrow settings tabs** — below 700px the settings dialog's side navigation becomes a row of horizontally scrollable tabs. - **Full-width model menu** — below 700px the composer's model menu re-anchors to exactly the phone width (12px margins) instead of landing past the screen edge, while the host keeps owning the vertical placement above the trigger. - **Details-overlay settle** — the fullscreen tool-details overlay whose close control is inert in the current host is not rendered on narrow screens, so it cannot trap the chat. - **Storm-safe reactivity** — the drawer/menu observers and the settings poller react to a burst of streaming messages at a capped rate and back off while the host is unreachable, a rail remount during a reconnect keeps the drawer state instead of flapping it, and drawer close taps retry through a remount instead of landing on a stale toggle: many sessions streaming at once no longer freeze input or twitch the sidebar into unclickability, whether it is open or closed. - **Per-feature toggles** — the plugin installs a `dsh-mobile-upgrade` section in Settings → Plugins with a switch per feature. ## Screenshots The floating chip, the session drawer, the narrow-screen settings tabs and the composer attach button (annotated): | | | |---|---| |  |  | |  |  | ## Install ```sh dsh plugin --profile web add dsh-mobile-upgrade ``` Restart `dsh web`, then open the web profile on your phone: the paperclip sits in the composer, the restart row in Settings → General, and the feature toggles in Settings → Plugins → dsh-mobile-upgrade. Requires `dsh` 0.1.2-rc.1 or newer. ## Configuration The plugin's settings card takes: | Key | Default | Meaning | |---|---|---| | `uploadDir` | `<dsh home>/mobile-uploads` | Where non-image uploads are stored | | `restartEnabled` | `true` | Offer the restart row and its route | ## Feature toggles Every feature above can be switched in Settings → Plugins → dsh-mobile-upgrade (effective on the next page load), or overridden per device with a `localStorage` key — `mfx-attach`, `mfx-restart`, `mfx-settle`, `mfx-drawer`, `mfx-settings`, `mfx-modality`, `mfx-menus`, `mfx-net` — where the value `"0"` turns a feature off. ## Limitations - The client hooks specific host UI elements by their hashed CSS class names (menu, drawer toggle, provider editor). A host build that renames them degrades individual features until this plugin catches up; everything else keeps working. - Input-modality switches can only patch provider routes you have customised yourself; catalog-only routes are read-only by design, because fabricating a catalog section collapses the model directory. ## Security notes The plugin's HTTP routes (upload, restart, settings editing) perform no authentication of their own — they trust the `dsh` web surface they are loaded into. Put the deployment behind whatever gate protects the rest of the UI (reverse-proxy auth, loopback binding) before exposing it beyond localhost. ## Community Links - [Linux.Do](https://linux.do) — A community for sharing and discussing technology. ## License Distributed under the [Synthetic Source License (SySL), Version 1.0](LICENSE). > NOTICE: This software includes code generated by artificial intelligence. See the LICENSE file for the Synthetic Source License terms, including model disclosure requirements.
Install
dsh plugin --profile web add github:langyo/dsh-mobile-upgrade
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-mobile-upgrade from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.