@lemoncat7/dsh-ssh 1.6.0 → 1.8.0

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 (150) hide show
  1. package/ARCHITECTURE.md +9 -0
  2. package/README.md +18 -2
  3. package/docs/dialog-consistency.md +26 -0
  4. package/docs/releases/1.7.0.md +11 -0
  5. package/docs/releases/1.8.0.md +13 -0
  6. package/lib/activity-panel.d.ts.map +1 -1
  7. package/lib/activity-panel.js +14 -8
  8. package/lib/activity-panel.js.map +1 -1
  9. package/lib/adaptive-workspace.d.ts.map +1 -1
  10. package/lib/adaptive-workspace.js +5 -2
  11. package/lib/adaptive-workspace.js.map +1 -1
  12. package/lib/api.d.ts.map +1 -1
  13. package/lib/api.js +17 -1
  14. package/lib/api.js.map +1 -1
  15. package/lib/client.d.ts.map +1 -1
  16. package/lib/client.js +320 -188
  17. package/lib/client.js.map +4 -4
  18. package/lib/commands-panel.d.ts.map +1 -1
  19. package/lib/commands-panel.js +28 -11
  20. package/lib/commands-panel.js.map +1 -1
  21. package/lib/confirmation-dialog.d.ts +12 -0
  22. package/lib/confirmation-dialog.d.ts.map +1 -0
  23. package/lib/confirmation-dialog.js +41 -0
  24. package/lib/confirmation-dialog.js.map +1 -0
  25. package/lib/connector.d.ts.map +1 -1
  26. package/lib/connector.js +6 -4
  27. package/lib/connector.js.map +1 -1
  28. package/lib/docked-panel-compat.d.ts +1 -1
  29. package/lib/docked-panel-compat.d.ts.map +1 -1
  30. package/lib/docked-panel-compat.js +3 -2
  31. package/lib/docked-panel-compat.js.map +1 -1
  32. package/lib/domain.d.ts +8 -0
  33. package/lib/domain.d.ts.map +1 -1
  34. package/lib/domain.js.map +1 -1
  35. package/lib/file-entry-delete-dialog.d.ts.map +1 -1
  36. package/lib/file-entry-delete-dialog.js +5 -2
  37. package/lib/file-entry-delete-dialog.js.map +1 -1
  38. package/lib/file-transfer-workspace.d.ts.map +1 -1
  39. package/lib/file-transfer-workspace.js +48 -30
  40. package/lib/file-transfer-workspace.js.map +1 -1
  41. package/lib/ftp-profile-editor.d.ts.map +1 -1
  42. package/lib/ftp-profile-editor.js +19 -12
  43. package/lib/ftp-profile-editor.js.map +1 -1
  44. package/lib/gist-sync.d.ts +4 -2
  45. package/lib/gist-sync.d.ts.map +1 -1
  46. package/lib/gist-sync.js +49 -12
  47. package/lib/gist-sync.js.map +1 -1
  48. package/lib/group-proxy-editor.d.ts +10 -0
  49. package/lib/group-proxy-editor.d.ts.map +1 -0
  50. package/lib/group-proxy-editor.js +33 -0
  51. package/lib/group-proxy-editor.js.map +1 -0
  52. package/lib/group-proxy.d.ts +7 -0
  53. package/lib/group-proxy.d.ts.map +1 -0
  54. package/lib/group-proxy.js +29 -0
  55. package/lib/group-proxy.js.map +1 -0
  56. package/lib/html-file-preview.d.ts.map +1 -1
  57. package/lib/html-file-preview.js +4 -1
  58. package/lib/html-file-preview.js.map +1 -1
  59. package/lib/i18n.d.ts +17 -0
  60. package/lib/i18n.d.ts.map +1 -0
  61. package/lib/i18n.js +36 -0
  62. package/lib/i18n.js.map +1 -0
  63. package/lib/locales/messages.d.ts +2726 -0
  64. package/lib/locales/messages.d.ts.map +1 -0
  65. package/lib/locales/messages.js +2689 -0
  66. package/lib/locales/messages.js.map +1 -0
  67. package/lib/markdown-preview-editor.d.ts.map +1 -1
  68. package/lib/markdown-preview-editor.js +7 -1
  69. package/lib/markdown-preview-editor.js.map +1 -1
  70. package/lib/native-directory-button.d.ts.map +1 -1
  71. package/lib/native-directory-button.js +6 -3
  72. package/lib/native-directory-button.js.map +1 -1
  73. package/lib/preview-refresh-control.d.ts.map +1 -1
  74. package/lib/preview-refresh-control.js +4 -1
  75. package/lib/preview-refresh-control.js.map +1 -1
  76. package/lib/profile-editor.d.ts.map +1 -1
  77. package/lib/profile-editor.js +14 -8
  78. package/lib/profile-editor.js.map +1 -1
  79. package/lib/project-session-dialog.d.ts.map +1 -1
  80. package/lib/project-session-dialog.js +7 -4
  81. package/lib/project-session-dialog.js.map +1 -1
  82. package/lib/remote-path-input.d.ts.map +1 -1
  83. package/lib/remote-path-input.js +10 -7
  84. package/lib/remote-path-input.js.map +1 -1
  85. package/lib/remote-workspace-tree.d.ts +1 -0
  86. package/lib/remote-workspace-tree.d.ts.map +1 -1
  87. package/lib/remote-workspace-tree.js +19 -21
  88. package/lib/remote-workspace-tree.js.map +1 -1
  89. package/lib/resizable-split.d.ts.map +1 -1
  90. package/lib/resizable-split.js +4 -1
  91. package/lib/resizable-split.js.map +1 -1
  92. package/lib/sftp-client.d.ts +2 -1
  93. package/lib/sftp-client.d.ts.map +1 -1
  94. package/lib/sftp-client.js +55 -31
  95. package/lib/sftp-client.js.map +1 -1
  96. package/lib/ssh-locale-binding.d.ts +9 -0
  97. package/lib/ssh-locale-binding.d.ts.map +1 -0
  98. package/lib/ssh-locale-binding.js +29 -0
  99. package/lib/ssh-locale-binding.js.map +1 -0
  100. package/lib/store.d.ts +4 -0
  101. package/lib/store.d.ts.map +1 -1
  102. package/lib/store.js +13 -0
  103. package/lib/store.js.map +1 -1
  104. package/lib/terminal-bootstrap-echo.d.ts +15 -0
  105. package/lib/terminal-bootstrap-echo.d.ts.map +1 -0
  106. package/lib/terminal-bootstrap-echo.js +62 -0
  107. package/lib/terminal-bootstrap-echo.js.map +1 -0
  108. package/lib/terminal-directory.d.ts +3 -0
  109. package/lib/terminal-directory.d.ts.map +1 -0
  110. package/lib/terminal-directory.js +28 -0
  111. package/lib/terminal-directory.js.map +1 -0
  112. package/lib/terminal-session.d.ts +2 -1
  113. package/lib/terminal-session.d.ts.map +1 -1
  114. package/lib/terminal-session.js +22 -7
  115. package/lib/terminal-session.js.map +1 -1
  116. package/lib/terminal-shell-integration.d.ts +6 -0
  117. package/lib/terminal-shell-integration.d.ts.map +1 -0
  118. package/lib/terminal-shell-integration.js +53 -0
  119. package/lib/terminal-shell-integration.js.map +1 -0
  120. package/lib/terminal-workspace.d.ts +2 -1
  121. package/lib/terminal-workspace.d.ts.map +1 -1
  122. package/lib/terminal-workspace.js +10 -5
  123. package/lib/terminal-workspace.js.map +1 -1
  124. package/lib/terminal.d.ts +4 -0
  125. package/lib/terminal.d.ts.map +1 -1
  126. package/lib/terminal.js +31 -1
  127. package/lib/terminal.js.map +1 -1
  128. package/lib/ui-components.d.ts +3 -1
  129. package/lib/ui-components.d.ts.map +1 -1
  130. package/lib/ui-components.js +19 -10
  131. package/lib/ui-components.js.map +1 -1
  132. package/lib/use-file-preview.d.ts.map +1 -1
  133. package/lib/use-file-preview.js +2 -1
  134. package/lib/use-file-preview.js.map +1 -1
  135. package/lib/use-markdown-draft.d.ts.map +1 -1
  136. package/lib/use-markdown-draft.js +6 -5
  137. package/lib/use-markdown-draft.js.map +1 -1
  138. package/lib/use-ssh-locale.d.ts +4 -0
  139. package/lib/use-ssh-locale.d.ts.map +1 -0
  140. package/lib/use-ssh-locale.js +7 -0
  141. package/lib/use-ssh-locale.js.map +1 -0
  142. package/lib/use-workspace-refresh.d.ts +3 -0
  143. package/lib/use-workspace-refresh.d.ts.map +1 -0
  144. package/lib/use-workspace-refresh.js +44 -0
  145. package/lib/use-workspace-refresh.js.map +1 -0
  146. package/lib/workspace-refresh.d.ts +14 -0
  147. package/lib/workspace-refresh.d.ts.map +1 -0
  148. package/lib/workspace-refresh.js +36 -0
  149. package/lib/workspace-refresh.js.map +1 -0
  150. package/package.json +1 -1
