aicodeman 1.40.0 → 1.41.1

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 (351) hide show
  1. package/README.md +81 -13
  2. package/dist/attachment-registry.d.ts +2 -0
  3. package/dist/attachment-registry.d.ts.map +1 -1
  4. package/dist/attachment-registry.js +14 -3
  5. package/dist/attachment-registry.js.map +1 -1
  6. package/dist/cli-agent.d.ts +227 -0
  7. package/dist/cli-agent.d.ts.map +1 -0
  8. package/dist/cli-agent.js +771 -0
  9. package/dist/cli-agent.js.map +1 -0
  10. package/dist/cli.d.ts +25 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +103 -41
  13. package/dist/cli.js.map +1 -1
  14. package/dist/codeman-credentials.d.ts +27 -0
  15. package/dist/codeman-credentials.d.ts.map +1 -0
  16. package/dist/codeman-credentials.js +66 -0
  17. package/dist/codeman-credentials.js.map +1 -0
  18. package/dist/config/buffer-limits.d.ts +9 -0
  19. package/dist/config/buffer-limits.d.ts.map +1 -1
  20. package/dist/config/buffer-limits.js +9 -0
  21. package/dist/config/buffer-limits.js.map +1 -1
  22. package/dist/config/cli-registry/schema.d.ts +10 -0
  23. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  24. package/dist/config/cli-registry/schema.js +15 -0
  25. package/dist/config/cli-registry/schema.js.map +1 -1
  26. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  27. package/dist/config/cli-registry/stock.js +47 -0
  28. package/dist/config/cli-registry/stock.js.map +1 -1
  29. package/dist/config/cli-registry/types.d.ts +47 -1
  30. package/dist/config/cli-registry/types.d.ts.map +1 -1
  31. package/dist/folder-listing.d.ts +94 -0
  32. package/dist/folder-listing.d.ts.map +1 -0
  33. package/dist/folder-listing.js +241 -0
  34. package/dist/folder-listing.js.map +1 -0
  35. package/dist/git-clone.d.ts.map +1 -1
  36. package/dist/git-clone.js +4 -0
  37. package/dist/git-clone.js.map +1 -1
  38. package/dist/hooks-config.d.ts +36 -16
  39. package/dist/hooks-config.d.ts.map +1 -1
  40. package/dist/hooks-config.js +45 -20
  41. package/dist/hooks-config.js.map +1 -1
  42. package/dist/html-view-capabilities.d.ts +54 -0
  43. package/dist/html-view-capabilities.d.ts.map +1 -0
  44. package/dist/html-view-capabilities.js +103 -0
  45. package/dist/html-view-capabilities.js.map +1 -0
  46. package/dist/image-watcher.d.ts.map +1 -1
  47. package/dist/image-watcher.js +6 -2
  48. package/dist/image-watcher.js.map +1 -1
  49. package/dist/mcp-server.d.ts +114 -0
  50. package/dist/mcp-server.d.ts.map +1 -0
  51. package/dist/mcp-server.js +917 -0
  52. package/dist/mcp-server.js.map +1 -0
  53. package/dist/mcp-sync-targets.d.ts +34 -0
  54. package/dist/mcp-sync-targets.d.ts.map +1 -0
  55. package/dist/mcp-sync-targets.js +55 -0
  56. package/dist/mcp-sync-targets.js.map +1 -0
  57. package/dist/mcp-sync.d.ts +7 -1
  58. package/dist/mcp-sync.d.ts.map +1 -1
  59. package/dist/mcp-sync.js +113 -6
  60. package/dist/mcp-sync.js.map +1 -1
  61. package/dist/mux-interface.d.ts +36 -1
  62. package/dist/mux-interface.d.ts.map +1 -1
  63. package/dist/remote-files.d.ts +37 -0
  64. package/dist/remote-files.d.ts.map +1 -1
  65. package/dist/remote-files.js +103 -0
  66. package/dist/remote-files.js.map +1 -1
  67. package/dist/remote-pane-history.d.ts +103 -0
  68. package/dist/remote-pane-history.d.ts.map +1 -0
  69. package/dist/remote-pane-history.js +258 -0
  70. package/dist/remote-pane-history.js.map +1 -0
  71. package/dist/remote-ssh-limiter.d.ts +16 -3
  72. package/dist/remote-ssh-limiter.d.ts.map +1 -1
  73. package/dist/remote-ssh-limiter.js +37 -6
  74. package/dist/remote-ssh-limiter.js.map +1 -1
  75. package/dist/session.d.ts +29 -1
  76. package/dist/session.d.ts.map +1 -1
  77. package/dist/session.js +63 -4
  78. package/dist/session.js.map +1 -1
  79. package/dist/subagent-watcher.d.ts.map +1 -1
  80. package/dist/subagent-watcher.js +29 -6
  81. package/dist/subagent-watcher.js.map +1 -1
  82. package/dist/tab-layout-legacy-order.d.ts.map +1 -1
  83. package/dist/tab-layout-legacy-order.js +72 -13
  84. package/dist/tab-layout-legacy-order.js.map +1 -1
  85. package/dist/tab-layout-service.d.ts +33 -2
  86. package/dist/tab-layout-service.d.ts.map +1 -1
  87. package/dist/tab-layout-service.js +102 -7
  88. package/dist/tab-layout-service.js.map +1 -1
  89. package/dist/tab-layout.d.ts +9 -0
  90. package/dist/tab-layout.d.ts.map +1 -1
  91. package/dist/tab-layout.js +15 -2
  92. package/dist/tab-layout.js.map +1 -1
  93. package/dist/templates/case-template.md +2 -0
  94. package/dist/tmux-manager.d.ts +76 -2
  95. package/dist/tmux-manager.d.ts.map +1 -1
  96. package/dist/tmux-manager.js +216 -40
  97. package/dist/tmux-manager.js.map +1 -1
  98. package/dist/tui/tui-client.d.ts +3 -17
  99. package/dist/tui/tui-client.d.ts.map +1 -1
  100. package/dist/tui/tui-client.js +3 -44
  101. package/dist/tui/tui-client.js.map +1 -1
  102. package/dist/types/session.d.ts +53 -0
  103. package/dist/types/session.d.ts.map +1 -1
  104. package/dist/types/session.js.map +1 -1
  105. package/dist/usage-telemetry.d.ts +44 -7
  106. package/dist/usage-telemetry.d.ts.map +1 -1
  107. package/dist/usage-telemetry.js +72 -7
  108. package/dist/usage-telemetry.js.map +1 -1
  109. package/dist/utils/index.d.ts +1 -0
  110. package/dist/utils/index.d.ts.map +1 -1
  111. package/dist/utils/index.js +1 -0
  112. package/dist/utils/index.js.map +1 -1
  113. package/dist/utils/process-exit-wait.d.ts +40 -0
  114. package/dist/utils/process-exit-wait.d.ts.map +1 -0
  115. package/dist/utils/process-exit-wait.js +68 -0
  116. package/dist/utils/process-exit-wait.js.map +1 -0
  117. package/dist/web/approval-inbox.d.ts +12 -0
  118. package/dist/web/approval-inbox.d.ts.map +1 -1
  119. package/dist/web/approval-inbox.js +1 -0
  120. package/dist/web/approval-inbox.js.map +1 -1
  121. package/dist/web/middleware/auth.d.ts.map +1 -1
  122. package/dist/web/middleware/auth.js +33 -0
  123. package/dist/web/middleware/auth.js.map +1 -1
  124. package/dist/web/paste-image-gc.d.ts +46 -6
  125. package/dist/web/paste-image-gc.d.ts.map +1 -1
  126. package/dist/web/paste-image-gc.js +106 -32
  127. package/dist/web/paste-image-gc.js.map +1 -1
  128. package/dist/web/ports/session-port.d.ts +8 -1
  129. package/dist/web/ports/session-port.d.ts.map +1 -1
  130. package/dist/web/public/admin-ui.js.gz +0 -0
  131. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  132. package/dist/web/public/app.24689381.js +43 -0
  133. package/dist/web/public/app.24689381.js.br +0 -0
  134. package/dist/web/public/app.24689381.js.gz +0 -0
  135. package/dist/web/public/approvals-ui.js +4 -0
  136. package/dist/web/public/approvals-ui.js.br +0 -0
  137. package/dist/web/public/approvals-ui.js.gz +0 -0
  138. package/dist/web/public/{constants.c0f8f9de.js → constants.17d77b65.js} +690 -35
  139. package/dist/web/public/constants.17d77b65.js.br +0 -0
  140. package/dist/web/public/constants.17d77b65.js.gz +0 -0
  141. package/dist/web/public/cron-ui.js.gz +0 -0
  142. package/dist/web/public/entrance-animations.js +490 -43
  143. package/dist/web/public/entrance-animations.js.br +0 -0
  144. package/dist/web/public/entrance-animations.js.gz +0 -0
  145. package/dist/web/public/gesture/gesture-codeman.js +112 -6
  146. package/dist/web/public/git-status-ui.js.gz +0 -0
  147. package/dist/web/public/home-sessions.js +2 -1
  148. package/dist/web/public/home-sessions.js.br +0 -0
  149. package/dist/web/public/home-sessions.js.gz +0 -0
  150. package/dist/web/public/host-wake-ui.js.gz +0 -0
  151. package/dist/web/public/i18n.9afd8e4d.js +2 -0
  152. package/dist/web/public/i18n.9afd8e4d.js.br +0 -0
  153. package/dist/web/public/i18n.9afd8e4d.js.gz +0 -0
  154. package/dist/web/public/image-input.9ed1d0d2.js +453 -0
  155. package/dist/web/public/image-input.9ed1d0d2.js.br +0 -0
  156. package/dist/web/public/image-input.9ed1d0d2.js.gz +0 -0
  157. package/dist/web/public/index.html +223 -46
  158. package/dist/web/public/index.html.br +0 -0
  159. package/dist/web/public/index.html.gz +0 -0
  160. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  161. package/dist/web/public/{keyboard-accessory.c1e7c7b7.js → keyboard-accessory.c458eea8.js} +115 -35
  162. package/dist/web/public/keyboard-accessory.c458eea8.js.br +0 -0
  163. package/dist/web/public/keyboard-accessory.c458eea8.js.gz +0 -0
  164. package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
  165. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  166. package/dist/web/public/mobile-overview.js +11 -2
  167. package/dist/web/public/mobile-overview.js.br +0 -0
  168. package/dist/web/public/mobile-overview.js.gz +0 -0
  169. package/dist/web/public/mobile.2dff1580.css +1 -0
  170. package/dist/web/public/mobile.2dff1580.css.br +0 -0
  171. package/dist/web/public/mobile.2dff1580.css.gz +0 -0
  172. package/dist/web/public/{notification-manager.50bb87d8.js → notification-manager.feb82c04.js} +19 -2
  173. package/dist/web/public/notification-manager.feb82c04.js.br +0 -0
  174. package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
  175. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  176. package/dist/web/public/{panels-ui.4735dfc2.js → panels-ui.73ec0137.js} +87 -87
  177. package/dist/web/public/panels-ui.73ec0137.js.br +0 -0
  178. package/dist/web/public/panels-ui.73ec0137.js.gz +0 -0
  179. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  180. package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
  181. package/dist/web/public/readmymind-ui.js.gz +0 -0
  182. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  183. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  184. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  185. package/dist/web/public/session-lineage.js.gz +0 -0
  186. package/dist/web/public/{session-ui.f731602c.js → session-ui.dbc6819b.js} +33 -33
  187. package/dist/web/public/session-ui.dbc6819b.js.br +0 -0
  188. package/dist/web/public/session-ui.dbc6819b.js.gz +0 -0
  189. package/dist/web/public/settings-ui.81ac264e.js +97 -0
  190. package/dist/web/public/settings-ui.81ac264e.js.br +0 -0
  191. package/dist/web/public/settings-ui.81ac264e.js.gz +0 -0
  192. package/dist/web/public/spreadsheet-preview-worker.js +11 -0
  193. package/dist/web/public/spreadsheet-preview-worker.js.br +0 -0
  194. package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
  195. package/dist/web/public/{spreadsheet-preview.af82fa2f.js → spreadsheet-preview.75c751de.js} +1 -1
  196. package/dist/web/public/spreadsheet-preview.75c751de.js.br +0 -0
  197. package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
  198. package/dist/web/public/spreadsheet-xlsx-core.js +110 -0
  199. package/dist/web/public/spreadsheet-xlsx-core.js.br +0 -0
  200. package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
  201. package/dist/web/public/styles.900a28e4.css +1 -0
  202. package/dist/web/public/styles.900a28e4.css.br +0 -0
  203. package/dist/web/public/styles.900a28e4.css.gz +0 -0
  204. package/dist/web/public/{subagent-windows.e6ca799f.js → subagent-windows.07277a58.js} +7 -5
  205. package/dist/web/public/subagent-windows.07277a58.js.br +0 -0
  206. package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
  207. package/dist/web/public/sw.js +6 -2
  208. package/dist/web/public/sw.js.br +0 -0
  209. package/dist/web/public/sw.js.gz +0 -0
  210. package/dist/web/public/tab-layout-browser.2d6189f7.js +1 -0
  211. package/dist/web/public/tab-layout-browser.2d6189f7.js.br +0 -0
  212. package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
  213. package/dist/web/public/{tab-rail-resize.a5867793.js → tab-rail-resize.7157e0bd.js} +1 -1
  214. package/dist/web/public/tab-rail-resize.7157e0bd.js.br +0 -0
  215. package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
  216. package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
  217. package/dist/web/public/terminal-split.js.gz +0 -0
  218. package/dist/web/public/terminal-tile.js +135 -38
  219. package/dist/web/public/terminal-tile.js.br +0 -0
  220. package/dist/web/public/terminal-tile.js.gz +0 -0
  221. package/dist/web/public/terminal-ui.858f5da5.js +2 -0
  222. package/dist/web/public/terminal-ui.858f5da5.js.br +0 -0
  223. package/dist/web/public/terminal-ui.858f5da5.js.gz +0 -0
  224. package/dist/web/public/tile-grid.js +769 -137
  225. package/dist/web/public/tile-grid.js.br +0 -0
  226. package/dist/web/public/tile-grid.js.gz +0 -0
  227. package/dist/web/public/ultracode-panel.js.gz +0 -0
  228. package/dist/web/public/ultracode-windows.js +9 -6
  229. package/dist/web/public/ultracode-windows.js.br +0 -0
  230. package/dist/web/public/ultracode-windows.js.gz +0 -0
  231. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  232. package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
  233. package/dist/web/public/vendor/fflate.min.js.gz +0 -0
  234. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  235. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  236. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  237. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  238. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  239. package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
  240. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js +4 -0
  241. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.br +0 -0
  242. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
  243. package/dist/web/public/vendor/xterm.css.gz +0 -0
  244. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  245. package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
  246. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  247. package/dist/web/public/webview-tabs.js +12 -0
  248. package/dist/web/public/webview-tabs.js.br +0 -0
  249. package/dist/web/public/webview-tabs.js.gz +0 -0
  250. package/dist/web/route-helpers.d.ts +8 -0
  251. package/dist/web/route-helpers.d.ts.map +1 -1
  252. package/dist/web/route-helpers.js +8 -0
  253. package/dist/web/route-helpers.js.map +1 -1
  254. package/dist/web/routes/admin-routes.d.ts.map +1 -1
  255. package/dist/web/routes/admin-routes.js +4 -1
  256. package/dist/web/routes/admin-routes.js.map +1 -1
  257. package/dist/web/routes/approval-routes.d.ts.map +1 -1
  258. package/dist/web/routes/approval-routes.js +6 -8
  259. package/dist/web/routes/approval-routes.js.map +1 -1
  260. package/dist/web/routes/case-routes.js +1 -1
  261. package/dist/web/routes/case-routes.js.map +1 -1
  262. package/dist/web/routes/cli-registry-routes.d.ts +23 -4
  263. package/dist/web/routes/cli-registry-routes.d.ts.map +1 -1
  264. package/dist/web/routes/cli-registry-routes.js +92 -7
  265. package/dist/web/routes/cli-registry-routes.js.map +1 -1
  266. package/dist/web/routes/file-routes.d.ts +46 -1
  267. package/dist/web/routes/file-routes.d.ts.map +1 -1
  268. package/dist/web/routes/file-routes.js +214 -27
  269. package/dist/web/routes/file-routes.js.map +1 -1
  270. package/dist/web/routes/hook-event-routes.d.ts.map +1 -1
  271. package/dist/web/routes/hook-event-routes.js +8 -1
  272. package/dist/web/routes/hook-event-routes.js.map +1 -1
  273. package/dist/web/routes/html-view-routes.d.ts +60 -0
  274. package/dist/web/routes/html-view-routes.d.ts.map +1 -0
  275. package/dist/web/routes/html-view-routes.js +288 -0
  276. package/dist/web/routes/html-view-routes.js.map +1 -0
  277. package/dist/web/routes/index.d.ts +1 -0
  278. package/dist/web/routes/index.d.ts.map +1 -1
  279. package/dist/web/routes/index.js +1 -0
  280. package/dist/web/routes/index.js.map +1 -1
  281. package/dist/web/routes/mcp-sync-routes.d.ts +7 -2
  282. package/dist/web/routes/mcp-sync-routes.d.ts.map +1 -1
  283. package/dist/web/routes/mcp-sync-routes.js +10 -3
  284. package/dist/web/routes/mcp-sync-routes.js.map +1 -1
  285. package/dist/web/routes/reboot-restore-routes.js +3 -3
  286. package/dist/web/routes/reboot-restore-routes.js.map +1 -1
  287. package/dist/web/routes/session-routes.d.ts +1 -0
  288. package/dist/web/routes/session-routes.d.ts.map +1 -1
  289. package/dist/web/routes/session-routes.js +345 -90
  290. package/dist/web/routes/session-routes.js.map +1 -1
  291. package/dist/web/routes/status-telemetry-routes.d.ts.map +1 -1
  292. package/dist/web/routes/status-telemetry-routes.js +16 -2
  293. package/dist/web/routes/status-telemetry-routes.js.map +1 -1
  294. package/dist/web/schemas.d.ts +32 -0
  295. package/dist/web/schemas.d.ts.map +1 -1
  296. package/dist/web/schemas.js +74 -0
  297. package/dist/web/schemas.js.map +1 -1
  298. package/dist/web/server.d.ts +7 -2
  299. package/dist/web/server.d.ts.map +1 -1
  300. package/dist/web/server.js +77 -24
  301. package/dist/web/server.js.map +1 -1
  302. package/dist/web/sse-events.d.ts +5 -2
  303. package/dist/web/sse-events.d.ts.map +1 -1
  304. package/dist/web/sse-events.js +5 -2
  305. package/dist/web/sse-events.js.map +1 -1
  306. package/package.json +5 -4
  307. package/skills/codeman/SKILL.md +30 -7
  308. package/README.zh-CN.md +0 -1147
  309. package/dist/web/public/app.abadc970.js +0 -43
  310. package/dist/web/public/app.abadc970.js.br +0 -0
  311. package/dist/web/public/app.abadc970.js.gz +0 -0
  312. package/dist/web/public/constants.c0f8f9de.js.br +0 -0
  313. package/dist/web/public/constants.c0f8f9de.js.gz +0 -0
  314. package/dist/web/public/i18n.a31747a9.js +0 -2
  315. package/dist/web/public/i18n.a31747a9.js.br +0 -0
  316. package/dist/web/public/i18n.a31747a9.js.gz +0 -0
  317. package/dist/web/public/image-input.898a538b.js +0 -281
  318. package/dist/web/public/image-input.898a538b.js.br +0 -0
  319. package/dist/web/public/image-input.898a538b.js.gz +0 -0
  320. package/dist/web/public/keyboard-accessory.c1e7c7b7.js.br +0 -0
  321. package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
  322. package/dist/web/public/mobile.111b187d.css +0 -1
  323. package/dist/web/public/mobile.111b187d.css.br +0 -0
  324. package/dist/web/public/mobile.111b187d.css.gz +0 -0
  325. package/dist/web/public/notification-manager.50bb87d8.js.br +0 -0
  326. package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
  327. package/dist/web/public/panels-ui.4735dfc2.js.br +0 -0
  328. package/dist/web/public/panels-ui.4735dfc2.js.gz +0 -0
  329. package/dist/web/public/session-ui.f731602c.js.br +0 -0
  330. package/dist/web/public/session-ui.f731602c.js.gz +0 -0
  331. package/dist/web/public/settings-ui.a97ab16f.js +0 -97
  332. package/dist/web/public/settings-ui.a97ab16f.js.br +0 -0
  333. package/dist/web/public/settings-ui.a97ab16f.js.gz +0 -0
  334. package/dist/web/public/spreadsheet-preview.af82fa2f.js.br +0 -0
  335. package/dist/web/public/spreadsheet-preview.af82fa2f.js.gz +0 -0
  336. package/dist/web/public/styles.8ee12666.css +0 -1
  337. package/dist/web/public/styles.8ee12666.css.br +0 -0
  338. package/dist/web/public/styles.8ee12666.css.gz +0 -0
  339. package/dist/web/public/subagent-windows.e6ca799f.js.br +0 -0
  340. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  341. package/dist/web/public/tab-layout-browser.065fcba4.js +0 -1
  342. package/dist/web/public/tab-layout-browser.065fcba4.js.br +0 -0
  343. package/dist/web/public/tab-layout-browser.065fcba4.js.gz +0 -0
  344. package/dist/web/public/tab-rail-resize.a5867793.js.br +0 -0
  345. package/dist/web/public/tab-rail-resize.a5867793.js.gz +0 -0
  346. package/dist/web/public/terminal-ui.5059b30e.js +0 -2
  347. package/dist/web/public/terminal-ui.5059b30e.js.br +0 -0
  348. package/dist/web/public/terminal-ui.5059b30e.js.gz +0 -0
  349. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js +0 -4
  350. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.br +0 -0
  351. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.gz +0 -0
