Skip to content

v0.3.3 — DSH 0.1.5-rc.1 baseline

Latest

Choose a tag to compare

@aijunjiang aijunjiang released this 11 Sep 01:29
· 7 commits to main since this release

DSH 0.1.5-rc.1 baseline

This release aligns dsh-remote-ssh with DSH 0.1.5-rc.1. Three of the changes are required for the plugin to boot at all on 0.1.5; the rest are the harness patches re-cut.

Required for DSH 0.1.5

  • readByteRange implemented (fs-ssh) — 0.1.5 added this abstract method to the FileSystem seam; without it the remote filesystem provider fails to load. Read as a byte window over the helper (seek + bounded read), so [offset, offset+length) never buffers the whole file.
  • connection.rpc.handle regression worked around (ssh-gui) — DSH commit 2ef85b1e17 dropped webServer from dsh-client-connection's inject, which broke connection.rpc.handle's internal owner.webServer.register(route) for every plugin. The /dsh-ssh route is now registered directly against webServer, reusing Connection's public requestRejection for the Host/Origin + browser-auth fence (unauthenticated requests still get 401).
  • SSH keepalive on by default (30s) (ssh-gui) — keepaliveInterval defaulted to 0, so a silently dead peer (server power loss, network drop, NAT timeout) sent no FIN/RST, ssh2 never fired close/error, and the memoized client/SFTP/PTY hung until a DSH restart. ssh2 now pings every 30s and emits Keepalive timeout after 4 misses (~2 min), which the transport guard turns into invalidate() so the next use reconnects.

Harness patches re-cut against 0.1.5-rc.1

Both patches under harness-patches/ were cut against 0.1.2 and no longer applied. They are now re-cut against aa8262ec09:

  • dsh-remote-ssh-job-actions.patch — a real Stop button for background jobs in the session header. jobs.kill is native in 0.1.5, so the patch only adds the browser trigger: a session.jobStop Remote plus the per-row button in ui-jobs.
  • dsh-remote-ssh-route-labels.patch — route-aware workspace titles (project-alpha · dev@192.168.0.101) so same-named directories on different hosts stay distinguishable. Smaller than the 0.1.2 cut: 0.1.5 centralizes default titles in defaultWorkspaceTitle(), so one function covers both call sites.

Both pass git apply --check on a clean 0.1.5 checkout, apply together, and build.

Docs

  • Added a compatibility matrix (plugin version ↔ DSH baseline) to both READMEs.
  • Documented the first-install approve-builds step for ssh2 / cpu-features: pnpm 11 blocks their native build scripts, so the first dsh plugin add fails until allowBuilds is set.

Install

dsh plugin --profile web add github:aijunjiang/dsh-remote-ssh

main always tracks the current baseline; this tag pins the 0.1.5-rc.1 one.