Skip to content

Releases

v0.3.3 — DSH 0.1.5-rc.1 baseline

Choose a tag to compare

@aijunjiang aijunjiang released this 11 Sep 01:29

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.

dsh-remote-ssh v0.3.2

Choose a tag to compare

@aijunjiang aijunjiang released this 03 Sep 08:06

dsh-remote-ssh v0.3.2 - working Stop chain and background-job UX.

  • ssh_exec background:true registers a DSH session job shown in the header indicator; auto-registration is conservative (only setsid/nohup/disown daemonization; bare & and quick calls stay foreground).
  • Stop works end to end: header Stop -> /jobstop command -> ctx.jobs.kill -> real remote process-group kill. Fixed the remote-job cancel scope bug and ui-jobs wiring ('remote without inject'), rebuilt the ui-jobs bundle.
  • Agent routing guide carries a normative JOB POLICY; ssh_job tool manages list/stop/read.
  • harness-patches/: route labels (Issue #1) and job Stop button patches with apply/rebuild notes.

dsh-remote-ssh v0.3.1

Choose a tag to compare

@aijunjiang aijunjiang released this 03 Sep 06:36

dsh-remote-ssh v0.3.1 - ssh_exec background jobs.

  • ssh_exec background:true registers the command as a DSH session job: it appears in the job indicator next to the session title, with stop/log; cancel maps to a real remote process-group kill, completion fires when the remote process exits. New remote-job.ts (env-first spawn, bounded rolling log tail).
  • Routing guide + tool docs teach the background mode and codify background-task discipline (detach stdin, pidfile kill, never pkill -f, flush logs).
  • README is now bilingual (English root + Chinese mirror), documents the official dsh plugin add install, same-name title rule, and links Issue #1.
  • harness-patches/ ships the route-label fix for the deployment's harness fork.

dsh-remote-ssh v0.3.0

Choose a tag to compare

@aijunjiang aijunjiang released this 03 Sep 01:10

dsh-remote-ssh v0.3.0 - official 'dsh plugin add' install.

Repo root is now the official bundle package (dsh.bundle.patch -> GUI user layer). Install: dsh plugin --profile web add github:aijunjiang/dsh-remote-ssh, then start dsh with no flags. Internal @deepseek-ai deps ride the DSH baseline as optional peers; only ssh2 comes from npm.

Also ships the human route suffix rule for same-named remote workspaces (folder name + 'at' user@host); the matching display fix lives in the deployment harness fork. Full remote-fs mode remains the cordis.patch.yml overlay for dedicated instances. Local dev install: node scripts/install.mjs.

dsh-remote-ssh v0.2.1

Choose a tag to compare

@aijunjiang aijunjiang released this 02 Sep 08:59

dsh-remote-ssh v0.2.1 - one-command, zero-flag install

Installation is now:

  1. git clone https://github.com/aijunjiang/dsh-remote-ssh && cd dsh-remote-ssh

ode scripts/install.mjs
3. restart dsh - start with no --patch

The installer links the monorepo packages into the profile loader tree AND
registers the SSH GUI user layer into the profile's own patch file (marked,
idempotent segment; removed with
ode scripts/install.mjs --remove).
README rewritten accordingly.

dsh-remote-ssh v0.2.0

Choose a tag to compare

@aijunjiang aijunjiang released this 02 Sep 08:52

dsh-remote-ssh v0.2.0 - remote workspace over SSH for DSH

Move file IO and command execution onto an SSH target while sessions, the web GUI and \ stay local.

Highlights

  • GUI: connection manager, remote directory browser, per-session routing across multiple remote hosts (sidebar forked from UynajGI/dsh-ssh, MIT).
  • Full mode (cordis.patch.yml): ctx.fs / ctx.subprocess / ctx.shell run on the remote host; helper daemon gives real pid/pgid, tree-scoped termination, bounded reads and target-side spills.
  • Agent-facing experience (field-tested):
    • routing identity + a usage guide in the runtime context of routed sessions (degraded-route warnings instead of silent empty mirrors);
    • ssh_exec tool over the in-process ssh2/helper channel - no local ssh.exe, locale fixed to C, 256 KiB/stream cap, end-sentinel output integrity with one auto-retry on lost output;
    • ssh_route_status recovery tool, DSH_SSH_* shell env, and a secret-free route manifest (dsh-ssh-routes.json).
  • Install:
    ode scripts/install.mjs (idempotent, removable) + pnpm dsh web --patch - see README.

Fixes since 0.1.0

  • registry/sessions resolved lazily (async ctx.plugin mount degraded every routed session);
  • silent exit-0-empty-output bug made visible and retried (sentinel integrity);
  • route-spelled-but-unresolvable cwds now render explicit offline warnings.

Notes

  • MIT licensed; technical detail in DESIGN.md and specs/.
  • PTY/terminal spawn on remote connections not yet implemented; GUI-only mode leaves fs/subprocess local by design.