@@ -4448,6 +4448,7 @@ var GestureController = class {
4448
4448
 
4449
4449
  // packages/gesture-control/src/codeman/entry.ts
4450
4450
  var TAB_SELECTOR = ".session-tab";
4451
+ var TILE_SELECTOR = "#tileGrid .tile";
4451
4452
  var PANEL_SELECTOR = ".cg-float";
4452
4453
  var WINDOW_SELECTOR = ".subagent-window, .ultracode-window";
4453
4454
  var DOCK_SELECTOR = ".session-tabs";
@@ -4457,6 +4458,8 @@ var FLOAT_W = 640;
4457
4458
  var FLOAT_H = 420;
4458
4459
  var DETACH_PULL_PX = 70;
4459
4460
  var TAP_CANCEL_PX = 45;
4461
+ var TILE_MOVE_PX = 40;
4462
+ var TILE_GHOST_W = 280;
4460
4463
  var handColor = (handedness, pinching) => pinching ? "#4ade80" : handedness === "Right" ? "#a78bfa" : "#38bdf8";
4461
4464
  var GestureBridge = class {
4462
4465
  constructor() {
@@ -4533,7 +4536,7 @@ var GestureBridge = class {
4533
4536
  await this.gc.start();
4534
4537
  this.running = true;
4535
4538
  this.button.classList.add("on");
4536
- this.status.textContent = "on \u2014 pinch a tab, window, or button";
4539
+ this.status.textContent = "on: pinch a tab, tile, window, or button";
4537
4540
  } catch (err) {
4538
4541
  const msg = describeError(err);
4539
4542
  this.status.textContent = `failed: ${msg}`;
@@ -4588,6 +4591,30 @@ var GestureBridge = class {
4588
4591
  this.status.textContent = "moving window";
4589
4592
  return;
4590
4593
  }
4594
+ const tileId = window.app?.tileAtPoint?.(x2, y2) ?? null;
4595
+ const tileEl = tileId ? this.hitClosest(x2, y2, TILE_SELECTOR) : null;
4596
+ if (tileId && tileEl && window.app?.canGrabTile?.(tileId)) {
4597
+ const rect = tileEl.getBoundingClientRect();
4598
+ const ghost = this.tileGhost(tileEl, rect);
4599
+ document.body.append(ghost);
4600
+ tileEl.classList.add("tile--dragging");
4601
+ this.grabs.set(hand, {
4602
+ kind: "tile",
4603
+ id: tileId,
4604
+ el: tileEl,
4605
+ ghost,
4606
+ offsetX: Math.max(0, Math.min(x2 - rect.left, rect.width)),
4607
+ offsetY: Math.max(0, Math.min(y2 - rect.top, rect.height)),
4608
+ ox: x2,
4609
+ oy: y2,
4610
+ armed: false,
4611
+ target: null,
4612
+ out: false
4613
+ });
4614
+ this.positionGhost(ghost, x2, y2);
4615
+ this.status.textContent = "moving tile";
4616
+ return;
4617
+ }
4591
4618
  const tab = this.hitClosest(x2, y2, TAB_SELECTOR);
4592
4619
  const id = tab?.dataset.id;
4593
4620
  if (tab && id) {
@@ -4599,7 +4626,7 @@ var GestureBridge = class {
4599
4626
  ghost.style.height = `${rect.height}px`;
4600
4627
  document.body.append(ghost);
4601
4628
  tab.classList.add("cg-grabbed");
4602
- this.grabs.set(hand, { kind: "tab", id, tab, ghost, ox: x2, oy: y2, armed: false });
4629
+ this.grabs.set(hand, { kind: "tab", id, tab, ghost, ox: x2, oy: y2, armed: false, target: null });
4603
4630
  this.positionGhost(ghost, x2, y2);
4604
4631
  return;
4605
4632
  }
@@ -4613,13 +4640,30 @@ var GestureBridge = class {
4613
4640
  }
4614
4641
  onDrag(hand, x2, y2) {
4615
4642
  const grab = this.grabs.get(hand);
4643
+ if (grab?.kind === "tile") {
4644
+ this.positionGhost(grab.ghost, x2, y2);
4645
+ if (!grab.armed && Math.hypot(x2 - grab.ox, y2 - grab.oy) >= TILE_MOVE_PX) grab.armed = true;
4646
+ if (!grab.armed) return;
4647
+ const app = window.app;
4648
+ const target = app?.tileDropTargetAt?.(x2, y2, grab.id) ?? null;
4649
+ this.setTileTarget(grab, target);
4650
+ const out = !target && !!app?.tileDetachEnabled?.() && !app?.isOverTileGrid?.(x2, y2);
4651
+ grab.out = out;
4652
+ grab.ghost.classList.toggle("cg-armed", !!target);
4653
+ grab.ghost.classList.toggle("cg-out", out);
4654
+ this.status.textContent = target ? target.kind === "tile" ? "release to swap tiles" : "release to move the tile here" : out ? "release to open in a new window" : "moving tile";
4655
+ return;
4656
+ }
4616
4657
  if (grab?.kind === "tab") {
4617
4658
  this.positionGhost(grab.ghost, x2, y2);
4618
4659
  const pulled = Math.hypot(x2 - grab.ox, y2 - grab.oy) >= DETACH_PULL_PX;
4619
- if (pulled !== grab.armed) {
4660
+ const target = pulled ? window.app?.tileDropTargetAt?.(x2, y2, grab.id) ?? null : null;
4661
+ const targetChanged = (target?.el ?? null) !== (grab.target?.el ?? null);
4662
+ this.setTileTarget(grab, target);
4663
+ if (pulled !== grab.armed || targetChanged) {
4620
4664
  grab.armed = pulled;
4621
4665
  grab.ghost.classList.toggle("cg-armed", pulled);
4622
- this.status.textContent = pulled ? "release to float out" : "on \u2014 pinch a tab";
4666
+ this.status.textContent = target ? "release to tile it here" : pulled ? "release to float out" : "on \u2014 pinch a tab";
4623
4667
  }
4624
4668
  return;
4625
4669
  }
@@ -4641,16 +4685,40 @@ var GestureBridge = class {
4641
4685
  if (tap && Math.hypot(x2 - tap.ox, y2 - tap.oy) > TAP_CANCEL_PX) {
4642
4686
  tap.el.classList.remove("cg-tap-armed");
4643
4687
  this.taps.delete(hand);
4644
- this.status.textContent = "on \u2014 pinch a tab, window, or button";
4688
+ this.status.textContent = "on: pinch a tab, tile, window, or button";
4645
4689
  }
4646
4690
  }
4647
4691
  onDrop(hand, x2, y2) {
4648
4692
  const grab = this.grabs.get(hand);
4693
+ if (grab?.kind === "tile") {
4694
+ this.grabs.delete(hand);
4695
+ grab.ghost.remove();
4696
+ grab.el.classList.remove("tile--dragging");
4697
+ this.setTileTarget(grab, null);
4698
+ const app = window.app;
4699
+ if (!grab.armed) {
4700
+ this.flash("cancelled");
4701
+ return;
4702
+ }
4703
+ const target = app?.tileDropTargetAt?.(x2, y2, grab.id) ?? null;
4704
+ if (target) {
4705
+ this.flash(app?.dropOnTileTarget?.(grab.id, target) ? "moved tile" : "cancelled");
4706
+ } else if (grab.out && !app?.isOverTileGrid?.(x2, y2)) {
4707
+ const opened = app?.detachTileAtPoint?.(grab.id, x2, y2, { offsetX: grab.offsetX, offsetY: grab.offsetY });
4708
+ this.flash(opened ? "opened in a new window" : "pop-out blocked: allow popups for this site");
4709
+ } else {
4710
+ this.flash("cancelled");
4711
+ }
4712
+ return;
4713
+ }
4649
4714
  if (grab?.kind === "tab") {
4650
4715
  this.grabs.delete(hand);
4651
4716
  grab.ghost.remove();
4652
4717
  grab.tab.classList.remove("cg-grabbed");
4653
- if (grab.armed) this.floatPanel(grab.id, x2, y2);
4718
+ this.setTileTarget(grab, null);
4719
+ const target = grab.armed ? window.app?.tileDropTargetAt?.(x2, y2, grab.id) ?? null : null;
4720
+ if (target) this.flash(window.app?.dropOnTileTarget?.(grab.id, target) ? "tiled" : "cancelled");
4721
+ else if (grab.armed) this.floatPanel(grab.id, x2, y2);
4654
4722
  else this.flash("cancelled");
4655
4723
  return;
4656
4724
  }
@@ -4775,11 +4843,41 @@ var GestureBridge = class {
4775
4843
  ghost.style.left = `${x2}px`;
4776
4844
  ghost.style.top = `${y2}px`;
4777
4845
  }
4846
+ /** A small copy of a tile to follow the hand: its header (a copy: no
4847
+ * listeners come along) over an empty body, in the tile's proportions. */
4848
+ tileGhost(tileEl, rect) {
4849
+ const ghost = el("div", "cg-ghost cg-tile-ghost");
4850
+ const width = Math.min(TILE_GHOST_W, rect.width);
4851
+ ghost.style.width = `${width}px`;
4852
+ ghost.style.height = `${Math.max(48, Math.round(width * rect.height / Math.max(1, rect.width)))}px`;
4853
+ const header = tileEl.querySelector(".tile-header");
4854
+ if (header) {
4855
+ const copy = header.cloneNode(true);
4856
+ copy.removeAttribute("draggable");
4857
+ ghost.append(copy);
4858
+ }
4859
+ ghost.append(el("div", "cg-tile-ghost-body"));
4860
+ return ghost;
4861
+ }
4862
+ /** Highlights the tile or empty cell a carried session would drop onto
4863
+ * (the mouse drag's own `tile--drop-target`), clearing the last one. */
4864
+ setTileTarget(grab, target) {
4865
+ if (grab.target?.el !== target?.el) {
4866
+ grab.target?.el.classList.remove("tile--drop-target");
4867
+ target?.el.classList.add("tile--drop-target");
4868
+ }
4869
+ grab.target = target;
4870
+ }
4778
4871
  cancelAllGrabs() {
4779
4872
  for (const grab of this.grabs.values()) {
4780
4873
  if (grab.kind === "tab") {
4781
4874
  grab.ghost.remove();
4782
4875
  grab.tab.classList.remove("cg-grabbed");
4876
+ this.setTileTarget(grab, null);
4877
+ } else if (grab.kind === "tile") {
4878
+ grab.ghost.remove();
4879
+ grab.el.classList.remove("tile--dragging");
4880
+ this.setTileTarget(grab, null);
4783
4881
  } else if (grab.kind === "panel") {
4784
4882
  grab.panel.el.style.pointerEvents = "";
4785
4883
  grab.panel.el.classList.remove("cg-float-grabbed", "cg-redock");
@@ -4791,6 +4889,7 @@ var GestureBridge = class {
4791
4889
  for (const tap of this.taps.values()) tap.el.classList.remove("cg-tap-armed");
4792
4890
  this.taps.clear();
4793
4891
  document.querySelectorAll(`${TAB_SELECTOR}.cg-grabbed, .cg-tap-armed, .cg-win-grabbed`).forEach((t2) => t2.classList.remove("cg-grabbed", "cg-tap-armed", "cg-win-grabbed"));
4892
+ document.querySelectorAll(`${TILE_SELECTOR}.tile--dragging`).forEach((t2) => t2.classList.remove("tile--dragging"));
4794
4893
  }
4795
4894
  onStatus(fps, hands) {
4796
4895
  const { width, height } = this.canvas;
@@ -4863,6 +4962,13 @@ function injectStyles() {
4863
4962
  outline: 2px solid #38bdf8; outline-offset: -2px;
4864
4963
  }
4865
4964
  .cg-ghost.cg-armed { outline-color: #4ade80; box-shadow: 0 8px 28px rgba(74,222,128,.5); }
4965
+ .cg-ghost.cg-out { outline-color: #fbbf24; box-shadow: 0 8px 28px rgba(251,191,36,.5); }
4966
+ .cg-tile-ghost {
4967
+ display: flex; flex-direction: column; overflow: hidden; transform: translate(-50%, -20%) scale(1);
4968
+ background: var(--term-bg, #161b23); border: 1px solid var(--border-color, #333);
4969
+ }
4970
+ .cg-tile-ghost > .tile-header { flex: 0 0 auto; }
4971
+ .cg-tile-ghost-body { flex: 1 1 auto; opacity: .5; }
4866
4972
  .cg-dock {
4867
4973
  position: fixed; right: 12px; bottom: 156px; z-index: ${Z2 + 3};
4868
4974
  display: flex; align-items: center; gap: 8px; font: 12px/1 system-ui, sans-serif;
Binary file
@@ -428,7 +428,8 @@ Object.assign(CodemanApp.prototype, {
428
428
  line1.appendChild(badge);
429
429
  } else {
430
430
  // The agent's logo: PR #532's slot, the mode id as data (an id with no
431
- // logo rule gets the slot's plain dot).
431
+ // logo rule gets the slot's plain dot). CLI Logos on Tabs hides it in CSS
432
+ // (html[data-tab-logos='off']), exactly as it does on the tab strip.
432
433
  const logo = document.createElement('span');
433
434
  logo.className = `home-sessions-harness run-mode-dot ${row.mode}`;
434
435
  logo.setAttribute('aria-hidden', 'true');
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ "use strict";(function(i){"use strict";const c="Codeman",P=new Set(["en","zh-CN"]),b=["title","aria-label","placeholder"],O=["[data-i18n-skip]",".xterm",".terminal-container",".terminal-output",".response-content",".response-viewer-content",".file-preview-content",".session-tab-name",".tab-name",".session-name",".case-name",".notif-item-message","pre","code","script","style","textarea"].join(","),$=[".history-item-title",".history-item-subtitle",".history-detail-prompt",".history-detail-path",".folder-history-subtitle"].join(","),h=Object.freeze({"Default Codex model":"Codex \u9ED8\u8BA4\u6A21\u578B","Default Codex reasoning effort":"Codex \u9ED8\u8BA4\u601D\u8003\u5F3A\u5EA6","Use Codex configuration":"\u4F7F\u7528 Codex \u914D\u7F6E","Model ID for new local Codex sessions, including WSL. Leave empty to use Codex configuration.":"\u65B0\u672C\u5730 Codex \u4F1A\u8BDD\uFF08\u5305\u62EC WSL\uFF09\u4F7F\u7528\u7684\u6A21\u578B ID\u3002\u7559\u7A7A\u65F6\u4F7F\u7528 Codex \u914D\u7F6E\u3002","Applies to new local sessions; supported levels depend on the model and Codex version. Custom endpoints, Docker and remote sessions keep their own settings.":"\u5E94\u7528\u4E8E\u65B0\u672C\u5730\u4F1A\u8BDD\uFF1B\u53EF\u7528\u5F3A\u5EA6\u53D6\u51B3\u4E8E\u6A21\u578B\u548C Codex \u7248\u672C\u3002\u81EA\u5B9A\u4E49\u7AEF\u70B9\u3001Docker \u548C\u8FDC\u7A0B\u4F1A\u8BDD\u4FDD\u7559\u81EA\u5DF1\u7684\u8BBE\u7F6E\u3002",'Default Codex model may only contain letters, digits, ".", "_", "-" and "/"':'Codex \u9ED8\u8BA4\u6A21\u578B\u53EA\u80FD\u5305\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001"."\u3001"_"\u3001"-" \u548C "/"',"Skip to terminal":"\u8DF3\u8F6C\u5230\u7EC8\u7AEF","Go to main page":"\u8FD4\u56DE\u4E3B\u9875","Session tabs":"\u4F1A\u8BDD\u6807\u7B7E\u9875","Collapse session sidebar":"\u6536\u8D77\u4F1A\u8BDD\u4FA7\u8FB9\u680F","Expand session sidebar":"\u5C55\u5F00\u4F1A\u8BDD\u4FA7\u8FB9\u680F","Filter sessions":"\u7B5B\u9009\u4F1A\u8BDD","Search sessions":"\u641C\u7D22\u4F1A\u8BDD","No sessions match":"\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD","Admin Panel":"\u7BA1\u7406\u9762\u677F","Open admin panel":"\u6253\u5F00\u7BA1\u7406\u9762\u677F","Re-dock to dashboard (close window)":"\u91CD\u65B0\u505C\u9760\u5230\u4E3B\u754C\u9762\uFF08\u5173\u95ED\u7A97\u53E3\uFF09","Tunnel status":"\u96A7\u9053\u72B6\u6001","Decrease font size":"\u51CF\u5C0F\u5B57\u4F53","Increase font size":"\u589E\u5927\u5B57\u4F53","Current font size":"\u5F53\u524D\u5B57\u4F53\u5927\u5C0F","System resource usage":"\u7CFB\u7EDF\u8D44\u6E90\u4F7F\u7528\u60C5\u51B5","Redraw terminal":"\u91CD\u7ED8\u7EC8\u7AEF","Redraw terminal to fit current screen (Ctrl+Shift+R)":"\u91CD\u7ED8\u7EC8\u7AEF\u4EE5\u9002\u5E94\u5F53\u524D\u5C4F\u5E55\uFF08Ctrl+Shift+R\uFF09","View last response":"\u67E5\u770B\u6700\u8FD1\u4E00\u6B21\u56DE\u590D","Away Digest":"\u79BB\u5F00\u671F\u95F4\u6458\u8981","Open away digest":"\u6253\u5F00\u79BB\u5F00\u671F\u95F4\u6458\u8981","Session Manager":"\u4F1A\u8BDD\u7BA1\u7406\u5668","Session actions":"\u4F1A\u8BDD\u64CD\u4F5C",Ungrouped:"\u672A\u5206\u7EC4","Group actions":"\u5206\u7EC4\u64CD\u4F5C","Group name":"\u5206\u7EC4\u540D\u79F0","Web tab actions":"\u7F51\u9875\u6807\u7B7E\u64CD\u4F5C","Web tab settings":"\u7F51\u9875\u6807\u7B7E\u8BBE\u7F6E","New group":"\u65B0\u5EFA\u5206\u7EC4","Rename group":"\u91CD\u547D\u540D\u5206\u7EC4","Move group up":"\u4E0A\u79FB\u5206\u7EC4","Move group down":"\u4E0B\u79FB\u5206\u7EC4","Delete group":"\u5220\u9664\u5206\u7EC4","Move up":"\u4E0A\u79FB","Move down":"\u4E0B\u79FB","Move to Ungrouped":"\u79FB\u5230\u672A\u5206\u7EC4","Move to new group":"\u79FB\u5230\u65B0\u5206\u7EC4","New session":"\u65B0\u5EFA\u4F1A\u8BDD","A session is already starting.":"\u5DF2\u6709\u4F1A\u8BDD\u6B63\u5728\u542F\u52A8\u3002","Follow parent again":"\u91CD\u65B0\u8DDF\u968F\u7236\u4F1A\u8BDD","Parent closed; placed on its own":"\u7236\u4F1A\u8BDD\u5DF2\u5173\u95ED\uFF1B\u5355\u72EC\u653E\u7F6E","Parent loop; placed on its own":"\u7236\u4F1A\u8BDD\u5F62\u6210\u5FAA\u73AF\uFF1B\u5355\u72EC\u653E\u7F6E",Focus:"\u7126\u70B9","Add to Focus":"\u6DFB\u52A0\u5230\u7126\u70B9","Remove from Focus":"\u4ECE\u7126\u70B9\u79FB\u9664","Focus actions":"\u7126\u70B9\u64CD\u4F5C","Could not save tab groups.":"\u65E0\u6CD5\u4FDD\u5B58\u6807\u7B7E\u5206\u7EC4\u3002","Tab groups changed elsewhere; part of your edit no longer applies.":"\u6807\u7B7E\u5206\u7EC4\u5DF2\u5728\u522B\u5904\u66F4\u6539\uFF1B\u4F60\u7684\u90E8\u5206\u7F16\u8F91\u5DF2\u4E0D\u518D\u9002\u7528\u3002","Tab groups kept changing elsewhere; your edit was not saved.":"\u6807\u7B7E\u5206\u7EC4\u5728\u522B\u5904\u6301\u7EED\u66F4\u6539\uFF1B\u4F60\u7684\u7F16\u8F91\u672A\u4FDD\u5B58\u3002","Your tab group edit was not saved.":"\u4F60\u7684\u6807\u7B7E\u5206\u7EC4\u7F16\u8F91\u672A\u4FDD\u5B58\u3002","Open session manager":"\u6253\u5F00\u4F1A\u8BDD\u7BA1\u7406\u5668",Attachments:"\u9644\u4EF6","Open attachment history":"\u6253\u5F00\u9644\u4EF6\u5386\u53F2","File Viewer":"\u6587\u4EF6\u67E5\u770B\u5668","Open file viewer":"\u6253\u5F00\u6587\u4EF6\u67E5\u770B\u5668","Open Codeman across all displays":"\u5728\u6240\u6709\u663E\u793A\u5668\u4E0A\u6253\u5F00 {name}","Split: open a second session beside this one":"\u5206\u5C4F\uFF1A\u5728\u65C1\u8FB9\u6253\u5F00\u7B2C\u4E8C\u4E2A\u4F1A\u8BDD","Split: close the second session":"\u5206\u5C4F\uFF1A\u5173\u95ED\u7B2C\u4E8C\u4E2A\u4F1A\u8BDD","Close split":"\u5173\u95ED\u5206\u5C4F","No other sessions to split with":"\u6CA1\u6709\u5176\u4ED6\u53EF\u7528\u4E8E\u5206\u5C4F\u7684\u4F1A\u8BDD",Tiles:"\u5E73\u94FA",Split:"\u5206\u5C4F","Tiled sessions":"\u5E73\u94FA\u7684\u4F1A\u8BDD","Tiles: show several sessions side by side (right-click for how many)":"\u5E73\u94FA\uFF1A\u5E76\u6392\u663E\u793A\u591A\u4E2A\u4F1A\u8BDD\uFF08\u53F3\u952E\u5355\u51FB\u53EF\u9009\u62E9\u7A97\u683C\u6570\u91CF\uFF09","Tiles: back to a single session (right-click for how many tiles)":"\u5E73\u94FA\uFF1A\u8FD4\u56DE\u5355\u4E2A\u4F1A\u8BDD\uFF08\u53F3\u952E\u5355\u51FB\u53EF\u9009\u62E9\u7A97\u683C\u6570\u91CF\uFF09","How many tiles":"\u7A97\u683C\u6570\u91CF","Click: open the grid":"\u5355\u51FB\uFF1A\u6253\u5F00\u5E73\u94FA\u7F51\u683C","Click: close the grid":"\u5355\u51FB\uFF1A\u5173\u95ED\u5E73\u94FA\u7F51\u683C","Right-click: choose 2, 4 or 6 tiles":"\u53F3\u952E\u5355\u51FB\uFF1A\u9009\u62E9 2\u30014 \u6216 6 \u4E2A\u7A97\u683C","Shift+F10: the same menu from the keyboard":"Shift+F10\uFF1A\u7528\u952E\u76D8\u6253\u5F00\u540C\u4E00\u83DC\u5355","Split: unavailable while tiles are open":"\u5206\u5C4F\uFF1A\u5E73\u94FA\u6253\u5F00\u65F6\u4E0D\u53EF\u7528","Toggle Tile Grid":"\u5207\u6362\u5E73\u94FA\u7F51\u683C","Focus Tile Left":"\u805A\u7126\u5DE6\u4FA7\u7A97\u683C","Focus Tile Right":"\u805A\u7126\u53F3\u4FA7\u7A97\u683C","Focus Tile Up":"\u805A\u7126\u4E0A\u65B9\u7A97\u683C","Focus Tile Down":"\u805A\u7126\u4E0B\u65B9\u7A97\u683C","Focus Tile Left / Right / Up / Down":"\u805A\u7126\u5DE6\u4FA7 / \u53F3\u4FA7 / \u4E0A\u65B9 / \u4E0B\u65B9\u7A97\u683C","Move Tile Left":"\u5411\u5DE6\u79FB\u52A8\u7A97\u683C","Move Tile Right":"\u5411\u53F3\u79FB\u52A8\u7A97\u683C","Move Tile Up":"\u5411\u4E0A\u79FB\u52A8\u7A97\u683C","Move Tile Down":"\u5411\u4E0B\u79FB\u52A8\u7A97\u683C","Move Tile Left / Right / Up / Down":"\u5411\u5DE6 / \u53F3 / \u4E0A / \u4E0B\u79FB\u52A8\u7A97\u683C",Drag:"\u62D6\u52A8","a tile's header":"\u7A97\u683C\u7684\u6807\u9898\u680F","Move the Tile (onto Another: Swap)":"\u79FB\u52A8\u7A97\u683C\uFF08\u62D6\u5230\u53E6\u4E00\u4E2A\u7A97\u683C\u4E0A\uFF1A\u4E92\u6362\u4F4D\u7F6E\uFF09","a tile's header out of the window":"\u7A97\u683C\u7684\u6807\u9898\u680F\u5230\u7A97\u53E3\u4E4B\u5916","Open the Tile in Its Own Window (Detach Tiles)":"\u5728\u72EC\u7ACB\u7A97\u53E3\u4E2D\u6253\u5F00\u7A97\u683C\uFF08\u5206\u79BB\u7A97\u683C\uFF09","Zoom Focused Tile":"\u653E\u5927\u805A\u7126\u7684\u7A97\u683C","Remove Focused Tile":"\u79FB\u9664\u805A\u7126\u7684\u7A97\u683C","Add the Session to the Tile Grid":"\u5C06\u8BE5\u4F1A\u8BDD\u52A0\u5165\u5E73\u94FA\u7F51\u683C","Choose How Many Tiles (2, 4 or 6)":"\u9009\u62E9\u7A97\u683C\u6570\u91CF\uFF082\u30014 \u6216 6\uFF09","a tab":"\u6807\u7B7E\u9875","the Tiles button":"\u5E73\u94FA\u6309\u94AE",Click:"\u5355\u51FB","Right-click":"\u53F3\u952E\u5355\u51FB",Arrows:"\u65B9\u5411\u952E","not bound":"\u672A\u7ED1\u5B9A","Open group as tiles":"\u4EE5\u5E73\u94FA\u65B9\u5F0F\u6253\u5F00\u5206\u7EC4","No sessions to show as tiles":"\u6CA1\u6709\u53EF\u5E73\u94FA\u663E\u793A\u7684\u4F1A\u8BDD","This group has no session to show as tiles":"\u6B64\u5206\u7EC4\u6CA1\u6709\u53EF\u5E73\u94FA\u663E\u793A\u7684\u4F1A\u8BDD","Zoom this tile":"\u653E\u5927\u6B64\u7A97\u683C","Restore the grid":"\u6062\u590D\u5E73\u94FA\u7F51\u683C","Remove tile (the session keeps running)":"\u79FB\u9664\u7A97\u683C\uFF08\u4F1A\u8BDD\u7EE7\u7EED\u8FD0\u884C\uFF09","Drop a tab or a tile here":"\u5C06\u6807\u7B7E\u9875\u6216\u7A97\u683C\u62D6\u653E\u5230\u6B64\u5904","Unsupported file type":"\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B","No active session":"\u6CA1\u6709\u6D3B\u52A8\u4F1A\u8BDD","This session is sized by its own window":"\u6B64\u4F1A\u8BDD\u7684\u5C3A\u5BF8\u7531\u5B83\u81EA\u5DF1\u7684\u7A97\u53E3\u51B3\u5B9A","Terminal not connected: its size is sent when it reconnects":"\u7EC8\u7AEF\u672A\u8FDE\u63A5\uFF1A\u91CD\u65B0\u8FDE\u63A5\u540E\u4F1A\u53D1\u9001\u5176\u5C3A\u5BF8","Could not determine terminal size":"\u65E0\u6CD5\u786E\u5B9A\u7EC8\u7AEF\u5C3A\u5BF8","Failed to restore terminal size":"\u6062\u590D\u7EC8\u7AEF\u5C3A\u5BF8\u5931\u8D25","Drag to move the tile":"\u62D6\u52A8\u53EF\u79FB\u52A8\u7A97\u683C","Drag to move the tile, or out of the window to open it on its own":"\u62D6\u52A8\u53EF\u79FB\u52A8\u7A97\u683C\uFF0C\u62D6\u51FA\u7A97\u53E3\u53EF\u5728\u72EC\u7ACB\u7A97\u53E3\u4E2D\u6253\u5F00","Drag out of the window to open the tile on its own":"\u62D6\u51FA\u7A97\u53E3\u53EF\u5728\u72EC\u7ACB\u7A97\u53E3\u4E2D\u6253\u5F00\u6B64\u7A97\u683C","Drag onto a Codeman window's tiles to dock this session there":"\u62D6\u5230 {name} \u7A97\u53E3\u7684\u7A97\u683C\u4E0A\uFF0C\u5373\u53EF\u5C06\u6B64\u4F1A\u8BDD\u505C\u9760\u5230\u90A3\u91CC","Resize tile columns":"\u8C03\u6574\u7A97\u683C\u5217\u5BBD","Resize tile rows":"\u8C03\u6574\u7A97\u683C\u884C\u9AD8",Attach:"\u9644\u52A0","Attaching\u2026":"\u6B63\u5728\u9644\u52A0\u2026","Not attached":"\u672A\u9644\u52A0","The session ended":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F","The agent exited":"\u667A\u80FD\u4F53\u5DF2\u9000\u51FA","It cannot be restarted in place: close it from \u22EF (Close session).":"\u65E0\u6CD5\u539F\u5730\u91CD\u542F\uFF1A\u8BF7\u901A\u8FC7 \u22EF\uFF08\u5173\u95ED\u4F1A\u8BDD\uFF09\u5173\u95ED\u5B83\u3002","Could not attach the session":"\u65E0\u6CD5\u9644\u52A0\u4F1A\u8BDD",exited:"\u5DF2\u9000\u51FA","Terminal / Shell":"\u7EC8\u7AEF / Shell","Send Enter":"\u53D1\u9001\u56DE\u8F66",Tabs:"\u6807\u7B7E\u9875","Toggle Session Sidebar":"\u5207\u6362\u4F1A\u8BDD\u4FA7\u8FB9\u680F","Copy Selection":"\u590D\u5236\u9009\u4E2D\u5185\u5BB9","Copy Selection (interrupts when nothing is selected)":"\u590D\u5236\u9009\u4E2D\u5185\u5BB9\uFF08\u65E0\u9009\u4E2D\u5185\u5BB9\u65F6\u4E2D\u65AD\uFF09","Focus Tabs":"\u805A\u7126\u6807\u7B7E\u9875",Wheel:"\u6EDA\u8F6E","Ultracode / Workflow agents":"Ultracode / Workflow \u667A\u80FD\u4F53","Open ultracode workflow agents":"\u6253\u5F00 Ultracode \u5DE5\u4F5C\u6D41\u667A\u80FD\u4F53",Notifications:"\u901A\u77E5","Toggle notifications":"\u5207\u6362\u901A\u77E5\u9762\u677F","Session Lifecycle Log":"\u4F1A\u8BDD\u751F\u547D\u5468\u671F\u65E5\u5FD7","Open session lifecycle log":"\u6253\u5F00\u4F1A\u8BDD\u751F\u547D\u5468\u671F\u65E5\u5FD7","App Settings":"\u5E94\u7528\u8BBE\u7F6E","Open app settings":"\u6253\u5F00\u5E94\u7528\u8BBE\u7F6E","Total tokens across all sessions":"\u6240\u6709\u4F1A\u8BDD\u7684 Token \u603B\u6570","Token usage across active sessions":"\u6D3B\u52A8\u4F1A\u8BDD\u7684 Token \u4F7F\u7528\u91CF","Instance count":"\u5B9E\u4F8B\u6570\u91CF","No response yet":"\u6682\u65E0\u56DE\u590D","No response yet \u2014 send a message in this session first.":"\u6682\u65E0\u56DE\u590D\uFF0C\u8BF7\u5148\u5728\u6B64\u4F1A\u8BDD\u4E2D\u53D1\u9001\u4E00\u6761\u6D88\u606F\u3002","No full conversation history available for this session":"\u6B64\u4F1A\u8BDD\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5B8C\u6574\u5BF9\u8BDD\u5386\u53F2","Last Response":"\u6700\u8FD1\u4E00\u6B21\u56DE\u590D",More:"\u66F4\u591A","Codeman version":"{name}\u7248\u672C",Stop:"\u505C\u6B62",Watching:"\u76D1\u89C6\u4E2D",Orchestrator:"\u7F16\u6392\u5668",Close:"\u5173\u95ED","Close window":"\u5173\u95ED\u7A97\u53E3","Session unavailable":"\u4F1A\u8BDD\u4E0D\u53EF\u7528","This session has ended or is no longer available.":"\u6B64\u4F1A\u8BDD\u5DF2\u7ED3\u675F\u6216\u4E0D\u518D\u53EF\u7528\u3002","Session moved":"\u4F1A\u8BDD\u5DF2\u79FB\u8D70","This session is back in a Codeman window. This one can be closed.":"\u6B64\u4F1A\u8BDD\u5DF2\u56DE\u5230 {name} \u7A97\u53E3\u4E2D\u3002\u53EF\u4EE5\u5173\u95ED\u6B64\u7A97\u53E3\u3002","Manage AI Coding tools in persistent tmux sessions.":"\u5728\u6301\u4E45\u5316 tmux \u4F1A\u8BDD\u4E2D\u7BA1\u7406 AI \u7F16\u7A0B\u5DE5\u5177\u3002","Select case":"\u9009\u62E9\u6848\u4F8B","Select Case":"\u9009\u62E9\u6848\u4F8B","Search cases":"\u641C\u7D22\u6848\u4F8B","No matching cases":"\u6CA1\u6709\u5339\u914D\u7684\u6848\u4F8B","All cases":"\u5168\u90E8\u6848\u4F8B","No directory":"\u672A\u9009\u62E9\u76EE\u5F55",Run:"\u8FD0\u884C","Run Claude Code":"\u8FD0\u884C Claude Code","Run OpenCode":"\u8FD0\u884C OpenCode","Run Codex":"\u8FD0\u884C Codex","Run Gemini":"\u8FD0\u884C Gemini","Run Antigravity":"\u8FD0\u884C Antigravity","Run Pi":"\u8FD0\u884C Pi","Run Grok":"\u8FD0\u884C Grok","Run DeepSeek":"\u8FD0\u884C DeepSeek","Run OMP":"\u8FD0\u884C OMP","Run Shell":"\u8FD0\u884C Shell","More tools":"\u66F4\u591A\u5DE5\u5177","Select AI backend":"\u9009\u62E9 AI \u540E\u7AEF","Create New Case":"\u65B0\u5EFA\u6848\u4F8B","Create new case":"\u65B0\u5EFA\u6848\u4F8B","Link Existing":"\u5173\u8054\u73B0\u6709\u76EE\u5F55","New or link a case\u2026":"\u65B0\u5EFA\u6216\u5173\u8054\u6848\u4F8B\u2026","Case settings\u2026":"\u6848\u4F8B\u8BBE\u7F6E\u2026","No cases match":"\u6CA1\u6709\u5339\u914D\u7684\u6848\u4F8B","Add Case":"\u6DFB\u52A0\u6848\u4F8B","Open sessions":"\u6253\u5F00\u4F1A\u8BDD","Recent Sessions":"\u6700\u8FD1\u4F1A\u8BDD","Search sessions by name, prompt, or path\u2026":"\u6309\u540D\u79F0\u3001\u63D0\u793A\u8BCD\u6216\u8DEF\u5F84\u641C\u7D22\u4F1A\u8BDD\u2026","Search open sessions or start a new one":"\u641C\u7D22\u5DF2\u6253\u5F00\u4F1A\u8BDD\u6216\u542F\u52A8\u65B0\u4F1A\u8BDD","Find Open Session":"\u67E5\u627E\u5DF2\u6253\u5F00\u4F1A\u8BDD","No background agents":"\u6CA1\u6709\u540E\u53F0\u667A\u80FD\u4F53","No background agents detected":"\u672A\u68C0\u6D4B\u5230\u540E\u53F0\u667A\u80FD\u4F53","No notifications":"\u6CA1\u6709\u901A\u77E5","No mux sessions":"\u6CA1\u6709 mux \u4F1A\u8BDD","No lifecycle entries found":"\u672A\u627E\u5230\u751F\u547D\u5468\u671F\u8BB0\u5F55","No ultracode runs detected":"\u672A\u68C0\u6D4B\u5230 Ultracode \u8FD0\u884C",Display:"\u663E\u793A","Claude CLI":"Claude CLI","Codex CLI":"Codex CLI",Models:"\u6A21\u578B",Shortcuts:"\u5FEB\u6377\u952E",Voice:"\u8BED\u97F3",Save:"\u4FDD\u5B58",Cancel:"\u53D6\u6D88",Apply:"\u5E94\u7528",Create:"\u521B\u5EFA",Add:"\u6DFB\u52A0",Delete:"\u5220\u9664",Remove:"\u79FB\u9664",Edit:"\u7F16\u8F91",Refresh:"\u5237\u65B0",Back:"\u8FD4\u56DE",Next:"\u4E0B\u4E00\u6B65",Previous:"\u4E0A\u4E00\u6B65",Clear:"\u6E05\u9664","Clear all":"\u5168\u90E8\u6E05\u9664","Clear All":"\u5168\u90E8\u6E05\u9664",Search:"\u641C\u7D22",Filter:"\u7B5B\u9009",Enable:"\u542F\u7528",Enabled:"\u5DF2\u542F\u7528",Disabled:"\u5DF2\u7981\u7528",Active:"\u6D3B\u52A8","Not active":"\u672A\u6D3B\u52A8",On:"\u5F00",Off:"\u5173",Yes:"\u662F",No:"\u5426",Optional:"\u53EF\u9009",Default:"\u9ED8\u8BA4",Custom:"\u81EA\u5B9A\u4E49",Name:"\u540D\u79F0",Description:"\u63CF\u8FF0",Status:"\u72B6\u6001",Reason:"\u539F\u56E0",Time:"\u65F6\u95F4",Event:"\u4E8B\u4EF6",Events:"\u4E8B\u4EF6",Session:"\u4F1A\u8BDD",Sessions:"\u4F1A\u8BDD",Files:"\u6587\u4EF6",History:"\u5386\u53F2",Summary:"\u6458\u8981",Details:"\u8BE6\u60C5",Options:"\u9009\u9879",Settings:"\u8BBE\u7F6E",Help:"\u5E2E\u52A9",Loading:"\u6B63\u5728\u52A0\u8F7D",Error:"\u9519\u8BEF",Errors:"\u9519\u8BEF",Warning:"\u8B66\u544A",Warnings:"\u8B66\u544A",Info:"\u4FE1\u606F",Complete:"\u5B8C\u6210",Completed:"\u5DF2\u5B8C\u6210",Stopped:"\u5DF2\u505C\u6B62",Running:"\u8FD0\u884C\u4E2D",Idle:"\u7A7A\u95F2",Working:"\u5DE5\u4F5C\u4E2D",Waiting:"\u7B49\u5F85\u4E2D",Today:"\u4ECA\u5929",Home:"\u4E3B\u9875",Local:"\u672C\u5730",Remote:"\u8FDC\u7A0B",Docker:"Docker",Terminal:"\u7EC8\u7AEF",Prompt:"\u63D0\u793A\u8BCD",Source:"\u6765\u6E90",Type:"\u7C7B\u578B",Language:"\u8BED\u8A00","Branding & Language":"\u54C1\u724C\u4E0E\u8BED\u8A00","Display Name":"\u663E\u793A\u540D\u79F0","Interface Language":"\u754C\u9762\u8BED\u8A00","Name shown in the browser UI and window title. Supports Unicode, including Chinese.":"\u663E\u793A\u5728\u6D4F\u89C8\u5668\u754C\u9762\u548C\u7A97\u53E3\u6807\u9898\u4E2D\u7684\u540D\u79F0\u3002\u652F\u6301 Unicode\uFF0C\u5305\u62EC\u4E2D\u6587\u3002","Language for this device. Dynamic status messages and dialogs use the same language.":"\u6B64\u8BBE\u5907\u4F7F\u7528\u7684\u754C\u9762\u8BED\u8A00\u3002\u52A8\u6001\u72B6\u6001\u6D88\u606F\u4E0E\u5BF9\u8BDD\u6846\u4E5F\u4F1A\u4F7F\u7528\u540C\u4E00\u8BED\u8A00\u3002",English:"English",Appearance:"\u5916\u89C2",Animations:"\u52A8\u753B","How tabs, terminal panes, agent windows and tiles arrive. All off by default, applied as you pick them.":"\u6807\u7B7E\u9875\u3001\u7EC8\u7AEF\u9762\u677F\u3001\u667A\u80FD\u4F53\u7A97\u53E3\u548C\u5E73\u94FA\u7A97\u683C\u5982\u4F55\u51FA\u73B0\u3002\u9ED8\u8BA4\u5168\u90E8\u5173\u95ED\uFF0C\u9009\u62E9\u540E\u7ACB\u5373\u751F\u6548\u3002",Entrances:"\u5165\u573A","Entrance Theme":"\u5165\u573A\u4E3B\u9898","One look for how new tabs, terminal panes, agent windows and their lines arrive.":"\u4E3A\u65B0\u6807\u7B7E\u9875\u3001\u7EC8\u7AEF\u9762\u677F\u3001\u667A\u80FD\u4F53\u7A97\u53E3\u53CA\u5176\u8FDE\u7EBF\u7684\u51FA\u73B0\u65B9\u5F0F\u9009\u62E9\u7EDF\u4E00\u7684\u98CE\u683C\u3002","Off (default)":"\u5173\u95ED\uFF08\u9ED8\u8BA4\uFF09","Terminal (CRT)":"\u7EC8\u7AEF\uFF08CRT\uFF09","Beam down":"\u5149\u675F\u964D\u4E34","Launch (tiles fly from tabs)":"\u53D1\u5C04\uFF08\u7A97\u683C\u4ECE\u6807\u7B7E\u9875\u98DE\u51FA\uFF09","Soft focus (blur)":"\u67D4\u7126\uFF08\u6A21\u7CCA\uFF09",Quiet:"\u5B89\u9759",Playful:"\u6D3B\u6CFC","Custom (set in the lab)":"\u81EA\u5B9A\u4E49\uFF08\u5728\u5B9E\u9A8C\u5BA4\u4E2D\u8BBE\u7F6E\uFF09","Tile Animations":"\u5E73\u94FA\u52A8\u753B","How tiles arrive when the grid opens and leave when it closes. A theme above presets it.":"\u5E73\u94FA\u6253\u5F00\u65F6\u7A97\u683C\u5982\u4F55\u51FA\u73B0\u3001\u5173\u95ED\u65F6\u5982\u4F55\u79BB\u5F00\u3002\u4E0A\u65B9\u7684\u4E3B\u9898\u4F1A\u9884\u8BBE\u6B64\u9879\u3002","Fly from tab":"\u4ECE\u6807\u7B7E\u9875\u98DE\u51FA",Deal:"\u53D1\u724C",Cascade:"\u7EA7\u8054",Pop:"\u5F39\u51FA",Soft:"\u67D4\u548C","None (tiles just appear)":"\u65E0\uFF08\u7A97\u683C\u76F4\u63A5\u51FA\u73B0\uFF09",Lab:"\u5B9E\u9A8C\u5BA4","Animation Lab":"\u52A8\u753B\u5B9E\u9A8C\u5BA4","Closes settings and opens every style per surface side by side, with replay and speed. Same as adding ?animlab=1 to the URL.":"\u5173\u95ED\u8BBE\u7F6E\uFF0C\u5E76\u6309\u754C\u9762\u5E76\u6392\u6253\u5F00\u6240\u6709\u6837\u5F0F\uFF0C\u53EF\u91CD\u653E\u548C\u8C03\u901F\u3002\u7B49\u540C\u4E8E\u5728\u7F51\u5740\u540E\u6DFB\u52A0 ?animlab=1\u3002","Open lab":"\u6253\u5F00\u5B9E\u9A8C\u5BA4",Skin:"\u76AE\u80A4","Visual theme for this device (not synced)":"\u6B64\u8BBE\u5907\u7684\u89C6\u89C9\u4E3B\u9898\uFF08\u4E0D\u540C\u6B65\uFF09","Daylight Blue":"\u65E5\u5149\u84DD","Daylight Green":"\u65E5\u5149\u7EFF","OG Codeman":"\u7ECF\u5178 {name}",Performance:"\u6027\u80FD","WebGL Renderer":"WebGL \u6E32\u67D3\u5668","Header Displays":"\u9876\u90E8\u680F\u663E\u793A","Font Controls":"\u5B57\u4F53\u63A7\u5236","System Stats":"\u7CFB\u7EDF\u72B6\u6001","Lifecycle Log":"\u751F\u547D\u5468\u671F\u65E5\u5FD7","Response Viewer":"\u56DE\u590D\u67E5\u770B\u5668","Attachments Button":"\u9644\u4EF6\u6309\u94AE","Multi-monitor Button":"\u591A\u663E\u793A\u5668\u6309\u94AE","Session Manager Button":"\u4F1A\u8BDD\u7BA1\u7406\u5668\u6309\u94AE","Away Digest Button":"\u79BB\u5F00\u671F\u95F4\u6458\u8981\u6309\u94AE","Cron Button":"\u5B9A\u65F6\u4EFB\u52A1\u6309\u94AE","Redraw Terminal Button":"\u91CD\u7ED8\u7EC8\u7AEF\u6309\u94AE","Tab Bar":"\u6807\u7B7E\u680F","Session List Layout":"\u4F1A\u8BDD\u5217\u8868\u5E03\u5C40","Session Name Font Size":"\u4F1A\u8BDD\u540D\u79F0\u5B57\u4F53\u5927\u5C0F","Adjust only session names in the vertical sidebar.":"\u4EC5\u8C03\u6574\u5782\u76F4\u4FA7\u8FB9\u680F\u4E2D\u7684\u4F1A\u8BDD\u540D\u79F0\u3002","Header tab strip":"\u9876\u680F\u6807\u7B7E\u6761","Left sidebar":"\u5DE6\u4FA7\u8FB9\u680F","Left sidebar simple":"\u5DE6\u4FA7\u8FB9\u680F\uFF08\u7B80\u6D01\uFF09","Horizontal strip in the header, or a collapsible left sidebar (Alt+B). The rich sidebar carries the same per-session detail as the home screen.":"\u4F1A\u8BDD\u5217\u8868\u663E\u793A\u4E3A\u9876\u680F\u6A2A\u5411\u6807\u7B7E\u6761\uFF0C\u6216\u5DE6\u4FA7\u53EF\u6298\u53E0\u4FA7\u8FB9\u680F\uFF08Alt+B\uFF09\u3002\u5B8C\u6574\u4FA7\u8FB9\u680F\u4E3A\u6BCF\u4E2A\u4F1A\u8BDD\u663E\u793A\u4E0E\u4E3B\u754C\u9762\u76F8\u540C\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002","Tall Tabs (Name + Folder)":"\u53CC\u884C\u6807\u7B7E\uFF08\u540D\u79F0 + \u6587\u4EF6\u5939\uFF09","Pop-out Button on Tabs":"\u6807\u7B7E\u9875\u5F39\u51FA\u7A97\u53E3\u6309\u94AE","CLI Logos on Tabs":"\u6807\u7B7E\u9875\u4E0A\u7684 CLI \u56FE\u6807","Show each agent's CLI logo before the session name on tabs and the home screen's tab list. Off leaves the status dot and the shell's SH badge. Tiles, split headers and the Run menus keep their logos.":"\u5728\u6807\u7B7E\u9875\u548C\u4E3B\u754C\u9762\u7684\u6807\u7B7E\u5217\u8868\u4E2D\uFF0C\u4E8E\u4F1A\u8BDD\u540D\u79F0\u524D\u663E\u793A\u6BCF\u4E2A\u667A\u80FD\u4F53\u7684 CLI \u56FE\u6807\u3002\u5173\u95ED\u540E\u4ECD\u4FDD\u7559\u72B6\u6001\u5706\u70B9\u548C Shell \u7684 SH \u6807\u8BB0\u3002\u5E73\u94FA\u3001\u5206\u5C4F\u6807\u9898\u680F\u548C\u8FD0\u884C\u83DC\u5355\u4E2D\u7684\u56FE\u6807\u4E0D\u53D7\u5F71\u54CD\u3002","Detach Tiles":"\u5206\u79BB\u7A97\u683C","Drag a tile's header out of the browser to open it in its own window, or onto another Codeman window's tiles to move it there. A popped-out window's title drags back onto tiles.":"\u5C06\u7A97\u683C\u7684\u6807\u9898\u680F\u62D6\u51FA\u6D4F\u89C8\u5668\uFF0C\u5373\u53EF\u5728\u72EC\u7ACB\u7A97\u53E3\u4E2D\u6253\u5F00\u5B83\uFF1B\u62D6\u5230\u53E6\u4E00\u4E2A {name} \u7A97\u53E3\u7684\u7A97\u683C\u4E0A\uFF0C\u5373\u53EF\u5C06\u5B83\u79FB\u5230\u90A3\u91CC\u3002\u5F39\u51FA\u7A97\u53E3\u7684\u6807\u9898\u4E5F\u53EF\u4EE5\u62D6\u56DE\u7A97\u683C\u4E2D\u3002","Tab Layout":"\u6807\u7B7E\u9875\u5E03\u5C40","By state: a row each for needs you, waiting, working and idle. By case: one box per case. Ledger: an aligned column grid. Classic: the single list, as before. By state and By case group the side rail and sidebar too. Alt+1..9 keeps the tab order.":"\u6309\u72B6\u6001\uFF1A\u9700\u8981\u4F60\u3001\u7B49\u5F85\u4E2D\u3001\u5DE5\u4F5C\u4E2D\u548C\u7A7A\u95F2\u5404\u5360\u4E00\u884C\u3002\u6309\u6848\u4F8B\uFF1A\u6BCF\u4E2A\u6848\u4F8B\u4E00\u4E2A\u6846\u3002\u53F0\u8D26\uFF1A\u5BF9\u9F50\u7684\u5217\u7F51\u683C\u3002\u7ECF\u5178\uFF1A\u4E0E\u4EE5\u524D\u76F8\u540C\u7684\u5355\u4E00\u5217\u8868\u3002\u6309\u72B6\u6001\u548C\u6309\u6848\u4F8B\u4E5F\u4F1A\u4E3A\u4FA7\u8FB9\u6807\u7B7E\u680F\u548C\u4FA7\u8FB9\u680F\u5206\u7EC4\u3002Alt+1..9 \u4ECD\u6309\u6807\u7B7E\u9875\u987A\u5E8F\u5207\u6362\u3002","By state (rows per state)":"\u6309\u72B6\u6001\uFF08\u6BCF\u79CD\u72B6\u6001\u4E00\u884C\uFF09","By case (clusters)":"\u6309\u6848\u4F8B\uFF08\u5206\u7EC4\u6846\uFF09","Ledger (aligned columns)":"\u53F0\u8D26\uFF08\u5BF9\u9F50\u7684\u5217\uFF09","Classic (default)":"\u7ECF\u5178\uFF08\u9ED8\u8BA4\uFF09","State Order":"\u72B6\u6001\u987A\u5E8F","For Tab Layout by state. At the bottom flips the rows, so needs you sits right above the terminal.":"\u7528\u4E8E\u6309\u72B6\u6001\u7684\u6807\u7B7E\u9875\u5E03\u5C40\u3002\u9009\u62E9\u5728\u5E95\u90E8\u4F1A\u5012\u8F6C\u5404\u884C\uFF0C\u8BA9\u201C\u9700\u8981\u4F60\u201D\u7D27\u6328\u5728\u7EC8\u7AEF\u4E0A\u65B9\u3002","Needs you on top (default)":"\u201C\u9700\u8981\u4F60\u201D\u5728\u9876\u90E8\uFF08\u9ED8\u8BA4\uFF09","Needs you at the bottom":"\u201C\u9700\u8981\u4F60\u201D\u5728\u5E95\u90E8","Header Stats Style":"\u9876\u90E8\u680F\u72B6\u6001\u6837\u5F0F","How WS, CPU, MEM and the plan-usage windows are drawn. Compact puts a ring beside each value in two pills; Tiles put each label over its value with a bar underneath.":"WS\u3001CPU\u3001MEM \u548C\u5957\u9910\u7528\u91CF\u7A97\u53E3\u7684\u663E\u793A\u65B9\u5F0F\u3002\u7D27\u51D1\uFF1A\u5728\u4E24\u4E2A\u80F6\u56CA\u4E2D\u6BCF\u4E2A\u6570\u503C\u65C1\u663E\u793A\u4E00\u4E2A\u5706\u73AF\uFF1B\u78C1\u8D34\uFF1A\u6BCF\u4E2A\u6807\u7B7E\u4F4D\u4E8E\u6570\u503C\u4E0A\u65B9\uFF0C\u4E0B\u65B9\u5E26\u4E00\u6761\u8FDB\u5EA6\u6761\u3002","As before (bars)":"\u4E0E\u4EE5\u524D\u76F8\u540C\uFF08\u8FDB\u5EA6\u6761\uFF09","Compact (default)":"\u7D27\u51D1\uFF08\u9ED8\u8BA4\uFF09","Tiles (label over value)":"\u78C1\u8D34\uFF08\u6807\u7B7E\u5728\u6570\u503C\u4E0A\u65B9\uFF09","Connection tile: live":"\u5DF2\u8FDE\u63A5","Connection tile: fallback":"\u56DE\u9000","Connection tile: offline":"\u79BB\u7EBF","Connection tile: queued":"\u5DF2\u6392\u961F","Connection tile: retry":"\u91CD\u8FDE\u4E2D","Bottom bar":"\u5E95\u90E8\u680F","Git status":"Git \u72B6\u6001","Shows, at the right of the bottom bar, when the active session's repository (or each repository inside its folder, up to two levels down) has uncommitted files or commits that are not pushed. Click it for the list. Read-only: Codeman never fetches or changes the repository. Not shown for Docker or remote sessions. Off by default.":"\u5728\u5E95\u90E8\u680F\u53F3\u4FA7\u663E\u793A\u5F53\u524D\u4F1A\u8BDD\u7684\u4ED3\u5E93\uFF08\u6216\u5176\u6587\u4EF6\u5939\u5185\u5411\u4E0B\u4E24\u5C42\u4EE5\u5185\u7684\u6BCF\u4E2A\u4ED3\u5E93\uFF09\u662F\u5426\u6709\u672A\u63D0\u4EA4\u7684\u6587\u4EF6\u6216\u672A\u63A8\u9001\u7684\u63D0\u4EA4\u3002\u70B9\u51FB\u53EF\u67E5\u770B\u5217\u8868\u3002\u53EA\u8BFB\uFF1A{name} \u4ECE\u4E0D\u62C9\u53D6\u6216\u66F4\u6539\u4ED3\u5E93\u3002Docker \u548C\u8FDC\u7A0B\u4F1A\u8BDD\u4E0D\u663E\u793A\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","Git status: group files by folder":"Git \u72B6\u6001\uFF1A\u6309\u6587\u4EF6\u5939\u5206\u7EC4\u663E\u793A\u6587\u4EF6","In the Git window, show changed files under their folders, collapsed until you click a folder. Off lists every file by its full path. On by default.":"\u5728 Git \u7A97\u53E3\u4E2D\uFF0C\u5C06\u66F4\u6539\u7684\u6587\u4EF6\u663E\u793A\u5728\u5404\u81EA\u7684\u6587\u4EF6\u5939\u4E0B\uFF0C\u70B9\u51FB\u6587\u4EF6\u5939\u524D\u4FDD\u6301\u6298\u53E0\u3002\u5173\u95ED\u65F6\u6309\u5B8C\u6574\u8DEF\u5F84\u5217\u51FA\u6BCF\u4E2A\u6587\u4EF6\u3002\u9ED8\u8BA4\u5F00\u542F\u3002","Git status: max repositories":"Git \u72B6\u6001\uFF1A\u6700\u591A\u4ED3\u5E93\u6570","When the session's folder holds several projects instead of being one, the Git window lists up to this many (1 to 50, default 12). Each one costs a few git commands per refresh.":"\u5F53\u4F1A\u8BDD\u7684\u6587\u4EF6\u5939\u5305\u542B\u591A\u4E2A\u9879\u76EE\uFF08\u800C\u4E0D\u662F\u672C\u8EAB\u5C31\u662F\u4E00\u4E2A\u9879\u76EE\uFF09\u65F6\uFF0CGit \u7A97\u53E3\u6700\u591A\u5217\u51FA\u8FD9\u4E48\u591A\u4E2A\uFF081 \u5230 50\uFF0C\u9ED8\u8BA4 12\uFF09\u3002\u6BCF\u4E2A\u4ED3\u5E93\u6BCF\u6B21\u5237\u65B0\u90FD\u8981\u8FD0\u884C\u51E0\u6761 git \u547D\u4EE4\u3002","Git status: git timeout":"Git \u72B6\u6001\uFF1Agit \u8D85\u65F6","Seconds one git command may run before that repository is reported as unreadable (5 to 120, default 30). Raise it for repositories on a slow network share.":"\u5355\u6761 git \u547D\u4EE4\u53EF\u8FD0\u884C\u7684\u79D2\u6570\uFF0C\u8D85\u65F6\u540E\u8BE5\u4ED3\u5E93\u4F1A\u88AB\u62A5\u544A\u4E3A\u65E0\u6CD5\u8BFB\u53D6\uFF085 \u5230 120\uFF0C\u9ED8\u8BA4 30\uFF09\u3002\u4ED3\u5E93\u4F4D\u4E8E\u8F83\u6162\u7684\u7F51\u7EDC\u5171\u4EAB\u4E0A\u65F6\u8BF7\u8C03\u9AD8\u6B64\u503C\u3002","Refresh git status":"\u5237\u65B0 Git \u72B6\u6001","Close git status":"\u5173\u95ED Git \u72B6\u6001",Panels:"\u9762\u677F",Monitor:"\u76D1\u89C6\u5668","Project Insights":"\u9879\u76EE\u6D1E\u5BDF","File Browser":"\u6587\u4EF6\u6D4F\u89C8\u5668",Subagents:"\u5B50\u667A\u80FD\u4F53","Ultracode Agents":"Ultracode \u667A\u80FD\u4F53","Ultracode Floating Windows":"Ultracode \u6D6E\u52A8\u7A97\u53E3","Approvals Inbox":"\u5BA1\u6279\u6536\u4EF6\u7BB1","Auto-name Sessions":"\u81EA\u52A8\u547D\u540D\u4F1A\u8BDD","Spawned Tabs Follow Their Parent":"\u6D3E\u751F\u7684\u6807\u7B7E\u8DDF\u968F\u7236\u4F1A\u8BDD","A session started by another one keeps following its parent's tab into its group and moves with it, until you move it by hand. Off: it starts next to its parent and stays where it is.":"\u7531\u53E6\u4E00\u4E2A\u4F1A\u8BDD\u542F\u52A8\u7684\u4F1A\u8BDD\u4F1A\u8DDF\u968F\u7236\u4F1A\u8BDD\u7684\u6807\u7B7E\u8FDB\u5165\u5176\u5206\u7EC4\u5E76\u968F\u4E4B\u79FB\u52A8\uFF0C\u76F4\u5230\u4F60\u624B\u52A8\u79FB\u52A8\u5B83\u3002\u5173\u95ED\u65F6\uFF1A\u5B83\u51FA\u73B0\u5728\u7236\u4F1A\u8BDD\u65C1\u8FB9\u5E76\u505C\u7559\u5728\u539F\u5904\u3002",Approvals:"\u5BA1\u6279","Prompts waiting on you, across all sessions":"\u6240\u6709\u4F1A\u8BDD\u4E2D\u7B49\u5F85\u60A8\u5904\u7406\u7684\u63D0\u793A","No pending approvals":"\u6CA1\u6709\u5F85\u5904\u7406\u7684\u5BA1\u6279","Approvals waiting on you":"\u7B49\u5F85\u60A8\u5BA1\u6279\u7684\u8BF7\u6C42","Open approvals inbox":"\u6253\u5F00\u5BA1\u6279\u6536\u4EF6\u7BB1","Close approvals inbox":"\u5173\u95ED\u5BA1\u6279\u6536\u4EF6\u7BB1",Approve:"\u6279\u51C6","Deny (Esc)":"\u62D2\u7EDD (Esc)",Deny:"\u62D2\u7EDD","Open session":"\u6253\u5F00\u4F1A\u8BDD",Dismiss:"\u5FFD\u7565",Send:"\u53D1\u9001",Permission:"\u6743\u9650",Question:"\u95EE\u9898",Idle:"\u7A7A\u95F2","Read My Mind":"\u8BFB\u5FC3\u672F","Read My Mind: predict your next prompt":"\u8BFB\u5FC3\u672F\uFF1A\u9884\u6D4B\u60A8\u7684\u4E0B\u4E00\u6761\u63D0\u793A","Predict my next prompt":"\u9884\u6D4B\u6211\u7684\u4E0B\u4E00\u6761\u63D0\u793A","Reading your mind\u2026":"\u6B63\u5728\u8BFB\u53D6\u60A8\u7684\u60F3\u6CD5\u2026","No suggestion this time. Add a steer note and Rethink to try again.":"\u8FD9\u6B21\u6CA1\u6709\u5EFA\u8BAE\u3002\u53EF\u6DFB\u52A0\u5F15\u5BFC\u5907\u6CE8\u540E\u70B9\u51FB\u300C\u91CD\u60F3\u300D\u518D\u8BD5\u4E00\u6B21\u3002",Rethink:"\u91CD\u60F3",Insert:"\u63D2\u5165","Put the text on the session's composer without submitting it":"\u5C06\u6587\u672C\u653E\u5165\u4F1A\u8BDD\u8F93\u5165\u6846\u4F46\u4E0D\u63D0\u4EA4","Predicted prompt, editable":"\u9884\u6D4B\u7684\u63D0\u793A\uFF0C\u53EF\u7F16\u8F91","Use this suggestion instead":"\u6539\u7528\u6B64\u5EFA\u8BAE","Steer the rethink, e.g. 'no, I meant the mobile bug'":'\u5F15\u5BFC\u91CD\u60F3\uFF0C\u4F8B\u5982\uFF1A"\u4E0D\uFF0C\u6211\u662F\u6307\u79FB\u52A8\u7AEF\u7684\u95EE\u9898"',"Steer note for Rethink":"\u91CD\u60F3\u7684\u5F15\u5BFC\u5907\u6CE8","Select a session first":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u4F1A\u8BDD","Read My Mind works on Claude sessions only":"\u8BFB\u5FC3\u672F\u4EC5\u9002\u7528\u4E8E Claude \u4F1A\u8BDD","Prompt sent":"\u63D0\u793A\u5DF2\u53D1\u9001","Inserted, press Enter in the terminal to send":"\u5DF2\u63D2\u5165\uFF0C\u5728\u7EC8\u7AEF\u4E2D\u6309 Enter \u53D1\u9001","Could not reach the session":"\u65E0\u6CD5\u8FDE\u63A5\u5230\u4F1A\u8BDD","Custom model endpoints":"\u81EA\u5B9A\u4E49\u6A21\u578B\u7AEF\u70B9","Point a harness at your own OpenAI-compatible server (llama.cpp, vLLM, DGX Spark, Azure AI Foundry, OpenRouter) instead of its native cloud backend. When on, the Run menu offers an extra entry per harness that supports it, per saved endpoint.":'\u8BA9\u5DE5\u5177\u6307\u5411\u60A8\u81EA\u5DF1\u7684\u517C\u5BB9 OpenAI \u670D\u52A1\u5668\uFF08llama.cpp\u3001vLLM\u3001DGX Spark\u3001Azure AI Foundry\u3001OpenRouter\uFF09\uFF0C\u800C\u975E\u5176\u539F\u751F\u4E91\u7AEF\u540E\u7AEF\u3002\u5F00\u542F\u540E\uFF0C"\u8FD0\u884C"\u83DC\u5355\u4F1A\u4E3A\u6BCF\u4E2A\u652F\u6301\u6B64\u529F\u80FD\u7684\u5DE5\u5177\u3001\u6BCF\u4E2A\u5DF2\u4FDD\u5B58\u7684\u7AEF\u70B9\u65B0\u589E\u4E00\u4E2A\u6761\u76EE\u3002',"Enable custom model endpoints":"\u542F\u7528\u81EA\u5B9A\u4E49\u6A21\u578B\u7AEF\u70B9","Adds a per-endpoint entry to the Run menu for every harness that can redirect to one.":'\u4E3A\u6BCF\u4E2A\u53EF\u91CD\u5B9A\u5411\u5230\u7AEF\u70B9\u7684\u5DE5\u5177\uFF0C\u5728"\u8FD0\u884C"\u83DC\u5355\u4E2D\u6DFB\u52A0\u5BF9\u5E94\u6761\u76EE\u3002',"No endpoints yet. Add one below to point a harness at a local or cloud OpenAI-compatible server.":"\u6682\u65E0\u7AEF\u70B9\u3002\u8BF7\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\uFF0C\u4EE5\u4FBF\u5C06\u5DE5\u5177\u6307\u5411\u672C\u5730\u6216\u4E91\u7AEF\u7684\u517C\u5BB9 OpenAI \u670D\u52A1\u5668\u3002",Discover:"\u53D1\u73B0\u6A21\u578B","+ Add endpoint":"+ \u6DFB\u52A0\u7AEF\u70B9","Add endpoint":"\u6DFB\u52A0\u7AEF\u70B9",Id:"ID","Short, stable \u2014 used in URLs, never shown to the CLI.":"\u7B80\u77ED\u4E14\u56FA\u5B9A \u2014 \u7528\u4E8E URL\uFF0C\u4E0D\u4F1A\u5C55\u793A\u7ED9 CLI\u3002",Label:"\u6807\u7B7E","Base URL":"\u57FA\u7840 URL","API key":"API \u5BC6\u94A5","Optional. Left blank on edit keeps the existing key.":"\u53EF\u9009\u3002\u7F16\u8F91\u65F6\u7559\u7A7A\u5C06\u4FDD\u7559\u73B0\u6709\u5BC6\u94A5\u3002","Auth header":"\u8BA4\u8BC1\u8BF7\u6C42\u5934","Never send both \u2014 some servers hang indefinitely.":"\u5207\u52FF\u540C\u65F6\u53D1\u9001\u4E24\u8005 \u2014 \u90E8\u5206\u670D\u52A1\u5668\u4F1A\u56E0\u6B64\u65E0\u9650\u671F\u6302\u8D77\u3002","Authorization: Bearer (default)":"Authorization: Bearer\uFF08\u9ED8\u8BA4\uFF09","api-key header (Azure)":"api-key \u8BF7\u6C42\u5934\uFF08Azure\uFF09","Default model":"\u9ED8\u8BA4\u6A21\u578B","What the Run-menu picker applies for this endpoint. Discover models first.":"\u8FD0\u884C\u83DC\u5355\u9009\u62E9\u5668\u4F1A\u4E3A\u6B64\u7AEF\u70B9\u5E94\u7528\u8BE5\u6A21\u578B\u3002\u8BF7\u5148\u53D1\u73B0\u53EF\u7528\u6A21\u578B\u3002","Custom Endpoints":"\u81EA\u5B9A\u4E49\u7AEF\u70B9","Choose a model":"\u9009\u62E9\u6A21\u578B","Currently loaded":"\u5F53\u524D\u5DF2\u52A0\u8F7D","Last used":"\u4E0A\u6B21\u4F7F\u7528","That endpoint no longer exists":"\u8BE5\u7AEF\u70B9\u5DF2\u4E0D\u5B58\u5728","No models discovered for this endpoint yet":"\u6B64\u7AEF\u70B9\u5C1A\u672A\u53D1\u73B0\u4EFB\u4F55\u6A21\u578B","Subagent Options":"\u5B50\u667A\u80FD\u4F53\u9009\u9879","Enable Tracking":"\u542F\u7528\u8DDF\u8E2A","Active Tab Only":"\u4EC5\u6D3B\u52A8\u6807\u7B7E\u9875","Image Watcher":"\u56FE\u50CF\u76D1\u89C6\u5668","Enable Globally":"\u5168\u5C40\u542F\u7528","Remote Access":"\u8FDC\u7A0B\u8BBF\u95EE","Cloudflare Tunnel":"Cloudflare \u96A7\u9053","Tunnel URL":"\u96A7\u9053\u5730\u5740",Updates:"\u66F4\u65B0","Current Version":"\u5F53\u524D\u7248\u672C","Check for Updates":"\u68C0\u67E5\u66F4\u65B0","Check now":"\u7ACB\u5373\u68C0\u67E5","Update available":"\u6709\u53EF\u7528\u66F4\u65B0","Update now":"\u7ACB\u5373\u66F4\u65B0","Show CPU and memory usage in header":"\u5728\u9876\u90E8\u680F\u663E\u793A CPU \u4E0E\u5185\u5B58\u4F7F\u7528\u60C5\u51B5","Show session lifecycle log button in header":"\u5728\u9876\u90E8\u680F\u663E\u793A\u4F1A\u8BDD\u751F\u547D\u5468\u671F\u65E5\u5FD7\u6309\u94AE","Show the response viewer (eye) button in header":"\u5728\u9876\u90E8\u680F\u663E\u793A\u56DE\u590D\u67E5\u770B\u5668\uFF08\u773C\u775B\uFF09\u6309\u94AE","Show the file viewer button in header (opens the file browser panel for the active session)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u6587\u4EF6\u67E5\u770B\u5668\u6309\u94AE\uFF08\u6253\u5F00\u5F53\u524D\u4F1A\u8BDD\u7684\u6587\u4EF6\u6D4F\u89C8\u5668\u9762\u677F\uFF09","Show the attachments button in header (opens the attachment history drawer)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u9644\u4EF6\u6309\u94AE\uFF08\u6253\u5F00\u9644\u4EF6\u5386\u53F2\u62BD\u5C49\uFF09","Show the multi-monitor button in the header (opens Codeman spanned across all displays)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u591A\u663E\u793A\u5668\u6309\u94AE\uFF08\u8DE8\u6240\u6709\u663E\u793A\u5668\u6253\u5F00 {name}\uFF09","Show the session manager button in the header (opens the session manager \u2014 sessions also stay reachable via the Ctrl+K palette)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u4F1A\u8BDD\u7BA1\u7406\u5668\u6309\u94AE\uFF08\u4E5F\u53EF\u901A\u8FC7 Ctrl+K \u9762\u677F\u8BBF\u95EE\u4F1A\u8BDD\uFF09","Show the away digest button in the header (opens the 'what happened while you were away' summary)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u79BB\u5F00\u671F\u95F4\u6458\u8981\u6309\u94AE","Show the Cron button in the footer toolbar (opens the cron jobs manager)":"\u5728\u5E95\u90E8\u5DE5\u5177\u680F\u663E\u793A\u5B9A\u65F6\u4EFB\u52A1\u6309\u94AE","Show a terminal redraw button in the header \u2014 refit the terminal to the current screen size (useful when switching between devices)":"\u5728\u9876\u90E8\u680F\u663E\u793A\u7EC8\u7AEF\u91CD\u7ED8\u6309\u94AE\uFF0C\u4EE5\u91CD\u65B0\u9002\u914D\u5F53\u524D\u5C4F\u5E55\u5927\u5C0F","Show folder path below tab name and allow tab bar to wrap into multiple rows":"\u5728\u6807\u7B7E\u540D\u79F0\u4E0B\u663E\u793A\u6587\u4EF6\u5939\u8DEF\u5F84\uFF0C\u5E76\u5141\u8BB8\u6807\u7B7E\u680F\u6362\u884C","Show Monitor panel at bottom right":"\u5728\u53F3\u4E0B\u89D2\u663E\u793A\u76D1\u89C6\u5668\u9762\u677F","Show active tools and file viewers in a floating panel":"\u5728\u6D6E\u52A8\u9762\u677F\u4E2D\u663E\u793A\u6D3B\u52A8\u5DE5\u5177\u4E0E\u6587\u4EF6\u67E5\u770B\u5668","Show file browser panel on the right side":"\u5728\u53F3\u4FA7\u663E\u793A\u6587\u4EF6\u6D4F\u89C8\u5668\u9762\u677F","Show the Subagents panel (independent from Monitor)":"\u663E\u793A\u5B50\u667A\u80FD\u4F53\u9762\u677F\uFF08\u72EC\u7ACB\u4E8E\u76D1\u89C6\u5668\uFF09","Monitor Claude Code background agents in real-time":"\u5B9E\u65F6\u76D1\u89C6 Claude Code \u540E\u53F0\u667A\u80FD\u4F53","Only show subagent windows when their parent tab is selected":"\u4EC5\u5728\u9009\u4E2D\u7236\u6807\u7B7E\u9875\u65F6\u663E\u793A\u5B50\u667A\u80FD\u4F53\u7A97\u53E3","Automatically detect and popup new images in session directories":"\u81EA\u52A8\u68C0\u6D4B\u5E76\u5F39\u51FA\u4F1A\u8BDD\u76EE\u5F55\u4E2D\u7684\u65B0\u56FE\u50CF","Expose Codeman via Cloudflare Tunnel for remote access":"\u901A\u8FC7 Cloudflare \u96A7\u9053\u8FDC\u7A0B\u8BBF\u95EE {name}","Codeman version currently running":"\u5F53\u524D\u8FD0\u884C\u7684{name}\u7248\u672C","Check GitHub for a newer Codeman release":"\u68C0\u67E5 GitHub \u4E0A\u662F\u5426\u6709\u65B0\u7248 {name}",Input:"\u8F93\u5165",Font:"\u5B57\u4F53","Terminal font":"\u7EC8\u7AEF\u5B57\u4F53","Prepended to the built-in stack, so fallbacks (including bundled Nerd Font symbols) keep working. Must be installed on this device. Leave empty for the default.":"\u7F6E\u4E8E\u5185\u7F6E\u5B57\u4F53\u6808\u4E4B\u524D\uFF0C\u56DE\u9000\u5B57\u4F53\uFF08\u5305\u62EC\u5185\u7F6E\u7684 Nerd Font \u56FE\u6807\uFF09\u4ECD\u7136\u751F\u6548\u3002\u9700\u5DF2\u5B89\u88C5\u5728\u672C\u8BBE\u5907\u4E0A\u3002\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4\u503C\u3002","Normal font weight":"\u5E38\u89C4\u5B57\u91CD","Weight for ordinary terminal text. Lowering it widens the step up to bold, which for a family shipping only a regular and a bold face is the only cue bold text carries. Needs a family with faces at that weight; the bundled font covers 100 to 800.":"\u7EC8\u7AEF\u666E\u901A\u6587\u672C\u7684\u5B57\u91CD\u3002\u8C03\u4F4E\u53EF\u62C9\u5927\u4E0E\u7C97\u4F53\u4E4B\u95F4\u7684\u5DEE\u8DDD\uFF1B\u5BF9\u4E8E\u53EA\u63D0\u4F9B\u5E38\u89C4\u548C\u7C97\u4F53\u4E24\u79CD\u5B57\u5F62\u7684\u5B57\u4F53\uFF0C\u8FD9\u4E00\u5DEE\u8DDD\u662F\u7C97\u4F53\u6587\u672C\u552F\u4E00\u7684\u89C6\u89C9\u63D0\u793A\u3002\u9700\u8981\u5B57\u4F53\u5177\u5907\u8BE5\u5B57\u91CD\u7684\u5B57\u5F62\uFF0C\u5185\u7F6E\u5B57\u4F53\u8986\u76D6 100 \u81F3 800\u3002","Bold font weight":"\u7C97\u4F53\u5B57\u91CD","Weight for bold terminal text. Only useful with a family carrying something heavier than its bold face.":"\u7EC8\u7AEF\u7C97\u4F53\u6587\u672C\u7684\u5B57\u91CD\u3002\u4EC5\u5F53\u5B57\u4F53\u63D0\u4F9B\u6BD4\u5176\u7C97\u4F53\u66F4\u91CD\u7684\u5B57\u5F62\u65F6\u624D\u6709\u610F\u4E49\u3002","Local Echo":"\u672C\u5730\u56DE\u663E","CJK Input":"\u4E2D\u65E5\u97E9\u8F93\u5165","Extended Keyboard Bar":"\u6269\u5C55\u952E\u76D8\u680F","Gesture Control (beta)":"\u624B\u52BF\u63A7\u5236\uFF08\u6D4B\u8BD5\u7248\uFF09","Wheel Scrolls Local History":"\u6EDA\u8F6E\u6EDA\u52A8\u672C\u5730\u5386\u53F2","Auto Copy Selection":"\u81EA\u52A8\u590D\u5236\u9009\u4E2D\u5185\u5BB9","Selection & clipboard":"\u9009\u4E2D\u4E0E\u526A\u8D34\u677F","Auto Copy: selection copied":"\u81EA\u52A8\u590D\u5236\uFF1A\u5DF2\u590D\u5236\u9009\u4E2D\u5185\u5BB9","Auto Copy failed: the browser blocked clipboard access":"\u81EA\u52A8\u590D\u5236\u5931\u8D25\uFF1A\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u526A\u8D34\u677F\u8BBF\u95EE","Selection too large to copy automatically. Press Ctrl+C.":"\u9009\u4E2D\u5185\u5BB9\u8FC7\u5927\uFF0C\u65E0\u6CD5\u81EA\u52A8\u590D\u5236\u3002\u8BF7\u6309 Ctrl+C\u3002","Instant typing feedback with local echo":"\u901A\u8FC7\u672C\u5730\u56DE\u663E\u5373\u65F6\u663E\u793A\u8F93\u5165","Dedicated IME input field for CJK languages":"\u4E3A\u4E2D\u65E5\u97E9\u8BED\u8A00\u63D0\u4F9B\u4E13\u7528\u8F93\u5165\u6CD5\u6587\u672C\u6846","Extra keys: Tab, Esc, arrows, Ctrl+O":"\u9644\u52A0\u6309\u952E\uFF1ATab\u3001Esc\u3001\u65B9\u5411\u952E\u3001Ctrl+O","Startup Mode":"\u542F\u52A8\u6A21\u5F0F","Skip Permissions (default)":"\u8DF3\u8FC7\u6743\u9650\u786E\u8BA4\uFF08\u9ED8\u8BA4\uFF09","Auto (classifier-guarded, low prompts)":"\u81EA\u52A8\uFF08\u5206\u7C7B\u5668\u4FDD\u62A4\uFF0C\u8F83\u5C11\u63D0\u793A\uFF09","Normal (with prompts)":"\u666E\u901A\uFF08\u663E\u793A\u63D0\u793A\uFF09","Allowed Tools Only":"\u4EC5\u5141\u8BB8\u6307\u5B9A\u5DE5\u5177","Allowed Tools":"\u5141\u8BB8\u7684\u5DE5\u5177","Comma-separated list of tools to allow":"\u4EE5\u9017\u53F7\u5206\u9694\u5141\u8BB8\u4F7F\u7528\u7684\u5DE5\u5177","Enable Ralph / Todo Tracker":"\u542F\u7528 Ralph / \u5F85\u529E\u8DDF\u8E2A\u5668","Claude Permissions":"Claude \u6743\u9650","Agent Teams":"\u667A\u80FD\u4F53\u56E2\u961F","Claude Model":"Claude \u6A21\u578B","1M Opus Context":"Opus 100 \u4E07\u4E0A\u4E0B\u6587","Remote auto-reconnect":"\u8FDC\u7A0B\u81EA\u52A8\u91CD\u8FDE","Thinking Effort":"\u601D\u8003\u5F3A\u5EA6",Low:"\u4F4E",Medium:"\u4E2D",High:"\u9AD8",Max:"\u6700\u9AD8","Nice Priority":"Nice \u4F18\u5148\u7EA7","Enable Nice Priority Reduction":"\u542F\u7528 Nice \u4F18\u5148\u7EA7\u8C03\u6574","Nice Value":"Nice \u503C","Bypass Approvals and Sandbox":"\u7ED5\u8FC7\u5BA1\u6279\u4E0E\u6C99\u7BB1","Default Model":"\u9ED8\u8BA4\u6A21\u578B","Show Optimizer Recommendations":"\u663E\u793A\u4F18\u5316\u5668\u5EFA\u8BAE","Agent Type Overrides":"\u6309\u667A\u80FD\u4F53\u7C7B\u578B\u8986\u76D6","Use Default":"\u4F7F\u7528\u9ED8\u8BA4\u503C","Enable Notifications":"\u542F\u7528\u901A\u77E5","Master toggle for all notification layers":"\u6240\u6709\u901A\u77E5\u5C42\u7684\u603B\u5F00\u5173","Browser Notifications":"\u6D4F\u89C8\u5668\u901A\u77E5","Audio Alerts":"\u58F0\u97F3\u63D0\u9192","Push Notifications":"\u63A8\u9001\u901A\u77E5","Notification Levels":"\u901A\u77E5\u7EA7\u522B","Toast display time":"\u5F39\u51FA\u63D0\u793A\u663E\u793A\u65F6\u957F","How long the corner pop-ups stay on screen.":"\u89D2\u843D\u5F39\u51FA\u63D0\u793A\u5728\u5C4F\u5E55\u4E0A\u505C\u7559\u7684\u65F6\u957F\u3002","Browser notification display time":"\u6D4F\u89C8\u5668\u901A\u77E5\u663E\u793A\u65F6\u957F","How long a desktop notification stays up before Codeman closes it. Your OS may close it sooner.":"\u684C\u9762\u901A\u77E5\u5728 Codeman \u5173\u95ED\u5B83\u4E4B\u524D\u4FDD\u6301\u663E\u793A\u7684\u65F6\u957F\u3002\u7CFB\u7EDF\u53EF\u80FD\u4F1A\u66F4\u65E9\u5173\u95ED\u5B83\u3002",Critical:"\u4E25\u91CD","Per-Event Settings":"\u6309\u4E8B\u4EF6\u8BBE\u7F6E","Permission prompts":"\u6743\u9650\u63D0\u793A","Questions from Claude":"Claude \u63D0\u95EE","Session idle":"\u4F1A\u8BDD\u7A7A\u95F2","Response complete":"\u56DE\u590D\u5B8C\u6210","Respawn cycles":"\u91CD\u751F\u5FAA\u73AF","Task complete":"\u4EFB\u52A1\u5B8C\u6210","Subagent activity":"\u5B50\u667A\u80FD\u4F53\u6D3B\u52A8",Browser:"\u6D4F\u89C8\u5668",Audio:"\u58F0\u97F3",Push:"\u63A8\u9001","Voice Input":"\u8BED\u97F3\u8F93\u5165",Provider:"\u670D\u52A1\u5546","Active Provider":"\u5F53\u524D\u670D\u52A1\u5546","API Key":"API \u5BC6\u94A5","Domain Keywords":"\u9886\u57DF\u5173\u952E\u8BCD","Input Mode":"\u8F93\u5165\u6A21\u5F0F","Direct to input":"\u76F4\u63A5\u8F93\u5165","Compose dialog":"\u7F16\u8F91\u5BF9\u8BDD\u6846","Keyboard Shortcuts":"\u952E\u76D8\u5FEB\u6377\u952E","Customize keyboard shortcuts. Click the binding to capture a new key combination.":"\u81EA\u5B9A\u4E49\u952E\u76D8\u5FEB\u6377\u952E\u3002\u70B9\u51FB\u6309\u952E\u7EC4\u5408\u5373\u53EF\u5F55\u5165\u65B0\u7684\u7EC4\u5408\u3002","Show Shortcuts":"\u663E\u793A\u5FEB\u6377\u952E","Full shortcut reference":"\u5B8C\u6574\u5FEB\u6377\u952E\u53C2\u8003","Compose prompt":"\u64B0\u5199\u63D0\u793A\u8BCD","Open a session to attach a file":"\u8BF7\u5148\u6253\u5F00\u4E00\u4E2A\u4F1A\u8BDD\u518D\u6DFB\u52A0\u9644\u4EF6","Only image or video files are supported":"\u4EC5\u652F\u6301\u56FE\u7247\u6216\u89C6\u9891\u6587\u4EF6","Compose prompt, draft saved":"\u64B0\u5199\u63D0\u793A\u8BCD\uFF0C\u8349\u7A3F\u5DF2\u4FDD\u5B58","Resume saved prompt draft":"\u7EE7\u7EED\u7F16\u8F91\u5DF2\u4FDD\u5B58\u7684\u63D0\u793A\u8BCD\u8349\u7A3F","Enter adds a new line":"\u6309 Enter \u6362\u884C","Write your prompt\u2026":"\u8BF7\u8F93\u5165\u63D0\u793A\u8BCD\u2026","Use terminal keyboard":"\u4F7F\u7528\u7EC8\u7AEF\u952E\u76D8","Uploading\u2026":"\u4E0A\u4F20\u4E2D\u2026","Needs you":"\u9700\u8981\u4F60","Current sessions":"\u5F53\u524D\u4F1A\u8BDD","Past sessions":"\u5386\u53F2\u4F1A\u8BDD","Show all past sessions":"\u663E\u793A\u5168\u90E8\u5386\u53F2\u4F1A\u8BDD","Show fewer":"\u6536\u8D77","Choose what to run":"\u9009\u62E9\u8FD0\u884C\u65B9\u5F0F","Web / URL":"\u7F51\u9875 / \u94FE\u63A5","Add URL\u2026":"\u6DFB\u52A0\u94FE\u63A5\u2026","Nothing running. Hit Run to start something.":"\u5F53\u524D\u6CA1\u6709\u8FD0\u884C\u4E2D\u7684\u4F1A\u8BDD\u3002\u70B9\u51FB\u201C\u8FD0\u884C\u201D\u5F00\u59CB\u3002","No past conversations yet":"\u5C1A\u65E0\u5386\u53F2\u5BF9\u8BDD","Loading\u2026":"\u52A0\u8F7D\u4E2D\u2026","Overview Home Screen":"\u6982\u89C8\u4E3B\u9875","On phones, the C logo opens a session overview (needs you / spaces / idle) instead of the welcome screen":"\u5728\u624B\u673A\u4E0A\uFF0C\u70B9\u51FB C \u56FE\u6807\u6253\u5F00\u4F1A\u8BDD\u6982\u89C8\uFF08\u9700\u8981\u4F60 / \u7A7A\u95F4 / \u7A7A\u95F2\uFF09\uFF0C\u800C\u4E0D\u662F\u6B22\u8FCE\u9875",Phone:"\u624B\u673A","Open tabs":"\u6253\u5F00\u7684\u6807\u7B7E","Session Options":"\u4F1A\u8BDD\u9009\u9879","Session Name":"\u4F1A\u8BDD\u540D\u79F0","Session Color":"\u4F1A\u8BDD\u989C\u8272","Working Directory":"\u5DE5\u4F5C\u76EE\u5F55","Set working directory":"\u8BBE\u7F6E\u5DE5\u4F5C\u76EE\u5F55","Working folder":"\u5DE5\u4F5C\u76EE\u5F55","Where this session's CLI runs, on the machine hosting Codeman.":"\u6B64\u4F1A\u8BDD\u7684 CLI \u8FD0\u884C\u6240\u5728\u7684\u76EE\u5F55\uFF0C\u4F4D\u4E8E\u8FD0\u884C{name}\u7684\u673A\u5668\u4E0A\u3002","Where this session's CLI runs, on the remote host it reaches over SSH, not on this machine.":"\u6B64\u4F1A\u8BDD\u7684 CLI \u8FD0\u884C\u6240\u5728\u7684\u76EE\u5F55\uFF0C\u4F4D\u4E8E\u901A\u8FC7 SSH \u8FDE\u63A5\u7684\u8FDC\u7A0B\u4E3B\u673A\u4E0A\uFF0C\u800C\u4E0D\u662F\u672C\u673A\u3002","On the machine hosting Codeman, mounted into the Docker container this session's CLI runs in.":"\u4F4D\u4E8E\u8FD0\u884C{name}\u7684\u673A\u5668\u4E0A\uFF0C\u5E76\u6302\u8F7D\u5230\u6B64\u4F1A\u8BDD CLI \u8FD0\u884C\u6240\u5728\u7684 Docker \u5BB9\u5668\u4E2D\u3002","Path copied":"\u8DEF\u5F84\u5DF2\u590D\u5236","Copy failed":"\u590D\u5236\u5931\u8D25","Resume Conversation":"\u7EE7\u7EED\u5BF9\u8BDD","Close Session":"\u5173\u95ED\u4F1A\u8BDD","Choose how to close":"\u9009\u62E9\u5173\u95ED\u65B9\u5F0F","Tmux session keeps running in background":"Tmux \u4F1A\u8BDD\u7EE7\u7EED\u5728\u540E\u53F0\u8FD0\u884C","Terminate the session completely":"\u5F7B\u5E95\u7EC8\u6B62\u4F1A\u8BDD","Cancel close session":"\u53D6\u6D88\u5173\u95ED\u4F1A\u8BDD","Case Name":"\u6848\u4F8B\u540D\u79F0","Folder Path":"\u6587\u4EF6\u5939\u8DEF\u5F84","Default Working Directory":"\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55","Default directory for new sessions.":"\u65B0\u4F1A\u8BDD\u7684\u9ED8\u8BA4\u76EE\u5F55\u3002","Default CLAUDE.md Template":"\u9ED8\u8BA4 CLAUDE.md \u6A21\u677F","Used when creating new cases. Leave empty for built-in template.":"\u521B\u5EFA\u65B0\u6848\u4F8B\u65F6\u4F7F\u7528\uFF1B\u7559\u7A7A\u5219\u4F7F\u7528\u5185\u7F6E\u6A21\u677F\u3002","Remote Path":"\u8FDC\u7A0B\u8DEF\u5F84","SSH Host/IP":"SSH \u4E3B\u673A/IP","SSH Username":"SSH \u7528\u6237\u540D","SSH Port":"SSH \u7AEF\u53E3","Identity File":"\u8EAB\u4EFD\u6587\u4EF6","Jump Host":"\u8DF3\u677F\u4E3B\u673A","Advanced SSH":"\u9AD8\u7EA7 SSH","Discover existing sessions":"\u53D1\u73B0\u73B0\u6709\u4F1A\u8BDD","Workspace Path":"\u5DE5\u4F5C\u533A\u8DEF\u5F84","Container settings (optional, sensible defaults)":"\u5BB9\u5668\u8BBE\u7F6E\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u503C\u5408\u7406\uFF09",Template:"\u6A21\u677F",Network:"\u7F51\u7EDC",CPUs:"CPU \u6570",Memory:"\u5185\u5B58",GPUs:"GPU","Cron Jobs":"\u5B9A\u65F6\u4EFB\u52A1","+ New Job":"+ \u65B0\u5EFA\u4EFB\u52A1","New Cron Job":"\u65B0\u5EFA\u5B9A\u65F6\u4EFB\u52A1",Schedule:"\u8BA1\u5212","Schedule Type":"\u8BA1\u5212\u7C7B\u578B",Once:"\u4E00\u6B21",Interval:"\u95F4\u9694",Daily:"\u6BCF\u5929",Weekly:"\u6BCF\u5468","Run At":"\u8FD0\u884C\u65F6\u95F4","Every (minutes)":"\u6BCF\u9694\uFF08\u5206\u949F\uFF09",Weekdays:"\u5DE5\u4F5C\u65E5","Times use the server's local timezone.":"\u65F6\u95F4\u4F7F\u7528\u670D\u52A1\u5668\u672C\u5730\u65F6\u533A\u3002","All Events":"\u5168\u90E8\u4E8B\u4EF6",Created:"\u5DF2\u521B\u5EFA",Started:"\u5DF2\u542F\u52A8",Exit:"\u9000\u51FA",Deleted:"\u5DF2\u5220\u9664",Recovered:"\u5DF2\u6062\u590D","Stale Cleaned":"\u5DF2\u6E05\u7406\u8FC7\u671F\u9879","Mux Died":"Mux \u5DF2\u7EC8\u6B62","Server Started":"\u670D\u52A1\u5668\u5DF2\u542F\u52A8","Server Stopped":"\u670D\u52A1\u5668\u5DF2\u505C\u6B62",Extra:"\u9644\u52A0\u4FE1\u606F","Token Usage Statistics":"Token \u4F7F\u7528\u7EDF\u8BA1","Daily Breakdown":"\u6BCF\u65E5\u660E\u7EC6","Export JSON":"\u5BFC\u51FA JSON","Export MD":"\u5BFC\u51FA Markdown","Settings saved":"\u8BBE\u7F6E\u5DF2\u4FDD\u5B58","Settings applied":"\u8BBE\u7F6E\u5DF2\u5E94\u7528","Save and keep Settings open":"\u4FDD\u5B58\u5E76\u4FDD\u6301\u8BBE\u7F6E\u6253\u5F00","Settings saved locally":"\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u5230\u672C\u673A","Tunnel active":"\u96A7\u9053\u5DF2\u542F\u7528","Tunnel starting \u2014 QR code will appear when ready...":"\u96A7\u9053\u6B63\u5728\u542F\u52A8\uFF0C\u51C6\u5907\u597D\u540E\u5C06\u663E\u793A\u4E8C\u7EF4\u7801\u2026","Push notifications enabled":"\u63A8\u9001\u901A\u77E5\u5DF2\u542F\u7528","Push notifications disabled":"\u63A8\u9001\u901A\u77E5\u5DF2\u7981\u7528","Permission Required":"\u9700\u8981\u6388\u6743","Waiting for Input":"\u7B49\u5F85\u8F93\u5165","Question Asked":"Claude \u6B63\u5728\u63D0\u95EE","Response Complete":"\u56DE\u590D\u5B8C\u6210","Task Completed":"\u4EFB\u52A1\u5DF2\u5B8C\u6210","Teammate Idle":"\u961F\u53CB\u7A7A\u95F2","Session Error":"\u4F1A\u8BDD\u9519\u8BEF","Respawn Blocked":"\u91CD\u751F\u5DF2\u963B\u6B62","Task Complete":"\u4EFB\u52A1\u5B8C\u6210","Copied to clipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","Nothing to copy":"\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9","Session not found":"\u672A\u627E\u5230\u4F1A\u8BDD","Could not open a new window for this session":"\u65E0\u6CD5\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00\u6B64\u4F1A\u8BDD","Could not open a new window for this preview":"\u65E0\u6CD5\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00\u6B64\u9884\u89C8","Could not open a new window for this dashboard":"\u65E0\u6CD5\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00\u6B64\u7F51\u9875\u6807\u7B7E","That session has closed; dictation not sent":"\u8BE5\u4F1A\u8BDD\u5DF2\u5173\u95ED\uFF0C\u8BED\u97F3\u8F93\u5165\u672A\u53D1\u9001",Copy:"\u590D\u5236",Line:"\u6574\u884C","Clear selection":"\u6E05\u9664\u9009\u62E9","Failed to copy":"\u590D\u5236\u5931\u8D25","Checking\u2026":"\u6B63\u5728\u68C0\u67E5\u2026","Starting\u2026":"\u6B63\u5728\u542F\u52A8\u2026","Starting update\u2026":"\u6B63\u5728\u5F00\u59CB\u66F4\u65B0\u2026","Queued\u2026":"\u5DF2\u6392\u961F\u2026","Preparing\u2026":"\u6B63\u5728\u51C6\u5907\u2026","Stashing local changes\u2026":"\u6B63\u5728\u6682\u5B58\u672C\u5730\u66F4\u6539\u2026","Fetching release\u2026":"\u6B63\u5728\u83B7\u53D6\u53D1\u884C\u7248\u2026","Checking out release\u2026":"\u6B63\u5728\u68C0\u51FA\u53D1\u884C\u7248\u2026","Installing dependencies\u2026":"\u6B63\u5728\u5B89\u88C5\u4F9D\u8D56\u2026","Building\u2026":"\u6B63\u5728\u6784\u5EFA\u2026","Restarting Codeman\u2026":"\u6B63\u5728\u91CD\u542F {name}\u2026","Try again":"\u91CD\u8BD5","Could not check for updates. Try again later.":"\u65E0\u6CD5\u68C0\u67E5\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","The previous version is still running.":"\u5148\u524D\u7248\u672C\u4ECD\u5728\u8FD0\u884C\u3002","Advanced Options":"\u9AD8\u7EA7\u9009\u9879","Advanced container settings":"\u9AD8\u7EA7\u5BB9\u5668\u8BBE\u7F6E",Basics:"\u57FA\u672C\u8BBE\u7F6E",Behavior:"\u884C\u4E3A",Alerts:"\u63D0\u9192",Limits:"\u9650\u5236",Paths:"\u8DEF\u5F84",Notes:"\u5907\u6CE8",Context:"\u4E0A\u4E0B\u6587",Duration:"\u6301\u7EED\u65F6\u95F4",Iterations:"\u8FED\u4EE3\u6B21\u6570",Elapsed:"\u5DF2\u7528\u65F6\u95F4",Launch:"\u542F\u52A8","Launch Command":"\u542F\u52A8\u547D\u4EE4","Background Agents":"\u540E\u53F0\u667A\u80FD\u4F53","Background Tasks":"\u540E\u53F0\u4EFB\u52A1",Tasks:"\u4EFB\u52A1","Explore Tasks":"\u63A2\u7D22\u4EFB\u52A1","Implement Tasks":"\u5B9E\u73B0\u4EFB\u52A1","Test Tasks":"\u6D4B\u8BD5\u4EFB\u52A1","Review Tasks":"\u5BA1\u67E5\u4EFB\u52A1","Agent Type":"\u667A\u80FD\u4F53\u7C7B\u578B","Implementation Plan":"\u5B9E\u65BD\u8BA1\u5212",Plan:"\u8BA1\u5212","Plan:":"\u8BA1\u5212\uFF1A","Plan Usage Limits":"\u5957\u9910\u4F7F\u7528\u9650\u5236","Plan Wizard Agents":"\u8BA1\u5212\u5411\u5BFC\u667A\u80FD\u4F53","Fix Plan Menu":"\u4FEE\u590D\u8BA1\u5212\u83DC\u5355","View Fix Plan":"\u67E5\u770B\u4FEE\u590D\u8BA1\u5212","Regenerate Plan":"\u91CD\u65B0\u751F\u6210\u8BA1\u5212","Cancel plan generation":"\u53D6\u6D88\u751F\u6210\u8BA1\u5212","Describe your task below. Claude will generate an implementation plan with testing steps.":"\u8BF7\u5728\u4E0B\u65B9\u63CF\u8FF0\u4EFB\u52A1\uFF0CClaude \u5C06\u751F\u6210\u5305\u542B\u6D4B\u8BD5\u6B65\u9AA4\u7684\u5B9E\u65BD\u8BA1\u5212\u3002","What do you want to build?":"\u4F60\u60F3\u6784\u5EFA\u4EC0\u4E48\uFF1F","A brief description...":"\u7B80\u8981\u63CF\u8FF0\u2026",Describe:"\u63CF\u8FF0",Enhanced:"\u589E\u5F3A","Enhanced: parallel subagents + verification (slower but more thorough)":"\u589E\u5F3A\uFF1A\u5E76\u884C\u5B50\u667A\u80FD\u4F53 + \u9A8C\u8BC1\uFF08\u901F\u5EA6\u8F83\u6162\uFF0C\u4F46\u66F4\u5168\u9762\uFF09",Standard:"\u6807\u51C6","Single-pass generation with Opus 4.5":"\u4F7F\u7528 Opus 4.5 \u5355\u8F6E\u751F\u6210","Initializing deep reasoning model":"\u6B63\u5728\u521D\u59CB\u5316\u6DF1\u5EA6\u63A8\u7406\u6A21\u578B","Starting Opus 4.5...":"\u6B63\u5728\u542F\u52A8 Opus 4.5\u2026","Auto-launch when plan completes":"\u8BA1\u5212\u5B8C\u6210\u540E\u81EA\u52A8\u542F\u52A8","Auto-accept prompts":"\u81EA\u52A8\u63A5\u53D7\u63D0\u793A","Presses Enter for plan approvals and default question options":"\u5BF9\u8BA1\u5212\u5BA1\u6279\u548C\u9ED8\u8BA4\u95EE\u9898\u9009\u9879\u81EA\u52A8\u6309 Enter","Auto-accepts, auto-clears, agent completions":"\u81EA\u52A8\u63A5\u53D7\u3001\u81EA\u52A8\u6E05\u7406\u548C\u667A\u80FD\u4F53\u5B8C\u6210\u63D0\u9192","Or click Run to start":"\u6216\u70B9\u51FB\u201C\u8FD0\u884C\u201D\u5F00\u59CB","to edit your task, or":"\u4EE5\u7F16\u8F91\u4EFB\u52A1\uFF0C\u6216","to continue without a plan":"\u4EE5\u4E0D\u4F7F\u7528\u8BA1\u5212\u76F4\u63A5\u7EE7\u7EED",Respawn:"\u91CD\u751F","Respawn loop":"\u91CD\u751F\u5FAA\u73AF","Enable Respawn":"\u542F\u7528\u91CD\u751F","Stop Respawn":"\u505C\u6B62\u91CD\u751F","Auto-resume when usage limit resets":"\u4F7F\u7528\u9650\u5236\u91CD\u7F6E\u540E\u81EA\u52A8\u7EE7\u7EED","Auto-restart sessions when context fills up (usually not needed)":"\u4E0A\u4E0B\u6587\u5DF2\u6EE1\u65F6\u81EA\u52A8\u91CD\u542F\u4F1A\u8BDD\uFF08\u901A\u5E38\u4E0D\u9700\u8981\uFF09","Auto-Compact":"\u81EA\u52A8\u538B\u7F29","Auto-Clear":"\u81EA\u52A8\u6E05\u7A7A","Token Management":"Token \u7BA1\u7406","Use 1M token context window":"\u4F7F\u7528 100 \u4E07 Token \u4E0A\u4E0B\u6587\u7A97\u53E3","Use 1M token context window for new sessions":"\u65B0\u4F1A\u8BDD\u4F7F\u7528 100 \u4E07 Token \u4E0A\u4E0B\u6587\u7A97\u53E3","Full context reset at threshold (use higher than compact)":"\u8FBE\u5230\u9608\u503C\u65F6\u5B8C\u5168\u91CD\u7F6E\u4E0A\u4E0B\u6587\uFF08\u9608\u503C\u5E94\u9AD8\u4E8E\u538B\u7F29\u9608\u503C\uFF09","Idle Threshold":"\u7A7A\u95F2\u9608\u503C","Max Iterations":"\u6700\u5927\u8FED\u4EE3\u6B21\u6570","Max Iterations:":"\u6700\u5927\u8FED\u4EE3\u6B21\u6570\uFF1A","Max Todos":"\u6700\u5927\u5F85\u529E\u6570","Todo Expiration":"\u5F85\u529E\u8FC7\u671F\u65F6\u95F4","Completion Phrase":"\u5B8C\u6210\u77ED\u8BED","Completion Phrase:":"\u5B8C\u6210\u77ED\u8BED\uFF1A","Phrase Claude outputs when loop is complete (without <promise> tags)":"\u5FAA\u73AF\u5B8C\u6210\u65F6 Claude \u8F93\u51FA\u7684\u77ED\u8BED\uFF08\u4E0D\u542B <promise> \u6807\u7B7E\uFF09","Prompt to send when idle":"\u7A7A\u95F2\u65F6\u53D1\u9001\u7684\u63D0\u793A\u8BCD","Prompt to send into the session":"\u53D1\u9001\u5230\u4F1A\u8BDD\u7684\u63D0\u793A\u8BCD","Prompt Source":"\u63D0\u793A\u8BCD\u6765\u6E90","Prompt File Path":"\u63D0\u793A\u8BCD\u6587\u4EF6\u8DEF\u5F84","Prompt file path":"\u63D0\u793A\u8BCD\u6587\u4EF6\u8DEF\u5F84","Prompt Preview":"\u63D0\u793A\u8BCD\u9884\u89C8","Load Preset":"\u52A0\u8F7D\u9884\u8BBE",Presets:"\u9884\u8BBE","Apply preset":"\u5E94\u7528\u9884\u8BBE","Save Preset":"\u4FDD\u5B58\u9884\u8BBE","Save Respawn Preset":"\u4FDD\u5B58\u91CD\u751F\u9884\u8BBE","Save current config as preset":"\u5C06\u5F53\u524D\u914D\u7F6E\u4FDD\u5B58\u4E3A\u9884\u8BBE","Preset Name":"\u9884\u8BBE\u540D\u79F0","Description (optional)":"\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09","When to use this preset":"\u6B64\u9884\u8BBE\u7684\u9002\u7528\u573A\u666F","Start Loop":"\u542F\u52A8\u5FAA\u73AF","Start Ralph Loop":"\u542F\u52A8 Ralph \u5FAA\u73AF","Start Ralph Loop \u2192":"\u542F\u52A8 Ralph \u5FAA\u73AF \u2192","Enable Tracker":"\u542F\u7528\u8DDF\u8E2A\u5668","Ralph / Todo":"Ralph / \u5F85\u529E","Ralph / Todo Tracker":"Ralph / \u5F85\u529E\u8DDF\u8E2A\u5668","Cycle Steps":"\u5FAA\u73AF\u6B65\u9AA4","1. Update Prompt":"1. \u66F4\u65B0\u63D0\u793A\u8BCD","2. Send /clear":"2. \u53D1\u9001 /clear","3. Send /init":"3. \u53D1\u9001 /init","4. Kickstart Prompt":"4. \u542F\u52A8\u63D0\u793A\u8BCD","Sent only when /init completes but Claude stays idle \xB7 Auto-accept presses Enter for plan approvals and default options":"\u4EC5\u5728 /init \u5B8C\u6210\u540E Claude \u4ECD\u7A7A\u95F2\u65F6\u53D1\u9001\uFF1B\u81EA\u52A8\u63A5\u53D7\u4F1A\u5BF9\u8BA1\u5212\u5BA1\u6279\u548C\u9ED8\u8BA4\u9009\u9879\u6309 Enter","One autonomous work cycle: whenever Claude goes idle, Codeman sends the update prompt, optionally runs /clear + /init, and kickstarts the next round \u2014 repeating for the chosen duration. All settings below belong to this loop; configure them, then press Enable.":"\u4E00\u4E2A\u81EA\u4E3B\u5DE5\u4F5C\u5FAA\u73AF\uFF1AClaude \u6BCF\u6B21\u7A7A\u95F2\u65F6\uFF0C{name}\u90FD\u4F1A\u53D1\u9001\u66F4\u65B0\u63D0\u793A\u8BCD\uFF0C\u53EF\u9009\u6267\u884C /clear + /init\uFF0C\u5E76\u542F\u52A8\u4E0B\u4E00\u8F6E\uFF0C\u6301\u7EED\u5230\u8BBE\u5B9A\u65F6\u957F\u3002\u4E0B\u65B9\u8BBE\u7F6E\u5747\u5C5E\u4E8E\u6B64\u5FAA\u73AF\uFF1B\u914D\u7F6E\u540E\u70B9\u51FB\u201C\u542F\u7528\u201D\u3002",'If Claude pauses on a usage limit ("limit reached \xB7 resets 3pm"), Codeman waits for the reset time and automatically continues the work. Independent of the respawn loop below.':"\u5982\u679C Claude \u56E0\u4F7F\u7528\u9650\u5236\u6682\u505C\uFF08\u201Climit reached \xB7 resets 3pm\u201D\uFF09\uFF0C{name}\u4F1A\u7B49\u5F85\u9650\u5236\u91CD\u7F6E\u5E76\u81EA\u52A8\u7EE7\u7EED\u5DE5\u4F5C\u3002\u6B64\u529F\u80FD\u72EC\u7ACB\u4E8E\u4E0B\u65B9\u7684\u91CD\u751F\u5FAA\u73AF\u3002","Search sessions, events, files\u2026":"\u641C\u7D22\u4F1A\u8BDD\u3001\u4E8B\u4EF6\u548C\u6587\u4EF6\u2026","Search across sessions":"\u8DE8\u4F1A\u8BDD\u641C\u7D22","Filter by case":"\u6309\u6848\u4F8B\u7B5B\u9009","Filter by date range":"\u6309\u65E5\u671F\u8303\u56F4\u7B5B\u9009","Filter by session status":"\u6309\u4F1A\u8BDD\u72B6\u6001\u7B5B\u9009","Filter files...":"\u7B5B\u9009\u6587\u4EF6\u2026","Any status":"\u4EFB\u610F\u72B6\u6001","Any time":"\u4EFB\u610F\u65F6\u95F4","Last hour":"\u6700\u8FD1\u4E00\u5C0F\u65F6","Last 7 Days":"\u6700\u8FD1 7 \u5929","Past 24h":"\u8FC7\u53BB 24 \u5C0F\u65F6","Past 7 days":"\u8FC7\u53BB 7 \u5929","Past 30 days":"\u8FC7\u53BB 30 \u5929","Since last visit":"\u81EA\u4E0A\u6B21\u8BBF\u95EE\u4EE5\u6765",Since:"\u5F00\u59CB\u65F6\u95F4",Until:"\u7ED3\u675F\u65F6\u95F4","Away digest range":"\u79BB\u5F00\u671F\u95F4\u6458\u8981\u8303\u56F4","Open the digest to load recent activity":"\u6253\u5F00\u6458\u8981\u4EE5\u52A0\u8F7D\u6700\u8FD1\u6D3B\u52A8","Refresh away digest":"\u5237\u65B0\u79BB\u5F00\u671F\u95F4\u6458\u8981","Refresh summary":"\u5237\u65B0\u6458\u8981","Select a session to view files":"\u9009\u62E9\u4F1A\u8BDD\u4EE5\u67E5\u770B\u6587\u4EF6","Select a session to view summary":"\u9009\u62E9\u4F1A\u8BDD\u4EE5\u67E5\u770B\u6458\u8981","Select an agent to view details":"\u9009\u62E9\u667A\u80FD\u4F53\u4EE5\u67E5\u770B\u8BE6\u60C5","Select a run to view its agents":"\u9009\u62E9\u4E00\u6B21\u8FD0\u884C\u4EE5\u67E5\u770B\u5176\u667A\u80FD\u4F53","Source type filter":"\u6765\u6E90\u7C7B\u578B\u7B5B\u9009","Copy content":"\u590D\u5236\u5185\u5BB9","Edit file":"\u7F16\u8F91\u6587\u4EF6","Rendered markdown":"\u6E32\u67D3 Markdown","Line numbers":"\u884C\u53F7","Wrap lines":"\u81EA\u52A8\u6362\u884C","Unsaved changes":"\u672A\u4FDD\u5B58\u7684\u66F4\u6539",Saved:"\u5DF2\u4FDD\u5B58","Loading spreadsheet\u2026":"\u6B63\u5728\u52A0\u8F7D\u7535\u5B50\u8868\u683C\u2026","This workbook is too large to preview (10 MB limit).":"\u6B64\u5DE5\u4F5C\u7C3F\u592A\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8\uFF08\u4E0A\u9650 10 MB\uFF09\u3002","This workbook has no visible worksheets.":"\u6B64\u5DE5\u4F5C\u7C3F\u6CA1\u6709\u53EF\u89C1\u7684\u5DE5\u4F5C\u8868\u3002","This worksheet is empty.":"\u6B64\u5DE5\u4F5C\u8868\u4E3A\u7A7A\u3002","Some workbook features are not shown":"\u90E8\u5206\u5DE5\u4F5C\u7C3F\u529F\u80FD\u672A\u663E\u793A","Spreadsheet preview timed out.":"\u7535\u5B50\u8868\u683C\u9884\u89C8\u8D85\u65F6\u3002","Spreadsheet preview failed":"\u7535\u5B50\u8868\u683C\u9884\u89C8\u5931\u8D25","Spreadsheet parser failed.":"\u7535\u5B50\u8868\u683C\u89E3\u6790\u5668\u51FA\u9519\u3002","Spreadsheet parser failed to start":"\u7535\u5B50\u8868\u683C\u89E3\u6790\u5668\u542F\u52A8\u5931\u8D25","Spreadsheet parser message failed.":"\u7535\u5B50\u8868\u683C\u89E3\u6790\u5668\u6D88\u606F\u51FA\u9519\u3002","Spreadsheet parser message failed":"\u7535\u5B50\u8868\u683C\u89E3\u6790\u5668\u6D88\u606F\u51FA\u9519","Spreadsheet preview is unavailable.":"\u7535\u5B50\u8868\u683C\u9884\u89C8\u4E0D\u53EF\u7528\u3002","Spreadsheet preview must use a same-origin URL":"\u7535\u5B50\u8868\u683C\u9884\u89C8\u5FC5\u987B\u4F7F\u7528\u540C\u6E90 URL","This workbook is password-protected or in the old .xls format, so it cannot be previewed.":"\u6B64\u5DE5\u4F5C\u7C3F\u53D7\u5BC6\u7801\u4FDD\u62A4\u6216\u4E3A\u65E7\u7248 .xls \u683C\u5F0F\uFF0C\u65E0\u6CD5\u9884\u89C8\u3002","This workbook uses ZIP64, which the preview does not support.":"\u6B64\u5DE5\u4F5C\u7C3F\u4F7F\u7528 ZIP64 \u683C\u5F0F\uFF0C\u9884\u89C8\u4E0D\u652F\u6301\u8BE5\u683C\u5F0F\u3002","This workbook is too large or complex to preview.":"\u6B64\u5DE5\u4F5C\u7C3F\u8FC7\u5927\u6216\u8FC7\u4E8E\u590D\u6742\uFF0C\u65E0\u6CD5\u9884\u89C8\u3002","This workbook could not be read. The file may be damaged or not a valid .xlsx file.":"\u65E0\u6CD5\u8BFB\u53D6\u6B64\u5DE5\u4F5C\u7C3F\u3002\u6587\u4EF6\u53EF\u80FD\u5DF2\u635F\u574F\uFF0C\u6216\u4E0D\u662F\u6709\u6548\u7684 .xlsx \u6587\u4EF6\u3002","Spreadsheet feature: charts":"\u56FE\u8868","Spreadsheet feature: drawings":"\u7ED8\u56FE","Spreadsheet feature: pivot tables":"\u6570\u636E\u900F\u89C6\u8868","Spreadsheet feature: external links":"\u5916\u90E8\u94FE\u63A5","Spreadsheet feature: macros":"\u5B8F","Formula has no cached result":"\u516C\u5F0F\u6CA1\u6709\u7F13\u5B58\u7684\u8BA1\u7B97\u7ED3\u679C","Unsupported cell value":"\u4E0D\u652F\u6301\u7684\u5355\u5143\u683C\u503C","Unsupported number format":"\u4E0D\u652F\u6301\u7684\u6570\u5B57\u683C\u5F0F","Export as JSON":"\u5BFC\u51FA\u4E3A JSON","Export as Markdown":"\u5BFC\u51FA\u4E3A Markdown","Mark all read":"\u5168\u90E8\u6807\u4E3A\u5DF2\u8BFB","Clear search":"\u6E05\u9664\u641C\u7D22","Clear all tracked subagents":"\u6E05\u9664\u6240\u6709\u5DF2\u8DDF\u8E2A\u7684\u5B50\u667A\u80FD\u4F53","Kill All Sessions":"\u7EC8\u6B62\u6240\u6709\u4F1A\u8BDD","Kill all sessions and their tmux processes":"\u7EC8\u6B62\u6240\u6709\u4F1A\u8BDD\u53CA\u5176 tmux \u8FDB\u7A0B","Kill All Claude + Tmux":"\u7EC8\u6B62\u5168\u90E8 Claude + Tmux","Kill Tmux & Claude Code":"\u7EC8\u6B62 Tmux \u4E0E Claude Code","Terminate everything completely":"\u5F7B\u5E95\u7EC8\u6B62\u6240\u6709\u5185\u5BB9","Tmux Sessions":"Tmux \u4F1A\u8BDD","Tmux sessions keep running in background":"Tmux \u4F1A\u8BDD\u7EE7\u7EED\u5728\u540E\u53F0\u8FD0\u884C","Refresh tmux sessions":"\u5237\u65B0 Tmux \u4F1A\u8BDD","Restore Terminal Size":"\u6062\u590D\u7EC8\u7AEF\u5927\u5C0F","Clear Terminal":"\u6E05\u7A7A\u7EC8\u7AEF","Stop current run":"\u505C\u6B62\u5F53\u524D\u8FD0\u884C","Stop respawn":"\u505C\u6B62\u91CD\u751F","Stop (Ctrl+C)":"\u505C\u6B62\uFF08Ctrl+C\uFF09",Case:"\u6848\u4F8B","Case:":"\u6848\u4F8B\uFF1A","Case settings":"\u6848\u4F8B\u8BBE\u7F6E","Create New":"\u65B0\u5EFA","Auto (directory name)":"\u81EA\u52A8\uFF08\u76EE\u5F55\u540D\uFF09","Custom name shown in the tab (right-click tab to rename inline)":"\u6807\u7B7E\u9875\u4E2D\u663E\u793A\u7684\u81EA\u5B9A\u4E49\u540D\u79F0\uFF08\u53F3\u952E\u6807\u7B7E\u53EF\u76F4\u63A5\u91CD\u547D\u540D\uFF09","Name to identify this case in Codeman":"\u7528\u4E8E\u5728{name}\u4E2D\u6807\u8BC6\u6B64\u6848\u4F8B\u7684\u540D\u79F0","Name to identify this remote case in Codeman":"\u7528\u4E8E\u5728{name}\u4E2D\u6807\u8BC6\u6B64\u8FDC\u7A0B\u6848\u4F8B\u7684\u540D\u79F0","Absolute path on the remote host. Codeman will not create or delete it.":"\u8FDC\u7A0B\u4E3B\u673A\u4E0A\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF1B{name}\u4E0D\u4F1A\u521B\u5EFA\u6216\u5220\u9664\u8BE5\u76EE\u5F55\u3002","Absolute path to an existing project folder, e.g. /home/you/my-project":"\u73B0\u6709\u9879\u76EE\u6587\u4EF6\u5939\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4F8B\u5982 /home/you/my-project","Letters, numbers, hyphens, underscores only. Created in ~/codeman-cases/":"\u4EC5\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u8FDE\u5B57\u7B26\u548C\u4E0B\u5212\u7EBF\uFF1B\u5C06\u5728 ~/codeman-cases/ \u4E2D\u521B\u5EFA\u3002","Letters, numbers, hyphens, underscores only. Created inside the parent folder below.":"\u4EC5\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u8FDE\u5B57\u7B26\u548C\u4E0B\u5212\u7EBF\uFF1B\u5C06\u5728\u4E0B\u65B9\u7684\u7236\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA\u3002","A fresh workspace under ~/codeman-cases, scaffolded with its own CLAUDE.md.":"\u5728 ~/codeman-cases \u4E0B\u65B0\u5EFA\u5DE5\u4F5C\u533A\uFF0C\u5E76\u751F\u6210\u72EC\u7ACB\u7684 CLAUDE.md\u3002","A fresh workspace in a folder you choose, scaffolded with its own CLAUDE.md.":"\u5728\u4F60\u9009\u62E9\u7684\u6587\u4EF6\u5939\u4E2D\u65B0\u5EFA\u5DE5\u4F5C\u533A\uFF0C\u5E76\u751F\u6210\u72EC\u7ACB\u7684 CLAUDE.md\u3002","Create in a custom folder":"\u5728\u81EA\u5B9A\u4E49\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA","\u{1F4C1} Create in a custom folder":"\u{1F4C1} \u5728\u81EA\u5B9A\u4E49\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA","By default a new case is created under ~/codeman-cases. Choose another folder and the case is created there instead; it is listed like any other case.":"\u65B0\u6848\u4F8B\u9ED8\u8BA4\u521B\u5EFA\u5728 ~/codeman-cases \u4E0B\u3002\u9009\u62E9\u5176\u4ED6\u6587\u4EF6\u5939\u540E\uFF0C\u6848\u4F8B\u4F1A\u6539\u4E3A\u521B\u5EFA\u5728\u90A3\u91CC\uFF0C\u5E76\u50CF\u5176\u4ED6\u6848\u4F8B\u4E00\u6837\u5217\u51FA\u3002","Parent Folder":"\u7236\u6587\u4EF6\u5939","Pick the folder the new case folder should be created inside.":"\u9009\u62E9\u8981\u5728\u5176\u4E2D\u521B\u5EFA\u65B0\u6848\u4F8B\u6587\u4EF6\u5939\u7684\u6587\u4EF6\u5939\u3002","Choose the folder to create the case in":"\u9009\u62E9\u8981\u5728\u5176\u4E2D\u521B\u5EFA\u6848\u4F8B\u7684\u6587\u4EF6\u5939","Not available for a Docker case":"Docker \u6848\u4F8B\u4E0D\u53EF\u7528","Not available with a custom folder":"\u4F7F\u7528\u81EA\u5B9A\u4E49\u6587\u4EF6\u5939\u65F6\u4E0D\u53EF\u7528","Browse\u2026":"\u6D4F\u89C8\u2026","Docker exports":"Docker \u5BFC\u51FA","No exports yet. Export a docker case from its tab.":"\u6682\u65E0\u5BFC\u51FA\uFF1B\u8BF7\u4ECE Docker \u6848\u4F8B\u6807\u7B7E\u9875\u5BFC\u51FA\u3002","Runs inside an isolated container. Multiple sessions can share the same container.":"\u5728\u9694\u79BB\u5BB9\u5668\u5185\u8FD0\u884C\uFF1B\u591A\u4E2A\u4F1A\u8BDD\u53EF\u4EE5\u5171\u4EAB\u540C\u4E00\u5BB9\u5668\u3002","Runs this case in a hardened, isolated container. The base image is built automatically on first use. Docker/Podman must be installed.":"\u5728\u52A0\u56FA\u7684\u9694\u79BB\u5BB9\u5668\u4E2D\u8FD0\u884C\u6B64\u6848\u4F8B\u3002\u9996\u6B21\u4F7F\u7528\u65F6\u4F1A\u81EA\u52A8\u6784\u5EFA\u57FA\u7840\u955C\u50CF\uFF1B\u5FC5\u987B\u5B89\u88C5 Docker/Podman\u3002","Run in an isolated Docker container":"\u5728\u9694\u79BB\u7684 Docker \u5BB9\u5668\u4E2D\u8FD0\u884C","Attach to an existing container":"\u63A5\u5165\u5DF2\u5728\u8FD0\u884C\u7684\u5BB9\u5668","On: Codeman only runs docker exec into a container you already built and run \u2014 it never creates, starts, stops or removes it. The CLIs must already be installed and logged in inside it.":"\u5F00\u542F\u540E\uFF0C{name}\u53EA\u4F1A docker exec \u8FDB\u5165\u4F60\u81EA\u5DF1\u6784\u5EFA\u5E76\u8FD0\u884C\u7684\u5BB9\u5668\uFF0C\u7EDD\u4E0D\u521B\u5EFA\u3001\u542F\u52A8\u3001\u505C\u6B62\u6216\u5220\u9664\u5B83\uFF1B\u5BB9\u5668\u5185\u5FC5\u987B\u5DF2\u5B89\u88C5\u5E76\u767B\u5F55\u597D\u76F8\u5E94 CLI\u3002","Container Name":"\u5BB9\u5668\u540D\u79F0","Pick from the running containers or type a name.":"\u4ECE\u6B63\u5728\u8FD0\u884C\u7684\u5BB9\u5668\u4E2D\u9009\u62E9\uFF0C\u6216\u76F4\u63A5\u8F93\u5165\u540D\u79F0\u3002","Check container":"\u68C0\u67E5\u5BB9\u5668","Container Workdir":"\u5BB9\u5668\u5185\u5DE5\u4F5C\u76EE\u5F55","A path that already exists inside the container. Adoption mounts nothing, so this need not match the host workspace path.":"\u5BB9\u5668\u5185\u5DF2\u5B58\u5728\u7684\u8DEF\u5F84\u3002\u63A5\u5165\u4E0D\u6302\u8F7D\u4EFB\u4F55\u76EE\u5F55\uFF0C\u56E0\u6B64\u5B83\u4E0D\u5FC5\u4E0E\u4E3B\u673A\u5DE5\u4F5C\u533A\u8DEF\u5F84\u76F8\u540C\u3002","Already have a container running?":"\u5DF2\u7ECF\u6709\u6B63\u5728\u8FD0\u884C\u7684\u5BB9\u5668\uFF1F","Attach to it instead":"\u6539\u4E3A\u63A5\u5165\u8BE5\u5BB9\u5668","Codeman only runs docker exec into it and never touches its lifecycle.":"{name}\u53EA\u4F1A docker exec \u8FDB\u5165\u5B83\uFF0C\u7EDD\u4E0D\u89E6\u78B0\u5176\u751F\u547D\u5468\u671F\u3002","Absolute HOST directory, bind-mounted into the container. Codeman scaffolds CLAUDE.md + hooks into it.":"\u7ED1\u5B9A\u6302\u8F7D\u5230\u5BB9\u5668\u4E2D\u7684\u4E3B\u673A\u7EDD\u5BF9\u76EE\u5F55\uFF1B{name}\u4F1A\u5728\u5176\u4E2D\u751F\u6210 CLAUDE.md \u548C hooks\u3002","A reusable docker host profile. Reuse the same ID across cases to share settings.":"\u53EF\u590D\u7528\u7684 Docker \u4E3B\u673A\u914D\u7F6E\uFF1B\u591A\u4E2A\u6848\u4F8B\u4F7F\u7528\u540C\u4E00 ID \u53EF\u5171\u4EAB\u8BBE\u7F6E\u3002","Mount host credentials (~/.claude etc.)":"\u6302\u8F7D\u4E3B\u673A\u51ED\u636E\uFF08~/.claude \u7B49\uFF09","On: your existing login just works (creds stay on the host, never in exports). Off: sealed sandbox, log in inside the container.":"\u5F00\u542F\uFF1A\u76F4\u63A5\u4F7F\u7528\u73B0\u6709\u767B\u5F55\uFF08\u51ED\u636E\u4FDD\u7559\u5728\u4E3B\u673A\u4E14\u4E0D\u4F1A\u8FDB\u5165\u5BFC\u51FA\uFF09\uFF1B\u5173\u95ED\uFF1A\u4F7F\u7528\u5BC6\u5C01\u6C99\u7BB1\uFF0C\u9700\u8981\u5728\u5BB9\u5668\u5185\u767B\u5F55\u3002","Disk is elastic: storage grows automatically as data flows in (no fixed cap).":"\u78C1\u76D8\u4E3A\u5F39\u6027\u5BB9\u91CF\uFF1A\u4F1A\u968F\u6570\u636E\u81EA\u52A8\u589E\u957F\uFF08\u65E0\u56FA\u5B9A\u4E0A\u9650\uFF09\u3002","Needs the NVIDIA container toolkit on the host.":"\u4E3B\u673A\u9700\u8981\u5B89\u88C5 NVIDIA Container Toolkit\u3002","GPU \u2014 8 GB RAM, 4 CPU, all GPUs":"GPU \u2014 8 GB \u5185\u5B58\u30014 CPU\u3001\u5168\u90E8 GPU","Large \u2014 8 GB RAM, 4 CPU":"\u5927\u578B \u2014 8 GB \u5185\u5B58\u30014 CPU","Medium \u2014 4 GB RAM, 2 CPU (default)":"\u4E2D\u578B \u2014 4 GB \u5185\u5B58\u30012 CPU\uFF08\u9ED8\u8BA4\uFF09","Small \u2014 2 GB RAM, 1 CPU":"\u5C0F\u578B \u2014 2 GB \u5185\u5B58\u30011 CPU","bridge (internet on, default)":"\u6865\u63A5\uFF08\u53EF\u8054\u7F51\uFF0C\u9ED8\u8BA4\uFF09","bridge (internet on)":"\u6865\u63A5\uFF08\u53EF\u8054\u7F51\uFF09","none (fully isolated, no network)":"\u65E0\uFF08\u5B8C\u5168\u9694\u79BB\uFF0C\u4E0D\u8054\u7F51\uFF09","none (fully isolated)":"\u65E0\uFF08\u5B8C\u5168\u9694\u79BB\uFF09","Resume last conversation on relaunch":"\u91CD\u65B0\u542F\u52A8\u65F6\u7EE7\u7EED\u6700\u8FD1\u4E00\u6B21\u5BF9\u8BDD","Extra -o Options":"\u9644\u52A0 -o \u9009\u9879","SOCKS Proxy":"SOCKS \u4EE3\u7406","Host ID":"\u4E3B\u673A ID","Optional. Leave blank for the default port 22.":"\u53EF\u9009\uFF1B\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4\u7AEF\u53E3 22\u3002","Optional. Path to a private key on this machine (passed to ssh -i). Never the key contents.":"\u53EF\u9009\uFF1B\u672C\u673A\u79C1\u94A5\u6587\u4EF6\u8DEF\u5F84\uFF08\u4F20\u7ED9 ssh -i\uFF09\uFF0C\u8BF7\u52FF\u586B\u5199\u5BC6\u94A5\u5185\u5BB9\u3002","Optional. [user@]host[:port] for ssh -J (jump/bastion host).":"\u53EF\u9009\uFF1Bssh -J \u4F7F\u7528\u7684 [user@]host[:port]\uFF08\u8DF3\u677F\u673A\uFF09\u3002","Optional. One KEY=VALUE per line; each becomes an ssh -o option.":"\u53EF\u9009\uFF1B\u6BCF\u884C\u4E00\u4E2A KEY=VALUE\uFF0C\u6BCF\u9879\u90FD\u4F1A\u6210\u4E3A ssh -o \u9009\u9879\u3002","Use the GPU-accelerated WebGL terminal renderer (desktop only). Turn off to force the DOM renderer if you hit GPU glitches. Codeman also auto-falls-back to the DOM renderer after repeated GPU stalls.":"\u4F7F\u7528 GPU \u52A0\u901F\u7684 WebGL \u7EC8\u7AEF\u6E32\u67D3\u5668\uFF08\u4EC5\u684C\u9762\u7AEF\uFF09\u3002\u5982\u9047 GPU \u663E\u793A\u95EE\u9898\uFF0C\u53EF\u5173\u95ED\u4EE5\u5F3A\u5236\u4F7F\u7528 DOM \u6E32\u67D3\u5668\uFF1B\u591A\u6B21 GPU \u5361\u987F\u540E{name}\u4E5F\u4F1A\u81EA\u52A8\u56DE\u9000\u3002","Show A-/A+ font size buttons in header":"\u5728\u9876\u90E8\u680F\u663E\u793A A-/A+ \u5B57\u4F53\u5927\u5C0F\u6309\u94AE","Show Claude plan usage limits (5-hour & weekly) in the header. Applies to newly created sessions.":"\u5728\u9876\u90E8\u680F\u663E\u793A Claude \u5957\u9910\u4F7F\u7528\u9650\u5236\uFF085 \u5C0F\u65F6\u548C\u6BCF\u5468\uFF09\uFF1B\u9002\u7528\u4E8E\u65B0\u5EFA\u4F1A\u8BDD\u3002","Show ultracode / Workflow runs as a master-detail tab (tasks on the left, agents with tokens + tool calls on the right)":"\u4EE5\u4E3B\u4ECE\u6807\u7B7E\u9875\u663E\u793A Ultracode / Workflow \u8FD0\u884C\uFF08\u5DE6\u4FA7\u4EFB\u52A1\uFF0C\u53F3\u4FA7\u667A\u80FD\u4F53 Token \u4E0E\u5DE5\u5177\u8C03\u7528\uFF09","Pop a floating window for each active ultracode / Workflow run, connected by a line to its session tab (additional to the Ultracode Agents panel)":"\u4E3A\u6BCF\u4E2A\u6D3B\u52A8\u7684 Ultracode / Workflow \u8FD0\u884C\u5F39\u51FA\u6D6E\u52A8\u7A97\u53E3\uFF0C\u5E76\u7528\u8FDE\u7EBF\u8FDE\u63A5\u5230\u5176\u4F1A\u8BDD\u6807\u7B7E\u9875","Shows typed characters instantly via overlay while forwarding keystrokes to the server in the background. Enables Tab completion, preserves input across tab switches, and protects against session crashes. Recommended for mobile and high-latency connections.":"\u901A\u8FC7\u8986\u76D6\u5C42\u5373\u65F6\u663E\u793A\u8F93\u5165\uFF0C\u540C\u65F6\u5728\u540E\u53F0\u628A\u6309\u952E\u8F6C\u53D1\u5230\u670D\u52A1\u5668\u3002\u652F\u6301 Tab \u8865\u5168\u3001\u5207\u6362\u6807\u7B7E\u65F6\u4FDD\u7559\u8F93\u5165\u5E76\u9632\u6B62\u4F1A\u8BDD\u5D29\u6E83\u4E22\u5B57\uFF1B\u63A8\u8350\u79FB\u52A8\u7AEF\u548C\u9AD8\u5EF6\u8FDF\u8FDE\u63A5\u4F7F\u7528\u3002","Show a dedicated input field below the terminal for CJK (Chinese/Japanese/Korean) IME composition. Recommended for mobile devices with Chinese input methods where xterm's native input handling may drop characters.":"\u5728\u7EC8\u7AEF\u4E0B\u65B9\u663E\u793A\u4E2D\u65E5\u97E9\u8F93\u5165\u6CD5\u4E13\u7528\u6587\u672C\u6846\u3002\u63A8\u8350\u5728\u53EF\u80FD\u56E0 xterm \u539F\u751F\u8F93\u5165\u800C\u4E22\u5B57\u7684\u79FB\u52A8\u7AEF\u4E2D\u6587\u8F93\u5165\u6CD5\u4E2D\u4F7F\u7528\u3002","Show additional buttons (Tab, Shift+Tab, Ctrl+O, Esc, Alt+Enter, left/right arrows) in the mobile keyboard accessory bar.":"\u5728\u79FB\u52A8\u7AEF\u952E\u76D8\u5DE5\u5177\u680F\u663E\u793A\u9644\u52A0\u6309\u952E\uFF08Tab\u3001Shift+Tab\u3001Ctrl+O\u3001Esc\u3001Alt+Enter\u3001\u5DE6\u53F3\u65B9\u5411\u952E\uFF09\u3002","Scroll local history (when mouse passthrough is active)":"\u6EDA\u52A8\u672C\u5730\u5386\u53F2\uFF08\u9F20\u6807\u76F4\u901A\u542F\u7528\u65F6\uFF09","Plain wheel/trackpad pages the terminal scrollback":"\u4F7F\u7528\u666E\u901A\u6EDA\u8F6E/\u89E6\u63A7\u677F\u7FFB\u9605\u7EC8\u7AEF\u5386\u53F2","Camera hand-tracking overlay (applied on reload)":"\u6444\u50CF\u5934\u624B\u52BF\u8DDF\u8E2A\u8986\u76D6\u5C42\uFF08\u91CD\u65B0\u52A0\u8F7D\u540E\u751F\u6548\uFF09","Enable the camera hand-tracking gesture overlay (applied on reload). The instance must run with CODEMAN_GESTURE=1.":"\u542F\u7528\u6444\u50CF\u5934\u624B\u52BF\u8DDF\u8E2A\u8986\u76D6\u5C42\uFF08\u91CD\u65B0\u52A0\u8F7D\u540E\u751F\u6548\uFF09\uFF1B\u5B9E\u4F8B\u5FC5\u987B\u4EE5 CODEMAN_GESTURE=1 \u8FD0\u884C\u3002","How Claude CLI is started in screen sessions. Auto Mode runs without routine prompts behind a background safety classifier (needs Claude Code 2.1.207+ and Opus 4.6+/Sonnet 4.6+/Fable 5)":"\u8BBE\u7F6E Claude CLI \u5728\u4F1A\u8BDD\u4E2D\u7684\u542F\u52A8\u65B9\u5F0F\u3002\u81EA\u52A8\u6A21\u5F0F\u7531\u540E\u53F0\u5B89\u5168\u5206\u7C7B\u5668\u4FDD\u62A4\uFF0C\u65E0\u9700\u5E38\u89C4\u786E\u8BA4\uFF08\u9700\u8981 Claude Code 2.1.207+ \u548C Opus 4.6+/Sonnet 4.6+/Fable 5\uFF09\u3002","Auto-enable for new sessions (otherwise auto-enables on Ralph pattern detection)":"\u4E3A\u65B0\u4F1A\u8BDD\u81EA\u52A8\u542F\u7528\uFF08\u5426\u5219\u68C0\u6D4B\u5230 Ralph \u6A21\u5F0F\u65F6\u81EA\u52A8\u542F\u7528\uFF09","Enable experimental Agent Teams for all new Claude sessions (disabled by default)":"\u4E3A\u6240\u6709\u65B0 Claude \u4F1A\u8BDD\u542F\u7528\u5B9E\u9A8C\u6027\u667A\u80FD\u4F53\u56E2\u961F\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09","Automatically re-establish remote (SSH) sessions when the connection drops, reattaching to the durable remote tmux session (on by default; bounded backoff)":"\u8FDE\u63A5\u65AD\u5F00\u65F6\u81EA\u52A8\u91CD\u5EFA\u8FDC\u7A0B SSH \u4F1A\u8BDD\uFF0C\u5E76\u91CD\u65B0\u9644\u52A0\u5230\u6301\u4E45\u5316\u8FDC\u7A0B tmux \u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u5F00\u542F\uFF0C\u6709\u9650\u9000\u907F\uFF09","Default effort for new Claude sessions \u2014 soft default, switchable anytime in-session via /effort (e.g. /effort ultracode)":"\u65B0 Claude \u4F1A\u8BDD\u7684\u9ED8\u8BA4\u601D\u8003\u5F3A\u5EA6\uFF1B\u8FD9\u662F\u8F6F\u9ED8\u8BA4\u503C\uFF0C\u53EF\u968F\u65F6\u5728\u4F1A\u8BDD\u4E2D\u901A\u8FC7 /effort \u5207\u6362\u3002","Lower priority of Claude sessions (reduces system impact, only affects new sessions)":"\u964D\u4F4E Claude \u4F1A\u8BDD\u7684\u8FDB\u7A0B\u4F18\u5148\u7EA7\uFF08\u51CF\u5C11\u7CFB\u7EDF\u5F71\u54CD\uFF0C\u4EC5\u5F71\u54CD\u65B0\u4F1A\u8BDD\uFF09","Process priority (-20 to 19, higher = lower priority, default: 10)":"\u8FDB\u7A0B\u4F18\u5148\u7EA7\uFF08-20 \u5230 19\uFF1B\u6570\u503C\u8D8A\u5927\u4F18\u5148\u7EA7\u8D8A\u4F4E\uFF1B\u9ED8\u8BA4 10\uFF09","Start new Codex sessions with --dangerously-bypass-approvals-and-sandbox":"\u4F7F\u7528 --dangerously-bypass-approvals-and-sandbox \u542F\u52A8\u65B0\u7684 Codex \u4F1A\u8BDD","Model used for execution tasks. Optimizer suggestions are advisory only.":"\u6267\u884C\u4EFB\u52A1\u4F7F\u7528\u7684\u6A21\u578B\uFF1B\u4F18\u5316\u5668\u5EFA\u8BAE\u4EC5\u4F9B\u53C2\u8003\u3002","Show what the optimizer recommends (doesn't override your choice)":"\u663E\u793A\u4F18\u5316\u5668\u5EFA\u8BAE\uFF08\u4E0D\u4F1A\u8986\u76D6\u4F60\u7684\u9009\u62E9\uFF09",'Optionally set specific models for each task type. Leave as "Use Default" to use your default model.':"\u53EF\u4E3A\u6BCF\u79CD\u4EFB\u52A1\u7C7B\u578B\u6307\u5B9A\u6A21\u578B\uFF1B\u4FDD\u7559\u201C\u4F7F\u7528\u9ED8\u8BA4\u503C\u201D\u5373\u53EF\u4F7F\u7528\u9ED8\u8BA4\u6A21\u578B\u3002","Request browser notification permission":"\u8BF7\u6C42\u6D4F\u89C8\u5668\u901A\u77E5\u6743\u9650","Show OS-level notifications when tab is hidden":"\u6807\u7B7E\u9875\u9690\u85CF\u65F6\u663E\u793A\u7CFB\u7EDF\u7EA7\u901A\u77E5","OS-level push notifications \u2014 works even when tab is closed":"\u7CFB\u7EDF\u7EA7\u63A8\u9001\u901A\u77E5\uFF0C\u5373\u4F7F\u6807\u7B7E\u9875\u5173\u95ED\u4E5F\u53EF\u63A5\u6536","Play a short beep for critical events":"\u4E25\u91CD\u4E8B\u4EF6\u53D1\u751F\u65F6\u64AD\u653E\u77ED\u63D0\u793A\u97F3","Completions, budget warnings, stuck sessions":"\u5B8C\u6210\u63D0\u9192\u3001\u9884\u7B97\u8B66\u544A\u548C\u4F1A\u8BDD\u5361\u4F4F\u63D0\u9192","Errors, crashes, agent failures":"\u9519\u8BEF\u3001\u5D29\u6E83\u548C\u667A\u80FD\u4F53\u5931\u8D25","Notify when a session is idle longer than this":"\u4F1A\u8BDD\u7A7A\u95F2\u8D85\u8FC7\u6B64\u65F6\u957F\u65F6\u901A\u77E5","Stored locally only, never sent to server. Get a key at":"\u4EC5\u5B58\u50A8\u5728\u672C\u673A\uFF0C\u7EDD\u4E0D\u4F1A\u53D1\u9001\u5230\u670D\u52A1\u5668\u3002\u53EF\u5728\u6B64\u83B7\u53D6\u5BC6\u94A5\uFF1A","Comma-separated terms to boost recognition accuracy":"\u4EE5\u9017\u53F7\u5206\u9694\u53EF\u63D0\u9AD8\u8BC6\u522B\u51C6\u786E\u7387\u7684\u672F\u8BED","Start voice input":"\u5F00\u59CB\u8BED\u97F3\u8F93\u5165","Voice input":"\u8BED\u97F3\u8F93\u5165","Voice input (Ctrl+Shift+V)":"\u8BED\u97F3\u8F93\u5165\uFF08Ctrl+Shift+V\uFF09","Insert Newline":"\u63D2\u5165\u6362\u884C","Close Panels":"\u5173\u95ED\u9762\u677F","Previous / Next Session":"\u4E0A\u4E00\u4E2A / \u4E0B\u4E00\u4E2A\u4F1A\u8BDD","Next Session":"\u4E0B\u4E00\u4E2A\u4F1A\u8BDD","Switch to Tab N":"\u5207\u6362\u5230\u7B2C N \u4E2A\u6807\u7B7E\u9875","Move Active Tab Left":"\u5411\u5DE6\u79FB\u52A8\u5F53\u524D\u6807\u7B7E\u9875","Move Active Tab Right":"\u5411\u53F3\u79FB\u52A8\u5F53\u524D\u6807\u7B7E\u9875","Focus First Tab":"\u805A\u7126\u7B2C\u4E00\u4E2A\u6807\u7B7E\u9875","Focus Last Tab":"\u805A\u7126\u6700\u540E\u4E00\u4E2A\u6807\u7B7E\u9875","Focus Next Tab":"\u805A\u7126\u4E0B\u4E00\u4E2A\u6807\u7B7E\u9875","Focus Previous Tab":"\u805A\u7126\u4E0A\u4E00\u4E2A\u6807\u7B7E\u9875","Activate Focused Tab":"\u6FC0\u6D3B\u805A\u7126\u7684\u6807\u7B7E\u9875","Remove Tab":"\u79FB\u9664\u6807\u7B7E\u9875","Remove All Tabs":"\u79FB\u9664\u6240\u6709\u6807\u7B7E\u9875","Use arrows to reorder. Changes are saved automatically.":"\u4F7F\u7528\u65B9\u5411\u952E\u91CD\u65B0\u6392\u5E8F\uFF1B\u66F4\u6539\u4F1A\u81EA\u52A8\u4FDD\u5B58\u3002"}),C=new Map(Object.entries(h).map(([t,s])=>[t.toLocaleLowerCase("en"),s])),S=new WeakMap,v=new WeakMap;let l=w(i.__codemanLanguage),r=c,f=null,p=!1;function w(t){return P.has(t)?t:"en"}function k(t){if(typeof t!="string")return c;const s=t.normalize("NFC").replace(/[\u0000-\u001f\u007f]/g,"").trim();return s?Array.from(s).slice(0,40).join(""):c}function T(t,s){return t.replace(/\{([a-zA-Z][\w]*)\}/g,(n,o)=>String(s[o]??""))}const A={"needs you":"\u9700\u8981\u4F60",error:"\u9519\u8BEF",waiting:"\u7B49\u5F85\u4E2D",working:"\u5DE5\u4F5C\u4E2D",idle:"\u7A7A\u95F2",done:"\u5DF2\u5B8C\u6210",exited:"\u5DF2\u9000\u51FA"};function U(t){const s=[[/^(\d+) tokens?$/,(o,e)=>`${e} \u4E2A Token`],[/^(\d+) sessions?$/,(o,e)=>`${e} \u4E2A\u4F1A\u8BDD`],[/^(\d+) tasks?$/,(o,e)=>`${e} \u4E2A\u4EFB\u52A1`],[/^(\d+) running$/,(o,e)=>`${e} \u4E2A\u8FD0\u884C\u4E2D`],[/^(\d+) active$/,(o,e)=>`${e} \u4E2A\u6D3B\u52A8`],[/^Show (\d+) more$/,(o,e)=>`\u518D\u663E\u793A ${e} \u9879`],[/^Show (\d+) more \((\d+) remaining\)$/,(o,e,a)=>`\u518D\u663E\u793A ${e} \u9879\uFF08\u5269\u4F59 ${a} \u9879\uFF09`],[/^Lifetime: (\d+) sessions created$/,(o,e)=>`\u7D2F\u8BA1\u5DF2\u521B\u5EFA ${e} \u4E2A\u4F1A\u8BDD`],[/^Tunnel active: (.+)$/,(o,e)=>`\u96A7\u9053\u5DF2\u542F\u7528\uFF1A${e}`],[/^Tunnel error: (.+)$/,(o,e)=>`\u96A7\u9053\u9519\u8BEF\uFF1A${e}`],[/^Update to v(.+)$/,(o,e)=>`\u66F4\u65B0\u5230 v${e}`],[/^You're up to date \(v(.+)\)\.$/,(o,e)=>`\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v${e}\uFF09\u3002`],[/^Update available: v(.+)$/,(o,e)=>`\u6709\u53EF\u7528\u66F4\u65B0\uFF1Av${e}`],[/^Selected: (.+)$/,(o,e)=>`\u5DF2\u9009\u62E9\uFF1A${e}`],[/^Failed to (.+)$/,(o,e)=>`\u64CD\u4F5C\u5931\u8D25\uFF1A${e}`],[/^Will create: (.+)$/,(o,e)=>`\u5C06\u521B\u5EFA\uFF1A${e}`],[/^Spreadsheet preview failed \((\d+)\)$/,(o,e)=>`\u7535\u5B50\u8868\u683C\u9884\u89C8\u5931\u8D25\uFF08${e}\uFF09`],[/^Terminal restored to (\d+)x(\d+)$/,(o,e,a)=>`\u7EC8\u7AEF\u5DF2\u6062\u590D\u4E3A ${e}x${a}`],[/^View truncated to the first (\d+) cells$/,(o,e)=>`\u89C6\u56FE\u4EC5\u663E\u793A\u524D ${e} \u4E2A\u5355\u5143\u683C`],[/^(\d+) unsupported number formats$/,(o,e)=>`${e} \u79CD\u4E0D\u652F\u6301\u7684\u6570\u5B57\u683C\u5F0F`],[/^Move to "(.+)"$/,(o,e)=>`\u79FB\u5230\u201C${e}\u201D`],[/^Follows (.+)$/,(o,e)=>`\u8DDF\u968F ${e}`],[/^Placed by hand \(parent: (.+)\)$/,(o,e)=>`\u5DF2\u624B\u52A8\u653E\u7F6E\uFF08\u7236\u4F1A\u8BDD\uFF1A${e}\uFF09`],[/^Delete group "(.+)"\? Its tabs move to Ungrouped\.$/,(o,e)=>`\u5220\u9664\u5206\u7EC4\u201C${e}\u201D\uFF1F\u5176\u4E2D\u7684\u6807\u7B7E\u5C06\u79FB\u5230\u672A\u5206\u7EC4\u3002`],[/^(\d+) tiles$/,(o,e)=>`${e} \u4E2A\u7A97\u683C`],[/^Tiles \u00B7 (\d+)$/,(o,e)=>`\u5E73\u94FA \xB7 ${e}`],[/^This window fits (\d+) tiles?: a click opens (\d+)$/,(o,e,a)=>`\u6B64\u7A97\u53E3\u53EF\u5BB9\u7EB3 ${e} \u4E2A\u7A97\u683C\uFF1A\u5355\u51FB\u5C06\u6253\u5F00 ${a} \u4E2A`],[/^This window fits (\d+) tiles?$/,(o,e)=>`\u6B64\u7A97\u53E3\u53EF\u5BB9\u7EB3 ${e} \u4E2A\u7A97\u683C`],[/^The grid holds at most (\d+) tiles$/,(o,e)=>`\u5E73\u94FA\u7F51\u683C\u6700\u591A\u5BB9\u7EB3 ${e} \u4E2A\u7A97\u683C`],[/^The grid already holds what this window fits \((\d+)\)$/,(o,e)=>`\u5E73\u94FA\u7F51\u683C\u5DF2\u8FBE\u5230\u6B64\u7A97\u53E3\u53EF\u5BB9\u7EB3\u7684\u6570\u91CF\uFF08${e}\uFF09`],[/^The grid holds at most (\d+) tiles: the new session opens on its own$/,(o,e)=>`\u5E73\u94FA\u7F51\u683C\u6700\u591A\u5BB9\u7EB3 ${e} \u4E2A\u7A97\u683C\uFF1A\u65B0\u4F1A\u8BDD\u5C06\u5355\u72EC\u6253\u5F00`],[/^The grid already holds what this window fits \((\d+)\): the new session opens on its own$/,(o,e)=>`\u5E73\u94FA\u7F51\u683C\u5DF2\u8FBE\u5230\u6B64\u7A97\u53E3\u53EF\u5BB9\u7EB3\u7684\u6570\u91CF\uFF08${e}\uFF09\uFF1A\u65B0\u4F1A\u8BDD\u5C06\u5355\u72EC\u6253\u5F00`],[/^The window is too small for (\d+) tiles: showing the focused one$/,(o,e)=>`\u7A97\u53E3\u592A\u5C0F\uFF0C\u5BB9\u7EB3\u4E0D\u4E0B ${e} \u4E2A\u7A97\u683C\uFF1A\u53EA\u663E\u793A\u805A\u7126\u7684\u7A97\u683C`],[/^The agent exited \((-?\d+)\)$/,(o,e)=>`\u667A\u80FD\u4F53\u5DF2\u9000\u51FA\uFF08${e}\uFF09`],[/^The agent exited \(signal (\d+)\)$/,(o,e)=>`\u667A\u80FD\u4F53\u5DF2\u9000\u51FA\uFF08\u4FE1\u53F7 ${e}\uFF09`],[/^(.+) \(set at launch\)$/,(o,e)=>`${e}\uFF08\u542F\u52A8\u65F6\u8BBE\u5B9A\uFF09`],[/^(.+) \(custom endpoint\)$/,(o,e)=>`${e}\uFF08\u81EA\u5B9A\u4E49\u7AEF\u70B9\uFF09`],[/^(.+) \(from config\)$/,(o,e)=>`${e}\uFF08\u6765\u81EA\u914D\u7F6E\uFF09`],[/^Run ([A-Z][A-Z0-9]{1,5})$/,(o,e)=>`\u8FD0\u884C ${e}`],[/^exited \((-?\d+)\)$/,(o,e)=>`\u5DF2\u9000\u51FA\uFF08${e}\uFF09`],[/^exited \(signal (\d+)\)$/,(o,e)=>`\u5DF2\u9000\u51FA\uFF08\u4FE1\u53F7 ${e}\uFF09`],[/^(.+) session, agent exited \(signal (\d+)\)$/,(o,e,a)=>`${e} \u4F1A\u8BDD\uFF0C\u667A\u80FD\u4F53\u5DF2\u9000\u51FA\uFF08\u4FE1\u53F7 ${a}\uFF09`],[/^(.+) session, agent exited \((-?\d+)\)$/,(o,e,a)=>`${e} \u4F1A\u8BDD\uFF0C\u667A\u80FD\u4F53\u5DF2\u9000\u51FA\uFF08${a}\uFF09`],[/^(.+) session, agent exited$/,(o,e)=>`${e} \u4F1A\u8BDD\uFF0C\u667A\u80FD\u4F53\u5DF2\u9000\u51FA`],[/^(.+) was stopped after crashing repeatedly\. Restart it\?$/,(o,e)=>`${e} \u56E0\u53CD\u590D\u5D29\u6E83\u5DF2\u88AB\u505C\u6B62\u3002\u8981\u91CD\u542F\u5417\uFF1F`],[/^(needs you|error|waiting|working|idle|done|exited) (<1m|\d+[dhm](?: \d+[hm])?)$/,(o,e,a)=>`${A[e]} ${a}`],[/^(needs you|error|waiting|working|idle|done|exited)(?: (<1m|\d+[dhm](?: \d+[hm])?))?\n(Drag to move the tile|Drag to move the tile, or out of the window to open it on its own|Drag out of the window to open the tile on its own)$/,(o,e,a,W)=>`${A[e]}${a?` ${a}`:""}
2
+ ${h[W]}`]];for(const[o,e]of s){const a=t.match(o);if(a)return e(...a)}const n=t.match(/^(Open|Close|Show|Hide|Enable|Disable|Start|Stop|Refresh|Save|Cancel|Clear|Select|View|Export|Import|Remove|Kill|Toggle|Increase|Decrease) (.+)$/i);if(n){const o={open:"\u6253\u5F00",close:"\u5173\u95ED",show:"\u663E\u793A",hide:"\u9690\u85CF",enable:"\u542F\u7528",disable:"\u7981\u7528",start:"\u542F\u52A8",stop:"\u505C\u6B62",refresh:"\u5237\u65B0",save:"\u4FDD\u5B58",cancel:"\u53D6\u6D88",clear:"\u6E05\u9664",select:"\u9009\u62E9",view:"\u67E5\u770B",export:"\u5BFC\u51FA",import:"\u5BFC\u5165",remove:"\u79FB\u9664",kill:"\u7EC8\u6B62",toggle:"\u5207\u6362",increase:"\u589E\u5927",decrease:"\u51CF\u5C0F"}[n[1].toLowerCase()],e=h[n[2]]||C.get(n[2].toLocaleLowerCase("en"));if(o&&e)return`${o}${e}`}return null}function g(t){return!t||r===c?t:t.replace(/Codeman/g,r).replace(/codeman(?=:)/g,r)}function d(t,s={}){if(typeof t!="string"||!t)return t;const n={name:r,...s};if(l==="zh-CN"){const o=h[t]||C.get(t.toLocaleLowerCase("en"))||U(t);if(o)return g(T(o,n))}return g(T(t,n))}function m(t){const s=t.nodeType===Node.ELEMENT_NODE?t:t.parentElement;return!s||!!s.closest(O)}const x=new WeakSet;function M(t){const s=t.parentNode;return s?.classList?.contains("xterm-rows")?x.has(s)?!0:m(s)?(x.add(s),!0):!1:!1}function I(t){const s=t.nodeType===Node.ELEMENT_NODE?t:t.parentElement;return m(t)||!!s?.closest($)}function _(t,s){const n=t.match(/^\s*/)?.[0]||"",o=t.match(/\s*$/)?.[0]||"";return n+s+o}function E(t){let s=S.get(t);if(I(t)||!s&&!/[A-Za-z]/.test(t.nodeValue||""))return;(!s||t.nodeValue!==s.applied)&&(s={source:t.nodeValue,applied:t.nodeValue});const n=s.source.trim();if(!n)return;const o=_(s.source,d(n));s.applied=o,S.set(t,s),t.nodeValue!==o&&(t.nodeValue=o)}function y(t){if(m(t)||t.matches(".history-item[title]"))return;let s=v.get(t);s||(s=new Map);for(const n of b){if(!t.hasAttribute(n))continue;const o=t.getAttribute(n)||"";let e=s.get(n);(!e||o!==e.applied)&&(e={source:o,applied:o});const a=d(e.source);e.applied=a,s.set(n,e),o!==a&&t.setAttribute(n,a)}v.set(t,s)}function u(t){if(!(!t||p)){p=!0;try{if(t.nodeType===Node.TEXT_NODE){E(t);return}if(t.nodeType!==Node.ELEMENT_NODE&&t.nodeType!==Node.DOCUMENT_NODE)return;t.nodeType===Node.ELEMENT_NODE&&y(t);const s=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);for(let n=s.nextNode();n;n=s.nextNode())n.nodeType===Node.TEXT_NODE?E(n):y(n)}finally{p=!1}}}function L(){const t=document.title||"",s=document.documentElement.dataset.i18nTitleSource||t;document.documentElement.dataset.i18nTitleSource=s,document.title=g(s)}function F(t={}){const s=r;if(l=w(t.language??l),r=k(t.displayName??r),i.__codemanLanguage=l,i.__codemanDisplayName=r,document.documentElement.lang=l,document.documentElement.dataset.language=l,s!==r){const n=document.documentElement.dataset.i18nTitleSource||document.title||"";s!==c&&n.includes(s)&&(document.documentElement.dataset.i18nTitleSource=n.replaceAll(s,r))}return u(document.body),L(),{language:l,displayName:r}}function R(){u(document.body),L(),!f&&(f=new MutationObserver(t=>{if(!p){for(const s of t)if(!(M(s.target)||m(s.target))){s.type==="characterData"&&u(s.target),s.type==="attributes"&&y(s.target);for(const n of s.addedNodes)u(n)}}}),f.observe(document.body,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:b}))}const G=Object.freeze({t:d,configure:F,start:R,translateNode:u,normalizeDisplayName:k,normalizeLanguage:w,get language(){return l},get displayName(){return r}});i.CodemanI18n=G,i.codemanT=d;const N=typeof i.confirm=="function"?i.confirm.bind(i):null,D=typeof i.alert=="function"?i.alert.bind(i):null;N&&(i.confirm=t=>N(d(String(t)))),D&&(i.alert=t=>D(d(String(t)))),document.addEventListener("DOMContentLoaded",R,{once:!0})})(window);