@deepseek-harness-tui/dsh-tui 0.10.2 → 0.11.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 (277) hide show
  1. package/README.md +171 -124
  2. package/bin/dsh-tui.js +748 -22
  3. package/cordis.patch.yml +38 -10
  4. package/cordis.yml +2 -0
  5. package/lib/types/adapter/channel/session-projection.d.ts.map +1 -1
  6. package/lib/types/adapter/channel/session-projection.js +2 -0
  7. package/lib/types/adapter/channel/ui-policy.d.ts +4 -1
  8. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  9. package/lib/types/adapter/channel/ui-policy.js +5 -1
  10. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
  11. package/lib/types/adapter/kernel/host-facade.js +1 -0
  12. package/lib/types/adapter/kernel/replay.d.ts.map +1 -1
  13. package/lib/types/adapter/kernel/replay.js +3 -0
  14. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  15. package/lib/types/adapter/kernel/runtime.js +2 -0
  16. package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -1
  17. package/lib/types/adapter/kernel/slices/workspace.js +1 -0
  18. package/lib/types/adapter/ports/channel-ui.d.ts +22 -2
  19. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  20. package/lib/types/adapter/ports/channel-view.d.ts +66 -0
  21. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  22. package/lib/types/adapter/ports/channel-workspace.d.ts +23 -0
  23. package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -1
  24. package/lib/types/adapter/ports/workspace.d.ts +2 -0
  25. package/lib/types/adapter/ports/workspace.d.ts.map +1 -1
  26. package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -1
  27. package/lib/types/adapter/upstream/workspace-driver.js +10 -2
  28. package/lib/types/commands.d.ts.map +1 -1
  29. package/lib/types/commands.js +1 -0
  30. package/lib/types/components/ContextBarView.d.ts +15 -7
  31. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  32. package/lib/types/components/ContextBarView.js +26 -22
  33. package/lib/types/components/ImagePreviewOverlay.d.ts.map +1 -1
  34. package/lib/types/components/ImagePreviewOverlay.js +11 -5
  35. package/lib/types/components/Markdown.d.ts +11 -1
  36. package/lib/types/components/Markdown.d.ts.map +1 -1
  37. package/lib/types/components/Markdown.js +20 -2
  38. package/lib/types/components/MermaidDiagram.d.ts +13 -0
  39. package/lib/types/components/MermaidDiagram.d.ts.map +1 -0
  40. package/lib/types/components/MermaidDiagram.js +61 -0
  41. package/lib/types/components/MessageList.d.ts +26 -1
  42. package/lib/types/components/MessageList.d.ts.map +1 -1
  43. package/lib/types/components/MessageList.js +72 -7
  44. package/lib/types/components/PageMargin.d.ts +1 -1
  45. package/lib/types/components/PromptInput.d.ts +37 -1
  46. package/lib/types/components/PromptInput.d.ts.map +1 -1
  47. package/lib/types/components/PromptInput.js +243 -28
  48. package/lib/types/components/ScrollbarGutter.d.ts +20 -5
  49. package/lib/types/components/ScrollbarGutter.d.ts.map +1 -1
  50. package/lib/types/components/ScrollbarGutter.js +88 -10
  51. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  52. package/lib/types/components/StreamingMarkdown.js +30 -28
  53. package/lib/types/components/Tooltip.d.ts.map +1 -1
  54. package/lib/types/components/Tooltip.js +45 -7
  55. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  56. package/lib/types/components/messages/UserPromptMessage.js +5 -7
  57. package/lib/types/components/messages/useImageInspection.d.ts.map +1 -1
  58. package/lib/types/components/messages/useImageInspection.js +19 -9
  59. package/lib/types/components/promptDraftCache.d.ts +102 -0
  60. package/lib/types/components/promptDraftCache.d.ts.map +1 -0
  61. package/lib/types/components/promptDraftCache.js +76 -0
  62. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +17 -1
  63. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  64. package/lib/types/components/questions/AskUserQuestionPanel.js +40 -7
  65. package/lib/types/components/questions/QuestionMinimizedBar.d.ts +12 -0
  66. package/lib/types/components/questions/QuestionMinimizedBar.d.ts.map +1 -0
  67. package/lib/types/components/questions/QuestionMinimizedBar.js +43 -0
  68. package/lib/types/components/sessions/SessionListRow.d.ts +23 -1
  69. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  70. package/lib/types/components/sessions/SessionListRow.js +52 -5
  71. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +49 -0
  72. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -0
  73. package/lib/types/components/workspaces/HomeWorkspaceRow.js +50 -0
  74. package/lib/types/dsh-adapter/bundled-presets.d.ts +10 -0
  75. package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -0
  76. package/lib/types/dsh-adapter/bundled-presets.js +80 -0
  77. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +1 -1
  78. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  79. package/lib/types/dsh-adapter/channel/action-readiness.js +3 -0
  80. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +1 -1
  81. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
  82. package/lib/types/dsh-adapter/channel/agent-view-projection.js +19 -2
  83. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  84. package/lib/types/dsh-adapter/channel/background-action.js +52 -29
  85. package/lib/types/dsh-adapter/channel/binding.d.ts +19 -2
  86. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
  87. package/lib/types/dsh-adapter/channel/binding.js +78 -18
  88. package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
  89. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  90. package/lib/types/dsh-adapter/channel/composer-images.js +105 -6
  91. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +8 -0
  92. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
  93. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +3 -2
  94. package/lib/types/dsh-adapter/channel/ide-selection.d.ts +58 -0
  95. package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -0
  96. package/lib/types/dsh-adapter/channel/ide-selection.js +226 -0
  97. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +6 -1
  98. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  99. package/lib/types/dsh-adapter/channel/input-delivery.js +9 -1
  100. package/lib/types/dsh-adapter/channel/local-actions.d.ts +3 -19
  101. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  102. package/lib/types/dsh-adapter/channel/local-actions.js +2 -1
  103. package/lib/types/dsh-adapter/channel/model-actions.d.ts +4 -1
  104. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  105. package/lib/types/dsh-adapter/channel/model-actions.js +82 -6
  106. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  107. package/lib/types/dsh-adapter/channel/model-switch.js +49 -31
  108. package/lib/types/dsh-adapter/channel/projection.d.ts +4 -0
  109. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  110. package/lib/types/dsh-adapter/channel/projection.js +29 -19
  111. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  112. package/lib/types/dsh-adapter/channel/reports.js +4 -12
  113. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  114. package/lib/types/dsh-adapter/channel/session-fork.js +26 -2
  115. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +3 -0
  116. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
  117. package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -0
  118. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +10 -0
  119. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  120. package/lib/types/dsh-adapter/channel/session-metadata.js +2 -2
  121. package/lib/types/dsh-adapter/channel/session-resume.d.ts +11 -2
  122. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  123. package/lib/types/dsh-adapter/channel/session-resume.js +291 -94
  124. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  125. package/lib/types/dsh-adapter/channel/session-rewind.js +34 -16
  126. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  127. package/lib/types/dsh-adapter/channel/session-tree-actions.js +19 -3
  128. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  129. package/lib/types/dsh-adapter/channel/settings-host.js +4 -3
  130. package/lib/types/dsh-adapter/channel/state.d.ts +1 -1
  131. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  132. package/lib/types/dsh-adapter/channel/state.js +1 -1
  133. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  134. package/lib/types/dsh-adapter/channel/transcript.js +6 -12
  135. package/lib/types/dsh-adapter/channel/types.d.ts +6 -1
  136. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  137. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +4 -1
  138. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  139. package/lib/types/dsh-adapter/channel/workspace-actions.js +41 -1
  140. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  141. package/lib/types/dsh-adapter/channel.js +67 -6
  142. package/lib/types/dsh-adapter/compat/messages.d.ts +15 -0
  143. package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -0
  144. package/lib/types/dsh-adapter/compat/messages.js +15 -0
  145. package/lib/types/dsh-adapter/compat/settings.d.ts +33 -0
  146. package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -0
  147. package/lib/types/dsh-adapter/compat/settings.js +43 -0
  148. package/lib/types/dsh-adapter/compat/shell.d.ts +25 -0
  149. package/lib/types/dsh-adapter/compat/shell.d.ts.map +1 -0
  150. package/lib/types/dsh-adapter/compat/shell.js +11 -0
  151. package/lib/types/dsh-adapter/contract.d.ts +4 -4
  152. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  153. package/lib/types/dsh-adapter/contract.js +15 -6
  154. package/lib/types/dsh-adapter/ide-channel.d.ts +224 -0
  155. package/lib/types/dsh-adapter/ide-channel.d.ts.map +1 -0
  156. package/lib/types/dsh-adapter/ide-channel.js +556 -0
  157. package/lib/types/dsh-adapter/index.d.ts +18 -3
  158. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  159. package/lib/types/dsh-adapter/index.js +32 -5
  160. package/lib/types/dsh-adapter/plugin.d.ts +5 -2
  161. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  162. package/lib/types/dsh-adapter/plugin.js +173 -42
  163. package/lib/types/dsh-adapter/preset-resolution.d.ts +8 -0
  164. package/lib/types/dsh-adapter/preset-resolution.d.ts.map +1 -1
  165. package/lib/types/dsh-adapter/preset-resolution.js +10 -0
  166. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +53 -0
  167. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -0
  168. package/lib/types/dsh-adapter/session-mount-heartbeat.js +100 -0
  169. package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
  170. package/lib/types/dsh-adapter/sessionTree.js +3 -2
  171. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  172. package/lib/types/dsh-adapter/subagents.js +6 -5
  173. package/lib/types/dsh-adapter/workspaces.d.ts +46 -3
  174. package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
  175. package/lib/types/dsh-adapter/workspaces.js +116 -0
  176. package/lib/types/effortPrefs.d.ts +15 -3
  177. package/lib/types/effortPrefs.d.ts.map +1 -1
  178. package/lib/types/effortPrefs.js +37 -3
  179. package/lib/types/homePrefs.d.ts +15 -0
  180. package/lib/types/homePrefs.d.ts.map +1 -0
  181. package/lib/types/homePrefs.js +53 -0
  182. package/lib/types/i18n.d.ts +257 -296
  183. package/lib/types/i18n.d.ts.map +1 -1
  184. package/lib/types/i18n.js +78 -84
  185. package/lib/types/ink/colorize.d.ts +10 -0
  186. package/lib/types/ink/colorize.d.ts.map +1 -1
  187. package/lib/types/ink/colorize.js +21 -0
  188. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  189. package/lib/types/ink/components/ScrollBox.js +12 -1
  190. package/lib/types/ink/dom.d.ts +1 -0
  191. package/lib/types/ink/dom.d.ts.map +1 -1
  192. package/lib/types/ink/hooks/use-copy-on-select.d.ts +5 -1
  193. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
  194. package/lib/types/ink/hooks/use-copy-on-select.js +15 -1
  195. package/lib/types/ink/ink.d.ts.map +1 -1
  196. package/lib/types/ink/ink.js +36 -1
  197. package/lib/types/ink/output.d.ts +10 -1
  198. package/lib/types/ink/output.d.ts.map +1 -1
  199. package/lib/types/ink/output.js +109 -17
  200. package/lib/types/ink/render-border.d.ts +6 -1
  201. package/lib/types/ink/render-border.d.ts.map +1 -1
  202. package/lib/types/ink/render-border.js +25 -9
  203. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  204. package/lib/types/ink/render-node-to-output.js +48 -6
  205. package/lib/types/ink/renderer.d.ts +6 -0
  206. package/lib/types/ink/renderer.d.ts.map +1 -1
  207. package/lib/types/ink/renderer.js +2 -1
  208. package/lib/types/ink/selection.d.ts +60 -0
  209. package/lib/types/ink/selection.d.ts.map +1 -1
  210. package/lib/types/ink/selection.js +129 -0
  211. package/lib/types/ink/sixel-graphics.d.ts +19 -1
  212. package/lib/types/ink/sixel-graphics.d.ts.map +1 -1
  213. package/lib/types/ink/sixel-graphics.js +124 -12
  214. package/lib/types/ink/terminal-image.d.ts +18 -1
  215. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  216. package/lib/types/ink/terminal.d.ts +17 -0
  217. package/lib/types/ink/terminal.d.ts.map +1 -1
  218. package/lib/types/ink/terminal.js +20 -1
  219. package/lib/types/screens/Chat.d.ts +17 -1
  220. package/lib/types/screens/Chat.d.ts.map +1 -1
  221. package/lib/types/screens/Chat.js +284 -72
  222. package/lib/types/screens/SessionSupervisor.d.ts +84 -0
  223. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -0
  224. package/lib/types/screens/SessionSupervisor.js +350 -0
  225. package/lib/types/screens/SessionTree.js +2 -2
  226. package/lib/types/screens/Settings.d.ts.map +1 -1
  227. package/lib/types/screens/Settings.js +32 -9
  228. package/lib/types/screens/StatusLine.d.ts +13 -0
  229. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  230. package/lib/types/screens/StatusLine.js +36 -17
  231. package/lib/types/screens/StatusMetrics.d.ts +79 -22
  232. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  233. package/lib/types/screens/StatusMetrics.js +153 -88
  234. package/lib/types/screens/sessionSupervisor/model.d.ts +83 -0
  235. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -0
  236. package/lib/types/screens/sessionSupervisor/model.js +69 -0
  237. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +120 -0
  238. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -0
  239. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +593 -0
  240. package/lib/types/sessionMounts.d.ts +272 -0
  241. package/lib/types/sessionMounts.d.ts.map +1 -0
  242. package/lib/types/sessionMounts.js +706 -0
  243. package/lib/types/sessions/format.d.ts.map +1 -1
  244. package/lib/types/sessions/format.js +4 -1
  245. package/lib/types/sessions/resumeFailure.d.ts +38 -0
  246. package/lib/types/sessions/resumeFailure.d.ts.map +1 -0
  247. package/lib/types/sessions/resumeFailure.js +58 -0
  248. package/lib/types/terminal-utils/mermaid.d.ts +44 -0
  249. package/lib/types/terminal-utils/mermaid.d.ts.map +1 -0
  250. package/lib/types/terminal-utils/mermaid.js +83 -0
  251. package/lib/types/tips.d.ts.map +1 -1
  252. package/lib/types/tips.js +175 -19
  253. package/lib/types/tuiDisplayPrefs.d.ts +7 -9
  254. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  255. package/lib/types/tuiDisplayPrefs.js +31 -28
  256. package/lib/types/update.d.ts +61 -0
  257. package/lib/types/update.d.ts.map +1 -1
  258. package/lib/types/update.js +194 -0
  259. package/lib/types/utils/imageResize.d.ts +90 -0
  260. package/lib/types/utils/imageResize.d.ts.map +1 -0
  261. package/lib/types/utils/imageResize.js +272 -0
  262. package/lib/types/utils/keymap.d.ts +5 -1
  263. package/lib/types/utils/keymap.d.ts.map +1 -1
  264. package/lib/types/utils/keymap.js +23 -0
  265. package/lib/types/workspaces.d.ts +2 -1
  266. package/lib/types/workspaces.d.ts.map +1 -1
  267. package/lib/types/workspaces.js +1 -1
  268. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
  269. package/package.json +120 -103
  270. package/presets/liangshen/.dsh-tui-managed.json +1 -1
  271. package/presets/liangshen/agent.cordis.yml +15 -0
  272. package/lib/types/screens/AgentView.d.ts +0 -23
  273. package/lib/types/screens/AgentView.d.ts.map +0 -1
  274. package/lib/types/screens/AgentView.js +0 -546
  275. package/lib/types/screens/SessionBrowser.d.ts +0 -42
  276. package/lib/types/screens/SessionBrowser.d.ts.map +0 -1
  277. package/lib/types/screens/SessionBrowser.js +0 -911
