colyn-cli 3.1.4

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 (263) hide show
  1. package/README-en.md +85 -0
  2. package/README.md +85 -0
  3. package/bin/colyn +25 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +116 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/add.d.ts +6 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.helpers.d.ts +48 -0
  11. package/dist/commands/add.helpers.d.ts.map +1 -0
  12. package/dist/commands/add.helpers.js +251 -0
  13. package/dist/commands/add.helpers.js.map +1 -0
  14. package/dist/commands/add.js +286 -0
  15. package/dist/commands/add.js.map +1 -0
  16. package/dist/commands/checkout.d.ts +16 -0
  17. package/dist/commands/checkout.d.ts.map +1 -0
  18. package/dist/commands/checkout.js +428 -0
  19. package/dist/commands/checkout.js.map +1 -0
  20. package/dist/commands/completion.d.ts +10 -0
  21. package/dist/commands/completion.d.ts.map +1 -0
  22. package/dist/commands/completion.js +380 -0
  23. package/dist/commands/completion.js.map +1 -0
  24. package/dist/commands/config.d.ts +11 -0
  25. package/dist/commands/config.d.ts.map +1 -0
  26. package/dist/commands/config.js +338 -0
  27. package/dist/commands/config.js.map +1 -0
  28. package/dist/commands/index.d.ts +10 -0
  29. package/dist/commands/index.d.ts.map +1 -0
  30. package/dist/commands/index.js +41 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/info.d.ts +6 -0
  33. package/dist/commands/info.d.ts.map +1 -0
  34. package/dist/commands/info.js +374 -0
  35. package/dist/commands/info.js.map +1 -0
  36. package/dist/commands/init.d.ts +6 -0
  37. package/dist/commands/init.d.ts.map +1 -0
  38. package/dist/commands/init.handlers.d.ts +27 -0
  39. package/dist/commands/init.handlers.d.ts.map +1 -0
  40. package/dist/commands/init.handlers.js +314 -0
  41. package/dist/commands/init.handlers.js.map +1 -0
  42. package/dist/commands/init.helpers.d.ts +42 -0
  43. package/dist/commands/init.helpers.d.ts.map +1 -0
  44. package/dist/commands/init.helpers.js +275 -0
  45. package/dist/commands/init.helpers.js.map +1 -0
  46. package/dist/commands/init.js +61 -0
  47. package/dist/commands/init.js.map +1 -0
  48. package/dist/commands/install.d.ts +6 -0
  49. package/dist/commands/install.d.ts.map +1 -0
  50. package/dist/commands/install.helpers.d.ts +32 -0
  51. package/dist/commands/install.helpers.d.ts.map +1 -0
  52. package/dist/commands/install.helpers.js +124 -0
  53. package/dist/commands/install.helpers.js.map +1 -0
  54. package/dist/commands/install.js +104 -0
  55. package/dist/commands/install.js.map +1 -0
  56. package/dist/commands/list-project.d.ts +11 -0
  57. package/dist/commands/list-project.d.ts.map +1 -0
  58. package/dist/commands/list-project.js +260 -0
  59. package/dist/commands/list-project.js.map +1 -0
  60. package/dist/commands/list.d.ts +15 -0
  61. package/dist/commands/list.d.ts.map +1 -0
  62. package/dist/commands/list.helpers.d.ts +50 -0
  63. package/dist/commands/list.helpers.d.ts.map +1 -0
  64. package/dist/commands/list.helpers.js +143 -0
  65. package/dist/commands/list.helpers.js.map +1 -0
  66. package/dist/commands/list.js +530 -0
  67. package/dist/commands/list.js.map +1 -0
  68. package/dist/commands/merge.d.ts +6 -0
  69. package/dist/commands/merge.d.ts.map +1 -0
  70. package/dist/commands/merge.helpers.d.ts +74 -0
  71. package/dist/commands/merge.helpers.d.ts.map +1 -0
  72. package/dist/commands/merge.helpers.js +307 -0
  73. package/dist/commands/merge.helpers.js.map +1 -0
  74. package/dist/commands/merge.js +260 -0
  75. package/dist/commands/merge.js.map +1 -0
  76. package/dist/commands/release.d.ts +6 -0
  77. package/dist/commands/release.d.ts.map +1 -0
  78. package/dist/commands/release.helpers.d.ts +61 -0
  79. package/dist/commands/release.helpers.d.ts.map +1 -0
  80. package/dist/commands/release.helpers.js +277 -0
  81. package/dist/commands/release.helpers.js.map +1 -0
  82. package/dist/commands/release.js +127 -0
  83. package/dist/commands/release.js.map +1 -0
  84. package/dist/commands/remove.d.ts +6 -0
  85. package/dist/commands/remove.d.ts.map +1 -0
  86. package/dist/commands/remove.helpers.d.ts +59 -0
  87. package/dist/commands/remove.helpers.d.ts.map +1 -0
  88. package/dist/commands/remove.helpers.js +190 -0
  89. package/dist/commands/remove.helpers.js.map +1 -0
  90. package/dist/commands/remove.js +137 -0
  91. package/dist/commands/remove.js.map +1 -0
  92. package/dist/commands/repair.d.ts +6 -0
  93. package/dist/commands/repair.d.ts.map +1 -0
  94. package/dist/commands/repair.helpers.d.ts +5 -0
  95. package/dist/commands/repair.helpers.d.ts.map +1 -0
  96. package/dist/commands/repair.helpers.js +499 -0
  97. package/dist/commands/repair.helpers.js.map +1 -0
  98. package/dist/commands/repair.js +28 -0
  99. package/dist/commands/repair.js.map +1 -0
  100. package/dist/commands/status.d.ts +6 -0
  101. package/dist/commands/status.d.ts.map +1 -0
  102. package/dist/commands/status.js +116 -0
  103. package/dist/commands/status.js.map +1 -0
  104. package/dist/commands/system-integration.d.ts +6 -0
  105. package/dist/commands/system-integration.d.ts.map +1 -0
  106. package/dist/commands/system-integration.helpers.d.ts +70 -0
  107. package/dist/commands/system-integration.helpers.d.ts.map +1 -0
  108. package/dist/commands/system-integration.helpers.js +313 -0
  109. package/dist/commands/system-integration.helpers.js.map +1 -0
  110. package/dist/commands/system-integration.js +132 -0
  111. package/dist/commands/system-integration.js.map +1 -0
  112. package/dist/commands/tmux.d.ts +11 -0
  113. package/dist/commands/tmux.d.ts.map +1 -0
  114. package/dist/commands/tmux.js +500 -0
  115. package/dist/commands/tmux.js.map +1 -0
  116. package/dist/commands/todo.d.ts +6 -0
  117. package/dist/commands/todo.d.ts.map +1 -0
  118. package/dist/commands/todo.helpers.d.ts +50 -0
  119. package/dist/commands/todo.helpers.d.ts.map +1 -0
  120. package/dist/commands/todo.helpers.js +297 -0
  121. package/dist/commands/todo.helpers.js.map +1 -0
  122. package/dist/commands/todo.js +579 -0
  123. package/dist/commands/todo.js.map +1 -0
  124. package/dist/commands/update.d.ts +18 -0
  125. package/dist/commands/update.d.ts.map +1 -0
  126. package/dist/commands/update.helpers.d.ts +89 -0
  127. package/dist/commands/update.helpers.d.ts.map +1 -0
  128. package/dist/commands/update.helpers.js +335 -0
  129. package/dist/commands/update.helpers.js.map +1 -0
  130. package/dist/commands/update.js +187 -0
  131. package/dist/commands/update.js.map +1 -0
  132. package/dist/core/config-loader.d.ts +47 -0
  133. package/dist/core/config-loader.d.ts.map +1 -0
  134. package/dist/core/config-loader.js +188 -0
  135. package/dist/core/config-loader.js.map +1 -0
  136. package/dist/core/config-merger.d.ts +29 -0
  137. package/dist/core/config-merger.d.ts.map +1 -0
  138. package/dist/core/config-merger.js +100 -0
  139. package/dist/core/config-merger.js.map +1 -0
  140. package/dist/core/config-migration.d.ts +64 -0
  141. package/dist/core/config-migration.d.ts.map +1 -0
  142. package/dist/core/config-migration.js +340 -0
  143. package/dist/core/config-migration.js.map +1 -0
  144. package/dist/core/config-new.d.ts +19 -0
  145. package/dist/core/config-new.d.ts.map +1 -0
  146. package/dist/core/config-new.js +58 -0
  147. package/dist/core/config-new.js.map +1 -0
  148. package/dist/core/config-schema.d.ts +221 -0
  149. package/dist/core/config-schema.d.ts.map +1 -0
  150. package/dist/core/config-schema.js +168 -0
  151. package/dist/core/config-schema.js.map +1 -0
  152. package/dist/core/config.d.ts +55 -0
  153. package/dist/core/config.d.ts.map +1 -0
  154. package/dist/core/config.js +143 -0
  155. package/dist/core/config.js.map +1 -0
  156. package/dist/core/dev-server.d.ts +29 -0
  157. package/dist/core/dev-server.d.ts.map +1 -0
  158. package/dist/core/dev-server.js +54 -0
  159. package/dist/core/dev-server.js.map +1 -0
  160. package/dist/core/discovery.d.ts +51 -0
  161. package/dist/core/discovery.d.ts.map +1 -0
  162. package/dist/core/discovery.js +247 -0
  163. package/dist/core/discovery.js.map +1 -0
  164. package/dist/core/env.d.ts +13 -0
  165. package/dist/core/env.d.ts.map +1 -0
  166. package/dist/core/env.js +75 -0
  167. package/dist/core/env.js.map +1 -0
  168. package/dist/core/git.d.ts +31 -0
  169. package/dist/core/git.d.ts.map +1 -0
  170. package/dist/core/git.js +56 -0
  171. package/dist/core/git.js.map +1 -0
  172. package/dist/core/paths.d.ts +86 -0
  173. package/dist/core/paths.d.ts.map +1 -0
  174. package/dist/core/paths.js +256 -0
  175. package/dist/core/paths.js.map +1 -0
  176. package/dist/core/tmux-config.d.ts +174 -0
  177. package/dist/core/tmux-config.d.ts.map +1 -0
  178. package/dist/core/tmux-config.js +545 -0
  179. package/dist/core/tmux-config.js.map +1 -0
  180. package/dist/core/tmux-config.legacy.d.ts +243 -0
  181. package/dist/core/tmux-config.legacy.d.ts.map +1 -0
  182. package/dist/core/tmux-config.legacy.js +896 -0
  183. package/dist/core/tmux-config.legacy.js.map +1 -0
  184. package/dist/core/tmux.d.ts +214 -0
  185. package/dist/core/tmux.d.ts.map +1 -0
  186. package/dist/core/tmux.js +712 -0
  187. package/dist/core/tmux.js.map +1 -0
  188. package/dist/core/toolchain-resolver.d.ts +51 -0
  189. package/dist/core/toolchain-resolver.d.ts.map +1 -0
  190. package/dist/core/toolchain-resolver.js +364 -0
  191. package/dist/core/toolchain-resolver.js.map +1 -0
  192. package/dist/core/worktree-status.d.ts +20 -0
  193. package/dist/core/worktree-status.d.ts.map +1 -0
  194. package/dist/core/worktree-status.js +67 -0
  195. package/dist/core/worktree-status.js.map +1 -0
  196. package/dist/i18n/index.d.ts +36 -0
  197. package/dist/i18n/index.d.ts.map +1 -0
  198. package/dist/i18n/index.js +157 -0
  199. package/dist/i18n/index.js.map +1 -0
  200. package/dist/i18n/locales/en.d.ts +866 -0
  201. package/dist/i18n/locales/en.d.ts.map +1 -0
  202. package/dist/i18n/locales/en.js +985 -0
  203. package/dist/i18n/locales/en.js.map +1 -0
  204. package/dist/i18n/locales/zh-CN.d.ts +865 -0
  205. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  206. package/dist/i18n/locales/zh-CN.js +985 -0
  207. package/dist/i18n/locales/zh-CN.js.map +1 -0
  208. package/dist/index.d.ts +2 -0
  209. package/dist/index.d.ts.map +1 -0
  210. package/dist/index.js +4 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/plugins/builtin/gradle.d.ts +9 -0
  213. package/dist/plugins/builtin/gradle.d.ts.map +1 -0
  214. package/dist/plugins/builtin/gradle.js +164 -0
  215. package/dist/plugins/builtin/gradle.js.map +1 -0
  216. package/dist/plugins/builtin/maven.d.ts +9 -0
  217. package/dist/plugins/builtin/maven.d.ts.map +1 -0
  218. package/dist/plugins/builtin/maven.js +127 -0
  219. package/dist/plugins/builtin/maven.js.map +1 -0
  220. package/dist/plugins/builtin/npm.d.ts +9 -0
  221. package/dist/plugins/builtin/npm.d.ts.map +1 -0
  222. package/dist/plugins/builtin/npm.js +238 -0
  223. package/dist/plugins/builtin/npm.js.map +1 -0
  224. package/dist/plugins/builtin/pip.d.ts +9 -0
  225. package/dist/plugins/builtin/pip.d.ts.map +1 -0
  226. package/dist/plugins/builtin/pip.js +210 -0
  227. package/dist/plugins/builtin/pip.js.map +1 -0
  228. package/dist/plugins/builtin/xcode.d.ts +12 -0
  229. package/dist/plugins/builtin/xcode.d.ts.map +1 -0
  230. package/dist/plugins/builtin/xcode.js +438 -0
  231. package/dist/plugins/builtin/xcode.js.map +1 -0
  232. package/dist/plugins/index.d.ts +13 -0
  233. package/dist/plugins/index.d.ts.map +1 -0
  234. package/dist/plugins/index.js +24 -0
  235. package/dist/plugins/index.js.map +1 -0
  236. package/dist/plugins/manager.d.ts +93 -0
  237. package/dist/plugins/manager.d.ts.map +1 -0
  238. package/dist/plugins/manager.js +270 -0
  239. package/dist/plugins/manager.js.map +1 -0
  240. package/dist/plugins/utils.d.ts +42 -0
  241. package/dist/plugins/utils.d.ts.map +1 -0
  242. package/dist/plugins/utils.js +175 -0
  243. package/dist/plugins/utils.js.map +1 -0
  244. package/dist/types/index.d.ts +104 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +21 -0
  247. package/dist/types/index.js.map +1 -0
  248. package/dist/types/plugin.d.ts +200 -0
  249. package/dist/types/plugin.d.ts.map +1 -0
  250. package/dist/types/plugin.js +19 -0
  251. package/dist/types/plugin.js.map +1 -0
  252. package/dist/utils/logger.d.ts +42 -0
  253. package/dist/utils/logger.d.ts.map +1 -0
  254. package/dist/utils/logger.js +80 -0
  255. package/dist/utils/logger.js.map +1 -0
  256. package/docs/en/manual/04-command-reference/README.md +58 -0
  257. package/docs/en/manual/README.md +108 -0
  258. package/docs/zh-CN/manual/04-command-reference/README.md +58 -0
  259. package/docs/zh-CN/manual/README.md +108 -0
  260. package/package.json +65 -0
  261. package/shell/colyn.sh +55 -0
  262. package/shell/completion.bash +270 -0
  263. package/shell/completion.zsh +167 -0
