ccman 2.1.4 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,29 +19,71 @@
19
19
 
20
20
  ## ✨ 核心特性
21
21
 
22
- - **🌍 智能语言支持** - 自动检测系统语言,支持中英文无缝切换
23
- - **🔧 直接配置集成** - 直接修改 `~/.claude/settings.json`,无需 Shell 集成
24
- - **📁 多供应商管理** - 在不同 API 供应商间快速切换(Anthropic 官方、第三方等)
25
- - **🎯 交互式菜单** - 友好的命令行交互界面,支持连续操作
26
- - **⚡ 零配置体验** - 开箱即用,智能默认配置
27
- - **🔒 安全可靠** - 自动备份,选择性配置更新,保护用户数据
22
+ - **🌍 智能语言支持** - 自动检测系统语言,支持中英文无缝切换
23
+ - **🔧 直接配置集成** - 直接修改 `~/.claude/settings.json`,无需 Shell 集成
24
+ - **📁 多供应商管理** - 在不同 API 供应商间快速切换(Anthropic 官方、第三方等)
25
+ - **🎯 交互式菜单** - 友好的命令行交互界面,支持连续操作
26
+ - **⚡ 零配置体验** - 开箱即用,智能默认配置
27
+ - **🔒 安全可靠** - 自动备份,选择性配置更新,保护用户数据
28
28
 
29
29
  ## 🚀 快速开始
30
30
 
31
- ### 安装
31
+ ### 安装方式
32
+
33
+ #### 方式 1: npm 安装 (推荐)
32
34
 
33
35
  ```bash
36
+ # 全局安装
34
37
  npm install -g ccman
38
+
39
+ # 或使用 pnpm
40
+ pnpm add -g ccman
41
+
42
+ # 或使用 yarn
43
+ yarn global add ccman
44
+ ```
45
+
46
+ #### 方式 2: npx 直接运行 (无需安装)
47
+
48
+ ```bash
49
+ # 直接运行,不安装到全局
50
+ npx ccman
51
+
52
+ # 运行特定命令
53
+ npx ccman ls
54
+ npx ccman add anthropic "Anthropic Official" https://api.anthropic.com
55
+ ```
56
+
57
+ #### 方式 3: 从源码安装
58
+
59
+ ```bash
60
+ # 克隆仓库
61
+ git clone https://github.com/2ue/ccman.git
62
+ cd ccman
63
+
64
+ # 安装依赖
65
+ pnpm install
66
+
67
+ # 全局链接 (开发模式)
68
+ npm link
69
+
70
+ # 或构建后使用
71
+ pnpm build
72
+ node dist/cli.js
35
73
  ```
36
74
 