package/ARCHITECTURE.md CHANGED
@@ -14,6 +14,8 @@ This plugin is split into four boundaries. UI code never reaches SSH or file tra
14
14
 
15
15
  - `src/api.ts` translates HTTP routes into explicit store, terminal, file-transfer, forwarding, and credential operations.
16
16
  - `src/store.ts` owns persistent SSH configuration.
17
+ - `src/group-proxy.ts` owns group configuration validation and host-over-group route precedence; `src/connector.ts` resolves the chosen shared proxy and its credentials for all new SSH connections. Group proxy references block unsafe deletion, and group records participate in portable sync without rewriting individual host routes.
18
+ - `src/workspace-refresh.ts` coordinates shared, non-overlapping revision checks and retryable list refreshes; `src/use-workspace-refresh.ts` owns browser visibility/focus scheduling. The revision endpoint reads an in-memory token, never credentials or cloud data. Editors retain their local draft state while collections refresh.
17
19
  - `src/gist-sync.ts` owns portable configuration snapshots, encrypted secret export/import, three-way conflict resolution, tombstones, explicit backups, and serialized background synchronization.
18
20
  - `src/github-device-auth.ts` owns the bounded GitHub Device Flow state machine. Device codes remain server-side and completed access tokens are written directly to the credential service.
19
21
  - `src/session-access.ts` and `src/tools.ts` define the session authorization boundary used by AI tools.
@@ -28,10 +30,17 @@ This plugin is split into four boundaries. UI code never reaches SSH or file tra
28
30
 
29
31
  ### Browser features
30
32
 