package/README.md CHANGED
@@ -1,216 +1,263 @@
1
-
2
1
  <p align="center">
3
2
  <img src="docs/assets/logo.svg" alt="dsh-TUI - DeepSeek Harness terminal interface" width="560">
4
3
  </p>
4
+
5
5
  <p align="center">
6
- <strong>简体中文</strong> | <a href="README_EN.md">English</a>
6
+ <strong>English</strong> | <a href="README_ZH.md">简体中文</a>
7
7
  </p>
8
8
 
9
-
10
9
  <p align="center">
11
10
  <a href="https://www.npmjs.com/package/@deepseek-harness-tui/dsh-tui"><img alt="npm" src="https://img.shields.io/npm/v/@deepseek-harness-tui/dsh-tui?style=flat-square&color=4b6fff"></a>
12
11
  <a href="https://github.com/ccch1mneyyy/dsh-TUI/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/ccch1mneyyy/dsh-TUI/actions/workflows/ci.yml/badge.svg"></a>
13
12
  <a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-263146?style=flat-square"></a>
14
13
  <img alt="Public beta" src="https://img.shields.io/badge/status-public%20beta-7da1de?style=flat-square">
15
- <img alt="官方收录" src="https://img.shields.io/badge/DeepSeek%20Harness%20官方公众号-收录-brightgreen">
14
+ <a href="https://github.com/ccch1mneyyy/dsh-TUI/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/ccch1mneyyy/dsh-TUI?style=flat-square&color=4b6fff"></a>
15
+ <a href="https://www.npmjs.com/package/@deepseek-harness-tui/dsh-tui"><img alt="npm downloads" src="https://img.shields.io/npm/dm/@deepseek-harness-tui/dsh-tui?style=flat-square&color=4b6fff"></a>
16
16
  </p>
