ccjk 2.2.1 → 2.2.2

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
@@ -67,17 +67,31 @@
67
67
 
68
68
  <br/>
69
69
 
70
- <!-- One-Click Launch -->
70
+ <!-- One-Click Installation -->
71
+ ### ⚡ Quick Install
72
+
73
+ **🌍 Global Users**
71
74
  ```bash
72
- npx ccjk
75
+ curl -fsSL https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
73
76
  ```
74
77
 
75
- <sup>⚡ Zero Config · Instant Deploy · 30 Seconds to Production</sup>
78
+ **🇨🇳 中国用户**
79
+ ```bash
80
+ curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
81
+ ```
82
+
83
+ **📦 Already have Node.js?**
84
+ ```bash
85
+ npx ccjk # Run directly
86
+ npm i -g ccjk # Or install globally
87
+ ```
88
+
89
+ <sub>✨ Auto-installs Node.js, npm, git if needed · Supports Ubuntu/Debian/CentOS/Fedora/Arch/Alpine/macOS</sub>
76
90
 
77
91
  <br/>
78
92
  <br/>
79
93
 
80
- [🚀 Quick Start](#-quick-start) · [🧠 Architecture](#-core-architecture) · [📊 Benchmarks](#-performance-benchmarks) · [🌟 Acknowledgments](#-ecosystem-acknowledgments)
94
+ [🧠 Architecture](#-core-architecture) · [📊 Benchmarks](#-performance-benchmarks) · [🌟 Acknowledgments](#-ecosystem-acknowledgments)
81
95
 
82
96
  </div>
83
97
 
@@ -318,15 +332,53 @@ Doc Generation █████████████████████
318
332
 
319
333
  ## 🚀 Quick Start
320
334
 
321
- ### Requirements
335
+ ### ⚡ One-Click Installation (Recommended)
322
336
 
323
- | Dependency | Minimum | Recommended |
324
- |:-----------|:-------:|:-----------:|
325
- | Node.js | 18.0+ | 20.x LTS |
326
- | npm/pnpm | 8.0+ | pnpm 9.x |
327
- | Claude Code | 1.0+ | Latest |
337
+ **Auto-installs Node.js, npm, git and CCJK — works on fresh systems!**
328
338
 
329
- ### Installation
339
+ <table>
340
+ <tr>
341
+ <td width="50%">
342
+
343
+ **🌍 Global Users**
344
+
345
+ ```bash
346
+ curl -fsSL https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
347
+ ```
348
+
349
+ </td>
350
+ <td width="50%">
351
+
352
+ **🇨🇳 中国用户 (China Mirror)**
353
+
354
+ ```bash
355
+ curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
356
+ ```
357
+
358
+ </td>
359
+ </tr>
360
+ </table>
361
+
362
+ <details>
363
+ <summary><b>📋 Supported Platforms</b></summary>
364
+
365
+ | Platform | Package Manager | Status |
366
+ |:---------|:----------------|:------:|
367
+ | **Ubuntu/Debian** | apt | ✅ Full Support |
368
+ | **CentOS/RHEL/Fedora** | dnf/yum | ✅ Full Support |
369
+ | **Arch Linux** | pacman | ✅ Full Support |
370
+ | **Alpine Linux** | apk | ✅ Full Support |
371
+ | **openSUSE** | zypper | ✅ Full Support |
372
+ | **macOS** | Homebrew | ✅ Full Support |
373
+ | **Windows** | Manual | ⚠️ See below |
374
+
375
+ **Windows Users:** Please install [Node.js](https://nodejs.org/) first, then run `npm install -g ccjk`
376
+
377
+ </details>
378
+
379
+ <br/>
380
+
381
+ ### 📦 Manual Installation
330
382
 
331
383
  <table>
332
384
  <tr>
@@ -354,14 +406,23 @@ pnpm add -g ccjk
354
406
  # npmmirror (recommended)
355
407
  npm install -g ccjk --registry https://registry.npmmirror.com
356
408
 
357
- # Taobao mirror
358
- npm install -g ccjk --registry https://registry.npm.taobao.org
409
+ # Or use cnpm
410
+ npm install -g cnpm --registry=https://registry.npmmirror.com
411
+ cnpm install -g ccjk
359
412
  ```
360
413
 
361
414
  </td>
362
415
  </tr>
363
416
  </table>
364
417
 
418
+ ### Requirements
419
+
420
+ | Dependency | Minimum | Recommended |
421
+ |:-----------|:-------:|:-----------:|
422
+ | Node.js | 18.0+ | 20.x LTS |
423
+ | npm/pnpm | 8.0+ | pnpm 9.x |
424
+ | Claude Code | 1.0+ | Latest |
425
+
365
426
  ### 30-Second Quick Experience
366
427
 
367
428
  ```bash
package/README.zh-CN.md CHANGED
@@ -67,17 +67,31 @@
67
67
 
68
68
  <br/>
69
69
 
70
- <!-- 一键启动 -->
70
+ <!-- 一键安装 -->
71
+ ### ⚡ 快速安装
72
+
73
+ **🇨🇳 中国用户(推荐)**
71
74
  ```bash
72
- npx ccjk
75
+ curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
73
76
  ```
74
77
 
75
- <sup>⚡ 零配置 · 即装即用 · 30秒内完成部署</sup>
78
+ **🌍 国际用户**
79
+ ```bash
80
+ curl -fsSL https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
81
+ ```
82
+
83
+ **📦 已有 Node.js?**
84
+ ```bash
85
+ npx ccjk # 直接运行
86
+ npm i -g ccjk # 或全局安装
87
+ ```
88
+
89
+ <sub>✨ 自动安装 Node.js、npm、git · 支持 Ubuntu/Debian/CentOS/Fedora/Arch/Alpine/macOS</sub>
76
90
 
77
91
  <br/>
78
92
  <br/>
79
93
 
80
- [🚀 快速入门](#-快速入门) · [🧠 核心架构](#-核心架构) · [📊 性能基准](#-性能基准) · [🌟 生态致谢](#-生态致谢)
94
+ [🧠 核心架构](#-核心架构) · [📊 性能基准](#-性能基准) · [🌟 生态致谢](#-生态致谢)
81
95
 
82
96
  </div>
83
97
 
@@ -318,34 +332,56 @@ Bug 定位 █████████████████████
318
332
 
319
333
  ## 🚀 快速入门
320
334
 
321
- ### 环境要求
335
+ ### ⚡ 一键安装(推荐)
322
336
 
323
- | 依赖 | 最低版本 | 推荐版本 |
324
- |:-----|:--------:|:--------:|
325
- | Node.js | 18.0+ | 20.x LTS |
326
- | npm/pnpm | 8.0+ | pnpm 9.x |
327
- | Claude Code | 1.0+ | 最新版 |
328
-
329
- ### 安装方式
337
+ **自动安装 Node.js、npm、git CCJK 支持全新系统!**
330
338
 
331
339
  <table>
332
340
  <tr>
333
341
  <td width="50%">
334
342
 
335
- **🌍 全球用户**
343
+ **🇨🇳 中国用户(推荐)**
336
344
 
337
345
  ```bash
338
- # 交互式安装 (推荐)
339
- npx ccjk
346
+ curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
347
+ ```
340
348
 
341
- # 全局安装
342
- npm install -g ccjk
349
+ </td>
350
+ <td width="50%">
343
351
 
344
- # pnpm 用户
345
- pnpm add -g ccjk
352
+ **🌍 国际用户**
353
+
354
+ ```bash
355
+ curl -fsSL https://raw.githubusercontent.com/miounet11/ccjk/main/install.sh | bash
346
356
  ```
347
357
 
348
358
  </td>
359
+ </tr>
360
+ </table>
361
+
362
+ <details>
363
+ <summary><b>📋 支持的平台</b></summary>
364
+
365
+ | 平台 | 包管理器 | 状态 |
366
+ |:-----|:---------|:----:|
367
+ | **Ubuntu/Debian** | apt | ✅ 完全支持 |
368
+ | **CentOS/RHEL/Fedora** | dnf/yum | ✅ 完全支持 |
369
+ | **Arch Linux** | pacman | ✅ 完全支持 |
370
+ | **Alpine Linux** | apk | ✅ 完全支持 |
371
+ | **openSUSE** | zypper | ✅ 完全支持 |
372
+ | **macOS** | Homebrew | ✅ 完全支持 |
373
+ | **Windows** | 手动安装 | ⚠️ 见下方说明 |
374
+
375
+ **Windows 用户:** 请先安装 [Node.js](https://nodejs.org/),然后运行 `npm install -g ccjk`
376
+
377
+ </details>
378
+
379
+ <br/>
380
+
381
+ ### 📦 手动安装
382
+
383
+ <table>
384
+ <tr>
349
385
  <td width="50%">
350
386
 
351
387
  **🇨🇳 中国用户 (镜像加速)**
@@ -354,14 +390,39 @@ pnpm add -g ccjk
354
390
  # npmmirror 镜像 (推荐)
355
391
  npm install -g ccjk --registry https://registry.npmmirror.com
356
392
 
357
- # 淘宝镜像
358
- npm install -g ccjk --registry https://registry.npm.taobao.org
393
+ # 或使用 cnpm
394
+ npm install -g cnpm --registry=https://registry.npmmirror.com
395
+ cnpm install -g ccjk
396
+ ```
397
+
398
+ </td>
399
+ <td width="50%">
400
+
401
+ **🌍 全球用户**
402
+
403
+ ```bash
404
+ # 交互式安装 (推荐)
405
+ npx ccjk
406
+
407
+ # 全局安装
408
+ npm install -g ccjk
409
+
410
+ # pnpm 用户
411
+ pnpm add -g ccjk
359
412
  ```
360
413
 
361
414
  </td>
362
415
  </tr>
363
416
  </table>
364
417
 
418
+ ### 环境要求
419
+
420
+ | 依赖 | 最低版本 | 推荐版本 |
421
+ |:-----|:--------:|:--------:|
422
+ | Node.js | 18.0+ | 20.x LTS |
423
+ | npm/pnpm | 8.0+ | pnpm 9.x |
424
+ | Claude Code | 1.0+ | 最新版 |
425
+
365
426
  ### 30 秒快速体验
366
427
 
367
428
  ```bash
@@ -1172,6 +1172,33 @@ async function verifyInstallation(codeType) {
1172
1172
  }
1173
1173
  }
1174
1174
  }
1175
+ if (getPlatform() === "linux") {
1176
+ const home = homedir();
1177
+ const linuxPaths = [
1178
+ `${home}/.local/bin/${command}`,
1179
+ // Standard XDG user bin (curl install default)
1180
+ `${home}/.claude/bin/${command}`,
1181
+ // Claude-specific bin directory
1182
+ `/usr/local/bin/${command}`,
1183
+ // System-wide installation
1184
+ `/usr/bin/${command}`
1185
+ // System package manager
1186
+ ];
1187
+ for (const path of linuxPaths) {
1188
+ if (exists(path)) {
1189
+ const version = await detectInstalledVersion(codeType);
1190
+ const needsPathUpdate = path.includes(".local/bin") && !process.env.PATH?.includes(".local/bin");
1191
+ return {
1192
+ success: true,
1193
+ commandPath: path,
1194
+ version,
1195
+ needsSymlink: false,
1196
+ symlinkCreated: false,
1197
+ error: needsPathUpdate ? "PATH_UPDATE_NEEDED" : void 0
1198
+ };
1199
+ }
1200
+ }
1201
+ }
1175
1202
  return {
1176
1203
  success: false,
1177
1204
  commandPath: null,
@@ -1258,16 +1285,27 @@ function displayVerificationResult(result, codeType) {
1258
1285
  if (result.symlinkCreated) {
1259
1286
  console.log(ansis.green(`\u2714 ${codeTypeName} ${i18n.t("installation:verificationSuccess")}`));
1260
1287
  console.log(ansis.gray(` ${i18n.t("installation:symlinkCreated", { path: result.commandPath })}`));
1288
+ } else if (result.commandPath) {
1289
+ console.log(ansis.green(`\u2714 ${codeTypeName} ${i18n.t("installation:verificationSuccess")}`));
1290
+ console.log(ansis.gray(` ${i18n.t("installation:foundAtPath", { path: result.commandPath })}`));
1261
1291
  }
1262
1292
  if (result.version) {
1263
1293
  console.log(ansis.gray(` ${i18n.t("installation:detectedVersion", { version: result.version })}`));
1264
1294
  }
1295
+ if (result.error === "PATH_UPDATE_NEEDED") {
1296
+ console.log(ansis.yellow(`
1297
+ \u26A0 ${i18n.t("installation:pathUpdateNeeded")}`));
1298
+ console.log(ansis.gray(` ${i18n.t("installation:pathUpdateHint")}`));
1299
+ console.log(ansis.cyan(` export PATH="$HOME/.local/bin:$PATH"`));
1300
+ console.log(ansis.gray(` ${i18n.t("installation:pathUpdatePermanent")}`));
1301
+ console.log(ansis.cyan(` echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc`));
1302
+ }
1265
1303
  } else {
1266
1304
  console.log(ansis.yellow(`\u26A0 ${codeTypeName} ${i18n.t("installation:verificationFailed")}`));
1267
1305
  if (result.commandPath) {
1268
1306
  console.log(ansis.gray(` ${i18n.t("installation:foundAtPath", { path: result.commandPath })}`));
1269
1307
  }
1270
- if (result.error) {
1308
+ if (result.error && result.error !== "PATH_UPDATE_NEEDED") {
1271
1309
  console.log(ansis.gray(` ${result.error}`));
1272
1310
  }
1273
1311
  if (result.needsSymlink && !result.symlinkCreated) {
@@ -5,7 +5,7 @@ import inquirer from 'inquirer';
5
5
  import { join } from 'pathe';
6
6
  import { CODE_TOOL_BANNERS, CLAUDE_DIR, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
7
7
  import { ensureI18nInitialized, i18n } from './index2.mjs';
8
- import { a as displayBannerWithInfo, p as padToDisplayWidth } from '../shared/ccjk.BhKlRJ0h.mjs';
8
+ import { a as displayBannerWithInfo } from '../shared/ccjk.BhKlRJ0h.mjs';
9
9
  import { updateZcfConfig, readZcfConfig } from './ccjk-config.mjs';
10
10
  import { E as runCodexUpdate, D as runCodexUninstall, M as configureCodexMcp, j as configureCodexApi, G as runCodexWorkflowImportWithLanguageSelection, B as runCodexFullInit } from './codex.mjs';
11
11
  import { r as resolveCodeType } from '../shared/ccjk.CUdzQluX.mjs';
@@ -3492,13 +3492,35 @@ async function isFirstTimeUser() {
3492
3492
  return false;
3493
3493
  }
3494
3494
  async function showNewUserWelcome() {
3495
+ const { version } = await import('./package.mjs');
3495
3496
  console.log("");
3496
- console.log(ansis.bold.cyan("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
3497
- console.log(ansis.bold.cyan("\u2551") + ansis.bold.white(padToDisplayWidth(` ${i18n.t("menu:newUser.welcomeTitle")}`, 62)) + ansis.bold.cyan("\u2551"));
3498
- console.log(`${ansis.bold.cyan("\u2551")} ${ansis.bold.cyan("\u2551")}`);
3499
- console.log(ansis.bold.cyan("\u2551") + padToDisplayWidth(` ${i18n.t("menu:newUser.welcomeDesc1")}`, 62) + ansis.bold.cyan("\u2551"));
3500
- console.log(ansis.bold.cyan("\u2551") + padToDisplayWidth(` ${i18n.t("menu:newUser.welcomeDesc2")}`, 62) + ansis.bold.cyan("\u2551"));
3501
- console.log(ansis.bold.cyan("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
3497
+ console.log(ansis.cyan.bold("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
3498
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3499
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 ") + ansis.cyan.bold("\u2551"));
3500
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2554\u255D ") + ansis.cyan.bold("\u2551"));
3501
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255D ") + ansis.cyan.bold("\u2551"));
3502
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ") + ansis.cyan.bold("\u2551"));
3503
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2557 ") + ansis.cyan.bold("\u2551"));
3504
+ console.log(ansis.cyan.bold("\u2551") + ansis.white.bold(" \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D ") + ansis.cyan.bold("\u2551"));
3505
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3506
+ console.log(ansis.cyan.bold("\u2551") + ansis.gray(` Claude Code JinKu - v${version}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3507
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3508
+ console.log(ansis.cyan.bold("\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563"));
3509
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3510
+ console.log(ansis.cyan.bold("\u2551") + ansis.yellow.bold(` ${i18n.t("menu:newUser.welcomeTitle")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3511
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3512
+ console.log(ansis.cyan.bold("\u2551") + ansis.white(` ${i18n.t("menu:newUser.welcomeDesc1")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3513
+ console.log(ansis.cyan.bold("\u2551") + ansis.white(` ${i18n.t("menu:newUser.welcomeDesc2")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3514
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3515
+ console.log(ansis.cyan.bold("\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563"));
3516
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3517
+ console.log(ansis.cyan.bold("\u2551") + ansis.green(` ${i18n.t("menu:newUser.highlights")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3518
+ console.log(ansis.cyan.bold("\u2551") + ansis.gray(` \u2022 ${i18n.t("menu:newUser.highlight1")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3519
+ console.log(ansis.cyan.bold("\u2551") + ansis.gray(` \u2022 ${i18n.t("menu:newUser.highlight2")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3520
+ console.log(ansis.cyan.bold("\u2551") + ansis.gray(` \u2022 ${i18n.t("menu:newUser.highlight3")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3521
+ console.log(ansis.cyan.bold("\u2551") + ansis.gray(` \u2022 ${i18n.t("menu:newUser.highlight4")}`.padEnd(72)) + ansis.cyan.bold("\u2551"));
3522
+ console.log(`${ansis.cyan.bold("\u2551")} ${ansis.cyan.bold("\u2551")}`);
3523
+ console.log(ansis.cyan.bold("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
3502
3524
  console.log("");
3503
3525
  const { mode } = await inquirer.prompt({
3504
3526
  type: "list",
@@ -3506,7 +3528,7 @@ async function showNewUserWelcome() {
3506
3528
  message: i18n.t("menu:newUser.selectPrompt"),
3507
3529
  choices: [
3508
3530
  {
3509
- name: ansis.green(i18n.t("menu:newUser.quickStart")) + ansis.dim(` - ${i18n.t("menu:newUser.quickStartDesc")}`),
3531
+ name: ansis.green.bold(i18n.t("menu:newUser.quickStart")) + ansis.dim(` - ${i18n.t("menu:newUser.quickStartDesc")}`),
3510
3532
  value: "quick"
3511
3533
  },
3512
3534
  {
@@ -3517,7 +3539,9 @@ async function showNewUserWelcome() {
3517
3539
  name: ansis.yellow(i18n.t("menu:newUser.viewHelp")) + ansis.dim(` - ${i18n.t("menu:newUser.viewHelpDesc")}`),
3518
3540
  value: "help"
3519
3541
  }
3520
- ]
3542
+ ],
3543
+ loop: false,
3544
+ pageSize: 10
3521
3545
  });
3522
3546
  return mode;
3523
3547
  }
@@ -1,4 +1,4 @@
1
- const version = "2.2.1";
1
+ const version = "2.2.2";
2
2
  const homepage = "https://github.com/miounet11/ccjk";
3
3
 
4
4
  export { homepage, version };
@@ -76,5 +76,8 @@
76
76
  "duplicateWarningContinue": "Acknowledged duplicate installation risk, continue",
77
77
  "versionMismatchWarning": "⚠️ Version mismatch: npm is {npmVersion}, Homebrew is {homebrewVersion}",
78
78
  "activatingHomebrew": "Activating Homebrew installation...",
79
- "autoRemovingNpm": "Silent mode: Auto-removing npm installation and keeping Homebrew..."
79
+ "autoRemovingNpm": "Silent mode: Auto-removing npm installation and keeping Homebrew...",
80
+ "pathUpdateNeeded": "PATH configuration required",
81
+ "pathUpdateHint": "Add ~/.local/bin to your PATH to use claude command directly:",
82
+ "pathUpdatePermanent": "To make this permanent, add to your shell config:"
80
83
  }
@@ -255,6 +255,15 @@
255
255
  "newUser.fullConfigDesc": "Customize all options",
256
256
  "newUser.viewHelp": "📖 View Help",
257
257
  "newUser.viewHelpDesc": "Learn about CCJK features",
258
+ "newUser.selectLang": "🌐 Select Language",
259
+ "newUser.selectLangDesc": "Change display language",
260
+ "newUser.langPrompt": "Select your preferred language:",
261
+ "newUser.langChanged": "Language changed to {{lang}}",
262
+ "newUser.highlights": "✨ Highlights",
263
+ "newUser.highlight1": "One-click API configuration with multiple providers",
264
+ "newUser.highlight2": "Pre-built workflow templates for common tasks",
265
+ "newUser.highlight3": "MCP services for enhanced capabilities",
266
+ "newUser.highlight4": "Smart diagnostics and auto-fix",
258
267
  "newUser.featuresTitle": "📖 CCJK Features Overview",
259
268
  "newUser.coreFeatures": "Core Features:",
260
269
  "newUser.feature.api": "API Configuration - Support Auth Token, API Key, CCR Proxy",
@@ -76,5 +76,8 @@
76
76
  "duplicateWarningContinue": "已知晓多重安装风险,继续使用",
77
77
  "versionMismatchWarning": "⚠️ 版本不一致:npm 版本为 {npmVersion},Homebrew 版本为 {homebrewVersion}",
78
78
  "activatingHomebrew": "正在激活 Homebrew 安装...",
79
- "autoRemovingNpm": "静默模式:自动删除 npm 安装并保留 Homebrew..."
79
+ "autoRemovingNpm": "静默模式:自动删除 npm 安装并保留 Homebrew...",
80
+ "pathUpdateNeeded": "需要配置 PATH 环境变量",
81
+ "pathUpdateHint": "将 ~/.local/bin 添加到 PATH 以直接使用 claude 命令:",
82
+ "pathUpdatePermanent": "要永久生效,请添加到 shell 配置文件:"
80
83
  }
@@ -255,6 +255,15 @@
255
255
  "newUser.fullConfigDesc": "自定义所有选项",
256
256
  "newUser.viewHelp": "📖 查看帮助",
257
257
  "newUser.viewHelpDesc": "了解 CCJK 功能",
258
+ "newUser.selectLang": "🌐 选择语言",
259
+ "newUser.selectLangDesc": "更改显示语言",
260
+ "newUser.langPrompt": "请选择您的首选语言:",
261
+ "newUser.langChanged": "语言已更改为 {{lang}}",
262
+ "newUser.highlights": "✨ 亮点功能",
263
+ "newUser.highlight1": "一键配置 API,支持多种提供商",
264
+ "newUser.highlight2": "预置工作流模板,开箱即用",
265
+ "newUser.highlight3": "MCP 服务增强 AI 能力",
266
+ "newUser.highlight4": "智能诊断,自动修复问题",
258
267
  "newUser.featuresTitle": "📖 CCJK 功能介绍",
259
268
  "newUser.coreFeatures": "核心功能:",
260
269
  "newUser.feature.api": "API 配置 - 支持 Auth Token、API Key、CCR 代理",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ccjk",
3
3
  "type": "module",
4
- "version": "2.2.1",
4
+ "version": "2.2.2",
5
5
  "packageManager": "pnpm@10.17.1",
6
6
  "description": "Claude Code JinKu - Advanced AI-powered development assistant with skills, agents, and LLM-driven audit",
7
7
  "author": {