@itookit/dsht 0.6.6 → 0.6.7

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.
package/README.i18n.yaml CHANGED
@@ -1,3 +1,3 @@
1
1
  # Git blob hashes of the reviewed bilingual pair.
2
- README.md: 1f4feedf3b3c23e6e415ad3d30873fbd4704b27f
3
- README.zh.md: b0046be28c55bb63249c321ba6dff67eca091487
2
+ README.md: 1f5cde21326a6a1056ca90cba9e21e672ee332bb
3
+ README.zh.md: 977cf5defbbe36cf37ca0d999b915a4aa81bfbfd
package/README.md CHANGED
@@ -174,7 +174,7 @@ npm start
174
174
 
175
175
  Both paths read the same `DSH_URL` and `DSH_TOKEN` variables.
176
176
 
177
- Select a workspace with ↑/↓ and Enter, then select a session or **New session**. **All sessions** also exposes sessions outside registered workspaces. **Add workspace (this directory)** registers the directory `dsht` itself runs in, and appears only while the host does not already have it; **Add workspace (host directory)** takes an existing absolute directory on the host, which may differ from your local filesystem, and Esc leaves that prompt for the picker again. Starting inside a registered workspace directory selects that workspace instead of showing the picker, with `←` in the session list switching to another; a session id passed on the command line still opens directly. Creating a session requires a selected workspace.
177
+ Select a workspace with ↑/↓ and Enter, then select a session or **New session**. **All sessions** also exposes sessions outside registered workspaces. **Add workspace (this directory)** registers the directory `dsht` itself runs in: while the host does not already have it, it leads the list and is therefore the default selection; **Add workspace (host directory)** takes an existing absolute directory on the host, which may differ from your local filesystem, and Esc leaves that prompt for the picker again. Starting inside a registered workspace directory selects that workspace instead of showing the picker, with `←` in the session list switching to another; a session id passed on the command line still opens directly. Creating a session requires a selected workspace.
178
178
 
179
179
  While the host is unreachable, the startup pickers show what is wrong and how to fix it instead of an empty list. A first attempt still in flight is named as connecting; an unreachable host prints the `npx @deepseek-ai/dsh web` command that starts it together with the first-run `DSH_URL` line; a refused credential asks for that URL or `DSH_TOKEN`. The raw transport failure stays underneath as a dim diagnostic, and the client keeps retrying on its own.
180
180
 
package/README.zh.md CHANGED
@@ -174,7 +174,7 @@ npm start
174
174
 
175
175
  两种方式读取相同的 `DSH_URL` 和 `DSH_TOKEN` 变量。
176
176
 
177
- 使用 ↑/↓ 和 Enter 选择工作区,然后选择已有会话或 **New session**。**All sessions** 同时显示未归属注册工作区的会话。**Add workspace (this directory)** 直接注册 `dsht` 自身所在的目录,只在服务端尚未注册它时出现;**Add workspace (host directory)** 接收服务端已有目录的绝对路径,该路径可能与本机文件系统不同,按 Esc 可以退回选择器。在已注册的工作区目录里启动时,直接选中该工作区而不再显示选择器(会话列表里的 `←` 仍可切到别的工作区);命令行给出会话 ID 时依旧直接打开。新建会话前必须选择工作区。
177
+ 使用 ↑/↓ 和 Enter 选择工作区,然后选择已有会话或 **New session**。**All sessions** 同时显示未归属注册工作区的会话。**Add workspace (this directory)** 直接注册 `dsht` 自身所在的目录:服务端尚未注册它时,它排在列表最前,因此也是默认选中项;**Add workspace (host directory)** 接收服务端已有目录的绝对路径,该路径可能与本机文件系统不同,按 Esc 可以退回选择器。在已注册的工作区目录里启动时,直接选中该工作区而不再显示选择器(会话列表里的 `←` 仍可切到别的工作区);命令行给出会话 ID 时依旧直接打开。新建会话前必须选择工作区。
178
178
 
179
179
  宿主不可达时,启动选择器显示的是原因与解决办法,而不是一个空列表:尚在进行的首次尝试写成"连接中";连不上宿主时给出启动它的 `npx @deepseek-ai/dsh web` 命令与首次运行所需的 `DSH_URL` 行;凭据被拒时要求该 URL 或 `DSH_TOKEN`。原始传输错误以暗色诊断信息留在下方,客户端自行持续重连。
180
180
 
package/dist/ui/app.js CHANGED
@@ -831,6 +831,13 @@ export function App({ controller, panelLifetimeMs = PANEL_LIFETIME_MS, theme = m
831
831
  // Needs-you is the one state that asks for action, so it outranks working; ready stays quiet.
832
832
  const stateColor = { needs: theme.status.critical, running: theme.status.working, idle: theme.colors.muted };
833
833
  const choices = state.screen === 'workspaces' ? [
834
+ // The directory this client runs in is the one case where no path has to be typed, and offering
835
+ // it only while the host has not registered it keeps the row from repeating itself. It leads the
836
+ // list so it is also the default selection: starting outside a registered workspace is exactly
837
+ // the situation the row exists for.
838
+ ...(state.workspaces.some(workspace => string(workspace.path) === controller.localDirectory) ? []
839
+ : [{ key: '@here', label: `+ Add workspace (this directory) ${controller.localDirectory}`,
840
+ action: () => operate(() => controller.actions.createWorkspace(controller.localDirectory)) }]),
834
841
  ...state.workspaces.map(workspace => {
835
842
  const counts = workspaceCounts(sessionsOf(workspace), new Set(pendingCounts.keys()));
836
843
  const name = string(workspace.title);
@@ -845,11 +852,6 @@ export function App({ controller, panelLifetimeMs = PANEL_LIFETIME_MS, theme = m
845
852
  action: () => controller.actions.pickWorkspace(string(workspace.workspaceId)) };
846
853
  }),
847
854
  { key: '@all', label: 'All sessions', action: () => operate(() => controller.actions.switchSession('all')) },
848
- // The directory this client runs in is the one case where no path has to be typed, and offering
849
- // it only while the host has not registered it keeps the row from repeating itself.
850
- ...(state.workspaces.some(workspace => string(workspace.path) === controller.localDirectory) ? []
851
- : [{ key: '@here', label: `+ Add workspace (this directory) ${controller.localDirectory}`,
852
- action: () => operate(() => controller.actions.createWorkspace(controller.localDirectory)) }]),
853
855
  { key: '@new', label: '+ Add workspace (host directory)', action: () => controller.actions.enterPath() },
854
856
  ] : [
855
857
  ...(state.workspaceId && !state.showAllSessions ? [{ key: '@new', label: '+ New session', action: () => operate(() => controller.actions.createSession()) }] : []),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itookit/dsht",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "type": "module",
5
5
  "description": "Remote-first TUI for DeepSeek Harness with SSH-friendly mobile access and request-level cost tracking",
6
6
  "engines": {