17
17
 
18
18
  # dsh-TUI
19
19
 
20
- >一个面向 DeepSeek Harness 的交互式终端界面插件:提供像素鲸鱼顶栏、实时工作状态行、流式思考展示、双击 Esc 时间回溯、上下文进度条与 TPS 仪表。
21
- >零核心改动,纯插件挂载。安装插件即可启用,卸载后不会留下核心补丁。
22
- >
23
- >An interactive terminal UI plugin for DeepSeek Harness: pixel-whale header, live work status, streaming thinking display, double-Esc time rewind, a context progress bar, and a TPS gauge.
24
- >Zero core changes, pure plugin mounting. Install to enable; uninstall leaves no core patches.
20
+ > An interactive terminal UI plugin for DeepSeek Harness. It ships a
21
+ > pixel-whale header, live work status, streaming thinking, double-Esc time
22
+ > rewind, a context progress bar, and a TPS gauge. It mounts as a pure plugin,
23
+ > with no core changes. Install to enable; uninstall leaves no patches behind.
25
24
 
26
- ## 🎉 官方收录
25
+ ## Highlights
27
26
 
28
- 本插件被 **DeepSeek Harness 官方公众号** 推文收录,也被 [dshfind](https://dshfind.com/ccch1mneyyy/dsh-TUI) 插件目录与 [GitHub Trending](https://trendshift.io/repositories/146168) 收录,同时登上了Github Treding日榜第七
27
+ - **Pixel whale pet** — three startup intros, click to wake; freezes after the first task.
28
+ - **Terminal-native UI** — streaming Markdown, tool cards, `/` and `@` completion, `#L12-14` ranges, history search, zh/en UI.
29
+ - **Images** — Kitty/Sixel thumbnails, centered preview with zoom and pan, paste-time fitting, text fallback.
30
+ - **Mermaid diagrams** — ```` ```mermaid ```` fences drawn as Unicode diagrams.
31
+ - **Timeline rail** — every turn clickable; timeline / scrollbar / hidden gutter.
32
+ - **Live state** — activity animation, context bar, TPS, cache hit rate, effort, tokens, Git and session metadata.
33
+ - **One session manager** — `/resume` `/home` `/agentview` `/bg` `⌸`.
34
+ - **Session workflow** — `/new` `/compact` `/export` `/btw`, model hot-switch, fork, rewind, vim, fullscreen draft editor.
35
+ - **IDE selection channel** — a VS Code selection lands in the prompt.
36
+ - **DSH integrations** — presets, skills, MCP, goals, todos, subagents, questionnaires.
37
+ - **Extensions** — browser interaction, computer use and more.
38
+ - **Built for long sessions** — event-driven projection, virtualization, bounded caches.
39
+
40
+ Keys and commands: [Interaction and commands](docs/interaction.en.md). Everything else: [documentation index](docs/README.md).
41
+
42
+ ## Preview
29
43
 
30
44
  <div align="center">
31
45
  <table>
32
46
  <tr>
33
47
  <td align="center" valign="middle" width="50%">
34
- <img src="screenshots/wechat-official.png" alt="DeepSeek Harness 官方公众号推文收录 dsh-TUI" width="480">
48
+ <img src="screenshots/splash.png" alt="dsh-TUI conversation with the pixel-whale header" width="480">
35
49
  <br>
36
- <strong>DeepSeek Harness 官方公众号推文收录</strong>
50
+ <strong>Conversation with the pixel-whale header</strong>
37
51
  </td>
38
52
  <td align="center" valign="middle" width="50%">
39
- <a href="https://dshfind.com/ccch1mneyyy/dsh-TUI"><img src="https://dshfind.com/api/card/ccch1mneyyy/dsh-TUI?lang=zh" alt="dsh-TUI on dshfind" width="420"></a>
53
+ <img src="screenshots/ide-selection-badge.png" alt="IDE selection badge: live line count under the prompt" width="480">
40
54
  <br>
41
- <strong>dshfind 插件目录收录</strong>
42
- <br><br>
43
- <a href="https://trendshift.io/repositories/146168" title="GitHub Trending 日榜 #7 · TypeScript 口径"><img alt="Trendshift" src="https://trendshift.io/api/badge/trendshift/repositories/146168/daily?language=TypeScript"></a>
44
- <br>
45
- <strong>dshfind Github Treding榜第七 </strong>
55
+ <strong>Live IDE selection badge</strong>
46
56
  </td>
47
57
  </tr>
48
58
  </table>
49
59
  </div>
50
60
 
51
- ## 核心能力
61
+ ## Featured & Listed
52
62
 
53
- Windows Terminal 支持 Sixel 时,全屏会话记录可直接显示内嵌缩略图,点击后打开大图预览;非全屏 inline 模式仍保留文字回退。
54
- Sixel 使用最多 256 色的自适应调色板,透明像素与背景合成;Worker 缓存量化结果,滚动时仅编码可见部分,移出视野或被浮层覆盖时擦除旧图。
55
- 附件读取与解码最多两路并发;最后一个使用者离开后取消读取,未启动的解码不再执行。多图缓存、排队任务与单帧传输均有容量上限,超限时保留文字回退。
56
- 自动探测优先 Kitty,其次使用 DA1 声明的 Sixel 能力。`DSH_TUI_IMAGE_PROTOCOL=auto|kitty|sixel|none` 可覆盖协议选择;
57
- `DSH_TUI_DISABLE_TERMINAL_IMAGES=1`、无障碍模式、非 TTY 输出以及 tmux/screen 仍禁用图形。
58
- 缺少图片依赖或编码失败时保留文字回退;强制协议也不会启用 inline Sixel。
59
- 浅色主题的面板和图片预览默认使用白底,图片预览边框使用中性色。
60
- 大图预览以对话区约 95% 宽高为预算,最长边可达 2048 像素,仍限制总像素量和后台开销;缩略图大小不变。
61
- 预览支持适应窗口、100% 原像素与 200%/400%/800% 放大,拖动、滚轮或方向按钮平移;100% 需终端报告字符格像素尺寸。
62
- 底部「打开原图」链接直接调用系统看图程序,打开未经重编码的原始附件,包括从历史会话恢复的图片。
63
- 大图弹窗用 `←`/`→` 或底部 `‹`/`›` 切换上一张、下一张,显示当前张数,首尾不循环;切图回到适应窗口。
64
-
65
- - **终端交互**:低资源占用,长会话稳定可靠;多种主题切换,样式美观,实时显示工作状态、TPS、缓存命中率等
66
- 推理等级、输入/输出 token 与 Git/会话信息;终端卡多行命令可经 `/settings` 折叠为首行 + 计数提示(Ctrl+O 或点击卡片展开);全屏模式下悬停在截断的工具卡标题、用户消息或会话标题上约 600ms,浮层显示完整内容。
67
- 用户附图及助手/工具结果中的持久图片块会直接显示在会话记录中;Kitty graphics 或 Sixel 可用时显示等比缩略图,否则保留同尺寸文字回退。全屏下点击输入框 `[Image #N]` 或 transcript 缩略图在对话区域居中打开大图预览,卡片外的对话文字变暗,不遮挡输入栏(Esc/点击外部关闭),标题为 `Image #N — 格式 · 尺寸 · 体积 · 文件名`,本会话暂存的图片在卡片底行显示来源路径;Finder 复制的图片文件粘贴时直接入附件库为 `[Image #N]`;输入框里的 `[Image #N]` 是一个整体,光标整体跳过、删除整体生效,光标落在其上时整块反显并自动打开预览、离开时关闭。Vim 的 `x`/`X`/`d…` 同样整张删除,`u` 同时恢复文字与附件;撤销仅限当前草稿。
68
- 终端图片预览默认开启,可在 `/settings → 终端图片预览` 或配置 `terminalImages: false` 中关闭,使用 `/restart` 后生效。已保存的 `/settings` 选择优先于 Cordis 配置;若曾保存为开启,请在 `/settings` 中关闭后再 `/restart`。关闭时保留文字信息并跳过预览解码,不影响向模型发送图片;`DSH_TUI_DISABLE_TERMINAL_IMAGES=1` 始终强制关闭预览。
69
- - **功能全面**:`/resume` 按工作目录分类浏览、搜索与预览历史会话(左键恢复、右键弹出操作菜单;可固定常用会话——「已固定」分组置顶显示,行内 ★ 或 `Ctrl+P` 切换,持久化到 `~/.dsh-tui`),另有 `/agentview` 会话总览(空输入 `←` 一键后台化,后台会话派发、预览、回复与停止一站式管理)、`/new`、`/compact`、`/export`、`/btw`,模型热切换(新会话默认推理强度可在 /settings → 默认推理强度 预设),原生subagent,会话fork,自动更新,输入框 `/vim` vim 编辑模式、鼠标选区编辑(拖选高亮、Shift+click 扩展、双击选词、Ctrl+C 复制选区)与全屏草稿编辑(`Ctrl+Shift+E` 或输入行 `⛶` 按钮:行号 + 当前行高亮、Enter 换行、Ctrl+Enter 发送、滚轮滚动、点击/拖选,长草稿独占整屏;`/settings` 可关);可在vs code中[以vscode插件形式启动](docs/vscode.md),已上架 VS Code Marketplace。
70
- `/resume` 只将完整读取并确认没有用户消息的日志判为空会话;仅发图片、读取不完整或解析失败的会话不会被归入空会话清理。
71
- - **扩展丰富**:原生浏览器交互,compter use等大量附属功能性扩展
72
- - **技能归 DSH 管理**:`/skills` 展示当前 profile、用户与项目发现的技能;dsh-TUI 不预装通用技能。
73
- 技能目录暂时不完整时,保留最后一次完整观测的技能菜单与命令注册,并按 800/1600/3200ms 最多重试三次;耗尽后等待 DSH 的 `skills/change` 通知或显式刷新,不持续轮询。只有完整观测才能移除已消失的技能,包括完整空目录。
74
- - **工作状态动画**:默认使用 `moon8`;读取旧版本地配置中的 `claude` 值时自动映射为 `moon8`,选择器只显示当前预设。
75
- - **像素鲸鱼娘**:开屏随机三选一开场动画;欢迎期(开始第一个任务前)可**点击冒爱心并唤醒睡着的鲸鱼**,闲置时摆鱼鳍、拍尾巴、入睡冒 Z(`/settings → whaleIdle` 可关)。**开始第一个任务后永久定格为静态标准帧**,零持续开销。鲸鱼娘的 22 帧手绘原图与闲置行为移植自 [dsh-ui-whale](https://github.com/lhh010/dsh-ui-whale)(作者 [@lhh010](https://github.com/lhh010)),特此致谢。
76
-
77
-
78
-
79
- ## 界面预览
63
+ Featured by the **DeepSeek Harness official WeChat account**, listed in the
64
+ [dshfind](https://dshfind.com/en/plugins/ccch1mneyyy/dsh-TUI) plugin
65
+ directory, and ranked **#7 on [GitHub Trending](https://trendshift.io/repositories/146168)
66
+ daily** (TypeScript).
80
67
 
81
68
  <div align="center">
82
69
  <table>
83
70
  <tr>
84
71
  <td align="center" valign="middle" width="50%">
85
- <img src="screenshots/splash.png" alt="首屏:像素鲸鱼顶栏" width="480">
72
+ <img src="screenshots/wechat-official.png" alt="dsh-TUI featured by the DeepSeek Harness official WeChat account" width="480">
86
73
  <br>
87
- <strong>首屏:像素鲸鱼顶栏</strong>
74
+ <strong>Featured by the official WeChat account</strong>
75
+ </td>
76
+ <td align="center" valign="middle" width="50%">
77
+ <a href="https://dshfind.com/en/plugins/ccch1mneyyy/dsh-TUI"><img src="https://dshfind.com/api/card/ccch1mneyyy/dsh-TUI?lang=en" alt="dsh-TUI on dshfind" width="420"></a>
78
+ <br>
79
+ <strong>Listed in the dshfind directory</strong>
80
+ <br><br>
81
+ <a href="https://trendshift.io/repositories/146168" title="GitHub Trending Daily #7 · TypeScript"><img alt="Trendshift" src="https://trendshift.io/api/badge/trendshift/repositories/146168/daily?language=TypeScript"></a>
82
+ <br>
83
+ <strong>GitHub Trending Daily #7</strong>
88
84
  </td>
89
85
  </tr>
90
86
  </table>
91
87
  </div>
92
88
 
89
+ ## Quick Start
93
90
 
94
- ## 快速开始
95
-
96
- 前置条件:安装[Nodejs](https://nodejs.org/zh-cn)与[deepseek-harness](https://github.com/deepseek-ai/deepseek-harness),注册`DEEPSEEK_API_KEY`。
91
+ Prerequisites: [Node.js](https://nodejs.org/en) and
92
+ [deepseek-harness](https://github.com/deepseek-ai/deepseek-harness), with
93
+ `DEEPSEEK_API_KEY` configured.
97
94
 
98
- 安装命令:
95
+ The primary compatibility target is DSH `0.1.7-rc.1`. This adapter supports its
96
+ Shell API, V4 session messages, declarative presets, and profile-backed settings;
97
+ older supported hosts retain their compatibility paths. See [configuration](docs/configuration.en.md).
99
98
 
100
99
  ```sh
100
+ # Install the CLI and this plugin globally (ships the dsh-tui command)
101
101
  npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
102
- ```
103
-
104
- 启动命令:
105
102
 
106
- ```bash
107
- # 完整命令
103
+ # Start (first run auto-initializes the profile; needs pnpm)
108
104
  dsh-tui
109
- # 如果你不想按键盘七次
105
+ # Both `dsh-tui` and the short `dst` alias start the same TUI.
110
106
  dst
111
107
  ```
112
108
 
113
- 如果你想手动安装,可以使用仓库根目录的 `install.sh`:
109
+ Manual alternative: `dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui`.
110
+ The repo's `sh install.sh` runs that step and checks the required commands.
111
+ Afterwards `dsh-tui` and `dsh --profile dsh-tui` are equivalent.
114
112
 
115
- ```sh
116
- sh install.sh
117
- # 或:dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
118
- # 之后 dsh-tui 与 dsh --profile dsh-tui 等价
119
- ```
113
+ > **New-user note**: pnpm ≥11 blocks dependencies with install scripts by
114
+ > default and reports `ERR_PNPM_IGNORED_BUILDS`. Updates skip foreign-platform
115
+ > `@img/sharp-*` native packages, saving about 200MB of downloads. `/update`
116
+ > and `dsh-tui update` write both settings automatically. No manual step
117
+ > needed. Details:
118
+ > [Getting started](docs/getting-started.en.md#pnpm-install-script-blocks-and-foreign-platform-natives).
119
+
120
+ After startup the TUI checks for newer versions in the background. It never
121
+ blocks the first frame. Type `/update` for a one-shot upgrade. It restarts
122
+ automatically and resumes the current session. See
123
+ [Getting started](docs/getting-started.en.md) for the profile lifecycle,
124
+ source builds, and troubleshooting, including migration from the former
125
+ `dsh-cc-tui` package.
120
126
 
121
- > **新用户提示**:若 `dsh plugin` 安装时报 `ERR_PNPM_IGNORED_BUILDS`(pnpm ≥11 默认阻止带安装脚本的依赖,如 `@google/genai`、`protobufjs`——这些脚本运行时不需要,忽略即可),在 profile 的 `pnpm-workspace.yaml` 里加入:
122
- >
123
- > ```yaml
124
- > allowBuilds:
125
- > '@google/genai': false
126
- > protobufjs: false
127
- > ```
128
- >
129
- > `/update` 与 `dsh-tui update` 会自动写入这份配置,无需手工处理。
127
+ ### CLI
130
128
 
131
- 更面向零基础的安装流程、profile 叠加机制、源码构建与常见问题见[安装与快速开始](docs/getting-started.md)。
129
+ | Command | Purpose |
130
+ | --- | --- |
131
+ | `dsh-tui` / `dst` | Start the TUI; `dst` is a short alias for the same program |
132
+ | `dsh-tui --resume [id]` · `dsh-tui update` · `dsh-tui doctor` | Resume a session · update the profile and align the launcher · pre-flight environment checks |
133
+ | `dsh-tui safe` | Read-only diagnostics, plugin inventory and repair guidance; `safe --rescue` builds a clean rescue profile |
134
+ | `dsh-tui version` · `dsh-tui help` | Launcher and profile versions and usage; both work even without a `dsh` install |
132
135
 
136
+ Other arguments go to `dsh --profile dsh-tui`. Safe mode: [Getting started](docs/getting-started.en.md).
133
137
 
138
+ **VS Code**: use the integrated terminal or the `dsh-tui-vscode` extension. See [VS Code guide](docs/vscode.en.md). **Herdr**: run `dsh-tui` in a [Herdr](https://herdr.dev) pane; `idle` / `working` / `blocked` are reported through its local integration API.
134
139
 
135
- ## 插件扩展与开发指南
140
+ ## Keybindings & Mouse
136
141
 
137
- 想为 dsh-TUI 做插件/扩展?欢迎加入生态!
142
+ `Enter` send · `Tab` complete · `Ctrl+Enter` interrupt and send · `Alt+Up` recall the last message · `Esc` dismiss, double-`Esc` rewinds · `Ctrl+O` details · `Ctrl+R` history · `Ctrl+V` paste · `Ctrl+Shift+E` fullscreen draft editor · `?` shortcuts · `←` background the session.
138
143
 
139
- - **接口与兼容性协定 / 插件开发指南**:[终端交互生态插件准入与开发指南](https://github.com/T-Auto/dsh-ecosystem-spec/blob/main/docs/plugin-admission-and-development.md)(准入规范、接缝、契约、验证清单)
140
- - **生态组织**:[dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem)(社区插件与模板的家)
141
- - **模板仓库**:[plugin-template](https://github.com/dsh-tui-ecosystem/plugin-template)(从模板起步,5 分钟出一个插件)
142
- - **参考实现**:`dsh-working-activity`(实时工作状态行:TUI 槽位 + `activity/status` 会话事件双出口)
144
+ While the model is working: `Enter` steers, `Tab` queues a follow-up, `Ctrl+Enter` interrupts and sends.
143
145
 
144
- ### 接缝稳定性参考
146
+ Mouse (fullscreen): drag to select and copy, double/triple click to select a word or line, click tool cards, timeline ticks and `[Image #N]` previews.
145
147
 
146
- 按当前实现成熟度给出的**非正式**分级,帮助插件作者评估投入;正式状态与兼容性协定以
147
- [准入与开发指南](https://github.com/T-Auto/dsh-ecosystem-spec/blob/main/docs/plugin-admission-and-development.md)为准:
148
+ Full reference: [Interaction and commands](docs/interaction.en.md).
148
149
 
149
- | 分级 | 接缝 |
150
- | --- | --- |
151
- | 稳定候选(形态冻结;如有破坏性变更,先在次版本弃用告警再移除) | 六 设置区块 · 八 全屏场景 · 十 托管对话框 · 十一 状态行 · 十二 键盘快捷键 · 十三 条目渲染器 |
152
- | 实验性(仍可能随 dsh-std / 准入规范演进调整) | 九 决策事件 · toast 通知(`ctx.tuiToast`,新增) |
153
- | 跟随上游(稳定性由 cordis / dsh 官方机制决定) | 一 会话事件 · 二 官方 prompt 槽位 · 三 技能打包 · 四 主题 · 五 system prompt 段 · 七 profile 组合 |
150
+ ## Built-in Commands
154
151
 
155
- 另:`@deepseek-harness-tui/dsh-tui/api`(纯类型入口)为实验性公开面;
156
- `@deepseek-harness-tui/dsh-tui/test-utils` 子路径与 `ctx.tuiPluginHost.grants.corrupt`
157
- 已随 adapter 分层重构(#705)移除,`grants` 收窄为 `HostGrantFacade`,迁移细节见该 PR。
152
+ `/resume` · `/home` · `/agentview` · `/bg` · `⌸` open the same session manager: workspace rail, live state, filter, ★ pins. Also `/model` `/new` `/compact` `/export` `/btw` `/tree` `/fork` `/rewind` `/settings` `/status` `/cost` `/jobs` `/skills` `/mcp` `/login` `/update`.
158
153
 
154
+ **Background sessions**: `/bg` or `←` on an empty prompt; `Esc` returns. They run in this process and stop when the TUI exits. Logs survive.
159
155
 
156
+ Full commands: [Interaction and commands](docs/interaction.en.md).
160
157
 
161
- ## 文档索引
158
+ ## Configuration & Extensions
162
159
 
163
- | 主题 | 内容 |
164
- | --- | --- |
165
- | [安装与快速开始](docs/getting-started.md) | 前置条件、安装、启动、profile 生命周期、源码开发 |
166
- | [配置参考](docs/configuration.md) | Cordis 覆盖、配置字段、Agent preset、MCP、环境变量 |
167
- | [主题系统](docs/themes.md) | 内置主题、自动检测、静态 JSON 与 npm 插件主题、校验规则 |
168
- | [交互与命令](docs/interaction.md) | 快捷键、鼠标、问卷、slash command 与会话工作流 |
169
- | [架构与限制](docs/architecture.md) | 运行链路、渲染与持久化设计、安全边界、已知限制 |
170
- | [社区管理框架](docs/community-management.md) | 社区入口、角色、提案流程、roadmap 规则与维护节奏 |
171
- | [项目路线图](docs/roadmap.md) | 公开目标、阶段、任务状态、退出条件与 Future Work |
172
- | [VS Code 使用指南](docs/vscode.md) | 在 VS Code 集成终端运行 dsh-tui;companion 扩展 `dsh-tui-vscode` 提供多会话、会话历史与指定会话恢复(已上架 Marketplace) |
173
- | [贡献与开发约定](docs/contributing.md) | 贡献流程、仓库地图、构建产物、验证矩阵与修改规则 |
174
- | [插件准入与开发指南](https://github.com/T-Auto/dsh-ecosystem-spec/blob/main/docs/plugin-admission-and-development.md) | 接口与兼容性协定 / 插件准入规范 / 插件接缝 / 契约 / 验证清单(已并入 dsh-ecosystem-spec) |
160
+ Agent presets, themes, MCP servers, environment variables: [Configuration](docs/configuration.en.md) · [Themes](docs/themes.en.md).
161
+
162
+ ## How It Works
163
+
164
+ ```text
165
+ dsh profile → dsh-base → dsh-TUI Cordis patch → agent preset + DSH services
166
+ → session/event → Channel projection → React components → Ink/Yoga renderer → terminal
167
+ ```
175
168
 
176
- 完整的中英文索引见 [`docs/README.md`](docs/README.md)。
169
+ The TUI handles interaction and presentation. The session log is the source of truth. DSH services own models, tools, and persistence. Long sessions render in O(visible window).
177
170
 
171
+ Runtime path, module boundaries, performance notes and persistence locations: [Architecture and limitations](docs/architecture.en.md).
178
172
 
173
+ ## Known Limitations
179
174
 
180
- ## 社区
175
+ - Injected plugin context has no standalone display; it counts into the context segments.
176
+ - `/model` switches by forking the session; the old session stays in `/resume`.
177
+ - `Ctrl+V` needs platform clipboard tools; unsupported bitmap formats are rejected.
178
+ - A background session lives inside this process and stops when the TUI exits.
179
+ - `/thinking` is not persisted; `/compact` is unavailable under the `minimal` preset; `/update` needs a `dsh --profile` launch and is refused while a turn is running.
181
180
 
182
- - **生态组织**:[dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem) —— 社区插件、模板与收录列表的家。欢迎来发插件、提创意、互相取暖 🐋
183
- - **社区交流群**:使用问题、插件创意、功能许愿,都欢迎进来聊。
184
- - **行为准则**:参与前请读一遍[贡献者行为准则](CODE_OF_CONDUCT.md)。
181
+ Full list: [Architecture and limitations → Known limitations](docs/architecture.en.md#known-limitations).
182
+
183
+ ## Development
184
+
185
+ CI uses Node 24 and pnpm 11. The package supports Node `^22.19 || >=24`.
186
+
187
+ ```sh
188
+ pnpm install --frozen-lockfile
189
+ pnpm build
190
+ pnpm smoke
191
+ ```
185
192
 
186
- | 微信群(dsh-TUI 社区交流 4 群) | QQ 群(群号 572549239) |
193
+ `lib/types/` is ignored generated output. `pnpm build` recompiles it from a
194
+ clean output directory and runs the build gates. **Git URL installs are not
195
+ supported.** The source manifest keeps `@dsh-std/*` as workspace deps and
196
+ `vendor/dsh-std` as a submodule. pnpm ≥11 also refuses git-hosted `prepare`
197
+ scripts by default. Install the registry package instead:
198
+ `dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui`. Rendering,
199
+ questionnaire, or tool-card changes also need the matching regression scripts.
200
+
201
+ ## Plugin Ecosystem
202
+
203
+ Plugin development: [admission & development guide](https://github.com/T-Auto/dsh-ecosystem-spec/blob/main/docs/plugin-admission-and-development.md) · [plugin-template](https://github.com/dsh-tui-ecosystem/plugin-template) · [dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem). Reference implementation: `dsh-working-activity`.
204
+
205
+ Seam grading and API notes: [Plugin development](docs/plugins.en.md). The organization maintains the listing only; it does not endorse community plugins.
206
+
207
+ ## Documentation
208
+
209
+ - **Start** — [Getting started](docs/getting-started.en.md) · [VS Code](docs/vscode.en.md)
210
+ - **Use** — [Keys and commands](docs/interaction.en.md) · [User guide](docs/user-guide.en.md) · [Themes](docs/themes.en.md)
211
+ - **Configure** — [Configuration](docs/configuration.en.md)
212
+ - **Internals** — [Architecture and limitations](docs/architecture.en.md) · [Session mounting](docs/session-mount-runtime.en.md)
213
+ - **Plugins** — [Admission and development](https://github.com/T-Auto/dsh-ecosystem-spec/blob/main/docs/plugin-admission-and-development.md) · [Seams](docs/plugins.en.md)
214
+ - **Contribute** — [Contributing](docs/contributing.en.md) · [Roadmap](docs/roadmap.en.md) · [Community](docs/community-management.en.md)
215
+
216
+ Everything, bilingual: [docs/README.md](docs/README.md).
217
+
218
+ ## Community
219
+
220
+ - **Ecosystem organization**: [dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem)
221
+ hosts community plugins, templates, and the curated list. Come ship a
222
+ plugin, pitch an idea, or just hang out 🐋
223
+ - **Chat groups** (Chinese-language): usage questions, plugin ideas, and
224
+ feature wishes are all welcome.
225
+ - **Code of conduct**: please read the
226
+ [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.en.md) before taking
227
+ part.
228
+
229
+ | WeChat group (dsh-TUI community 4) | QQ group (ID 572549239) |
187
230
  | :---: | :---: |
188
- | <img src="screenshots/wechat-group.jpg" alt="dsh-TUI 社区交流 4 群微信群二维码" width="200"> | <img src="screenshots/qq-group.png" alt="dsh-TUI 社区交流群 QQ 群二维码" width="200"> |
231
+ | <img src="screenshots/wechat-group.jpg" alt="dsh-TUI community WeChat group 4 QR code" width="200"> | <img src="screenshots/qq-group.png" alt="dsh-TUI community QQ group QR code" width="200"> |
189
232
 
190
- > 微信群二维码约 7 天过期一次,如遇失效请走 QQ 群(572549239),或开个 issue 提醒我们更新。
233
+ > The WeChat QR code expires roughly every 7 days; if it stops working, use
234
+ > the QQ group (572549239) or open an issue to nudge us for a refresh.
191
235
 
192
- ## 权限与安全边界
236
+ ## Permissions and Security Boundary
193
237
 
194
- > **Windows 安全警告:** Windows profile 默认使用 `danger-full-access`,且 approval 默认是 `never`。这会授予工具不受限制的访问权限;在敏感凭证或不可信仓库环境中启动前,务必先检查并收紧 profile 配置。
238
+ > **Windows security warning:** the Windows profile defaults to `danger-full-access` with approval set to `never`, so tools have unrestricted access. Inspect and tighten the profile before starting next to sensitive credentials or in an untrusted repository.
195
239
 
196
- `dsh-TUI` 不实现独立沙箱,而是使用当前 DSH profile 的文件、Shell、sandbox 与 approval 策略。权限预设来自 DSH `permissionPresets` registry:服务缺失时使用 legacy 三项兼容名册;服务已挂载但为空、损坏或不一致时标记为 unavailable,TUI fail closed,不伪造名册。可用 registry 按声明顺序提供第三方预设并自动进入补全、picker 与 `Shift+Tab` 循环(排除 `custom`/`status`、canonical 预设、重复 identity 与不安全 token);首次观察遵循 registry 顺序,后续刷新保留已见 identity 的相对顺序。服务可用时 `/permission` 以本地命令形式常驻菜单:切换优先调用官方 `/permission <preset>` 命令;命令行未暴露给本 agent 时,回退到 permissionPresets 服务自身的官方写路径(与命令 handler 同一实现,写真实 `permission/preset`/`sandbox/mode`/`approval/policy` 事件,绝不由 TUI 伪造),并以事件/读回确认;两条路都不可用时显式提示,绝不静默。计划模式退出先恢复进入前的 atom,再把权限身份还原到你进入前所在的预设(registry 仍提供时)。在包含敏感凭证或不可信仓库的环境中启动前,请先检查 profile 配置。
240
+ No sandbox of its own: dsh-TUI uses the active DSH profile's filesystem, shell, sandbox and approval policies. Permission presets come from the DSH `permissionPresets` registry.
197
241
 
198
- 详见[权限边界与已知限制](docs/architecture.md#权限与安全边界)。
242
+ Details: [Permissions and security boundary](docs/architecture.en.md#permissions-and-security-boundary).
199
243
 
200
- ### 致谢
244
+ ## Acknowledgments
201
245
 
202
- - 像素鲸鱼娘的 22 帧手绘原图(Excel 逐格绘制)与闲置动画行为(摆鱼鳍、拍尾巴、入睡冒 Z、点击冒爱心)移植自 **[dsh-ui-whale](https://github.com/lhh010/dsh-ui-whale)**(DeepSeek Harness Web 端鲸鱼宠物插件,作者 [@lhh010](https://github.com/lhh010),BSD-3-Clause),感谢作者与灵感 🐋💜
246
+ - The pixel whale's 22 hand-drawn frames and its idle behaviors are ported
247
+ from **[dsh-ui-whale](https://github.com/lhh010/dsh-ui-whale)**. The frames
248
+ were drawn cell by cell in Excel. The idle behaviors are fin flutters, tail
249
+ thumps, sleep Z's, and click hearts. dsh-ui-whale is the DeepSeek Harness
250
+ web whale-pet plugin by [@lhh010](https://github.com/lhh010), BSD-3-Clause.
251
+ Thank you for the art and the inspiration 🐋💜
203
252
 
204
- ### 友情链接
253
+ ## Friends' Links
205
254
 
206
- 朋友们开发的[社区、相关项目与周边工具](docs/links.md)
255
+ Community, related projects, and companion tools built by friends:
256
+ [see the links page](docs/links.md)
207
257
 
208
258
  ## Stars
209
259
 
210
- <!-- star-history:start -->
211
260
  [![Star History](https://raw.githubusercontent.com/ccch1mneyyy/dsh-TUI/bot-star-history/assets/star-history/star-history.png)](https://star-history.com/#ccch1mneyyy/dsh-TUI&Date)
212
- <!-- star-history:end -->
213
-
214
261
 
215
262
  ## License
216
263