dsh-remote 0.8.64 → 0.8.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/client.js +16 -12
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -2048,19 +2048,18 @@ window.__ModuleLoader__.load({
2048
2048
  // 选目录 on a machine that is NOT current must browse THAT machine, not
2049
2049
  // whichever one happens to be current.
2050
2050
  initialMachineId: dirPick.machineId,
2051
- onPicked: (picked) => {
2051
+ onPicked: (localMirror, remotePath) => {
2052
2052
  const target = dirPick.machineId
2053
2053
  setDirPick(null)
2054
- if (!picked) return
2055
- api('POST', '/dsh-remote/mirror', { path: picked, machineId: target })
2056
- .then((r) => {
2057
- setCurrentId((r && r.currentId) || target)
2058
- setMsg(tr('settings.workspaceOpened', { path: picked }))
2059
- // The mirror list is per machine now, so re-reading the registry is
2060
- // what makes the new folder appear under that machine's row.
2061
- refresh()
2062
- })
2063
- .catch((e) => setErr(String((e && e.message) || e)))
2054
+ // The picker already created the mirror; posting /mirror again would
2055
+ // send a local path as if it were remote (see commitPath).
2056
+ const shown = remotePath || localMirror
2057
+ if (!shown) return
2058
+ setCurrentId(target)
2059
+ setMsg(tr('settings.workspaceOpened', { path: shown }))
2060
+ // The mirror list is per machine now, so re-reading the registry is
2061
+ // what makes the new folder appear under that machine's row.
2062
+ refresh()
2064
2063
  },
2065
2064
  onCancel: () => setDirPick(null),
2066
2065
  })
@@ -2516,7 +2515,12 @@ window.__ModuleLoader__.load({
2516
2515
  // instead of trusting whichever happens to be active.
2517
2516
  ensureCurrent(machineId)
2518
2517
  .then(() => api('POST', '/dsh-remote/mirror', { path: target, machineId }))
2519
- .then((res) => (res && res.localMirror ? onPicked(res.localMirror) : setErr((res && res.error) || '')))
2518
+ // `onPicked(localMirror, remotePath)`: the mirror is ALREADY created here.
2519
+ // The sidebar opens the local mirror (1st arg); a caller that only wants to
2520
+ // report/continue from the remote path uses the 2nd. Handing back only the
2521
+ // local path made the settings page post /mirror a SECOND time with a
2522
+ // Windows path as if it were remote ("not a directory (or unreachable)").
2523
+ .then((res) => (res && res.localMirror ? onPicked(res.localMirror, res.path || target) : setErr((res && res.error) || '')))
2520
2524
  .catch((e) => setErr(String((e && e.message) || e)))
2521
2525
  }
2522
2526
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-remote",
3
- "version": "0.8.64",
3
+ "version": "0.8.65",
4
4
  "description": "Remote-work assistant for DeepSeek Harness: connect SSH (password/key/agent/keyboard-interactive, multi-hop ProxyJump), pick a remote workspace, operate on it with 22 rw_* tools, conflict-aware mirror sync, an embedded PTY terminal, one-click remote dsh deploy + web UI attach, port forwarding, host grouping, remote sandbox fencing, audit log, keychain passwords.",
5
5
  "license": "MIT",
6
6
  "author": "flymysql <flyphp@outlook.com>",