33
+ - `src/locales/messages.ts` owns the UI-only Chinese/English catalog, with explicit namespaced keys and numbered interpolation parameters. Selected English copy is adapted from [knownasmobin's PR #2](https://github.com/lemoncat7/dsh-ssh/pull/2) (MIT); none of that PR's backend translations are included.
34
+ - `src/i18n.ts` owns pure formatting and the per-browser-module locale store. `src/ssh-locale-binding.ts` optionally consumes DSH's active locale and disposes subscriptions; absent/unsupported locale services fall back to Chinese without preventing plugin startup. `src/use-ssh-locale.ts` subscribes React components without replacing their keys or resource-owning effects. Locale-only changes never trigger terminal reconnection, preview reloading or writes to saved configuration.
35
+ - Translate presentation only: filesystem paths, protocol punctuation, state discriminants, group identities and user input never go through translation. Generated transfer-tab names keep their existing stored representation and are translated at render time. Backend errors and tool descriptions remain unchanged in this phase; a future error-code presentation layer must not infer codes from arbitrary error prose.
36
+ - `test/i18n.test.mjs` verifies keys, parameter parity and that the entire server import graph cannot reach translation modules. `scripts/verify-i18n.mjs` exercises live language switching with preserved forms, groups, tags, stored transfer tabs and connected terminals at mobile/desktop widths. The preview regression additionally verifies that language changes preserve editor identity, dirty drafts and scroll position.
37
+
31
38
  - `src/activity-panel.tsx` owns the session-scoped details panel and terminal observation lifecycle.
32
39
  - `src/profile-editor.tsx` owns connection editing, validation, jump chains, and deletion safeguards.
33
40
  - `src/remote-workspace-tree.tsx` owns host mounting, fixed directories, and remote-session creation.
34
41
  - `src/sftp-client.tsx` owns directory browsing, upload, preview, and download.
42
+ - `src/terminal-bootstrap-echo.ts` removes only exact per-connection tagged initialization echoes (including PTY/readline double echo). It stops on an explicit completion marker, flushes original bytes on mismatch/timeout/close, and caps pending data. It does not clear terminal output or filter execution errors; normal user input bypasses filtering after initialization.
43
+ - `src/terminal-shell-integration.ts` owns a bounded, read-only shell detection probe and session-only Bash/Zsh directory reporting hooks for browser terminals. It never edits remote startup files. `src/terminal-directory.ts` validates OSC directory metadata; `src/terminal-session.tsx` owns parser registration and cleanup. Terminal tabs retain independent directory state, and only the focused tab drives SFTP follow. Following is debounced, pauses during file/path interactions, and never persists navigation into host configuration.
35
44
  - `src/use-file-preview.ts` owns preview request serialization, cancellation, metadata polling, stale-result protection and scroll restoration. Inline and expanded previews share one refresh state; content rendering is memoized independently of request status.
36
45
  - `src/preview-refresh-control.tsx` renders the shared manual/automatic refresh control; `src/html-file-preview.tsx` isolates static HTML through script-disabled sandboxing and restrictive CSP, strips active/navigation elements, and owns HTML/source scroll state. No raw HTML is inserted into the host DOM.
37
46
  - `src/markdown-preview-editor.tsx` owns rich Markdown editing; `src/use-markdown-draft.ts` owns drafts and save state. Readonly/refresh state never discards dirty content. `src/markdown-file.ts` handles validation, hashes and writer exclusion; local and SFTP adapters separately own boundary checks, staging, metadata preservation and atomic replacement. These routes are UI-only and do not register new agent tools.
package/README.md CHANGED
@@ -6,7 +6,19 @@
6
6
 
7
7
  ## 兼容性
8
8
 
9
- 版本 `1.6.0` 适配 DeepSeek Harness `0.1.5` 新版主面板与右侧标签 API,保留旧版回退;已在 `0.1.5-rc.1` 镜像验证。需要 Node.js `^22.19.0` 或 `>=24.0.0`。
9
+ 版本 `1.8.0` 适配 DeepSeek Harness `0.1.5` 新版主面板与右侧标签 API,保留旧版回退;已在 `0.1.5-rc.1` 镜像验证。需要 Node.js `^22.19.0` 或 `>=24.0.0`。详见 [1.8.0 更新说明](docs/releases/1.8.0.md)。
10
+
11
+ ## 1.7.0 界面语言
12
+
13
+ 新增中英双语界面:跟随 DSH 设置中的显示语言,切换时保留终端、表单、草稿与目录状态。旧宿主没有语言服务时仍显示中文。只翻译插件显示文案,不翻译用户内容、路径、协议、内部字段或持久化数据;服务端及上游返回的错误原文、Agent 工具描述暂保持原样。
14
+
15
+ ## 1.7.0 终端旁 SFTP
16
+
17
+ 目录上报初始化脚本的完整回显会自动隐藏,保留欢迎信息、执行错误及目录元数据;不清屏、不关闭终端回显。初始化异常时优先保留原始输出,避免误吞信息。
18
+
19
+ 窄栏按实际宽度隐藏时间、大小等次要列,文件行提供直接下载按钮。默认跟随当前选中的终端目录,可在 SFTP 标题栏关闭跟随;预览文件、编辑路径、上传或确认删除时暂停,操作结束后再跟随。
20
+
21
+ 新建的 Bash/Zsh/sh(含 dash/ash)终端会安装仅当前 shell 会话有效的目录上报钩子,不修改远端启动文件;探测有最多 5 秒超时,失败不阻止终端连接。已有终端需要重连;其他 shell 需要自行支持 OSC 7 或 OSC 1337 `CurrentDir`。跟随基于终端报告的目录,不猜测输入命令,也不持续执行远端轮询命令。路径栏的链条图标切换跟随,悬停可查看等待上报的说明;文件行下载与删除操作在悬停或键盘聚焦时显示,触屏保持可见。
10
22
 
11
23
  ## 1.6.0 文件预览与 Markdown 编辑
12
24
 
@@ -37,7 +49,7 @@ GitHub 同步收到 HTTP 401 后会用账号接口复核,不删除凭据。确
37
49
 
38
50
  - **同主机多个目录**:先挂载主机,再点选多个固定目录。目录旁会显示“已挂载”;可单独设定默认工作目录。右侧远端目录提供快捷切换,Agent 的 `ssh_list` 也会返回全部挂载目录。目录挂载不改变原有 SSH 权限范围。
39
51
  - **终端多标签与分屏**:`+` 新建标签;双屏支持左右/上下排列,增加分屏最多 4 个,桌面三/四屏按四宫格排列,窄屏上下排列。点击已显示的标签只切换焦点,不交换位置;其他标签或新标签仅替换当前选中窗格。命令与连接按钮作用于选中的终端。SFTP 可从主机标题栏收起/展开,保留目录视图与宽度。切换工作台内的页面、主机或标签不主动断开连接;关闭标签或退出工作台会释放对应连接。新标签使用当时选中的远端路径,不修改已经运行的终端。每主机最多 8 个标签,服务端最多 32 个运行中/连接中的浏览器终端。
40
- - **常用命令**:新增命令页面,支持搜索、新建、编辑和删除;终端内点击“常用命令”选择后先预览,确认后仅在该终端执行。支持多行,不自动采集终端输入;勿保存密码、Token。记录属于当前 DSH 实例,暂不参与 Gist 同步。
52
+ - **常用命令**:支持搜索、新建、编辑和删除;终端内点击“常用命令”选择后先预览,确认后仅在该终端执行。支持多行,不自动采集终端输入;勿保存密码、Token。开发版已接入 Gist 同步与备份,旧备份缺少命令集合时保留本机命令,显式删除仍参与智能合并。
41
53
  - **页面统一**:沿用文件传输页的标题栏、圆角、透明材质、字体和列表间距;终端仅在首次连接时创建,隐藏标签降低备用轮询频率。
42
54
 
43
55
  ## 1.4.6 更新
@@ -205,6 +217,8 @@ Device Flow 需要一个属于插件发布者的 GitHub OAuth App Client ID。Cl
205
217
 
206
218
  - SSH 主机、FTP/FTPS 连接与固定远端项目目录
207
219
  - 代理库及代理密码
220
+ - 常用命令(名称与正文按配置元数据保存到私有 Gist,不自动识别或加密正文中的密码;不要在命令中嵌入密码、Token)
221
+ - SSH 分组默认代理;从主机分组标题旁的编辑按钮配置,主机自身代理优先,没有设置时才回退分组代理,分组也没有代理时直连。只影响新连接,不修改主机自身配置,不影响 FTP 分组。被分组引用的代理不能直接删除。
208
222
  - 密钥库元数据,以及密码、私钥和私钥口令
209
223
  - 连接自身保存的 SSH/FTP 密码和内联代理密码
210
224
 
@@ -225,6 +239,8 @@ Device Flow 需要一个属于插件发布者的 GitHub OAuth App Client ID。Cl
225
239
 
226
240
  空白新设备第一次连接已有 Gist 时始终先安全拉取云端,不会因为选择“本地优先”而覆盖已有配置。自动同步会在插件启动后、本地可同步配置变化约 3 秒后以及后台每 5 分钟运行;任务串行执行,避免并发覆盖。
227
241
 
242
+ 工作台共享每 5 秒一次的轻量版本检查,后台页面暂停,回到页面立即检查;仅数据改变时刷新主机、FTP、代理库、密钥库、分组配置及命令列表。手动同步完成后立即检查,不重建终端或编辑弹窗。旧版本不认识新增集合,跨设备使用这些功能时建议各端同时升级。
243
+
228
244
  覆盖可能丢失的一侧之前,插件会在同一个 Gist 中创建显式备份文件,并按设置保留 0~50 份。该数量只控制 `dsh-ssh.backup.*.json` 文件;GitHub 自己维护的 Gist revision history 无法由插件裁剪。
229
245
 
230
246
  设置页显示最近一次由 GitHub 返回的云端 Gist revision SHA(短格式展示,完整值保留在提示中)。创建、上传、下载、合并或连接测试都会刷新这个云端版本;它表示真实的 Gist 修订版本,不是固定的数据结构版本号。
@@ -0,0 +1,26 @@
1
+ # Dialog consistency
2
+
3
+ `Dialog` owns the shared accessible title/description and closing behavior.
4
+ `dialog.css`, loaded after feature styles, owns common chrome: surface tokens,
5
+ 14px radius, title typography, header/content insets and action sizes. Feature
6
+ styles retain only content layout and purpose-specific dimensions.
7
+
8
+ - Confirmation (440px): host, FTP connection, credential, proxy, pinned directory,
9
+ saved command, file/directory deletion; terminal close, unsaved-draft decisions,
10
+ transfer conflict and file download.
11
+ - Forms: host, credential, proxy, forwarding, group proxy, pinned directory,
12
+ saved command and GitHub device authorization retain their content requirements.
13
+ - Larger work surfaces: FTP manager, session access, command picker, session
14
+ workspace picker and directory/file preview retain browsing space but share chrome.
15
+
16
+ Do not introduce browser `confirm()` dialogs. `useConfirmationDialog` provides
17
+ target capture, in-flight protection and visible retryable failures for simple
18
+ asynchronous destructive actions. Complex deletion dialogs retain dependency
19
+ checks and use the same confirmation variant. Set `dismissible={false}` while
20
+ busy to prevent close animations from hiding a request that is still running.
21
+
22
+ `scripts/verify-i18n.mjs` checks light/dark confirmations and host forms at phone
23
+ and desktop widths, landscape scrolling, long names, cancellation and retries.
24
+ `scripts/verify-preview-refresh.mjs` covers preview/edit/refresh state retention.
25
+ Browser fixtures stub host primitives; icons and host focus/portal behavior
26
+ must also be checked in the installed DSH application.
@@ -0,0 +1,11 @@
1
+ # 1.7.0
2
+
3
+ 正式版。适配 DSH 0.1.5,已在 0.1.5-rc.1 镜像部署验证。需要 Node.js ^22.19.0 或 >=24.0.0。
4
+
5
+ - 中英双语界面跟随宿主语言,切换时保留终端连接、目录、表单及编辑草稿;旧宿主缺少语言服务时回退中文。业务字段、用户内容及服务端权限逻辑不受翻译影响。
6
+ - 终端旁 SFTP 按实际宽度收起次要列,修复窄栏横向空白;文件下载与删除按钮在悬停/聚焦时显示,触屏保持可见。
7
+ - 路径栏链条图标控制跟随当前选中终端的目录。预览、路径编辑、上传及删除确认期间暂停跟随,不覆盖正在操作的内容。
8
+ - 新终端支持 Bash/Zsh/sh(含 dash/ash)会话级目录上报,不修改远端启动文件;其他 shell 需支持 OSC 7 或 CurrentDir。已有终端需要重连。
9
+ - 隐藏精确匹配的初始化脚本回显,保留欢迎信息、错误和正常输出。初始化完成后停止过滤;超时、异常和关闭时保留未匹配内容。
10
+
11
+ 验证:141 项自动测试通过,含真实 Bash/dash PTY、分块回显、异常保留及目录上报测试;手机和桌面浏览器覆盖双语切换、窄栏、下载与目录跟随。
@@ -0,0 +1,13 @@
1
+ # 1.8.0
2
+
3
+ 正式版。适配 DSH 0.1.5,已在 0.1.5-rc.1 镜像部署验证。需要 Node.js ^22.19.0 或 >=24.0.0。
4
+
5
+ - GitHub Gist 同步增加常用命令和分组代理配置;兼容旧备份缺少这些集合的情况,避免误删本地数据。
6
+ - 同步后自动更新代理库、主机与命令列表,保留正在编辑的草稿;页面隐藏时暂停检查,返回时检查更新。
7
+ - 主机分组支持默认代理:主机自己的代理或跳板配置优先,未配置时使用分组代理;已建立的连接不受修改影响。
8
+ - 统一 SSH 弹窗的标题、圆角、材质、留白和按钮规范;删除确认使用紧凑布局,适配手机和横屏。
9
+ - 凭据、代理、固定目录删除不再使用浏览器原生确认框;FTP 删除、文件删除、命令删除及终端关闭统一确认样式。异步删除失败可重试,处理中防重复操作。
10
+
11
+ 安全说明:常用命令属于私有 Gist 中的配置元数据,并非加密凭据。请勿在命令中直接保存密码或 Token;密码、私钥仍独立加密。
12
+
13
+ 验证:146 项自动测试通过;浏览器覆盖深浅色、375px/1024px、横屏、长名称、取消与失败重试,以及 Markdown 编辑与预览刷新状态保持。
@@ -1 +1 @@
1
- {"version":3,"file":"activity-panel.d.ts","sourceRoot":"","sources":["../src/activity-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAwBpE,KAAK,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAE3C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,CAAA;AAEnF,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAA;IAC9D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA0EtG"}
1
+ {"version":3,"file":"activity-panel.d.ts","sourceRoot":"","sources":["../src/activity-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAwBpE,KAAK,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAE3C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,CAAA;AAEnF,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAA;IAC9D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA2EtG"}
@@ -1,4 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useSshLocale } from './use-ssh-locale.js';
3
+ import { t } from './i18n.js';
2
4
  import { useCallback, useEffect, useRef, useState } from 'react';
3
5
  import { IconCloseOutline16, IconCodeOutline16, IconFolderOpenOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';
4
6
  import { FitAddon } from '@xterm/addon-fit';
@@ -8,6 +10,7 @@ import { TerminalTransport } from './terminal-transport.js';
8
10
  import { attachTerminalViewport, createSshTerminal } from './terminal-view.js';
9
11
  import { ServerGlyph, errorMessage, shortId } from './ui-components.js';
10
12
  export function SshActivityPanel(props) {
13
+ useSshLocale();
11
14
  const sessionId = String(props.sessionId);
12
15
  const [activity, setActivity] = useState();
13
16
  const [view, setView] = useState(() => props.controller.requestedView(sessionId) ?? 'local-directory');
@@ -64,18 +67,20 @@ export function SshActivityPanel(props) {
64
67
  document.removeEventListener('visibilitychange', resume);
65
68
  };
66
69
  }, [refresh, view]);
67
- return _jsxs("section", { className: "dsh-ssh-activity-panel", "aria-label": "SSH \u6D3B\u52A8", children: [_jsxs("header", { className: "dsh-ssh-activity-header", children: [_jsxs("div", { className: "dsh-ssh-activity-title", children: [_jsx("span", { className: "dsh-ssh-activity-mark", children: _jsx(ServerGlyph, {}) }), _jsxs("span", { children: [_jsx("strong", { children: "SSH \u6D3B\u52A8" }), _jsxs("small", { children: ["\u5F53\u524D\u4F1A\u8BDD \u00B7 ", shortId(sessionId)] })] })] }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button", "aria-label": "\u5173\u95ED SSH \u6D3B\u52A8", onClick: () => props.controller.close(sessionId), children: _jsx(IconCloseOutline16, { size: 16 }) })] }), activity && _jsxs("nav", { className: "dsh-ssh-activity-tabs", "aria-label": "SSH \u6D3B\u52A8\u89C6\u56FE", children: [_jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'local-directory' ? 'is-active' : '', "aria-pressed": view === 'local-directory', onClick: () => props.controller.open(sessionId, undefined, 'local-directory'), children: [_jsx(IconFolderOpenOutline16, { size: 16 }), "\u4F1A\u8BDD\u76EE\u5F55"] }), activity.profiles.length > 0 && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'remote-directory' ? 'is-active' : '', "aria-pressed": view === 'remote-directory', onClick: () => props.controller.open(sessionId, undefined, 'remote-directory'), children: [_jsx(ServerGlyph, {}), "\u8FDC\u7AEF\u76EE\u5F55"] }), activity.injection?.permission === 'terminal' && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'terminals' ? 'is-active' : '', "aria-pressed": view === 'terminals', onClick: () => props.controller.open(sessionId, undefined, 'terminals'), children: [_jsx(IconCodeOutline16, { size: 16 }), "\u7EC8\u7AEF", activity.terminals.length > 0 && _jsx("em", { children: activity.terminals.length })] })] }), _jsxs("div", { className: "dsh-ssh-activity-body", children: [activity === undefined ? _jsx("p", { className: "dsh-ssh-activity-state", role: "status", children: "\u6B63\u5728\u8BFB\u53D6 SSH \u4F1A\u8BDD\u2026" })
70
+ return _jsxs("section", { className: "dsh-ssh-activity-panel", "aria-label": t("activity-panel.sshActivity"), children: [_jsxs("header", { className: "dsh-ssh-activity-header", children: [_jsxs("div", { className: "dsh-ssh-activity-title", children: [_jsx("span", { className: "dsh-ssh-activity-mark", children: _jsx(ServerGlyph, {}) }), _jsxs("span", { children: [_jsx("strong", { children: t("activity-panel.sshActivity") }), _jsxs("small", { children: [t("activity-panel.currentSession"), " ", shortId(sessionId)] })] })] }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button", "aria-label": t("activity-panel.closeSshActivity"), onClick: () => props.controller.close(sessionId), children: _jsx(IconCloseOutline16, { size: 16 }) })] }), activity && _jsxs("nav", { className: "dsh-ssh-activity-tabs", "aria-label": t("activity-panel.sshActivityView"), children: [_jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'local-directory' ? 'is-active' : '', "aria-pressed": view === 'local-directory', onClick: () => props.controller.open(sessionId, undefined, 'local-directory'), children: [_jsx(IconFolderOpenOutline16, { size: 16 }), t("activity-panel.sessionDirectory")] }), activity.profiles.length > 0 && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'remote-directory' ? 'is-active' : '', "aria-pressed": view === 'remote-directory', onClick: () => props.controller.open(sessionId, undefined, 'remote-directory'), children: [_jsx(ServerGlyph, {}), t("activity-panel.remoteDirectory")] }), activity.injection?.permission === 'terminal' && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", className: view === 'terminals' ? 'is-active' : '', "aria-pressed": view === 'terminals', onClick: () => props.controller.open(sessionId, undefined, 'terminals'), children: [_jsx(IconCodeOutline16, { size: 16 }), t("activity-panel.terminal"), activity.terminals.length > 0 && _jsx("em", { children: activity.terminals.length })] })] }), _jsxs("div", { className: "dsh-ssh-activity-body", children: [activity === undefined ? _jsx("p", { className: "dsh-ssh-activity-state", role: "status", children: t("activity-panel.readingSshSessions") })
68
71
  : view === 'local-directory' ? _jsx(LocalWorkspaceBrowser, { sessionId: sessionId })
69
72
  : view === 'remote-directory' ? _jsx(RemoteDirectoryActivity, { sessionId: sessionId, profiles: activity.profiles, selectedProfileId: props.controller.selected(sessionId), onProfile: profileId => props.controller.open(sessionId, profileId, 'remote-directory'), onSaved: refresh })
70
73
  : _jsx(TerminalActivity, { sessionId: sessionId, terminals: activity.terminals, onClosed: refresh }), error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: error })] })] });
71
74
  }
72
75
  function RemoteDirectoryActivity({ sessionId, profiles, selectedProfileId, onProfile, onSaved }) {
76
+ useSshLocale();
73
77
  const profile = profiles.find(item => item.id === selectedProfileId) ?? profiles[0];
74
78
  if (profile === undefined)
75
- return _jsxs("div", { className: "dsh-ssh-activity-empty", children: [_jsx(IconFolderOpenOutline16, { size: 22 }), _jsx("strong", { children: "\u6CA1\u6709\u53EF\u6D4F\u89C8\u7684\u8FDC\u7AEF" }), _jsx("p", { children: "\u8BF7\u5148\u5728 SSH \u9762\u677F\u4E2D\u5141\u8BB8\u5F53\u524D\u4F1A\u8BDD\u8BBF\u95EE\u4E00\u53F0\u4E3B\u673A\u3002" })] });
79
+ return _jsxs("div", { className: "dsh-ssh-activity-empty", children: [_jsx(IconFolderOpenOutline16, { size: 22 }), _jsx("strong", { children: t("activity-panel.noRemoteToBrowse") }), _jsx("p", { children: t("activity-panel.allowTheCurrentSessionToAccessAHostIn") })] });
76
80
  return _jsx(ActivitySftpBrowser, { sessionId: sessionId, profile: profile, profiles: profiles, onProfile: onProfile, onSaved: onSaved }, profile.id);
77
81
  }
78
82
  function TerminalActivity({ sessionId, terminals, onClosed }) {
83
+ useSshLocale();
79
84
  const preferred = [...terminals].reverse().find(item => item.status.kind === 'running') ?? terminals.at(-1);
80
85
  const [selectedId, setSelectedId] = useState(preferred?.terminalId);
81
86
  const [closingId, setClosingId] = useState();
@@ -87,7 +92,7 @@ function TerminalActivity({ sessionId, terminals, onClosed }) {
87
92
  }
88
93
  }, [preferred?.terminalId, selectedId, terminals]);
89
94
  if (terminal === undefined)
90
- return _jsxs("div", { className: "dsh-ssh-activity-empty", children: [_jsx(IconCodeOutline16, { size: 22 }), _jsx("strong", { children: "\u8FD8\u6CA1\u6709\u6253\u5F00\u7684\u7EC8\u7AEF" }), _jsx("p", { children: "AI \u6253\u5F00\u4EA4\u4E92\u7EC8\u7AEF\u540E\uFF0C\u4F1A\u76F4\u63A5\u663E\u793A\u5728\u8FD9\u91CC\u3002" })] });
95
+ return _jsxs("div", { className: "dsh-ssh-activity-empty", children: [_jsx(IconCodeOutline16, { size: 22 }), _jsx("strong", { children: t("activity-panel.noTerminalsOpenYet") }), _jsx("p", { children: t("activity-panel.terminalsOpenedByTheAiAppearRightHere") })] });
91
96
  const closeSelectedTerminal = async () => {
92
97
  if (closingId !== undefined)
93
98
  return;
@@ -104,13 +109,14 @@ function TerminalActivity({ sessionId, terminals, onClosed }) {
104
109
  setClosingId(undefined);
105
110
  }
106
111
  };
107
- const closeLabel = terminal.status.kind === 'running' ? '结束' : '移除';
108
- return _jsxs("div", { className: "dsh-ssh-terminal-workbench", children: [terminals.length > 1 && _jsx("nav", { className: "dsh-ssh-terminal-switcher dsh-ssh-scroll-surface", "aria-label": "SSH \u7EC8\u7AEF", children: terminals.map((item, index) => {
109
- const label = item.name || `终端 ${index + 1}`;
112
+ const closeLabel = terminal.status.kind === 'running' ? t("activity-panel.end") : t("activity-panel.remove");
113
+ return _jsxs("div", { className: "dsh-ssh-terminal-workbench", children: [terminals.length > 1 && _jsx("nav", { className: "dsh-ssh-terminal-switcher dsh-ssh-scroll-surface", "aria-label": t("activity-panel.sshTerminal"), children: terminals.map((item, index) => {
114
+ const label = item.name || t("activity-panel.terminal2", [index + 1]);
110
115
  return _jsxs("button", { type: "button", "data-ssh-interactive": "choice", title: label, className: item.terminalId === terminal.terminalId ? 'is-active' : '', "aria-pressed": item.terminalId === terminal.terminalId, onClick: () => setSelectedId(item.terminalId), children: [_jsx("span", { className: `dsh-ssh-terminal-state-dot is-${item.status.kind}` }), _jsx("span", { className: "dsh-ssh-terminal-switcher-label", children: label })] }, item.terminalId);
111
- }) }), _jsxs("div", { className: "dsh-ssh-terminal-observer", children: [_jsxs("div", { className: "dsh-ssh-terminal-observer-heading", children: [_jsxs("span", { children: [_jsx("strong", { children: terminal.name }), _jsx("small", { children: terminal.cwd })] }), _jsxs("div", { className: "dsh-ssh-terminal-observer-actions", children: [_jsx("span", { className: `dsh-ssh-terminal-state is-${terminal.status.kind}`, children: terminal.status.kind === 'running' ? '运行中' : '已退出' }), _jsxs("button", { type: "button", className: "dsh-ssh-terminal-close", disabled: closingId !== undefined, "aria-label": `${closeLabel}终端 ${terminal.name}`, title: terminal.status.kind === 'running' ? '结束并关闭这个终端' : '从活动面板移除这个终端', onClick: () => { void closeSelectedTerminal(); }, children: [_jsx(IconCloseOutline16, { size: 14 }), _jsx("span", { children: closingId === terminal.terminalId ? '处理中' : closeLabel })] })] })] }), _jsx(InteractiveTerminal, { sessionId: sessionId, terminal: terminal, onError: setError }, terminal.terminalId)] }), error && _jsx("p", { className: "dsh-ssh-terminal-input-error", role: "alert", children: error })] });
116
+ }) }), _jsxs("div", { className: "dsh-ssh-terminal-observer", children: [_jsxs("div", { className: "dsh-ssh-terminal-observer-heading", children: [_jsxs("span", { children: [_jsx("strong", { children: terminal.name }), _jsx("small", { children: terminal.cwd })] }), _jsxs("div", { className: "dsh-ssh-terminal-observer-actions", children: [_jsx("span", { className: `dsh-ssh-terminal-state is-${terminal.status.kind}`, children: terminal.status.kind === 'running' ? t("activity-panel.running") : t("activity-panel.exited") }), _jsxs("button", { type: "button", className: "dsh-ssh-terminal-close", disabled: closingId !== undefined, "aria-label": t("activity-panel.terminal3", [closeLabel, terminal.name]), title: terminal.status.kind === 'running' ? t("activity-panel.endAndCloseThisTerminal") : t("activity-panel.removeThisTerminalFromTheActivityPanel"), onClick: () => { void closeSelectedTerminal(); }, children: [_jsx(IconCloseOutline16, { size: 14 }), _jsx("span", { children: closingId === terminal.terminalId ? t("activity-panel.processing") : closeLabel })] })] })] }), _jsx(InteractiveTerminal, { sessionId: sessionId, terminal: terminal, onError: setError }, terminal.terminalId)] }), error && _jsx("p", { className: "dsh-ssh-terminal-input-error", role: "alert", children: error })] });
112
117
  }
113
118
  function InteractiveTerminal({ sessionId, terminal: activity, onError }) {
119
+ useSshLocale();
114
120
  const hostRef = useRef(null);
115
121
  const terminalRef = useRef();
116
122
  useEffect(() => {
@@ -157,6 +163,6 @@ function InteractiveTerminal({ sessionId, terminal: activity, onError }) {
157
163
  if (terminal !== undefined)
158
164
  terminal.options.disableStdin = activity.status.kind !== 'running';
159
165
  }, [activity.status.kind]);
160
- return _jsx("div", { className: "dsh-ssh-terminal-screen", "aria-label": "\u4EA4\u4E92\u5F0F SSH \u7EC8\u7AEF", children: _jsx("div", { ref: hostRef, className: "dsh-ssh-terminal-viewport" }) });
166
+ return _jsx("div", { className: "dsh-ssh-terminal-screen", "aria-label": t("activity-panel.interactiveSshTerminal"), children: _jsx("div", { ref: hostRef, className: "dsh-ssh-terminal-viewport" }) });
161
167
  }
162
168
  //# sourceMappingURL=activity-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-panel.js","sourceRoot":"","sources":["../src/activity-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-panel.js","sourceRoot":"","sources":["../src/activity-panel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adaptive-workspace.d.ts","sourceRoot":"","sources":["../src/adaptive-workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEnE,MAAM,WAAW,yBAAyB;IACxC,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;CACtC;AAED,KAAK,aAAa,GAAG,YAAY,GAAG,WAAW,CAAA;AAC/C,KAAK,qBAAqB,GAAG,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,yBAAyB,KAAK,SAAS,CAAC,CAAA;AAE7F,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,UAAU,EAAE,qBAAqB,CAAA;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,cAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAwC7M"}
1
+ {"version":3,"file":"adaptive-workspace.d.ts","sourceRoot":"","sources":["../src/adaptive-workspace.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEnE,MAAM,WAAW,yBAAyB;IACxC,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;CACtC;AAED,KAAK,aAAa,GAAG,YAAY,GAAG,WAAW,CAAA;AAC/C,KAAK,qBAAqB,GAAG,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,yBAAyB,KAAK,SAAS,CAAC,CAAA;AAE7F,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,UAAU,EAAE,qBAAqB,CAAA;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,cAAgD,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAyCxO"}
@@ -1,6 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useSshLocale } from './use-ssh-locale.js';
3
+ import { t } from './i18n.js';
2
4
  import { useEffect, useRef, useState } from 'react';
3
- export function AdaptiveWorkspace({ className, toolbar, notice, navigation, navigationLabel, navigationIcon, inspector, inspectorLabel = '详情', inspectorIcon, children }) {
5
+ export function AdaptiveWorkspace({ className, toolbar, notice, navigation, navigationLabel, navigationIcon, inspector, inspectorLabel = t("adaptive-workspace.details"), inspectorIcon, children }) {
6
+ useSshLocale();
4
7
  const [panel, setPanel] = useState();
5
8
  const navigationRef = useRef(null);
6
9
  const inspectorRef = useRef(null);
@@ -29,7 +32,7 @@ export function AdaptiveWorkspace({ className, toolbar, notice, navigation, navi
29
32
  window.addEventListener('keydown', close);
30
33
  return () => window.removeEventListener('keydown', close);
31
34
  }, [panel]);
32
- return _jsxs("main", { className: `dsh-ssh-adaptive-workspace${className === undefined ? '' : ` ${className}`}`, "data-panel": panel ?? 'none', "data-has-inspector": inspector === undefined ? 'false' : 'true', children: [toolbar, notice, _jsxs("nav", { className: "dsh-ssh-mobile-actions", "aria-label": "\u5DE5\u4F5C\u533A\u9762\u677F", children: [_jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": panel === 'navigation', "aria-controls": "dsh-ssh-adaptive-navigation", "aria-expanded": panel === 'navigation', onClick: () => panel === 'navigation' ? closePanel() : setPanel('navigation'), children: [navigationIcon, _jsx("span", { children: navigationLabel })] }), inspector !== undefined && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": panel === 'inspector', "aria-controls": "dsh-ssh-adaptive-inspector", "aria-expanded": panel === 'inspector', onClick: () => panel === 'inspector' ? closePanel() : setPanel('inspector'), children: [inspectorIcon, _jsx("span", { children: inspectorLabel })] })] }), _jsxs("div", { className: "dsh-ssh-adaptive-shell", children: [_jsx("aside", { ref: navigationRef, id: "dsh-ssh-adaptive-navigation", className: "dsh-ssh-adaptive-navigation", "aria-label": navigationLabel, children: renderSlot(navigation, controls) }), _jsx("section", { className: "dsh-ssh-adaptive-content", children: children }), inspector !== undefined && _jsx("aside", { ref: inspectorRef, id: "dsh-ssh-adaptive-inspector", className: "dsh-ssh-adaptive-inspector", "aria-label": inspectorLabel, children: renderSlot(inspector, controls) }), _jsx("button", { type: "button", className: "dsh-ssh-adaptive-backdrop", "aria-label": "\u5173\u95ED\u9762\u677F", tabIndex: panel === undefined ? -1 : 0, onClick: closePanel })] })] });
35
+ return _jsxs("main", { className: `dsh-ssh-adaptive-workspace${className === undefined ? '' : ` ${className}`}`, "data-panel": panel ?? 'none', "data-has-inspector": inspector === undefined ? 'false' : 'true', children: [toolbar, notice, _jsxs("nav", { className: "dsh-ssh-mobile-actions", "aria-label": t("adaptive-workspace.workspacePanel"), children: [_jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": panel === 'navigation', "aria-controls": "dsh-ssh-adaptive-navigation", "aria-expanded": panel === 'navigation', onClick: () => panel === 'navigation' ? closePanel() : setPanel('navigation'), children: [navigationIcon, _jsx("span", { children: navigationLabel })] }), inspector !== undefined && _jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": panel === 'inspector', "aria-controls": "dsh-ssh-adaptive-inspector", "aria-expanded": panel === 'inspector', onClick: () => panel === 'inspector' ? closePanel() : setPanel('inspector'), children: [inspectorIcon, _jsx("span", { children: inspectorLabel })] })] }), _jsxs("div", { className: "dsh-ssh-adaptive-shell", children: [_jsx("aside", { ref: navigationRef, id: "dsh-ssh-adaptive-navigation", className: "dsh-ssh-adaptive-navigation", "aria-label": navigationLabel, children: renderSlot(navigation, controls) }), _jsx("section", { className: "dsh-ssh-adaptive-content", children: children }), inspector !== undefined && _jsx("aside", { ref: inspectorRef, id: "dsh-ssh-adaptive-inspector", className: "dsh-ssh-adaptive-inspector", "aria-label": inspectorLabel, children: renderSlot(inspector, controls) }), _jsx("button", { type: "button", className: "dsh-ssh-adaptive-backdrop", "aria-label": t("adaptive-workspace.closePanel"), tabIndex: panel === undefined ? -1 : 0, onClick: closePanel })] })] });
33
36
  }
34
37
  function renderSlot(slot, controls) {
35
38
  return typeof slot === 'function' ? slot(controls) : slot;
@@ -1 +1 @@
1
- {"version":3,"file":"adaptive-workspace.js","sourceRoot":"","sources":["../src/adaptive-workspace.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adaptive-workspace.js","sourceRoot":"","sources":["../src/adaptive-workspace.tsx"],"names":[],"mappings":"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"}
package/lib/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAAwB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAKrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAIzE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,sBAAsB,CAAA;AAG7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAA+B,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAGtE,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAG5F,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAWhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,QAAQ,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACzE,GAAG,MAAM,IAAI,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,WAAW,EAAE,kBAAkB,CAAA;IAC/B,QAAQ,EAAE,eAAe,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;IACvB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,sBAAsB,CAAA;IACjC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,cAAc,EAAE,gBAAgB,CAAA;IAChC,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,iBAAiB,CAAA;IACxB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,YAAY,EAAE,sBAAsB,CAAA;IACpC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACjD,yBAAyB,CAAC,IAAI,yBAAyB,GAAG,SAAS,CAAA;CACpE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI,CAa3G"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAAwB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAKrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAIzE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,sBAAsB,CAAA;AAG7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAA+B,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAGtE,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAG5F,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAWhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,QAAQ,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACzE,GAAG,MAAM,IAAI,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,WAAW,EAAE,kBAAkB,CAAA;IAC/B,QAAQ,EAAE,eAAe,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;IACvB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,sBAAsB,CAAA;IACjC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,cAAc,EAAE,gBAAgB,CAAA;IAChC,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,iBAAiB,CAAA;IACxB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,YAAY,EAAE,sBAAsB,CAAA;IACpC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACjD,yBAAyB,CAAC,IAAI,yBAAyB,GAAG,SAAS,CAAA;CACpE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI,CAa3G"}
package/lib/api.js CHANGED
@@ -2,6 +2,7 @@ import { randomBytes } from 'node:crypto';
2
2
  import { pipeline } from 'node:stream/promises';
3
3
  import { HostKeyRequiredError } from './connector.js';
4
4
  import { normalizeCredentialEntryDraft, normalizeForwardDraft, normalizeFtpProfileDraft, normalizeProfileDraft, normalizeProxyEntryDraft, normalizeRemoteProjectDraft, normalizeSecrets, } from './domain.js';
5
+ import { saveGroupProxy } from './group-proxy.js';
5
6
  import { normalizeRemoteDirectory, setSessionDirectory } from './directory.js';
6
7
  import { streamTerminalOutput } from './terminal-stream.js';
7
8
  import { normalizeGitHubProxy } from './github-http.js';
@@ -42,6 +43,19 @@ async function dispatch(req, res, prefix, runtime) {
42
43
  const relative = url.pathname.slice(prefix.length).replace(/^\/+|\/+$/g, '');
43
44
  const segments = relative ? relative.split('/').map(decodeURIComponent) : [];
44
45
  const method = req.method ?? 'GET';
46
+ if (method === 'GET' && relative === 'workspace-revision') {
47
+ res.setHeader('Cache-Control', 'no-store');
48
+ return sendJson(res, 200, { revision: runtime.store.workspaceRevision() });
49
+ }
50
+ if (relative === 'group-proxies') {
51
+ if (method === 'GET')
52
+ return sendJson(res, 200, runtime.store.groupProxies());
53
+ if (method === 'PUT') {
54
+ requireMutationHeader(req);
55
+ await saveGroupProxy(runtime.store, await readObject(req));
56
+ return sendJson(res, 200, runtime.store.groupProxies());
57
+ }
58
+ }
45
59
  if (segments[0] === 'commands') {
46
60
  if (method === 'GET' && segments.length === 1)
47
61
  return sendJson(res, 200, runtime.store.commands().sort((a, b) => b.updatedAt - a.updatedAt));
@@ -328,6 +342,8 @@ async function dispatch(req, res, prefix, runtime) {
328
342
  if (id !== undefined && method === 'DELETE' && segments.length === 2) {
329
343
  requireMutationHeader(req);
330
344
  requiredProxyEntry(runtime.store, id);
345
+ if (runtime.store.groupProxies().some(group => group.proxyId === id))
346
+ throw httpError(409, '代理仍被分组使用,请先修改分组代理');
331
347
  const references = runtime.store.profiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === id).length + runtime.store.ftpProfiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === id).length;
332
348
  if (references > 0)
333
349
  throw httpError(409, `proxy entry is used by ${references} connection(s)`);
@@ -905,7 +921,7 @@ async function proxyEntryViews(runtime) {
905
921
  }
906
922
  async function proxyEntryView(runtime, entry) {
907
923
  const credential = await runtime.credentials.describeProxyEntry(entry.id);
908
- return { ...entry, credential, references: runtime.store.profiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === entry.id).length + runtime.store.ftpProfiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === entry.id).length };
924
+ return { ...entry, credential, references: runtime.store.profiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === entry.id).length + runtime.store.ftpProfiles().filter(profile => profile.proxy.type === 'saved' && profile.proxy.proxyId === entry.id).length + (runtime.store.groupProxies?.() ?? []).filter(group => group.proxyId === entry.id).length };
909
925
  }
910
926
  async function ftpProfileViews(runtime) { return Promise.all(runtime.store.ftpProfiles().map(profile => ftpProfileView(runtime, profile))); }
911
927
  async function ftpProfileView(runtime, profile) {