75
+ #### 方式 4: 下载预编译版本
76
+
77
+ 访问 [GitHub Releases](https://github.com/2ue/ccman/releases) 下载对应平台的预编译版本 (如果提供)
78
+
37
79
  ### 首次运行
38
80
 
39
81
  ```bash
40
82
  ccman
41
83
  ```
42
84
 
43
- 首次运行时会自动引导你:
44
- 1. 选择界面语言(中文/英文/自动检测)
85
+ 首次运行时会自动引导你:
86
+ 1. 选择界面语言(中文/英文/自动检测)
45
87
  2. 创建第一个供应商配置
46
88
  3. 自动应用到 Claude Code
47
89
 
@@ -50,14 +92,14 @@ ccman
50
92
  ### 核心命令
51
93
 
52
94
  ```bash
53
- ccman # 交互式主菜单(推荐入口)
95
+ ccman # 交互式主菜单(推荐入口)
54
96
  ccman ls # 列出所有供应商及系统状态
55
97
  ccman ls --current # 显示当前供应商详情
56
98
  ccman ls --brief # 简洁列表模式
57
99
  ccman add <id> <name> <url> [key] # 添加新供应商
58
100
  ccman use <id> # 切换到指定供应商
59
101
  ccman rm <id> # 删除供应商
60
- ccman clear # 清除所有配置(需确认)
102
+ ccman clear # 清除所有配置(需确认)
61
103
  ```
62
104
 
63
105
  ### 语言管理
@@ -93,7 +135,7 @@ ccman ls
93
135
  ```bash
94
136
  $ ccman
95
137
 
96
- ? 您想要执行什么操作?
138
+ ? 您想要执行什么操作?
97
139
  ❯ 切换供应商
98
140
  添加新供应商
99
141
  更新供应商
@@ -101,30 +143,26 @@ $ ccman
101
143
  显示详细状态
102
144
  退出
103
145
 
104
- # 选择操作后,按提示完成配置
146
+ # 选择操作后,按提示完成配置
105
147
  # 每次操作后可以选择继续或退出
106
148
  ```
107
149
 
108
150
  ## 🔧 工作原理
109
151
 
110
- CCM 直接管理 `~/.claude/settings.json` 文件,通过以下方式确保安全:
152
+ CCM 直接管理 `~/.claude/settings.json` 文件,通过以下方式确保安全:
111
153
 
112
- ### 1. 选择性更新
154
+ ### 选择性更新
113
155
 
114
- 只修改 CCM 管理的配置项:
156
+ 只修改 CCM 管理的配置项:
115
157
  - `env.ANTHROPIC_AUTH_TOKEN`
116
158
  - `env.ANTHROPIC_BASE_URL`
117
159
  - `env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`
118
160
  - `env.CLAUDE_CODE_MAX_OUTPUT_TOKENS`
119
161
  - `permissions.allow` / `permissions.deny`
120
162
 
121
- ### 2. 配置保护
122
-
123
- 保留用户的其他所有配置项:
124
- - ✅ 保留:`mcpServers`、`model`、`customUserConfig` 等
125
- - 🔄 更新:仅更新上述 CCM 管理的配置项
163
+ **保留所有其他用户配置项**(如 `mcpServers`、`model`、`customUserConfig` 等)
126
164
 
127
- ### 3. 自动备份
165
+ ### 自动备份
128
166
 
129
167
  每次切换前自动备份当前配置到 `~/.ccman/backups/`
130
168
 
@@ -137,58 +175,7 @@ CCM 直接管理 `~/.claude/settings.json` 文件,通过以下方式确保安
137
175
  │ ├── anthropic.json # Anthropic 官方
138
176
  │ ├── custom.json # 自定义供应商
139
177
  │ └── ...
140
- └── backups/ # 配置备份目录(自动创建)
141
- ```
142
-
143
- ### 供应商配置文件结构
144
-
145
- ```json
146
- {
147
- "name": "Anthropic Official",
148
- "description": "Anthropic 官方 API 配置",
149
- "config": {
150
- "env": {
151
- "ANTHROPIC_AUTH_TOKEN": "your-token",
152
- "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
153
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
154
- "CLAUDE_CODE_MAX_OUTPUT_TOKENS": 32000
155
- },
156
- "permissions": {
157
- "allow": [],
158
- "deny": []
159
- }
160
- },
161
- "metadata": {
162
- "createdAt": "2025-01-15T10:30:00.000Z",
163
- "updatedAt": "2025-01-15T10:30:00.000Z",
164
- "usageCount": 5
165
- }
166
- }
167
- ```
168
-
169
- ### CCM 主配置文件结构
170
-
171
- ```json
172
- {
173
- "currentProvider": "anthropic",
174
- "claudeConfigPath": "/Users/user/.claude/settings.json",
175
- "providers": {
176
- "anthropic": {
177
- "name": "Anthropic Official",
178
- "configFile": "anthropic.json",
179
- "lastUsed": "2025-01-15T10:30:00.000Z"
180
- }
181
- },
182
- "settings": {
183
- "language": "zh",
184
- "firstRun": false
185
- },
186
- "metadata": {
187
- "version": "2.1.3",
188
- "createdAt": "2025-01-15T10:00:00.000Z",
189
- "updatedAt": "2025-01-15T10:30:00.000Z"
190
- }
191
- }
178
+ └── backups/ # 配置备份目录(自动创建)
192
179
  ```
193
180
 
194
181
  ## 🌐 语言支持
@@ -202,97 +189,15 @@ CCM 直接管理 `~/.claude/settings.json` 文件,通过以下方式确保安
202
189
  ### 语言检测逻辑
203
190
 
204
191
  - 英文环境 (`en-*`) → 自动使用英文界面
205
- - 其他环境(包括 `zh-*`、未设置等)→ 自动使用中文界面
192
+ - 其他环境(包括 `zh-*`、未设置等) 自动使用中文界面
206
193
  - 用户可随时手动覆盖语言设置
207
194
 
208
- ### 首次运行体验
209
-
210
- ```bash
211
- $ ccman
212
-
213
- 🌍 Welcome to CCM! / 欢迎使用 CCM!
214
-
215
- This is your first time running CCM.
216
- 这是您首次运行 CCM。
217
-
218
- ? Please choose your preferred language:
219
- ? 请选择您偏好的语言:
220
- ❯ 🇨🇳 中文 (Chinese)
221
- 🇺🇸 English
222
- 🌐 基于系统自动检测 (Auto-detect based on system)
223
-
224
- ✓ 语言已设置为中文
225
- ✓ 您可以稍后使用以下命令更改:ccman lang set <zh|en|auto>
226
- ```
227
-
228
- ## 🛠️ 开发
229
-
230
- ### 环境准备
231
-
232
- ```bash
233
- # 克隆仓库
234
- git clone https://github.com/2ue/ccman.git
235
- cd ccman
236
-
237
- # 安装依赖
238
- pnpm install
239
- ```
240
-
241
- ### 开发命令
242
-
243
- ```bash
244
- pnpm run dev # 开发模式运行(使用 tsx)
245
- pnpm run build # TypeScript 编译
246
- pnpm run start # 运行编译后的 CLI
247
- pnpm run clean # 清理 dist/ 目录
248
- pnpm run lint # ESLint 代码检查
249
- pnpm test # 运行测试
250
- ```
251
-
252
- ### 开发环境隔离
253
-
254
- CCM 支持开发环境配置隔离,避免影响生产配置:
255
-
256
- ```bash
257
- # 设置开发环境配置路径
258
- export CCM_CONFIG_DIR=".ccman-dev"
259
- export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
260
-
261
- # 在隔离环境中运行
262
- pnpm run dev
263
- ```
264
-
265
- ### 项目结构
266
-
267
- ```
268
- src/
269
- ├── types/ # TypeScript 类型定义
270
- │ └── index.ts # 核心类型接口
271
- ├── core/ # 核心模块
272
- │ ├── CCMConfigManager.ts # CCM 配置管理器
273
- │ └── ClaudeConfigManager.ts # Claude 配置管理器
274
- ├── providers/ # 供应商管理
275
- │ └── ProviderManager.ts # 供应商业务逻辑
276
- ├── commands/ # 命令处理
277
- │ └── lang.ts # 语言命令处理
278
- ├── i18n/ # 国际化
279
- │ ├── LanguageManager.ts # 语言管理器
280
- │ └── messages.ts # 多语言消息
281
- ├── utils/ # 工具函数
282
- │ ├── env-config.ts # 环境配置
283
- │ └── version.ts # 版本信息
284
- ├── config/ # 配置文件
285
- │ └── static-env.ts # 静态环境配置
286
- ├── cli.ts # CLI 入口点
287
- └── index.ts # 模块导出
288
- ```
289
-
290
195
  ## 📋 系统要求
291
196
 
292
197
  - **Node.js** >= 16.0.0
293
198
  - **Claude Code** 已安装并支持 settings.json
294
199
  - **操作系统**: Linux, macOS, Windows (WSL)
295
- - **包管理器**: npm, pnpm, yarn(推荐 pnpm
200
+ - **包管理器**: npm, pnpm, yarn(推荐 pnpm)
296
201
 
297
202
  ## 🔍 故障排除
298
203
 
@@ -307,9 +212,6 @@ ccman use <provider-id>
307
212
 
308
213
  # 3. 检查 Claude 配置文件
309
214
  cat ~/.claude/settings.json | grep ANTHROPIC
310
-
311
- # 4. 查看完整配置
312
- cat ~/.claude/settings.json | jq .
313
215
  ```
314
216
 
315
217
  ### 语言切换问题
@@ -321,10 +223,7 @@ ccman lang
321
223
  # 强制设置为中文
322
224
  ccman lang set zh
323
225
 
324
- # 强制设置为英文
325
- ccman lang set en
326
-
327
- # 重置到首次运行状态(重新选择语言)
226
+ # 重置到首次运行状态(重新选择语言)
328
227
  ccman lang reset
329
228
  ccman
330
229
  ```
@@ -332,72 +231,23 @@ ccman
332
231
  ### 配置文件损坏
333
232
 
334
233
  ```bash
335
- # 删除所有配置(会要求确认)
234
+ # 删除所有配置(会要求确认)
336
235
  ccman clear
337
236
 
338
237
  # 重新开始配置
339
238
  ccman
340
239
  ```
341
240
 
342
- ### 开发环境问题
343
-
344
- ```bash
345
- # 使用隔离的开发环境
346
- export CCM_CONFIG_DIR=".ccman-dev"
347
- pnpm run dev
348
-
349
- # 清理并重新构建
350
- pnpm run clean
351
- pnpm run build
352
- ```
353
-
354
- ## 📝 更新日志
355
-
356
- ### v2.1.3 (2025-09-24)
357
- - ✨ 添加 `CLAUDE_CODE_MAX_OUTPUT_TOKENS` 配置支持
358
- - 🐛 修复 TypeScript 编译错误,完全移除 apiKeyHelper 配置项
359
- - 🎨 优化交互式菜单体验
360
- - 📦 升级依赖包版本
241
+ ## 📚 开发文档
361
242
 
362
- ### v2.1.2
363
- - 🎨 简化供应商配置,移除手动 ID 设置
364
- - ✨ 优化首次运行体验
365
-
366
- ### v2.0.0
367
- - 🎉 全新架构:直接配置集成,无需 Shell 集成
368
- - 🌍 智能多语言支持(中文/英文/自动检测)
369
- - 🎯 交互式菜单系统
370
- - 📁 多供应商管理
371
- - 🔒 自动备份和配置保护
372
-
373
- ### v1.x
374
- - 旧架构:基于 Shell 环境变量集成(已废弃)
375
-
376
- ## 🚀 从 v1.x 迁移
377
-
378
- CCM v2.0 使用完全不同的架构,与 v1.x 不兼容:
379
-
380
- ### v1.x(已废弃)
381
- - ❌ 修改 shell 配置文件(.bashrc, .zshrc 等)
382
- - ❌ 使用环境变量
383
- - ❌ 复杂的 shell 集成和重新加载
384
-
385
- ### v2.x(当前版本)
386
- - ✅ 直接修改 `~/.claude/settings.json`
387
- - ✅ 基于供应商的配置管理
388
- - ✅ 智能语言支持
389
- - ✅ 简化、安全的实现方式
390
-
391
- **迁移步骤**:
392
-
393
- 1. 卸载 v1.x 版本
394
- 2. 清理 shell 配置文件中的相关内容
395
- 3. 安装 v2.x 版本:`npm install -g ccman`
396
- 4. 运行 `ccman` 重新配置
243
+ - [开发指南 (中文)](./docs/DEVELOPMENT.md)
244
+ - [Development Guide (English)](./docs/DEVELOPMENT_en.md)
245
+ - [版本发布指南](./docs/release-guide.md)
246
+ - [脚本使用指南](./docs/scripts-guide.md)
397
247
 
398
248
  ## 🤝 贡献
399
249
 
400
- 我们欢迎各种形式的贡献!
250
+ 我们欢迎各种形式的贡献!
401
251
 
402
252
  ### 如何贡献
403
253
 
@@ -409,7 +259,7 @@ CCM v2.0 使用完全不同的架构,与 v1.x 不兼容:
409
259
 
410
260
  ### 报告问题
411
261
 
412
- 如果你发现了 bug 或有新功能建议,请在 [GitHub Issues](https://github.com/2ue/ccman/issues) 中提交。
262
+ 如果你发现了 bug 或有新功能建议,请在 [GitHub Issues](https://github.com/2ue/ccman/issues) 中提交。
413
263
 
414
264
  ## 📄 开源协议
415
265
 
@@ -423,9 +273,9 @@ CCM v2.0 使用完全不同的架构,与 v1.x 不兼容:
423
273
 
424
274
  ## 🙏 致谢
425
275
 
426
- 感谢所有为本项目做出贡献的开发者!
276
+ 感谢所有为本项目做出贡献的开发者!
427
277
 
428
- 感谢以下开源项目:
278
+ 感谢以下开源项目:
429
279
  - [TypeScript](https://www.typescriptlang.org/)
430
280
  - [Commander.js](https://github.com/tj/commander.js)
431
281
  - [Inquirer.js](https://github.com/SBoudrias/Inquirer.js)
@@ -441,4 +291,4 @@ Made with ❤️ by [2ue](https://github.com/2ue)
441
291
 
442
292
  [⬆ 回到顶部](#ccm---claude-code-manager)
443
293
 
444
- </div>
294
+ </div>
package/README_en.md CHANGED
@@ -28,12 +28,54 @@
28
28
 
29
29
  ## 🚀 Quick Start
30
30
 
31
- ### Installation
31
+ ### Installation Methods
32
+
33
+ #### Method 1: npm Installation (Recommended)
32
34
 
33
35
  ```bash
36
+ # Global installation
34
37
  npm install -g ccman
38
+
39
+ # Or use pnpm
40
+ pnpm add -g ccman
41
+
42
+ # Or use yarn
43
+ yarn global add ccman
44
+ ```
45
+
46
+ #### Method 2: npx Direct Run (No Installation Required)
47
+
48
+ ```bash
49
+ # Run directly without global installation
50
+ npx ccman
51
+
52
+ # Run specific commands
53
+ npx ccman ls
54
+ npx ccman add anthropic "Anthropic Official" https://api.anthropic.com
55
+ ```
56
+
57
+ #### Method 3: Install from Source
58
+
59
+ ```bash
60
+ # Clone repository
61
+ git clone https://github.com/2ue/ccman.git
62
+ cd ccman
63
+
64
+ # Install dependencies
65
+ pnpm install
66
+
67
+ # Link globally (development mode)
68
+ npm link
69
+
70
+ # Or build and run
71
+ pnpm build
72
+ node dist/cli.js
35
73
  ```
36
74
 
75
+ #### Method 4: Download Pre-built Version
76
+
77
+ Visit [GitHub Releases](https://github.com/2ue/ccman/releases) to download pre-built versions for your platform (if available)
78
+
37
79
  ### First Run
38
80
 
39
81
  ```bash
@@ -109,7 +151,7 @@ $ ccman
109
151
 
110
152
  CCM directly manages the `~/.claude/settings.json` file with these safety measures:
111
153
 
112
- ### 1. Selective Updates
154
+ ### Selective Updates
113
155
 
114
156
  Only modifies CCM-managed configuration items:
115
157
  - `env.ANTHROPIC_AUTH_TOKEN`
@@ -118,13 +160,9 @@ Only modifies CCM-managed configuration items:
118
160
  - `env.CLAUDE_CODE_MAX_OUTPUT_TOKENS`
119
161
  - `permissions.allow` / `permissions.deny`
120
162
 
121
- ### 2. Configuration Protection
122
-
123
- Preserves all other user configuration items:
124
- - ✅ Preserves: `mcpServers`, `model`, `customUserConfig`, etc.
125
- - 🔄 Updates: Only the CCM-managed configuration items listed above
163
+ **Preserves all other user configuration items** (such as `mcpServers`, `model`, `customUserConfig`, etc.)
126
164
 
127
- ### 3. Automatic Backups
165
+ ### Automatic Backups
128
166
 
129
167
  Automatically backs up current configuration to `~/.ccman/backups/` before each switch
130
168
 
@@ -140,57 +178,6 @@ Automatically backs up current configuration to `~/.ccman/backups/` before each
140
178
  └── backups/ # Configuration backup directory (auto-created)
141
179
  ```
142
180
 
143
- ### Provider Configuration File Structure
144
-
145
- ```json
146
- {
147
- "name": "Anthropic Official",
148
- "description": "Official Anthropic API Configuration",
149
- "config": {
150
- "env": {
151
- "ANTHROPIC_AUTH_TOKEN": "your-token",
152
- "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
153
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
154
- "CLAUDE_CODE_MAX_OUTPUT_TOKENS": 32000
155
- },
156
- "permissions": {
157
- "allow": [],
158
- "deny": []
159
- }
160
- },
161
- "metadata": {
162
- "createdAt": "2025-01-15T10:30:00.000Z",
163
- "updatedAt": "2025-01-15T10:30:00.000Z",
164
- "usageCount": 5
165
- }
166
- }
167
- ```
168
-
169
- ### Main CCM Configuration File Structure
170
-
171
- ```json
172
- {
173
- "currentProvider": "anthropic",
174
- "claudeConfigPath": "/Users/user/.claude/settings.json",
175
- "providers": {
176
- "anthropic": {
177
- "name": "Anthropic Official",
178
- "configFile": "anthropic.json",
179
- "lastUsed": "2025-01-15T10:30:00.000Z"
180
- }
181
- },
182
- "settings": {
183
- "language": "zh",
184
- "firstRun": false
185
- },
186
- "metadata": {
187
- "version": "2.1.3",
188
- "createdAt": "2025-01-15T10:00:00.000Z",
189
- "updatedAt": "2025-01-15T10:30:00.000Z"
190
- }
191
- }
192
- ```
193
-
194
181
  ## 🌐 Language Support
195
182
 
196
183
  ### Supported Languages
@@ -205,88 +192,6 @@ Automatically backs up current configuration to `~/.ccman/backups/` before each
205
192
  - Other environments (including `zh-*`, unset, etc.) → Automatically uses Chinese interface
206
193
  - Users can manually override language settings at any time
207
194
 
208
- ### First-Run Experience
209
-
210
- ```bash
211
- $ ccman
212
-
213
- 🌍 Welcome to CCM! / 欢迎使用 CCM!
214
-
215
- This is your first time running CCM.
216
- 这是您首次运行 CCM。
217
-
218
- ? Please choose your preferred language:
219
- ? 请选择您偏好的语言:
220
- ❯ 🇨🇳 中文 (Chinese)
221
- 🇺🇸 English
222
- 🌐 Auto-detect based on system
223
-
224
- ✓ Language set to English
225
- ✓ You can change this later with: ccman lang set <zh|en|auto>
226
- ```
227
-
228
- ## 🛠️ Development
229
-
230
- ### Environment Setup
231
-
232
- ```bash
233
- # Clone repository
234
- git clone https://github.com/2ue/ccman.git
235
- cd ccman
236
-
237
- # Install dependencies
238
- pnpm install
239
- ```
240
-
241
- ### Development Commands
242
-
243
- ```bash
244
- pnpm run dev # Development mode (using tsx)
245
- pnpm run build # TypeScript compilation
246
- pnpm run start # Run compiled CLI
247
- pnpm run clean # Clean dist/ directory
248
- pnpm run lint # ESLint code check
249
- pnpm test # Run tests
250
- ```
251
-
252
- ### Development Environment Isolation
253
-
254
- CCM supports development environment configuration isolation to avoid affecting production configurations:
255
-
256
- ```bash
257
- # Set development environment configuration paths
258
- export CCM_CONFIG_DIR=".ccman-dev"
259
- export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
260
-
261
- # Run in isolated environment
262
- pnpm run dev
263
- ```
264
-
265
- ### Project Structure
266
-
267
- ```
268
- src/
269
- ├── types/ # TypeScript type definitions
270
- │ └── index.ts # Core type interfaces
271
- ├── core/ # Core modules
272
- │ ├── CCMConfigManager.ts # CCM configuration manager
273
- │ └── ClaudeConfigManager.ts # Claude configuration manager
274
- ├── providers/ # Provider management
275
- │ └── ProviderManager.ts # Provider business logic
276
- ├── commands/ # Command handling
277
- │ └── lang.ts # Language command processing
278
- ├── i18n/ # Internationalization
279
- │ ├── LanguageManager.ts # Language manager
280
- │ └── messages.ts # Multi-language messages
281
- ├── utils/ # Utility functions
282
- │ ├── env-config.ts # Environment configuration
283
- │ └── version.ts # Version information
284
- ├── config/ # Configuration files
285
- │ └── static-env.ts # Static environment configuration
286
- ├── cli.ts # CLI entry point
287
- └── index.ts # Module exports
288
- ```
289
-
290
195
  ## 📋 System Requirements
291
196
 
292
197
  - **Node.js** >= 16.0.0
@@ -307,9 +212,6 @@ ccman use <provider-id>
307
212
 
308
213
  # 3. Check Claude configuration file
309
214
  cat ~/.claude/settings.json | grep ANTHROPIC
310
-
311
- # 4. View complete configuration
312
- cat ~/.claude/settings.json | jq .
313
215
  ```
314
216
 
315
217
  ### Language Switching Issues
@@ -321,9 +223,6 @@ ccman lang
321
223
  # Force set to Chinese
322
224
  ccman lang set zh
323
225
 
324
- # Force set to English
325
- ccman lang set en
326
-
327
226
  # Reset to first-run state (re-select language)
328
227
  ccman lang reset
329
228
  ccman
@@ -339,61 +238,12 @@ ccman clear
339
238
  ccman
340
239
  ```
341
240
 
342
- ### Development Environment Issues
343
-
344
- ```bash
345
- # Use isolated development environment
346
- export CCM_CONFIG_DIR=".ccman-dev"
347
- pnpm run dev
348
-
349
- # Clean and rebuild
350
- pnpm run clean
351
- pnpm run build
352
- ```
353
-
354
- ## 📝 Changelog
355
-
356
- ### v2.1.3 (2025-09-24)
357
- - ✨ Added `CLAUDE_CODE_MAX_OUTPUT_TOKENS` configuration support
358
- - 🐛 Fixed TypeScript compilation errors, completely removed apiKeyHelper configuration
359
- - 🎨 Optimized interactive menu experience
360
- - 📦 Updated dependency package versions
361
-
362
- ### v2.1.2
363
- - 🎨 Simplified provider configuration, removed manual ID setting
364
- - ✨ Optimized first-run experience
365
-
366
- ### v2.0.0
367
- - 🎉 New architecture: Direct configuration integration without shell integration
368
- - 🌍 Intelligent multilingual support (Chinese/English/Auto-detect)
369
- - 🎯 Interactive menu system
370
- - 📁 Multi-provider management
371
- - 🔒 Automatic backups and configuration protection
372
-
373
- ### v1.x
374
- - Legacy architecture: Based on shell environment variable integration (deprecated)
375
-
376
- ## 🚀 Migration from v1.x
377
-
378
- CCM v2.0 uses a completely different architecture and is incompatible with v1.x:
379
-
380
- ### v1.x (Deprecated)
381
- - ❌ Modified shell configuration files (.bashrc, .zshrc, etc.)
382
- - ❌ Used environment variables
383
- - ❌ Complex shell integration and reloading
384
-
385
- ### v2.x (Current Version)
386
- - ✅ Directly modifies `~/.claude/settings.json`
387
- - ✅ Provider-based configuration management
388
- - ✅ Intelligent language support
389
- - ✅ Simplified, secure implementation
390
-
391
- **Migration Steps**:
241
+ ## 📚 Development Documentation
392
242
 
393
- 1. Uninstall v1.x version
394
- 2. Clean up related content from shell configuration files
395
- 3. Install v2.x version: `npm install -g ccman`
396
- 4. Run `ccman` to reconfigure
243
+ - [开发指南 (中文)](./docs/DEVELOPMENT.md)
244
+ - [Development Guide (English)](./docs/DEVELOPMENT_en.md)
245
+ - [Release Guide](./docs/release-guide.md)
246
+ - [Scripts Guide](./docs/scripts-guide.md)
397
247
 
398
248
  ## 🤝 Contributing
399
249
 
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export declare const STATIC_ENV: {
7
7
  readonly NODE_ENV: "production";
8
- readonly BUILD_TIME: "2025-09-30T03:24:43.220Z";
8
+ readonly BUILD_TIME: "2025-09-30T10:03:36.158Z";
9
9
  readonly CCM_CONFIG_DIR: "~/.ccman";
10
10
  readonly CLAUDE_CONFIG_PATH: "~/.claude/settings.json";
11
11
  };
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.CLAUDE_CONFIG_PATH = exports.CCM_CONFIG_DIR = exports.STATIC_ENV = void 0;
9
9
  exports.STATIC_ENV = {
10
10
  NODE_ENV: 'production',
11
- BUILD_TIME: '2025-09-30T03:24:43.220Z',
11
+ BUILD_TIME: '2025-09-30T10:03:36.158Z',
12
12
  CCM_CONFIG_DIR: '~/.ccman',
13
13
  CLAUDE_CONFIG_PATH: '~/.claude/settings.json'
14
14
  };
@@ -28,7 +28,7 @@ export declare class ClaudeConfigManager {
28
28
  */
29
29
  private isCCMManaged;
30
30
  /**
31
- * 验证Claude配置目录是否存在
31
+ * 确保Claude配置目录存在(不存在则创建)
32
32
  */
33
33
  ensureClaudeConfigDir(): Promise<void>;
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,gBAAgB,CAAC,EAAE,MAAM;IAKrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAaxD;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+CpG;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB3C;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAG9B"}
1
+ {"version":3,"file":"ClaudeConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,gBAAgB,CAAC,EAAE,MAAM;IAKrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAaxD;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+CpG;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB3C;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5C;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAG9B"}
@@ -144,13 +144,11 @@ class ClaudeConfigManager {
144
144
  return config && config._ccm_managed === true;
145
145
  }
146
146
  /**
147
- * 验证Claude配置目录是否存在
147
+ * 确保Claude配置目录存在(不存在则创建)
148
148
  */
149
149
  async ensureClaudeConfigDir() {
150
150
  const claudeDir = path.dirname(this.claudeConfigPath);
151
- if (!await fs.pathExists(claudeDir)) {
152
- throw new Error(`Claude config directory not found: ${claudeDir}. Please ensure Claude Code is installed and initialized.`);
153
- }
151
+ await fs.ensureDir(claudeDir);
154
152
  }
155
153
  /**
156
154
  * 获取Claude配置路径
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeConfigManager.js","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClaudeConfigManager.js","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccman",
3
- "version": "2.1.4",
3
+ "version": "2.1.5",
4
4
  "description": "Claude Code Manager - A TypeScript tool to manage Claude Code API configurations",
5
5
  "main": "dist/index.js",
6
6
  "packageManager": "pnpm@7.33.7",