@@ -0,0 +1,985 @@
1
+ /**
2
+ * Chinese (Simplified) translations
3
+ */
4
+ export const zhCN = {
5
+ // Common
6
+ common: {
7
+ error: '错误',
8
+ success: '成功',
9
+ hint: '提示',
10
+ canceled: '已取消',
11
+ unknown: '未知',
12
+ unknownError: '未知错误',
13
+ yes: '是',
14
+ no: '否',
15
+ and: '和',
16
+ files: '{{count}} 个文件',
17
+ files_other: '{{count}} 个文件',
18
+ commits: '{{count}} 个提交',
19
+ commits_other: '{{count}} 个提交',
20
+ },
21
+ // CLI
22
+ cli: {
23
+ description: 'Git worktree 管理工具',
24
+ noColorOption: '禁用颜色输出',
25
+ // Commander.js built-in texts
26
+ usage: '用法:',
27
+ options: '选项:',
28
+ commands: '命令:',
29
+ arguments: '参数:',
30
+ versionDescription: '输出版本号',
31
+ helpDescription: '显示命令帮助',
32
+ helpCommand: 'help [命令]',
33
+ helpCommandDescription: '显示命令帮助',
34
+ showHelpHint: '(使用 --help 查看用法信息)',
35
+ missingArgument: '缺少必要参数: {{arg}}',
36
+ },
37
+ // Logger
38
+ logger: {
39
+ hintPrefix: '提示:',
40
+ errorPrefix: '错误:',
41
+ },
42
+ // Commands
43
+ commands: {
44
+ // add command
45
+ add: {
46
+ description: '创建新的 worktree',
47
+ branchNameEmpty: '分支名称不能为空',
48
+ branchNameEmptyHint: '请提供分支名称参数',
49
+ invalidBranchName: '无效的分支名称',
50
+ invalidBranchNameHint: '分支名称只能包含字母、数字、下划线、连字符和斜杠',
51
+ notInitialized: '当前目录未初始化',
52
+ notInitializedHint: '请先运行 colyn init 命令初始化项目',
53
+ notGitRepo: '当前目录不是 git 仓库',
54
+ notGitRepoHint: '请在 git 仓库中运行此命令',
55
+ missingEnvFile: '主分支目录缺少 .env.local 文件',
56
+ missingEnvFileHint: '请先在主分支目录配置环境变量',
57
+ branchExists: '分支 "{{branch}}" 已存在 worktree',
58
+ branchExistsHint: 'ID: {{id}}, 路径: {{path}}',
59
+ usingLocalBranch: '使用本地分支: {{branch}}',
60
+ checkingRemote: '检查远程分支...',
61
+ creatingFromRemote: '从远程创建分支: {{branch}}',
62
+ createdFromRemote: '已从远程创建分支: {{branch}}',
63
+ creatingNewBranch: '基于主分支创建新分支: {{branch}}',
64
+ createdNewBranch: '已创建新分支: {{branch}}',
65
+ branchHandleFailed: '分支处理失败',
66
+ creatingWorktree: '创建 worktree...',
67
+ worktreeCreated: 'Worktree 创建完成: task-{{id}}',
68
+ worktreeCreateFailed: '创建 worktree 失败',
69
+ branchAlreadyUsed: '分支 "{{branch}}" 已关联到现有 worktree',
70
+ branchAlreadyUsedHint: `Worktree 信息:
71
+ ID: {{id}}
72
+ 路径: {{path}}
73
+ 端口: {{port}}
74
+
75
+ 提示:
76
+ - 如果要切换到该 worktree,请使用: cd {{path}}
77
+ - 如果要删除该 worktree,请使用: colyn remove {{id}}
78
+ - 如果要使用不同的分支名,请重新运行 add 命令`,
79
+ branchUsedByOther: '分支 "{{branch}}" 已被其他 worktree 使用',
80
+ branchUsedByOtherHint: `该分支当前被以下 worktree 使用:
81
+ {{path}}
82
+
83
+ 提示:
84
+ - 这可能是其他 colyn 项目或手动创建的 worktree
85
+ - 如果不再需要,请手动删除: git worktree remove "{{path}}"
86
+ - 或者使用不同的分支名`,
87
+ branchUsedUnknown: '分支 "{{branch}}" 已被其他 worktree 使用',
88
+ branchUsedUnknownHint: `提示:
89
+ - 运行 "git worktree list" 查看所有 worktree
90
+ - 删除不需要的 worktree: git worktree remove <path>
91
+ - 或者使用不同的分支名`,
92
+ worktreeError: '创建 worktree 时发生错误',
93
+ worktreeErrorHint: `错误信息: {{error}}
94
+
95
+ 提示:
96
+ - 检查分支是否存在
97
+ - 检查 worktree 目录是否可写
98
+ - 运行 "git worktree list" 查看现有 worktree`,
99
+ configuringEnv: '配置环境变量...',
100
+ envConfigured: '环境变量配置完成',
101
+ envConfigFailed: '配置环境变量失败',
102
+ successTitle: 'Worktree 创建成功!',
103
+ worktreeInfo: 'Worktree 信息:',
104
+ infoId: 'ID: {{id}}',
105
+ infoBranch: '分支: {{branch}}',
106
+ infoPath: '路径: {{path}}',
107
+ infoPort: '端口: {{port}}',
108
+ nextSteps: '后续操作:',
109
+ step1: '1. 进入 worktree 目录:',
110
+ step2: '2. 启动开发服务器(端口已自动配置):',
111
+ step3: '3. 查看所有 worktree:',
112
+ tmuxWindowCreated: '已创建 Window {{windowIndex}}: {{windowName}}',
113
+ tmuxWindowSwitched: '已自动切换到 Window {{windowIndex}}',
114
+ tmuxWindowCreatedInSession: '已在后台 session "{{sessionName}}" 中创建 Window {{windowIndex}}: {{windowName}}',
115
+ tmuxPaneClaude: ' ├─ Claude Code (左侧 60%)',
116
+ tmuxPaneDevServer: ' ├─ Dev Server (右上 12%)',
117
+ tmuxPaneBash: ' └─ Bash (右下 28%)',
118
+ tmuxHintTitle: '提示: Colyn 支持 tmux 集成,获得更好的多 worktree 体验',
119
+ tmuxHintAttach: ` 运行 'tmux attach -t {{session}}' 进入 tmux 环境`,
120
+ installingDeps: '安装项目依赖...',
121
+ depsInstalled: '依赖安装完成',
122
+ depsInstallFailed: '依赖安装失败(可手动运行安装命令)',
123
+ },
124
+ // list command
125
+ list: {
126
+ description: '列出所有 worktree',
127
+ jsonOption: '以 JSON 格式输出',
128
+ pathsOption: '只输出路径(每行一个)',
129
+ noMainOption: '不显示主分支',
130
+ refreshOption: '监听文件变化自动刷新',
131
+ optionConflict: '选项冲突:--json 和 --paths 不能同时使用',
132
+ optionConflictHint: '请选择其中一种输出格式',
133
+ refreshConflict: '选项冲突:--refresh 不能与 --json 或 --paths 同时使用',
134
+ refreshConflictHint: '刷新模式只支持表格输出',
135
+ refreshingData: '正在刷新数据...',
136
+ watchMode: '监听文件变化中 (按 Ctrl+C 退出)',
137
+ watchError: '文件监听错误:{{error}}',
138
+ refreshStopped: '已停止刷新',
139
+ noWorktrees: '暂无 worktree',
140
+ noWorktreesHint: '提示:使用 colyn add <branch> 创建新的 worktree',
141
+ tableId: 'ID',
142
+ tableBranch: 'Branch',
143
+ tablePort: 'Port',
144
+ tableGit: 'Git',
145
+ tableDiff: 'Diff',
146
+ tablePath: 'Path',
147
+ tableWtStatus: 'Status',
148
+ tableWtStatusShort: 'st.',
149
+ tmuxSwitchHint: '使用 Ctrl-b 0-9 切换到对应 Window',
150
+ gitColumnHelp: `Git 列缩写说明:
151
+ M - Modified (已修改未提交的更改)
152
+ S - Staged (已暂存到索引的更改)
153
+ ? - Untracked (未被 git 跟踪的新文件)`,
154
+ },
155
+ // release command
156
+ release: {
157
+ description: '在主分支目录执行发布流程(默认 patch 版本)',
158
+ versionArgument: '版本类型(patch/minor/major)或版本号(如 1.2.3)',
159
+ versionMissing: '请指定版本类型或版本号',
160
+ versionMissingHint: '示例:colyn release patch / colyn release 1.2.3',
161
+ execFailed: '执行发布脚本失败',
162
+ runInMain: '将在主分支目录执行发布脚本:{{path}}',
163
+ noUpdateOption: '跳过自动更新所有 worktree',
164
+ verboseOption: '输出失败命令的详细日志',
165
+ updatingWorktrees: '正在更新所有 worktree...',
166
+ updateFailed: '⚠ 更新 worktree 失败,但发布已成功完成',
167
+ currentDirNotClean: '当前目录有未提交的更改',
168
+ currentDirNotCleanHint: '请先提交或暂存更改后再发布:\ncd "{{path}}"\ngit add .\ngit commit -m "..."\n\n检测到 {{count}} 个更改的文件:\n{{files}}',
169
+ branchNotMerged: '分支 "{{branch}}" 尚未合并到 "{{main}}"',
170
+ branchNotMergedHint: '请先将分支合并到主分支后再发布:\ncolyn merge {{branch}}\n\n或者在主分支目录中执行发布',
171
+ invalidVersion: '无效的版本号格式:{{version}}',
172
+ invalidVersionHint: '版本号格式应为:1.2.3',
173
+ step1: '步骤 1: 检查 git 状态',
174
+ step2: '步骤 2: 确定新版本号',
175
+ step3: '步骤 3: 安装依赖',
176
+ step4: '步骤 4: 运行代码检查',
177
+ step5: '步骤 5: 编译项目',
178
+ step6: '步骤 6: 更新版本号',
179
+ step7: '步骤 7: 创建 git commit',
180
+ step8: '步骤 8: 创建 git tag',
181
+ step9: '步骤 9: 推送到远程仓库',
182
+ step10: '步骤 10: 发布到包管理服务',
183
+ workingDirNotClean: '工作区不干净',
184
+ workingDirNotCleanHint: '请先提交或 stash 所有更改',
185
+ workingDirClean: '工作区干净',
186
+ currentBranch: '当前分支: {{branch}}',
187
+ currentVersion: '当前版本: {{version}}',
188
+ newVersion: '新版本: {{old}} -> {{new}}',
189
+ runningInstall: '安装依赖...',
190
+ installSucceeded: '依赖安装成功',
191
+ runningLint: '运行 lint...',
192
+ lintPassed: 'Lint 检查通过',
193
+ runningBuild: '运行 build...',
194
+ buildSucceeded: '编译成功',
195
+ targetVersion: '目标版本: {{version}}',
196
+ versionUpdated: '版本号已更新: {{old}} -> {{new}}',
197
+ commitCreated: '已创建提交: {{message}}',
198
+ commitSkipped: '无版本文件变更,跳过提交',
199
+ commitFailed: '创建提交失败',
200
+ commitFailedHint: '错误: {{error}}',
201
+ tagCreated: '已创建标签: {{tag}}',
202
+ tagFailed: '创建标签失败',
203
+ tagFailedHint: '错误: {{error}}',
204
+ pushing: '推送中...',
205
+ pushedBranch: '已推送提交到分支: {{branch}}',
206
+ pushedTag: '已推送标签: {{tag}}',
207
+ pushSucceeded: '已推送到远程仓库',
208
+ runningPublish: '发布到包管理服务...',
209
+ checkingPublishable: '检查工具链可发布性...',
210
+ publishSucceeded: '已发布到包管理服务',
211
+ publishSkippedForToolchain: '跳过 {{toolchain}}({{path}}):不满足发布条件',
212
+ publishSkippedAll: '未找到可发布的工具链,已跳过发布阶段',
213
+ publishSkippedSummary: '已跳过 {{count}} 个不满足发布条件的工具链',
214
+ pushFailed: '推送失败',
215
+ pushFailedHint: '错误: {{error}}',
216
+ releaseComplete: '发布完成!',
217
+ releaseInfo: '发布信息:',
218
+ releaseVersion: '版本: v{{version}}',
219
+ releaseBranch: '分支: {{branch}}',
220
+ releaseTag: '标签: v{{version}}',
221
+ nextSteps: '后续操作:',
222
+ nextStep1: '1. 在 GitHub 上创建 Release:',
223
+ nextStep2: '2. 更新安装说明文档(如果需要)',
224
+ nextStep3: '3. 通知用户新版本发布',
225
+ rollbackHint: '如果需要回滚,请运行:',
226
+ },
227
+ // init command
228
+ init: {
229
+ description: '初始化 worktree 管理结构',
230
+ portOption: '主分支开发服务器端口',
231
+ yesOption: '初始化已有项目时跳过确认提示',
232
+ alreadyInProject: '当前目录已在 colyn 项目中',
233
+ alreadyInProjectHint: '项目根目录: {{root}}\n请不要在项目子目录中运行 init 命令',
234
+ invalidPort: '无效的端口号',
235
+ invalidPortHint: '端口必须在 1-65535 之间',
236
+ nonInteractivePort: '非交互模式下无法询问端口',
237
+ nonInteractivePortHint: '请使用 --port <port> 指定端口',
238
+ enterPort: '请输入主分支开发服务器端口',
239
+ portValidation: '端口必须在 1-65535 之间',
240
+ directoryConflict: '主分支目录名 "{{name}}" 与现有文件冲突',
241
+ directoryConflictHint: '请重命名该文件后再运行 init 命令',
242
+ creatingStructure: '创建目录结构...',
243
+ structureCreated: '目录结构创建完成',
244
+ movingFiles: '移动项目文件...',
245
+ moving: '移动: {{file}}',
246
+ filesMoved: '项目文件移动完成',
247
+ moveFilesFailed: '移动文件失败',
248
+ moveFilesError: '移动文件时发生错误',
249
+ moveFilesErrorHint: '请检查文件权限或手动恢复目录结构',
250
+ configuringEnv: '配置环境变量文件...',
251
+ envConfigured: '环境变量配置完成',
252
+ envConfigFailed: '配置环境变量失败',
253
+ configuringGitignore: '配置 .gitignore...',
254
+ gitignoreConfigured: '.gitignore 配置完成(已添加 .env.local)',
255
+ gitignoreSkipped: '.gitignore 已有忽略规则,跳过',
256
+ gitignoreFailed: '配置 .gitignore 失败',
257
+ successTitle: '初始化成功!',
258
+ directoryStructure: '目录结构:',
259
+ mainDirComment: '# 主分支目录',
260
+ mainDirCommentEmpty: '# 主分支目录(请在此目录中初始化项目)',
261
+ worktreesDirComment: '# Worktree 目录',
262
+ configDirComment: '# 配置目录',
263
+ configInfo: '配置信息:',
264
+ mainBranch: '主分支: {{branch}}',
265
+ port: '端口: {{port}}',
266
+ nextSteps: '后续操作:',
267
+ step1CreateWorktree: '1. 创建 worktree:',
268
+ step2ListWorktrees: '2. 查看 worktree 列表:',
269
+ step1EnterDir: '1. 进入主分支目录:',
270
+ step2InitGit: '2. 初始化 git 仓库(如果还没有):',
271
+ step3InitProject: '3. 初始化你的项目(例如 npm/yarn init)',
272
+ step4CreateWorktree: '4. 创建 worktree:',
273
+ detectedInitialized: '检测到已初始化,进入补全模式...',
274
+ createMainDir: '创建主分支目录: {{name}}',
275
+ createWorktreesDir: '创建 worktrees 目录',
276
+ createConfigDir: '创建 .colyn 配置目录',
277
+ checkEnvLocal: '检查并配置 .env.local',
278
+ checkGitignore: '检查并配置 .gitignore',
279
+ completionDone: '补全完成!',
280
+ noCompletionNeeded: '所有配置已完整,无需补全。',
281
+ detectedExistingFiles: '检测到已有文件,将执行以下操作:',
282
+ existingStep1: '1. 创建主分支目录和 worktrees 目录',
283
+ existingStep2: '2. 将当前目录所有文件移动到 {{name}}/ 目录下',
284
+ currentFileList: '当前目录文件列表:',
285
+ moreFiles: '... 还有 {{count}} 个文件',
286
+ confirmContinue: '确认继续初始化?',
287
+ nonInteractiveConfirm: '非交互模式下无法询问确认',
288
+ nonInteractiveConfirmHint: '请使用 --yes 跳过确认继续初始化',
289
+ initCanceled: '已取消初始化',
290
+ tmuxDetectedInSession: '检测到在 tmux session 中',
291
+ tmuxUseCurrentSession: '将使用当前 session: {{session}}',
292
+ tmuxWindow0Set: '已设置 Window 0: main',
293
+ tmuxDetectedNotInSession: '检测到你不在 tmux 中',
294
+ tmuxSessionCreated: '已创建 tmux session: {{session}}',
295
+ tmuxPaneClaude: ' ├─ Claude Code (左侧 60%)',
296
+ tmuxPaneDevServer: ' ├─ Dev Server (右上 12%)',
297
+ tmuxPaneBash: ' └─ Bash (右下 28%)',
298
+ tmuxAttachHint: `提示: 运行 'tmux attach -t {{session}}' 进入工作环境`,
299
+ noPluginsDetected: '未检测到已知工具链,请手动选择要启用的插件(可多选,直接回车跳过)',
300
+ selectPlugins: '选择工具链插件',
301
+ },
302
+ // merge command
303
+ merge: {
304
+ description: '将 worktree 分支合并回主分支',
305
+ pushOption: '合并后自动推送到远程',
306
+ noPushOption: '合并后不推送(跳过询问)',
307
+ noRebaseOption: '使用 merge 而非 rebase 更新 worktree',
308
+ noUpdateOption: '合并后不自动更新',
309
+ updateAllOption: '合并后更新所有 worktrees',
310
+ verboseOption: '显示详细的步骤信息',
311
+ noFetchOption: '跳过从远程拉取主分支最新代码',
312
+ cannotAutoDetect: '无法自动识别 worktree',
313
+ cannotAutoDetectHint: `请在 worktree 目录中运行此命令,或指定 ID/分支名:
314
+ colyn merge <id>
315
+ colyn merge <branch-name>
316
+
317
+ 查看所有 worktree:
318
+ colyn list`,
319
+ worktreeNotFound: '找不到 ID 为 {{id}} 的 worktree',
320
+ worktreeNotFoundHint: `当前目录的 .env.local 中 WORKTREE 值可能已过期
321
+
322
+ 查看所有 worktree:
323
+ colyn list`,
324
+ branchNotFound: '找不到分支 "{{branch}}" 对应的 worktree',
325
+ branchNotFoundHint: `查看所有 worktree:
326
+ colyn list`,
327
+ detectedWorktree: '检测到 worktree:',
328
+ detectedBranchLabel: '分支',
329
+ detectedPathLabel: '路径',
330
+ preCheck: '执行前置检查...',
331
+ preCheckPassed: '前置检查通过',
332
+ preCheckFailed: '前置检查失败',
333
+ mainDirClean: '✓ 主分支工作目录干净',
334
+ worktreeDirClean: '✓ Worktree 工作目录干净',
335
+ dirHasUncommitted: '{{name}}目录有未提交的更改',
336
+ dirHasUncommittedHint: `{{name}}目录: {{path}}
337
+
338
+ 变更文件 ({{count}} 个):
339
+ {{files}}
340
+
341
+ 提示:
342
+ - 查看状态: cd "{{path}}" && git status
343
+ - 提交更改: git add . && git commit -m "..."
344
+ - 或者暂存: git stash`,
345
+ step1Title: '步骤 1/2: 在 worktree 中更新主分支代码',
346
+ step1Dir: ' 目录: {{path}}',
347
+ step1Cmd: ' 执行: git merge {{branch}}',
348
+ step1CmdRebase: ' 执行: git rebase {{branch}}',
349
+ mergingMain: '合并主分支到 worktree...',
350
+ rebasingMain: '变基主分支到 worktree...',
351
+ mainMergeFailed: '合并主分支失败',
352
+ mainRebaseFailed: '变基主分支失败',
353
+ mainMerged: '主分支已合并到 worktree',
354
+ mainRebased: '主分支已变基到 worktree',
355
+ step2Title: '步骤 2/2: 在主分支中合并 worktree 分支',
356
+ step2Dir: ' 目录: {{path}}',
357
+ step2Cmd: ' 执行: git merge --no-ff {{branch}}',
358
+ mergingWorktree: '合并 worktree 到主分支...',
359
+ worktreeMergeFailed: '合并到主分支失败',
360
+ worktreeMerged: 'worktree 已合并到主分支',
361
+ mergeComplete: '合并完成!',
362
+ unexpectedConflict: '合并到主分支时发生意外冲突',
363
+ unexpectedConflictHint: `这种情况不应该发生。请检查 git 状态并手动解决。
364
+ 主分支目录: {{path}}`,
365
+ mergeFailed: '合并到主分支失败',
366
+ pushToRemote: '推送到远程仓库...',
367
+ pushed: '已推送到远程仓库',
368
+ pushFailed: '推送失败',
369
+ shouldPush: '是否推送到远程仓库?',
370
+ mergeSuccess: '合并成功!',
371
+ mergeInfo: '合并信息:',
372
+ mainBranchLabel: '主分支: {{branch}}',
373
+ mergeBranchLabel: '合并分支: {{branch}}',
374
+ commitLabel: '提交: {{hash}} Merge branch \'{{branch}}\'',
375
+ mergeAndPushed: '合并完成并已推送到远程!',
376
+ mergeCompleteNoPush: '合并完成!',
377
+ pushLaterHint: '提示:可稍后手动推送:',
378
+ nextSteps: '后续操作:',
379
+ step1ViewCode: '1. 查看合并后的代码:',
380
+ step2ContinueWorktree: '2. 如需继续使用 worktree:',
381
+ step3RemoveWorktree: '3. 如需删除 worktree:',
382
+ conflictTitle: '合并 {{main}} 到 {{branch}} 时发生冲突',
383
+ conflictFiles: '冲突文件:',
384
+ resolveSteps: '解决步骤:',
385
+ resolveStep1: '1. 进入 worktree 目录解决冲突:',
386
+ resolveStep2: '2. 编辑冲突文件,解决冲突标记',
387
+ resolveStep3: '3. 添加已解决的文件:',
388
+ resolveStep4: '4. 完成合并:',
389
+ resolveStep4Rebase: '4. 继续变基:',
390
+ resolveStep4RebaseAbort: '5. 如需放弃变基:',
391
+ resolveStep5: '5. 重新运行合并命令:',
392
+ pushFailedTitle: '推送到远程仓库失败',
393
+ pushFailedError: '错误信息: {{error}}',
394
+ pushFailedHint: '本地合并已完成,可稍后手动推送:',
395
+ updatingCurrentWorktree: '正在更新当前 worktree...',
396
+ updatingAllWorktrees: '正在更新所有 worktrees...',
397
+ updatePartialSuccess: '⚠ 部分 worktrees 更新失败,请检查上方详情',
398
+ skipBuildOption: '跳过 lint 和 build 检查',
399
+ skippingBuild: '已跳过 lint 和 build 检查(--skip-build)',
400
+ runningLint: '运行 lint 检查...',
401
+ lintPassed: 'Lint 检查通过',
402
+ lintFailed: 'Lint 检查失败',
403
+ lintFailedHint: '错误: {{error}}',
404
+ runningBuild: '运行编译检查...',
405
+ buildPassed: '编译成功',
406
+ buildFailed: '编译失败',
407
+ buildFailedHint: '错误: {{error}}',
408
+ },
409
+ // update command
410
+ update: {
411
+ description: '将主分支代码更新到 worktree',
412
+ noRebaseOption: '使用 merge 而非 rebase',
413
+ allOption: '更新所有 worktree',
414
+ noFetchOption: '跳过从远程拉取主分支最新代码',
415
+ cannotAutoDetect: '无法自动识别 worktree',
416
+ cannotAutoDetectHint: `请在 worktree 目录中运行此命令,或指定 ID/分支名:
417
+ colyn update <id>
418
+ colyn update <branch-name>
419
+
420
+ 查看所有 worktree:
421
+ colyn list`,
422
+ worktreeNotFound: '找不到 ID 为 {{id}} 的 worktree',
423
+ worktreeNotFoundHint: `当前目录的 .env.local 中 WORKTREE 值可能已过期
424
+
425
+ 查看所有 worktree:
426
+ colyn list`,
427
+ branchNotFound: '找不到分支 "{{branch}}" 对应的 worktree',
428
+ branchNotFoundHint: `查看所有 worktree:
429
+ colyn list`,
430
+ detectedWorktree: '检测到 worktree:',
431
+ branchLabel: '分支',
432
+ pathLabel: '路径',
433
+ pullingMain: '拉取主分支最新代码...',
434
+ pullSuccess: '主分支已更新',
435
+ pullFailed: '拉取主分支失败',
436
+ pullFailedHint: '请检查网络连接或远程仓库配置\n错误信息: {{error}}',
437
+ checkingStatus: '检查工作目录状态...',
438
+ statusClean: '工作目录干净',
439
+ statusDirty: '工作目录有未提交的更改',
440
+ dirHasUncommitted: '{{name}} 有未提交的更改',
441
+ dirHasUncommittedHint: `{{name}} 目录: {{path}}
442
+
443
+ 变更文件 ({{count}} 个):
444
+ {{files}}
445
+
446
+ 提示:
447
+ - 查看状态: cd "{{path}}" && git status
448
+ - 提交更改: git add . && git commit -m "..."
449
+ - 或者暂存: git stash`,
450
+ updating: '正在{{strategy}}...',
451
+ updateDir: ' 目录: {{path}}',
452
+ updateCmd: ' 执行: {{cmd}}',
453
+ updateSuccess: '更新成功',
454
+ updateFailed: '更新失败',
455
+ updateComplete: '更新完成!',
456
+ mainBranchLabel: '主分支 ({{branch}})',
457
+ strategyLabel: '策略',
458
+ rebaseConflictTitle: '变基失败,存在冲突',
459
+ mergeConflictTitle: '合并失败,存在冲突',
460
+ conflictFiles: '冲突文件:',
461
+ resolveSteps: '解决步骤:',
462
+ rebaseStep1: '1. 编辑冲突文件,解决冲突标记',
463
+ rebaseStep2: '2. 添加已解决的文件:',
464
+ rebaseStep3: '3. 继续变基:',
465
+ rebaseStep4: '4. 如需放弃变基:',
466
+ mergeStep1: '1. 编辑冲突文件,解决冲突标记',
467
+ mergeStep2: '2. 添加已解决的文件:',
468
+ mergeStep3: '3. 完成合并:',
469
+ mergeStep4: '4. 如需放弃合并:',
470
+ noWorktrees: '没有找到任何 worktree',
471
+ noWorktreesHint: '请先使用 colyn add 创建 worktree',
472
+ foundWorktrees: '发现 {{count}} 个 worktree:',
473
+ batchUpdating: '正在批量更新 (策略: {{strategy}})...',
474
+ batchResult: '更新结果:',
475
+ batchSucceeded: '✓ {{count}} 个 worktree 更新成功',
476
+ batchFailed: '✗ {{count}} 个 worktree 更新失败',
477
+ batchSkipped: '○ {{count}} 个 worktree 已跳过',
478
+ failedDetails: '失败详情:',
479
+ dirtySkipped: '工作目录不干净,已跳过',
480
+ hasConflict: '存在冲突,请手动解决',
481
+ },
482
+ // remove command
483
+ remove: {
484
+ description: '删除 worktree',
485
+ forceOption: '强制删除(忽略未提交的更改)',
486
+ yesOption: '跳过确认提示',
487
+ cannotAutoDetect: '无法自动识别 worktree',
488
+ cannotAutoDetectHint: `请在 worktree 目录中运行此命令,或指定 ID/分支名:
489
+ colyn remove <id>
490
+ colyn remove <branch-name>
491
+
492
+ 查看所有 worktree:
493
+ colyn list`,
494
+ worktreeNotFound: '找不到 ID 为 {{id}} 的 worktree',
495
+ worktreeNotFoundHint: `当前目录的 .env.local 中 WORKTREE 值可能已过期
496
+
497
+ 查看所有 worktree:
498
+ colyn list`,
499
+ branchNotFound: '找不到分支 "{{branch}}" 对应的 worktree',
500
+ branchNotFoundHint: `查看所有 worktree:
501
+ colyn list`,
502
+ toBeDeleted: '将要删除的 worktree:',
503
+ uncommittedChanges: '检测到未提交的更改',
504
+ changedFiles: '变更文件:',
505
+ moreFiles: '... 以及其他 {{count}} 个文件',
506
+ cannotDelete: '无法删除:存在未提交的更改',
507
+ cannotDeleteHint: `请先提交或暂存更改,或使用 --force 强制删除:
508
+ cd "{{path}}"
509
+ git add . && git commit -m "..."
510
+
511
+ 或者强制删除:
512
+ colyn remove {{id}} --force`,
513
+ unmergedWarning: '分支 "{{branch}}" 尚未合并到 {{main}}',
514
+ unmergedWarningHint: '删除后可能丢失未合并的更改',
515
+ confirmDelete: '确定要删除这个 worktree 吗?',
516
+ deleteCanceled: '已取消删除',
517
+ deleting: '正在删除 worktree...',
518
+ deleteFailed: '删除 worktree 失败',
519
+ deleted: 'Worktree 已删除',
520
+ deleteBranch: '是否同时删除本地分支 "{{branch}}"?',
521
+ skipDeleteBranchPrompt: '已跳过分支删除询问(--yes),默认保留本地分支。',
522
+ deletingBranch: '正在删除分支...',
523
+ branchDeleted: '分支 "{{branch}}" 已删除',
524
+ branchDeleteFailed: '删除分支失败: {{error}}',
525
+ successTitle: 'Worktree 已删除',
526
+ deleteInfo: '删除信息:',
527
+ branchStatus: '分支: {{branch}}{{status}}',
528
+ branchStatusDeleted: ' (已删除)',
529
+ branchStatusKept: ' (保留)',
530
+ switchedToMain: '已自动切换到主分支目录:',
531
+ },
532
+ // checkout command
533
+ checkout: {
534
+ description: '在 worktree 中切换分支',
535
+ coDescription: 'checkout 的别名',
536
+ noFetchOption: '跳过从远程获取分支信息',
537
+ inMainBranch: '当前在主分支目录中',
538
+ inMainBranchHint: `请指定 worktree ID,或切换到 worktree 目录后执行:
539
+ colyn checkout <worktree-id> <branch>
540
+ colyn list # 查看所有 worktree`,
541
+ cannotDetermineWorktree: '无法确定目标 worktree',
542
+ cannotDetermineWorktreeHint: `请指定 worktree ID:
543
+ colyn checkout <worktree-id> <branch>
544
+ colyn list # 查看所有 worktree`,
545
+ alreadyOnBranch: '已经在分支 {{branch}} 上',
546
+ checkingStatus: '检查工作目录状态...',
547
+ dirClean: '工作目录干净',
548
+ dirHasChanges: '工作目录有未提交的更改',
549
+ cannotSwitchToMain: '不能在 worktree 中切换到主分支',
550
+ cannotSwitchToMainHint: '请直接使用主分支目录:\n cd "{{path}}"',
551
+ branchUsedByOther: '分支 {{branch}} 已在 task-{{id}} 中使用',
552
+ branchUsedByOtherHint: '请直接切换到该 worktree 目录工作:\n cd "{{path}}"',
553
+ branchNotMerged: '⚠ 当前分支 {{branch}} 尚未合并到主分支',
554
+ branchNotMergedInfo: '如果切换分支,这些更改将保留在原分支上。',
555
+ confirmSwitch: '是否继续切换?',
556
+ switchCanceled: '已取消切换',
557
+ fetchingRemote: '从远程仓库获取最新分支信息...',
558
+ fetchedRemote: '已获取远程分支信息',
559
+ fetchFailed: '获取远程分支信息失败',
560
+ mainBranchUpdated: '✓ {{message}}',
561
+ mainBranchUpdateMsg: '主分支已更新 (合并了 {{count}} 个提交)',
562
+ switchingTo: '切换到分支 {{branch}}...',
563
+ switchedTo: '已切换到分支 {{branch}}',
564
+ switchedToTrack: '已切换到分支 {{branch}}(跟踪 {{remote}})',
565
+ switchedToNew: '已创建并切换到新分支 {{branch}}',
566
+ switchFailed: '切换分支失败',
567
+ gitCheckoutFailed: 'Git checkout 失败',
568
+ branchMerged: '✓ 分支 {{branch}} 已合并到主分支',
569
+ deleteOldBranch: '是否删除旧分支 {{branch}}?',
570
+ deletingBranch: '删除分支 {{branch}}...',
571
+ branchDeleted: '已删除分支 {{branch}}',
572
+ branchDeleteFailed: '删除分支失败',
573
+ branchDeleteHint: '提示: {{error}}',
574
+ branchDeleteManual: '可稍后手动删除: git branch -d {{branch}}',
575
+ successTitle: '已切换到分支 {{branch}}',
576
+ logsArchived: '日志已归档到: .claude/logs/archived/{{branch}}/ ({{count}} 项)',
577
+ oldBranchDeleted: '旧分支 {{branch}} 已删除',
578
+ currentStatus: '当前状态:',
579
+ statusWorktree: 'Worktree: task-{{id}}',
580
+ statusBranch: '分支: {{branch}}',
581
+ statusPath: '路径: {{path}}',
582
+ argError: '参数错误',
583
+ argErrorHint: '用法: colyn checkout [worktree-id] <branch>',
584
+ tmuxWindowRenamed: 'tmux window 名称已更新为: {{windowName}}',
585
+ },
586
+ // info command
587
+ info: {
588
+ description: '显示当前目录的 colyn 项目信息',
589
+ shortOption: '输出简短标识符(带分支信息)',
590
+ fieldOption: '输出指定字段(可多次使用)',
591
+ formatOption: '使用模板字符串格式化输出',
592
+ separatorOption: '多字段时的分隔符(默认 tab)',
593
+ invalidField: '无效的字段名: {{field}}',
594
+ invalidFieldHint: '有效字段: {{fields}}',
595
+ notInWorktree: '当前目录不在 worktree 或主分支中',
596
+ notInWorktreeHint: '请切换到主分支目录或某个 worktree 目录',
597
+ notColynProject: '当前目录不在 colyn 项目中',
598
+ notColynProjectHint: '--format 和 --field 选项需要在 colyn 项目中使用',
599
+ labelProject: 'Project:',
600
+ labelProjectPath: 'Project Path:',
601
+ labelWorktreeId: 'Worktree ID:',
602
+ labelWorktreeDir: 'Worktree Dir:',
603
+ labelWorktreePath: 'Worktree Path:',
604
+ labelBranch: 'Branch:',
605
+ labelRepository: 'Repository:',
606
+ labelRepositoryPath: 'Repo Path:',
607
+ labelDirectory: 'Directory:',
608
+ labelDirectoryPath: 'Path:',
609
+ mainIndicator: '0 (main)',
610
+ labelStatus: 'Status:',
611
+ labelLastUpdatedAt: 'Last Updated:',
612
+ statusNeverSet: '(从未设置)',
613
+ },
614
+ // status command
615
+ status: {
616
+ description: '查询或设置当前 worktree 的工作状态',
617
+ getDescription: '获取当前 worktree 状态(默认)',
618
+ setDescription: '设置当前 worktree 状态',
619
+ jsonOption: '以 JSON 格式输出',
620
+ statusArgument: '状态值:idle | running | waiting-confirm | finish',
621
+ labelStatus: 'Status:',
622
+ labelUpdatedAt: 'Updated:',
623
+ neverUpdated: '(从未设置)',
624
+ statusUpdated: '状态已更新: {{status}}',
625
+ invalidStatus: '无效的状态值: {{status}}',
626
+ invalidStatusHint: '有效状态: idle, running, waiting-confirm, finish',
627
+ },
628
+ // repair command
629
+ repair: {
630
+ description: '检查并修复项目配置(移动目录后使用)',
631
+ notGitRepo: '主分支目录不是 git 仓库',
632
+ notGitRepoHint: '请确保在 git 项目中运行 repair 命令',
633
+ checkingMainEnv: '检查主分支 .env.local...',
634
+ mainEnvCorrect: '主分支 .env.local 配置正确',
635
+ mainEnvFixed: '已修复主分支 .env.local',
636
+ mainEnvFailed: '修复主分支 .env.local 失败',
637
+ checkingWorktreeEnv: '检查 worktree task-{{id}} .env.local...',
638
+ worktreeEnvCorrect: 'Worktree task-{{id}} .env.local 配置正确',
639
+ worktreeEnvFixed: '已修复 worktree task-{{id}} .env.local',
640
+ worktreeEnvFailed: '修复 worktree task-{{id}} .env.local 失败',
641
+ repairingGit: '修复 git worktree 连接...',
642
+ gitRepaired: 'Git worktree 连接已修复',
643
+ gitRepairFailed: 'Git worktree 修复失败',
644
+ detectingOrphans: '检测并修复孤儿 worktree 目录...',
645
+ noOrphans: '未发现孤儿 worktree 目录',
646
+ orphansRepaired: '已修复 {{count}} 个路径失效的 worktree',
647
+ orphansFound: '发现 {{count}} 个孤儿 worktree 目录',
648
+ repairComplete: '修复完成!',
649
+ repairSummary: '修复摘要:',
650
+ fixedItems: '✓ 修复了 {{count}} 个配置项',
651
+ allCorrect: '✓ 所有配置正确,无需修复',
652
+ failedItems: '⚠ {{count}} 个项修复失败(见下方详情)',
653
+ repairedOrphans: '✓ 修复了 {{count}} 个路径失效的 worktree',
654
+ trueOrphans: '⚠ 发现 {{count}} 个孤儿 worktree 目录',
655
+ noOrphansFound: '✓ 未发现孤儿 worktree 目录',
656
+ detailsTitle: '详细信息:',
657
+ configCorrect: '✓ 配置正确',
658
+ repairFailed: '✗ 修复失败: {{error}}',
659
+ repairedOrphansTitle: '已修复路径失效的 worktree:',
660
+ orphanRepaired: '✓ {{dir}} (git 路径已更新)',
661
+ repairFailedTitle: '修复失败的 worktree:',
662
+ orphanFailed: '✗ {{dir}}: {{error}}',
663
+ trueOrphansTitle: '孤儿 worktree 目录:',
664
+ orphanDir: '- {{dir}} (目录存在但 git 不识别)',
665
+ orphanSuggestion: '建议操作:',
666
+ orphanSuggestionHint: '运行 colyn remove 命令清理,或手动删除目录',
667
+ addPort: '添加 PORT={{port}}',
668
+ addWorktree: '添加 WORKTREE={{value}}',
669
+ updateWorktree: 'WORKTREE: {{old}} → {{new}}',
670
+ updatePort: 'PORT: {{old}} → {{new}}',
671
+ gitRepairDetail: 'Git worktree 连接已修复',
672
+ initializingPlugins: '检查运行时配置文件的 .gitignore 忽略规则...',
673
+ pluginsInitialized: '.gitignore 检查完成',
674
+ pluginsInitFailed: '.gitignore 检查失败(非致命)',
675
+ },
676
+ // config command
677
+ config: {
678
+ description: '管理配置',
679
+ getDescription: '获取配置值',
680
+ setDescription: '设置配置值',
681
+ userOption: '操作用户级配置',
682
+ jsonOption: '以 JSON 格式输出',
683
+ title: 'Tmux 配置信息',
684
+ userConfig: '用户级配置',
685
+ projectConfig: '项目级配置',
686
+ effectiveConfig: '生效的配置',
687
+ availableBuiltinCommands: '可用的内置命令',
688
+ path: '路径',
689
+ status: '状态',
690
+ exists: '存在',
691
+ notExists: '不存在',
692
+ content: '内容',
693
+ default: '(默认)',
694
+ noCommand: '(不执行命令)',
695
+ builtin: '(内置)',
696
+ autoClaudeDesc: '继续 Claude 会话(自动检测已有会话)',
697
+ autoDevServerDesc: '启动 dev server(自动检测 package.json)',
698
+ invalidKey: '无效的配置键 "{{key}}",有效的键为:{{validKeys}}',
699
+ invalidLang: '无效的语言值 "{{value}}",有效的值为:{{validLangs}}',
700
+ setSuccess: '配置已设置:{{key}} = {{value}} ({{scope}})',
701
+ userScope: '用户',
702
+ projectScope: '项目',
703
+ },
704
+ // completion command
705
+ completion: {
706
+ description: '生成 shell 自动补全脚本',
707
+ installOption: '显示安装说明',
708
+ usage: '用法: colyn completion <shell>',
709
+ supportedShells: '支持的 shell:',
710
+ bashDesc: '生成 Bash 补全脚本',
711
+ zshDesc: '生成 Zsh 补全脚本',
712
+ options: '选项:',
713
+ installDesc: '显示安装说明',
714
+ examples: '示例:',
715
+ unsupportedShell: '不支持的 shell: {{shell}}',
716
+ unsupportedShellHint: '支持的 shell: {{shells}}',
717
+ cannotReadScript: '无法读取 {{shell}} 补全脚本',
718
+ cannotReadScriptHint: '请确保项目完整安装,脚本路径: shell/completion.{{shell}}',
719
+ // Field descriptions for zsh completion
720
+ fieldProject: '项目名称',
721
+ fieldProjectPath: '项目路径',
722
+ fieldWorktreeId: 'Worktree ID',
723
+ fieldWorktreeDir: 'Worktree 目录名',
724
+ fieldBranch: '分支名',
725
+ installTitle: '📝 手动安装说明:',
726
+ installStep1: '1. 将以下内容添加到 {{config}}:',
727
+ installStep2: '2. 重新加载配置:',
728
+ installAuto: '或者直接运行以下命令自动安装:',
729
+ },
730
+ // system-integration command
731
+ systemIntegration: {
732
+ description: '配置 shell 集成(支持自动目录切换和命令补全)',
733
+ windowsNotSupported: '⚠ Windows 平台暂不支持自动配置',
734
+ windowsManualHint: '请参考文档手动配置 shell 集成:',
735
+ detectingEnv: '检测系统环境...',
736
+ shellType: '✓ Shell 类型: {{type}}',
737
+ configFile: '✓ 配置文件: {{path}}',
738
+ installPath: '✓ Colyn 安装路径: {{path}}',
739
+ shellScriptNotFound: '找不到 shell 集成脚本',
740
+ shellScriptNotFoundHint: `路径: {{path}}
741
+
742
+ 可能原因:
743
+ - colyn 安装不完整
744
+
745
+ 解决方法:
746
+ 重新安装:npm install -g colyn`,
747
+ completionNotFound: '⚠ 补全脚本未找到: {{path}}',
748
+ completionNotFoundHint: '将仅配置 shell 集成功能',
749
+ configuringShell: '配置 shell 集成...',
750
+ configCreated: '✓ 已创建 {{file}}',
751
+ configAdded: '✓ 已添加 shell 集成到 {{file}}',
752
+ completionAdded: '✓ 已添加补全脚本到 {{file}}',
753
+ configUpdated: '✓ 已更新 {{file}} 中的 shell 集成配置',
754
+ completionUpdated: '✓ 已更新补全脚本配置',
755
+ installComplete: '安装完成!',
756
+ updateComplete: '更新完成!',
757
+ activateConfig: '生效配置:',
758
+ activateMethod1: '方式 1(推荐):重新打开终端',
759
+ activateMethod2: '方式 2:运行命令:',
760
+ features: '功能说明:',
761
+ featureAutoSwitch: '✓ colyn 命令支持自动目录切换',
762
+ featureCompletion: '✓ 使用 Tab 键可自动完成命令和参数',
763
+ configuringClaudeHooks: '配置 Claude Code hooks...',
764
+ claudeHooksAdded: '✓ 已配置 Claude Code status hooks',
765
+ claudeHooksUpdated: '✓ 已更新 Claude Code status hooks',
766
+ claudeHooksFailed: '⚠ 配置 Claude Code hooks 失败(Claude Code 可能未安装)',
767
+ },
768
+ // tmux command
769
+ tmux: {
770
+ description: '管理项目的 tmux session 和 windows',
771
+ startDescription: '启动并修复项目的 tmux session 和 windows',
772
+ stopDescription: '结束当前项目的 tmux session',
773
+ forceOption: '跳过确认直接结束',
774
+ confirmStop: '确认要结束当前 session "{{sessionName}}" 吗?这将断开您的连接。',
775
+ stopCanceled: '已取消',
776
+ sessionNotExists: 'Session "{{sessionName}}" 不存在',
777
+ stoppingSession: '正在结束 tmux session "{{sessionName}}"...',
778
+ detachingAndStopping: '正在断开连接并结束 session "{{sessionName}}"...',
779
+ sessionStopped: '已结束 tmux session "{{sessionName}}"',
780
+ stopFailed: '结束 tmux session "{{sessionName}}" 失败',
781
+ notInstalled: 'tmux 未安装',
782
+ installHint: '请先安装 tmux(例如:brew install tmux)',
783
+ repairing: '检查并修复 tmux session 和 windows...',
784
+ sessionCreateFailed: 'tmux session 创建失败',
785
+ sessionCreateFailedHint: '请确认 tmux 可用,并可手动创建 session:tmux new -s {{sessionName}}',
786
+ failedWindowsTitle: '创建失败的窗口:',
787
+ renameWindowFailed: '重命名失败: {{currentName}} → {{expectedName}}',
788
+ createWindowFailed: '创建 window 失败',
789
+ repairComplete: 'Tmux 修复完成',
790
+ repairSummary: '修复摘要',
791
+ repairCreatedSession: ' ✓ 创建了 tmux session: {{sessionName}}',
792
+ repairCreatedWindows: ' ✓ 创建了 {{count}} 个 tmux window',
793
+ repairRenamedWindows: ' ✓ 重命名了 {{count}} 个 tmux window',
794
+ repairExistingWindows: ' ✓ {{count}} 个 tmux window 已存在(保持原布局)',
795
+ repairFailedWindows: ' ⚠ {{count}} 个 tmux window 修复失败',
796
+ repairDetails: '详细信息',
797
+ createdWindowsTitle: '已创建的 tmux window:',
798
+ createdWindowItem: ' ✓ Window {{id}}: {{name}}',
799
+ renamedWindowsTitle: '已重命名的 tmux window:',
800
+ renamedWindowItem: ' ✓ Window {{id}}: {{oldName}} → {{newName}}',
801
+ failedWindowItem: ' ✗ Window {{id}}: {{error}}',
802
+ failedWindowItemCompact: ' - Window {{id}}: {{error}}',
803
+ createdSessionAndWindows: '创建了 session "{{sessionName}}" 和 {{count}} 个 window',
804
+ createdSession: '创建了 session "{{sessionName}}"',
805
+ createdWindows: '创建了 {{count}} 个 tmux window',
806
+ windowsCreateFailed: '{{count}} 个 tmux window 创建失败',
807
+ allWindowsExist: '所有 tmux window 已存在',
808
+ switchingSession: '正在切换到 session "{{sessionName}}"...',
809
+ switchedSession: '已切换到 session "{{sessionName}}"',
810
+ switchSessionFailed: '切换 session 失败',
811
+ attachingSession: '正在连接到 session "{{sessionName}}"...',
812
+ passthroughNotEnabled: '检测到 tmux allow-passthrough 未启用',
813
+ passthroughDescription: '启用后,colyn 可在 iTerm2 中自动更新 tab 标题(即使 pane 0 正在运行 Claude 等交互式程序)',
814
+ passthroughConfirm: '是否在 tmux 配置中启用 allow-passthrough?',
815
+ passthroughSkipped: '已跳过,继续运行(pane 0 被占用时 iTerm2 tab 标题可能无法更新)',
816
+ passthroughUnsupported: '当前 tmux 版本不支持 allow-passthrough(需要 tmux 3.3+),pane 0 被占用时 iTerm2 tab 标题可能无法更新',
817
+ passthroughAdded: '已将 allow-passthrough 配置添加至 {{configPath}}',
818
+ passthroughReloadHint: '请执行以下命令重新加载 tmux 配置:\n tmux source-file {{configPath}}',
819
+ passthroughRerunHint: '重新加载完成后,再次运行 colyn tmux start',
820
+ },
821
+ // todo command
822
+ todo: {
823
+ description: '管理 Todo 任务',
824
+ add: {
825
+ description: '添加 Todo 任务',
826
+ invalidFormat: 'Todo ID 格式错误,应为 {type}/{name}',
827
+ alreadyExists: 'Todo "{{todoId}}" 已存在',
828
+ success: '已添加 Todo: {{todoId}} - {{message}}',
829
+ emptyMessage: '任务描述不能为空',
830
+ emptyName: '名称不能为空',
831
+ editorCanceled: '已取消编辑,任务未添加',
832
+ editorFailed: '无法打开编辑器:{{editor}}',
833
+ selectType: '选择任务类型',
834
+ inputName: '输入任务名称(如 login、fix-crash)',
835
+ },
836
+ start: {
837
+ description: '开始执行 Todo 任务(创建对应分支)',
838
+ notFound: 'Todo "{{todoId}}" 不存在',
839
+ notPending: 'Todo "{{todoId}}" 不是待办状态',
840
+ checkoutFailed: '创建分支失败,Todo 状态未更改',
841
+ success: 'Todo "{{todoId}}" 已标记为完成',
842
+ noClipboardOption: '跳过复制 message 到剪贴板',
843
+ messageTitle: '任务描述:',
844
+ clipboardCopied: '已复制到剪贴板',
845
+ clipboardFailed: '复制到剪贴板失败',
846
+ noPending: '没有待办任务',
847
+ selectTodo: '选择要开始的任务',
848
+ },
849
+ list: {
850
+ description: '列出 Todo 任务',
851
+ completedOption: '显示已完成的任务',
852
+ archivedOption: '显示已归档的任务',
853
+ idOnlyOption: '仅输出 Todo ID,每行一个(用于脚本集成)',
854
+ jsonOption: '以 JSON 格式输出',
855
+ jsonConflict: '选项冲突:--json 和 --id-only 不能同时使用',
856
+ empty: '没有任务',
857
+ headerType: '类型',
858
+ headerName: '名称',
859
+ headerMessage: '描述',
860
+ headerStatus: '状态',
861
+ headerCreatedAt: '创建时间',
862
+ statusPending: '待办',
863
+ statusCompleted: '已完成',
864
+ statusArchived: '已归档',
865
+ },
866
+ remove: {
867
+ description: '删除 Todo 任务',
868
+ yesOption: '跳过确认直接删除',
869
+ notFound: 'Todo "{{todoId}}" 不存在',
870
+ confirm: '确认删除 Todo "{{todoId}}"?',
871
+ success: '已删除 Todo: {{todoId}}',
872
+ canceled: '已取消删除',
873
+ selectTodo: '选择要删除的任务',
874
+ },
875
+ archive: {
876
+ description: '归档所有已完成的 Todo 任务',
877
+ yesOption: '跳过确认直接归档',
878
+ noCompleted: '没有已完成的任务可以归档',
879
+ confirm: '确认归档 {{count}} 个已完成的任务?',
880
+ success: '已归档 {{count}} 个任务',
881
+ canceled: '已取消归档',
882
+ },
883
+ uncomplete: {
884
+ description: '将已完成的 Todo 任务回退为待办状态',
885
+ notFound: 'Todo "{{todoId}}" 不存在',
886
+ notCompleted: 'Todo "{{todoId}}" 不是已完成状态',
887
+ noBranch: '当前不在 worktree 分支中,请指定 Todo ID',
888
+ success: 'Todo "{{todoId}}" 已回退为待办状态',
889
+ usingCurrentBranch: '使用当前分支名: {{branch}}',
890
+ },
891
+ edit: {
892
+ description: '编辑 Todo 任务的描述',
893
+ notFound: 'Todo "{{todoId}}" 不存在',
894
+ noTodos: '没有可编辑的 Todo 任务',
895
+ selectTodo: '请选择要编辑的 Todo 任务',
896
+ isCompleted: 'Todo "{{todoId}}" 已完成,是否改回待办状态?',
897
+ revertCanceled: '已取消,Todo 状态未修改',
898
+ success: 'Todo "{{todoId}}" 的描述已更新',
899
+ messageEmpty: '描述不能为空',
900
+ editorFailed: '编辑器异常退出,描述未修改',
901
+ },
902
+ },
903
+ // list-project command
904
+ listProject: {
905
+ description: '列出所有 tmux session 中的项目',
906
+ jsonOption: '以 JSON 格式输出',
907
+ pathsOption: '只输出路径(每行一个)',
908
+ optionConflict: '选项冲突:--json 和 --paths 不能同时使用',
909
+ optionConflictHint: '请选择其中一种输出格式',
910
+ tmuxNotInstalled: 'tmux 未安装',
911
+ tmuxInstallHint: '请先安装 tmux:brew install tmux (macOS) 或 apt install tmux (Linux)',
912
+ noProjects: '暂无项目',
913
+ noProjectsHint: '提示:使用 colyn init 初始化项目,并使用 colyn tmux 创建 tmux session',
914
+ noProjectsFound: '未找到任何项目',
915
+ tableSession: 'Session',
916
+ tableProject: 'Project',
917
+ tablePath: 'Path',
918
+ tableWorktrees: 'Worktrees',
919
+ projectWorktrees: '{{project}} 的 Worktrees',
920
+ },
921
+ },
922
+ // Toolchain resolver
923
+ toolchain: {
924
+ unrecognizedDirectory: '子目录 {{path}} 未被任何工具链识别',
925
+ selectForDirectory: '请为 {{path}} 选择工具链',
926
+ noToolchain: '(无工具链)',
927
+ monoRepoDetected: '检测到 Mono Repo 结构,发现 {{count}} 个子项目',
928
+ singleProjectDetected: '检测到单项目({{toolchain}})',
929
+ subProjectSkipped: '子目录 {{path}} 在当前 Worktree 中不存在,已跳过',
930
+ },
931
+ // Plugin system
932
+ plugins: {
933
+ autoMigrated: 'ℹ 已自动配置工具链插件:{{plugins}}',
934
+ autoMigratedNone: 'ℹ 已配置工具链(未检测到匹配插件)',
935
+ autoMigratedHint: '如需修改,编辑 .colyn/settings.json 的 plugins 字段',
936
+ xcode: {
937
+ autoSelectedScheme: '自动选择 scheme:{{scheme}}',
938
+ noSharedSchemes: '未找到 shared scheme,请手动输入',
939
+ selectScheme: '请选择 Xcode scheme',
940
+ inputScheme: '请输入 scheme 名称(在 Xcode → Product → Scheme 中查看)',
941
+ inferredDestination: '推断目标平台:{{destination}}',
942
+ selectDestination: '请选择目标平台',
943
+ },
944
+ },
945
+ // Errors
946
+ errors: {
947
+ notGitRepo: '不是 git 仓库',
948
+ projectNotInitialized: '项目未初始化',
949
+ projectNotInitializedHint: '请先运行 colyn init 命令初始化项目',
950
+ projectRootNotFound: '未找到项目根目录',
951
+ projectRootNotFoundHint: '当前目录不在 colyn 项目中,请先运行 colyn init 初始化项目',
952
+ mainDirNotFound: '主分支目录不存在',
953
+ worktreesDirNotFound: 'worktrees 目录不存在',
954
+ pathExistsNotDir: '路径存在但不是目录: {{path}}',
955
+ pathNotFound: '目录不存在: {{path}}',
956
+ workingDirNotClean: '工作目录不干净,存在未提交的更改',
957
+ workingDirNotCleanHint: '请先提交或 stash 更改后再运行 init 命令',
958
+ cannotGetMainPort: '无法获取主分支端口',
959
+ cannotGetMainPortHint: '请确保 {{path}} 中配置了 PORT 环境变量',
960
+ worktreeConfigIncomplete: 'Worktree 配置不完整',
961
+ worktreeConfigIncompleteHint: '.env.local 文件中缺少 WORKTREE 变量\n文件路径: {{path}}\n\n请确保 .env.local 包含 WORKTREE 配置',
962
+ worktreeConfigInvalid: 'Worktree 配置无效',
963
+ worktreeConfigInvalidHint: '.env.local 中 WORKTREE 值不是有效数字: "{{value}}"\n文件路径: {{path}}',
964
+ worktreeConfigMismatch: 'Worktree 配置不一致',
965
+ worktreeConfigMismatchHint: `目录名与 .env.local 中的 WORKTREE 值不匹配
966
+
967
+ 目录名: {{dirName}} (ID: {{dirId}})
968
+ WORKTREE: {{envId}}
969
+
970
+ 可能原因:
971
+ - .env.local 文件被手动修改
972
+ - 目录被重命名
973
+
974
+ 请修正 .env.local 中的 WORKTREE 值为 {{dirId}},或检查目录是否正确`,
975
+ },
976
+ // Output labels
977
+ output: {
978
+ projectRoot: '项目根目录',
979
+ mainBranchDir: '主分支目录',
980
+ worktreeDir: 'worktree 目录',
981
+ configDir: '配置目录',
982
+ subDir: '子目录 ({{path}})',
983
+ },
984
+ };
985
+ //# sourceMappingURL=zh-CN.js.map