Skip to content

Releases

dsh-mobile-remote v0.3.1

Choose a tag to compare

@monsterjakey monsterjakey released this 14 Nov 06:56

Security hardening for the pairing endpoint added in 0.3.0.

Fix in 0.3.1

  • /__dshm-local/pairing now requires both a direct loopback socket and a
    loopback Host header, and rejects requests carrying X-Forwarded-For /
    X-Real-IP. Tailscale Serve proxies tailnet requests from 127.0.0.1 and adds
    X-Forwarded-*, so the previous socket-only check could not tell a local
    browser from a remote tailnet peer.
  • The panel keeps working locally (Mac browser / DSH app); on a phone the panel
    still shows the Host-injected pairing snapshot but the refresh action reports
    that it must be done on the Mac.
  • Includes everything from 0.3.0: the Mobile remote left-sidebar page,
    one-click copy/rotate, locale resources and icon.
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add -w github:monsterjakey/dsh-mobile-remote
# restart DSH Desktop once

MIT licensed.

dsh-mobile-remote v0.3.0

Choose a tag to compare

@monsterjakey monsterjakey released this 14 Nov 06:55

The pairing helper now lives in the left sidebar.

New in 0.3.0

  • Mobile remote page in the left sidebar (sidebar.panellist + the layout main keyed slot). After restarting DSH, open it to:
    • see the live pairing code with a countdown;
    • Copy code or open/copy the pairing page in one click;
    • New code — rotate the pairing code immediately;
    • copy the terminal fallback command;
    • jump back to the home page.
  • The Host injects a read-only pairing snapshot (code, expiry, port, pairing URL — never the launch token) into the authenticated page, so the panel also works when the page cannot call the loopback endpoint.
  • New plugin locale resources (locale/en.json, locale/zh.json) and an original sidebar icon; the bundle now declares a web Client entry (dsh.client, ./client, ./locale/*.json, ./icon).
  • Pairing codes still rotate automatically on expiry/use (0.2.3 behavior) and the loopback endpoint + scripts/pairing.mjs remain available.

Upgrade

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add -w github:monsterjakey/dsh-mobile-remote
# restart DSH Desktop once, then look for "Mobile remote" / "手机远程" in the left sidebar

Existing publicBaseUrl / autoServe config from 0.2.x keeps working. MIT licensed.

dsh-mobile-remote v0.2.3

Choose a tag to compare

@monsterjakey monsterjakey released this 14 Nov 06:31

Pairing-code rotation and an on-demand pairing helper.

New in 0.2.3

  • No more restart for an expired code. Opening /__dshm/pair after the code expired (or was already used) mints a fresh code and republishes ~/.dsh/mobile-remote.json. Pairing codes remain single-use with a 30-minute TTL.

  • New loopback-only endpoint /__dshm-local/pairing (remote tailnet peers get 403).

  • New helper script:

    node scripts/pairing.mjs            # print current code / expiry / pairing URL
    node scripts/pairing.mjs --refresh  # rotate the code immediately
  • Docs: a "pairing code expired?" section (EN/中文), and the iPhone Duo landscape section + preview screenshot.

  • Note: the running plugin must be 0.2.3 or newer; restart DSH Desktop once after upgrading.

Install

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add -w github:monsterjakey/dsh-mobile-remote
node ~/.dsh/profiles/desktop/node_modules/dsh-mobile-remote/scripts/setup-profile.mjs

Requires DSH Desktop 0.2.2.x and Tailscale HTTPS certificates on the tailnet. MIT licensed.

dsh-mobile-remote v0.2.2

Choose a tag to compare

@monsterjakey monsterjakey released this 10 Nov 17:36

Mobile skin + pairing helper for the official DeepSeek Harness Web UI, accessed over Tailscale.

Highlights

  • Phone/tablet skin scoped to html.dshm-mobile; desktop UI and large tablet layouts keep the official layout.
  • One-time pairing page (/__dshm/pair) with a 6-digit code; the launch token stays on the Mac.
  • Automatic tailnet hostname detection and tailscale serve reconciliation (retries after boot, then every 5 minutes).
  • scripts/check-exposure.mjs self-check: Funnel off, Serve tailnet-only, Tailscale SSH off, Serve target matches the live DSH port.
  • scripts/setup-profile.mjs computes your tailnet authority, backs up the profile patch, and writes the required deployment entries.
  • Touch scroll rescue + floating page buttons for iOS Safari; #dshm-off / #dshm-on skin switch.

Install

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add -w github:monsterjakey/dsh-mobile-remote
node ~/.dsh/profiles/desktop/node_modules/dsh-mobile-remote/scripts/setup-profile.mjs
# restart DSH Desktop, then open https://<this-mac>.<tailnet>.ts.net/__dshm/pair

Requires DSH Desktop 0.2.2.x and Tailscale HTTPS certificates on the tailnet.
MIT licensed, unofficial community project.


中文说明 / 简体中文 README: https://github.com/monsterjakey/dsh-mobile-remote/blob/main/README.zh-CN.md

iPhone Duo 横屏体验更佳 / even better on iPhone Duo (landscape): 展开后接近小尺寸平板,侧栏与对话并排、代码块更少横向滚动;>1024px 时插件自动使用官方桌面布局并保留滚动救援。