@kikkimo/claude-launcher 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +16 -8
- package/claude-launcher +36 -7
- package/docs/README-zh.md +16 -8
- package/docs/superpowers/plans/2026-03-31-update-models-and-auto-mode.md +1414 -0
- package/docs/superpowers/specs/2026-03-31-update-models-and-auto-mode-design.md +187 -0
- package/lib/i18n/locales/de.js +6 -0
- package/lib/i18n/locales/en.js +6 -0
- package/lib/i18n/locales/es.js +6 -0
- package/lib/i18n/locales/fr.js +6 -0
- package/lib/i18n/locales/it.js +6 -0
- package/lib/i18n/locales/ja.js +6 -0
- package/lib/i18n/locales/ko.js +6 -0
- package/lib/i18n/locales/pt.js +6 -0
- package/lib/i18n/locales/ru.js +6 -0
- package/lib/i18n/locales/zh-TW.js +6 -0
- package/lib/i18n/locales/zh.js +6 -0
- package/lib/launcher.js +10 -0
- package/lib/presets/providers.js +39 -18
- package/lib/ui/menu.js +17 -5
- package/package.json +2 -2
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Design: Update Models & Add Auto Mode
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-03-31
|
|
4
|
+
**Branch:** `feature/update-models-and-auto-mode`
|
|
5
|
+
**Scope:** Update GLM/Kimi/MiniMax model versions, add Claude Auto Mode menu item, add dynamic menu hints
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Model Configuration Updates (`lib/presets/providers.js`)
|
|
10
|
+
|
|
11
|
+
### 1.1 GLM (zhipu + zai)
|
|
12
|
+
|
|
13
|
+
**Changes:** Add `glm-5.1`, `glm-5-turbo`; remove `glm-4.5`, `glm-4.6`; add versionAliases for removed models only.
|
|
14
|
+
|
|
15
|
+
**Source:** [Z.AI Developer Docs - Using GLM-5.1](https://docs.z.ai/devpack/using5.1), confirmed available on Anthropic-compatible endpoint `https://api.z.ai/api/anthropic`.
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
// Both zhipu and zai get identical model config:
|
|
19
|
+
name: 'ZhiPu AI (GLM-5.1/5-Turbo/5/4.7) - 智谱清言', // zhipu
|
|
20
|
+
name: 'Z.ai (GLM-5.1/5-Turbo/5/4.7) - ZhiPu Global', // zai
|
|
21
|
+
models: ['glm-5.1', 'glm-5-turbo', 'glm-5', 'glm-4.7'],
|
|
22
|
+
versionAliases: {
|
|
23
|
+
'glm-4.5': 'glm-5.1', // removed from model list
|
|
24
|
+
'glm-4.6': 'glm-5.1' // removed from model list
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Note: `glm-5-turbo`, `glm-5`, `glm-4.7` are distinct models offered concurrently by the provider ([docs](https://docs.z.ai/guides/llm/glm-5-turbo)). They are NOT deprecated and must NOT appear in versionAliases, otherwise auto-upgrade would silently rewrite a user's intentional model choice.
|
|
29
|
+
|
|
30
|
+
### 1.2 Kimi (moonshot)
|
|
31
|
+
|
|
32
|
+
**Changes:** Add `kimi-k2.5`; remove `kimi-k2-0711-preview`, `kimi-k2-0905-preview`, `kimi-k2-turbo-preview`; add versionAliases for removed models only.
|
|
33
|
+
|
|
34
|
+
**Source:** [Kimi K2.5 Quickstart](https://platform.moonshot.cn/docs/guide/kimi-k2-5-quickstart)
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
name: 'Moonshot AI (Kimi-K2.5/K2-Thinking)',
|
|
38
|
+
models: ['kimi-k2.5', 'kimi-k2-thinking', 'kimi-k2-thinking-turbo'],
|
|
39
|
+
versionAliases: {
|
|
40
|
+
'kimi-k2-0711-preview': 'kimi-k2.5', // removed from model list
|
|
41
|
+
'kimi-k2-0905-preview': 'kimi-k2.5', // removed from model list
|
|
42
|
+
'kimi-k2-turbo-preview': 'kimi-k2.5' // removed from model list
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Note: `kimi-k2-thinking` and `kimi-k2-thinking-turbo` are distinct thinking models ([docs](https://platform.moonshot.ai/docs/guide/use-kimi-k2-thinking-model)), not deprecated. They must NOT appear in versionAliases.
|
|
47
|
+
|
|
48
|
+
`kimi_for_coding` provider: no changes.
|
|
49
|
+
|
|
50
|
+
### 1.3 MiniMax (minimax_cn + minimax_global)
|
|
51
|
+
|
|
52
|
+
**Changes:** Add `MiniMax-M2.7`, `MiniMax-M2.5`; no versionAliases needed (all models remain selectable).
|
|
53
|
+
|
|
54
|
+
**Source:** [MiniMax Anthropic API Docs](https://platform.minimax.io/docs/api-reference/text-anthropic-api)
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
// minimax_cn
|
|
58
|
+
name: 'MiniMax CN (国内版)',
|
|
59
|
+
models: ['MiniMax-M2.7', 'MiniMax-M2.5', 'MiniMax-M2.1'],
|
|
60
|
+
// No versionAliases - M2.1 and M2.5 are distinct tiers, not deprecated
|
|
61
|
+
|
|
62
|
+
// minimax_global
|
|
63
|
+
name: 'MiniMax Global (国际版)',
|
|
64
|
+
models: ['MiniMax-M2.7', 'MiniMax-M2.5', 'MiniMax-M2.1'],
|
|
65
|
+
// No versionAliases - same reason
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Note: MiniMax offers M2.1, M2.5, and M2.7 as concurrent tiers with different price/performance profiles ([platform docs](https://platform.minimax.io/)). They are NOT deprecated and must NOT appear in versionAliases.
|
|
69
|
+
|
|
70
|
+
### 1.4 Unchanged Providers
|
|
71
|
+
|
|
72
|
+
- `anthropic`: No changes (existing versionAliases handle multi-series upgrades correctly)
|
|
73
|
+
- `deepseek`: No changes
|
|
74
|
+
- `kimi_for_coding`: No changes
|
|
75
|
+
- `custom`: No changes
|
|
76
|
+
|
|
77
|
+
### 1.5 Upgrade Logic
|
|
78
|
+
|
|
79
|
+
`getLatestModel()` and `hasModelUpgrade()` in `providers.js` remain unchanged. They continue to use `versionAliases` exclusively. The key invariant is: **versionAliases must only contain models that are truly removed/deprecated, never distinct models that the provider offers concurrently.**
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 2. Auto Mode Menu Item
|
|
84
|
+
|
|
85
|
+
### 2.1 Background
|
|
86
|
+
|
|
87
|
+
Claude Code auto mode (released March 24, 2026) uses a classifier-gated approval system. The `--enable-auto-mode` CLI flag **enables auto mode support** in a session, but does NOT start the session directly in auto mode. The user must press **Shift+Tab** to cycle to auto mode after launch. ([Source](https://claude.com/blog/auto-mode))
|
|
88
|
+
|
|
89
|
+
Plan support: Currently available on Team plans. Enterprise and API plan support is rolling out.
|
|
90
|
+
|
|
91
|
+
### 2.2 New Menu Structure
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
0: Launch Claude Code
|
|
95
|
+
1: Launch Claude Code (Skip Permissions)
|
|
96
|
+
2: Launch Claude Code (Enable Auto Mode) <-- NEW (note: "Enable", not just "Auto Mode")
|
|
97
|
+
3: Launch Claude Code with 3rd-party API
|
|
98
|
+
4: Launch Claude Code with 3rd-party API (Auto Skip Permissions)
|
|
99
|
+
5: 3rd-party API Management
|
|
100
|
+
6: Language Settings
|
|
101
|
+
7: Version Update Check
|
|
102
|
+
8: Exit
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2.3 Launch Implementation (`lib/launcher.js`)
|
|
106
|
+
|
|
107
|
+
New function `launchClaudeAutoMode()`:
|
|
108
|
+
- Command: `claude --enable-auto-mode`
|
|
109
|
+
- Uses existing `launchClaude()` core with the new command string
|
|
110
|
+
- This enables auto mode as a selectable permission mode; user switches to it with Shift+Tab in session
|
|
111
|
+
|
|
112
|
+
### 2.4 Main File Changes (`claude-launcher`)
|
|
113
|
+
|
|
114
|
+
- Add new menu option at index 2
|
|
115
|
+
- Shift all subsequent menu indices by 1
|
|
116
|
+
- Add case handler for index 2 calling `launchClaudeAutoMode()`
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 3. Dynamic Menu Hints
|
|
121
|
+
|
|
122
|
+
### 3.1 Menu Class Changes (`lib/ui/menu.js`)
|
|
123
|
+
|
|
124
|
+
**Parameter contract preservation:** Current signatures are `displayMenu(clearScreen, versionInfo)` and `navigate(clearScreen, versionInfo)`. The `hintCallback` parameter is added as the **third** parameter to both methods:
|
|
125
|
+
|
|
126
|
+
```js
|
|
127
|
+
displayMenu(clearScreen = true, versionInfo = null, hintCallback = null)
|
|
128
|
+
navigate(clearScreen = true, versionInfo = null, hintCallback = null)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
This preserves backward compatibility with all existing call sites that pass `(clearScreen, versionInfo)`.
|
|
132
|
+
|
|
133
|
+
**Sync constraint:** `hintCallback` must be a **synchronous** function returning `string | null`. The menu redraws synchronously inside the raw-mode keypress handler (`lib/ui/menu.js` handleKeyPress), which has no `await` space. Hint text must be pre-computed before calling `navigate()`, or the callback must use only `i18n.tSync()` / cached data — never `await i18n.t()`.
|
|
134
|
+
|
|
135
|
+
**Rendering:** If `hintCallback` is provided and `hintCallback(this.selectedIndex)` returns a non-null string, the Menu rendering layer prepends the `ℹ` icon with `colors.cyan` and renders the hint text in `colors.gray` below the menu options. If it returns null, no hint line is rendered. **Locale values must be pure text without the `ℹ` prefix** — the icon and color are added by Menu, not by i18n strings.
|
|
136
|
+
|
|
137
|
+
### 3.2 Hint Rules
|
|
138
|
+
|
|
139
|
+
| Selected Index | Hint text returned by hintCallback (no icon prefix) |
|
|
140
|
+
|---|---|
|
|
141
|
+
| 0 (Default Launch) | `null` (no hint) |
|
|
142
|
+
| 1 (Skip Permissions) | `null` (no hint) |
|
|
143
|
+
| 2 (Enable Auto Mode) | `"Auto Mode: Currently supports Team plan. Enterprise/API rolling out. Use Shift+Tab to switch after launch."` |
|
|
144
|
+
| 3 (3rd-party API) | Active API exists: `"Active: ZhiPu AI / glm-5.1"` (formatted from i18n); No API: `"No active API configured. Go to 'API Management' to add one."` |
|
|
145
|
+
| 4 (3rd-party + Skip) | Same as index 3 |
|
|
146
|
+
| 5-8 | `null` (no hint) |
|
|
147
|
+
|
|
148
|
+
### 3.3 Hint i18n
|
|
149
|
+
|
|
150
|
+
All hint strings go through the i18n system. **Placeholders use positional `{0}`, `{1}` format** to match the existing `MessageFormatter.format()` in `lib/i18n/formatter.js`. Locale values must NOT include the `ℹ` icon prefix.
|
|
151
|
+
|
|
152
|
+
New keys:
|
|
153
|
+
- `hints.auto_mode_info` — e.g. `'Auto Mode: Currently supports Team plan. Enterprise/API rolling out. Use Shift+Tab to switch after launch.'`
|
|
154
|
+
- `hints.active_api_info` — e.g. `'Active: {0} / {1}'` (where `{0}` = provider name, `{1}` = model)
|
|
155
|
+
- `hints.no_active_api` — e.g. `'No active API configured. Go to "API Management" to add one.'`
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 4. i18n Updates
|
|
160
|
+
|
|
161
|
+
All 11 locale files need new entries:
|
|
162
|
+
|
|
163
|
+
- `menu.main.launch_auto_mode` - Menu item text for "Launch Claude Code (Enable Auto Mode)"
|
|
164
|
+
- `hints.auto_mode_info` - Pure text, no icon prefix
|
|
165
|
+
- `hints.active_api_info` - Uses `{0}` for provider name, `{1}` for model name
|
|
166
|
+
- `hints.no_active_api` - Pure text, no icon prefix
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 5. Files to Modify
|
|
171
|
+
|
|
172
|
+
| File | Changes |
|
|
173
|
+
|---|---|
|
|
174
|
+
| `lib/presets/providers.js` | Update models, names, versionAliases for GLM/Kimi/MiniMax (deprecations only) |
|
|
175
|
+
| `lib/ui/menu.js` | Add `hintCallback` as **3rd parameter** to `displayMenu()` and `navigate()` |
|
|
176
|
+
| `lib/launcher.js` | Add `launchClaudeAutoMode()` function |
|
|
177
|
+
| `claude-launcher` (main) | New menu item, hint callback, case handler, index shifts |
|
|
178
|
+
| `lib/i18n/locales/*.js` (x11) | New i18n keys for Auto Mode menu and hints |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 6. Out of Scope
|
|
183
|
+
|
|
184
|
+
- No changes to `getLatestModel()` / `hasModelUpgrade()` logic
|
|
185
|
+
- No new `latestModel` field
|
|
186
|
+
- No changes to DeepSeek, Anthropic, kimi_for_coding, or custom providers
|
|
187
|
+
- No changes to the model upgrade checker or auto-upgrade flow
|
package/lib/i18n/locales/de.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Hauptmenü",
|
|
11
11
|
launch_default: "Claude Code starten",
|
|
12
12
|
launch_skip: "Claude Code starten (Berechtigungsprüfung überspringen)",
|
|
13
|
+
launch_auto_mode: "Claude Code starten (Auto-Modus aktivieren)",
|
|
13
14
|
launch_api: "Claude Code mit Drittanbieter-API starten",
|
|
14
15
|
launch_api_skip: "Claude Code mit Drittanbieter-API starten (Berechtigungsprüfung überspringen)",
|
|
15
16
|
api_management: "Drittanbieter-API-Verwaltung",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Upgrade abgeschlossen!",
|
|
600
601
|
manual_stats_upgraded: "Upgegradet: {0}",
|
|
601
602
|
manual_stats_skipped: "Übersprungen: {0} ({1} bereits aktuell, {2} keine Upgrade-Info)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Auto-Modus: Derzeit fuer Team-Plan verfuegbar. Enterprise/API wird schrittweise eingefuehrt. Nach dem Start mit Shift+Tab wechseln.',
|
|
606
|
+
active_api_info: 'Aktiv: {0} / {1}',
|
|
607
|
+
no_active_api: 'Keine aktive API konfiguriert. Gehen Sie zur "API-Verwaltung", um eine hinzuzufuegen.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/en.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Main Menu",
|
|
11
11
|
launch_default: "Launch Claude Code",
|
|
12
12
|
launch_skip: "Launch Claude Code (Auto Skip Permissions)",
|
|
13
|
+
launch_auto_mode: "Launch Claude Code (Enable Auto Mode)",
|
|
13
14
|
launch_api: "Launch Claude Code with 3rd-party API",
|
|
14
15
|
launch_api_skip: "Launch Claude Code with 3rd-party API (Auto Skip Permissions)",
|
|
15
16
|
api_management: "3rd-party API Management",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Upgrade complete!",
|
|
600
601
|
manual_stats_upgraded: "Upgraded: {0}",
|
|
601
602
|
manual_stats_skipped: "Skipped: {0} ({1} already latest, {2} no upgrade info)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Auto Mode: Currently supports Team plan. Enterprise/API rolling out. Use Shift+Tab to switch after launch.',
|
|
606
|
+
active_api_info: 'Active: {0} / {1}',
|
|
607
|
+
no_active_api: 'No active API configured. Go to "API Management" to add one.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/es.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Menú Principal",
|
|
11
11
|
launch_default: "Iniciar Claude Code",
|
|
12
12
|
launch_skip: "Iniciar Claude Code (Omitir verificación de permisos)",
|
|
13
|
+
launch_auto_mode: "Iniciar Claude Code (Activar modo automatico)",
|
|
13
14
|
launch_api: "Iniciar Claude Code con API de terceros",
|
|
14
15
|
launch_api_skip: "Iniciar Claude Code con API de terceros (Omitir verificación de permisos)",
|
|
15
16
|
api_management: "Gestión de API de terceros",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "¡Actualización completa!",
|
|
600
601
|
manual_stats_upgraded: "Actualizados: {0}",
|
|
601
602
|
manual_stats_skipped: "Omitidos: {0} ({1} ya actualizados, {2} sin info de actualización)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Modo automatico: Disponible para el plan Team. Enterprise/API en despliegue gradual. Despues de iniciar, presione Shift+Tab para cambiar.',
|
|
606
|
+
active_api_info: 'Activo: {0} / {1}',
|
|
607
|
+
no_active_api: 'No hay API activa configurada. Vaya a "Gestion de API" para agregar una.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/fr.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Menu Principal",
|
|
11
11
|
launch_default: "Lancer Claude Code",
|
|
12
12
|
launch_skip: "Lancer Claude Code (Ignorer la vérification des permissions)",
|
|
13
|
+
launch_auto_mode: "Lancer Claude Code (Activer le mode auto)",
|
|
13
14
|
launch_api: "Lancer Claude Code avec API tierce",
|
|
14
15
|
launch_api_skip: "Lancer Claude Code avec API tierce (Ignorer la vérification des permissions)",
|
|
15
16
|
api_management: "Gestion des API tierces",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Mise à niveau terminée !",
|
|
600
601
|
manual_stats_upgraded: "Mis à niveau : {0}",
|
|
601
602
|
manual_stats_skipped: "Ignoré : {0} ({1} déjà à jour, {2} sans info de mise à niveau)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Mode auto : Disponible pour le plan Team. Enterprise/API en cours de deploiement. Apres le lancement, appuyez sur Shift+Tab pour basculer.',
|
|
606
|
+
active_api_info: 'Actif : {0} / {1}',
|
|
607
|
+
no_active_api: 'Aucune API active configuree. Allez dans "Gestion des API" pour en ajouter une.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/it.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Menu Principale",
|
|
11
11
|
launch_default: "Avvia Claude Code",
|
|
12
12
|
launch_skip: "Avvia Claude Code (Salta Automaticamente Permessi)",
|
|
13
|
+
launch_auto_mode: "Avvia Claude Code (Abilita modalita automatica)",
|
|
13
14
|
launch_api: "Avvia Claude Code con API di Terze Parti",
|
|
14
15
|
launch_api_skip: "Avvia Claude Code con API di Terze Parti (Salta Automaticamente Permessi)",
|
|
15
16
|
api_management: "Gestione API di Terze Parti",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Aggiornamento completato!",
|
|
600
601
|
manual_stats_upgraded: "Aggiornati: {0}",
|
|
601
602
|
manual_stats_skipped: "Saltati: {0} ({1} già aggiornati, {2} senza info aggiornamento)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Modalita automatica: Attualmente disponibile per il piano Team. Enterprise/API in fase di rilascio graduale. Dopo l\'avvio, premi Shift+Tab per passare.',
|
|
606
|
+
active_api_info: 'Attivo: {0} / {1}',
|
|
607
|
+
no_active_api: 'Nessuna API attiva configurata. Vai a "Gestione API" per aggiungerne una.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/ja.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "メインメニュー",
|
|
11
11
|
launch_default: "Claude Codeを起動",
|
|
12
12
|
launch_skip: "Claude Codeを起動(権限確認をスキップ)",
|
|
13
|
+
launch_auto_mode: "Claude Code を起動(自動モード有効化)",
|
|
13
14
|
launch_api: "サードパーティAPIでClaude Codeを起動",
|
|
14
15
|
launch_api_skip: "サードパーティAPIでClaude Codeを起動(権限確認をスキップ)",
|
|
15
16
|
api_management: "サードパーティAPI管理",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "アップグレード完了!",
|
|
600
601
|
manual_stats_upgraded: "アップグレード済み:{0}個",
|
|
601
602
|
manual_stats_skipped: "スキップ:{0}個({1}個は既に最新、{2}個はアップグレード情報なし)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: '自動モード:現在 Team プランで利用可能。Enterprise/API プランは順次展開中。起動後 Shift+Tab で切替。',
|
|
606
|
+
active_api_info: 'アクティブ:{0} / {1}',
|
|
607
|
+
no_active_api: 'アクティブなAPIがありません。「API管理」から追加してください。'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/ko.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "메인 메뉴",
|
|
11
11
|
launch_default: "Claude Code 실행",
|
|
12
12
|
launch_skip: "Claude Code 실행 (권한 확인 자동 건너뛰기)",
|
|
13
|
+
launch_auto_mode: "Claude Code 실행 (자동 모드 활성화)",
|
|
13
14
|
launch_api: "서드파티 API로 Claude Code 실행",
|
|
14
15
|
launch_api_skip: "서드파티 API로 Claude Code 실행 (권한 확인 자동 건너뛰기)",
|
|
15
16
|
api_management: "서드파티 API 관리",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "업그레이드 완료!",
|
|
600
601
|
manual_stats_upgraded: "업그레이드됨: {0}개",
|
|
601
602
|
manual_stats_skipped: "건너뜀: {0}개 ({1}개 이미 최신, {2}개 업그레이드 정보 없음)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: '자동 모드: 현재 Team 플랜에서 지원됩니다. Enterprise/API 플랜은 순차 출시 중입니다. 실행 후 Shift+Tab으로 전환하세요.',
|
|
606
|
+
active_api_info: '활성: {0} / {1}',
|
|
607
|
+
no_active_api: '활성화된 API가 없습니다. "API 관리"에서 추가하세요.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/pt.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Menu Principal",
|
|
11
11
|
launch_default: "Executar Claude Code",
|
|
12
12
|
launch_skip: "Executar Claude Code (Pular Permissões Automaticamente)",
|
|
13
|
+
launch_auto_mode: "Iniciar Claude Code (Ativar modo automatico)",
|
|
13
14
|
launch_api: "Executar Claude Code com API de Terceiros",
|
|
14
15
|
launch_api_skip: "Executar Claude Code com API de Terceiros (Pular Permissões Automaticamente)",
|
|
15
16
|
api_management: "Gerenciamento de API de Terceiros",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Atualização completa!",
|
|
600
601
|
manual_stats_upgraded: "Atualizados: {0}",
|
|
601
602
|
manual_stats_skipped: "Ignorados: {0} ({1} já atualizados, {2} sem info de atualização)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Modo automatico: Disponivel para o plano Team. Enterprise/API em implantacao gradual. Apos iniciar, pressione Shift+Tab para alternar.',
|
|
606
|
+
active_api_info: 'Ativo: {0} / {1}',
|
|
607
|
+
no_active_api: 'Nenhuma API ativa configurada. Va para "Gerenciamento de API" para adicionar uma.'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/ru.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "Главное меню",
|
|
11
11
|
launch_default: "Запустить Claude Code",
|
|
12
12
|
launch_skip: "Запустить Claude Code (Автопропуск разрешений)",
|
|
13
|
+
launch_auto_mode: "Запустить Claude Code (Включить авторежим)",
|
|
13
14
|
launch_api: "Запустить Claude Code со сторонним API",
|
|
14
15
|
launch_api_skip: "Запустить Claude Code со сторонним API (Автопропуск разрешений)",
|
|
15
16
|
api_management: "Управление сторонними API",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "Обновление завершено!",
|
|
600
601
|
manual_stats_upgraded: "Обновлено: {0}",
|
|
601
602
|
manual_stats_skipped: "Пропущено: {0} ({1} уже обновлены, {2} без информации об обновлении)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: 'Авторежим: Доступен для плана Team. Enterprise/API постепенно внедряются. После запуска нажмите Shift+Tab для переключения.',
|
|
606
|
+
active_api_info: 'Активный: {0} / {1}',
|
|
607
|
+
no_active_api: 'Нет настроенного активного API. Перейдите в "Управление API", чтобы добавить.'
|
|
602
608
|
}
|
|
603
609
|
};
|
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "主選單",
|
|
11
11
|
launch_default: "啟動 Claude Code",
|
|
12
12
|
launch_skip: "啟動 Claude Code(自動跳過權限詢問)",
|
|
13
|
+
launch_auto_mode: "啟動 Claude Code(啟用自動模式)",
|
|
13
14
|
launch_api: "使用第三方API啟動 Claude Code",
|
|
14
15
|
launch_api_skip: "使用第三方API啟動 Claude Code(自動跳過權限詢問)",
|
|
15
16
|
api_management: "第三方API管理",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "升級完成!",
|
|
600
601
|
manual_stats_upgraded: "已升級:{0} 個",
|
|
601
602
|
manual_stats_skipped: "已跳過:{0} 個({1} 個已是最新,{2} 個無升級資訊)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: '自動模式:目前支援 Team 方案。Enterprise/API 方案逐步推出中。啟動後按 Shift+Tab 切換。',
|
|
606
|
+
active_api_info: '目前啟用:{0} / {1}',
|
|
607
|
+
no_active_api: '未設定啟用的API,請前往「API管理」新增。'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/i18n/locales/zh.js
CHANGED
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
title: "主菜单",
|
|
11
11
|
launch_default: "启动 Claude Code",
|
|
12
12
|
launch_skip: "启动 Claude Code(自动跳过权限询问)",
|
|
13
|
+
launch_auto_mode: "启动 Claude Code(启用自动模式)",
|
|
13
14
|
launch_api: "使用第三方API启动 Claude Code",
|
|
14
15
|
launch_api_skip: "使用第三方API启动 Claude Code(自动跳过权限询问)",
|
|
15
16
|
api_management: "第三方API管理",
|
|
@@ -599,5 +600,10 @@ module.exports = {
|
|
|
599
600
|
manual_complete: "升级完成!",
|
|
600
601
|
manual_stats_upgraded: "已升级: {0} 个",
|
|
601
602
|
manual_stats_skipped: "已跳过: {0} 个 ({1} 个已是最新, {2} 个无升级信息)"
|
|
603
|
+
},
|
|
604
|
+
hints: {
|
|
605
|
+
auto_mode_info: '自动模式:目前支持 Team 计划。Enterprise/API 计划逐步推出中。启动后按 Shift+Tab 切换。',
|
|
606
|
+
active_api_info: '当前激活:{0} / {1}',
|
|
607
|
+
no_active_api: '未配置激活的API,请前往"API管理"添加。'
|
|
602
608
|
}
|
|
603
609
|
};
|
package/lib/launcher.js
CHANGED
|
@@ -183,6 +183,15 @@ function launchClaudeSkipPermissions() {
|
|
|
183
183
|
launchClaude('claude --dangerously-skip-permissions');
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Launch Claude with auto mode enabled
|
|
188
|
+
* Note: --enable-auto-mode makes auto mode available as a permission mode.
|
|
189
|
+
* User must press Shift+Tab in the session to switch to it.
|
|
190
|
+
*/
|
|
191
|
+
function launchClaudeAutoMode() {
|
|
192
|
+
launchClaude('claude --enable-auto-mode');
|
|
193
|
+
}
|
|
194
|
+
|
|
186
195
|
/**
|
|
187
196
|
* Get environment variables based on provider type
|
|
188
197
|
*/
|
|
@@ -353,6 +362,7 @@ module.exports = {
|
|
|
353
362
|
launchClaude,
|
|
354
363
|
launchClaudeDefault,
|
|
355
364
|
launchClaudeSkipPermissions,
|
|
365
|
+
launchClaudeAutoMode,
|
|
356
366
|
launchClaudeWithApi,
|
|
357
367
|
getProviderEnvVars,
|
|
358
368
|
testApiConnection
|
package/lib/presets/providers.js
CHANGED
|
@@ -35,15 +35,20 @@ const providers = {
|
|
|
35
35
|
compatibility: 'native'
|
|
36
36
|
},
|
|
37
37
|
moonshot: {
|
|
38
|
-
name: 'Moonshot AI (Kimi-K2)',
|
|
38
|
+
name: 'Moonshot AI (Kimi-K2.5/K2-Thinking)',
|
|
39
39
|
baseUrl: 'https://api.moonshot.cn/anthropic',
|
|
40
40
|
models: [
|
|
41
|
-
'kimi-k2
|
|
42
|
-
'kimi-k2-0905-preview',
|
|
43
|
-
'kimi-k2-turbo-preview',
|
|
41
|
+
'kimi-k2.5',
|
|
44
42
|
'kimi-k2-thinking',
|
|
45
43
|
'kimi-k2-thinking-turbo'
|
|
46
44
|
],
|
|
45
|
+
versionAliases: {
|
|
46
|
+
'kimi-k2-0711-preview': 'kimi-k2.5',
|
|
47
|
+
'kimi-k2-0905-preview': 'kimi-k2.5',
|
|
48
|
+
'kimi-k2-turbo-preview': 'kimi-k2.5',
|
|
49
|
+
'kimi-k2-thinking': 'kimi-k2.5',
|
|
50
|
+
'kimi-k2-thinking-turbo': 'kimi-k2.5'
|
|
51
|
+
},
|
|
47
52
|
authTokenFormat: 'sk-...',
|
|
48
53
|
description: 'Moonshot AI - Provides Anthropic-compatible API',
|
|
49
54
|
requiresToken: true,
|
|
@@ -74,8 +79,14 @@ const providers = {
|
|
|
74
79
|
name: 'MiniMax CN (国内版)',
|
|
75
80
|
baseUrl: 'https://api.minimaxi.com/anthropic',
|
|
76
81
|
models: [
|
|
82
|
+
'MiniMax-M2.7',
|
|
83
|
+
'MiniMax-M2.5',
|
|
77
84
|
'MiniMax-M2.1'
|
|
78
85
|
],
|
|
86
|
+
versionAliases: {
|
|
87
|
+
'MiniMax-M2.1': 'MiniMax-M2.7',
|
|
88
|
+
'MiniMax-M2.5': 'MiniMax-M2.7'
|
|
89
|
+
},
|
|
79
90
|
authTokenFormat: 'sk-...',
|
|
80
91
|
description: 'MiniMax AI - Anthropic-compatible API for China users',
|
|
81
92
|
requiresToken: true,
|
|
@@ -90,8 +101,14 @@ const providers = {
|
|
|
90
101
|
name: 'MiniMax Global (国际版)',
|
|
91
102
|
baseUrl: 'https://api.minimax.io/anthropic',
|
|
92
103
|
models: [
|
|
104
|
+
'MiniMax-M2.7',
|
|
105
|
+
'MiniMax-M2.5',
|
|
93
106
|
'MiniMax-M2.1'
|
|
94
107
|
],
|
|
108
|
+
versionAliases: {
|
|
109
|
+
'MiniMax-M2.1': 'MiniMax-M2.7',
|
|
110
|
+
'MiniMax-M2.5': 'MiniMax-M2.7'
|
|
111
|
+
},
|
|
95
112
|
authTokenFormat: 'sk-...',
|
|
96
113
|
description: 'MiniMax AI - Anthropic-compatible API for international users',
|
|
97
114
|
requiresToken: true,
|
|
@@ -120,18 +137,20 @@ const providers = {
|
|
|
120
137
|
note: 'Requires extended timeout for complex reasoning tasks'
|
|
121
138
|
},
|
|
122
139
|
zhipu: {
|
|
123
|
-
name: 'ZhiPu AI (GLM-5
|
|
140
|
+
name: 'ZhiPu AI (GLM-5.1/5-Turbo/5/4.7) - 智谱清言',
|
|
124
141
|
baseUrl: 'https://open.bigmodel.cn/api/anthropic',
|
|
125
142
|
models: [
|
|
143
|
+
'glm-5.1',
|
|
144
|
+
'glm-5-turbo',
|
|
126
145
|
'glm-5',
|
|
127
|
-
'glm-4.7'
|
|
128
|
-
'glm-4.6',
|
|
129
|
-
'glm-4.5'
|
|
146
|
+
'glm-4.7'
|
|
130
147
|
],
|
|
131
148
|
versionAliases: {
|
|
132
|
-
'glm-4.5': 'glm-5',
|
|
133
|
-
'glm-4.6': 'glm-5',
|
|
134
|
-
'glm-4.7': 'glm-5'
|
|
149
|
+
'glm-4.5': 'glm-5.1',
|
|
150
|
+
'glm-4.6': 'glm-5.1',
|
|
151
|
+
'glm-4.7': 'glm-5.1',
|
|
152
|
+
'glm-5': 'glm-5.1',
|
|
153
|
+
'glm-5-turbo': 'glm-5.1'
|
|
135
154
|
},
|
|
136
155
|
authTokenFormat: 'sk-...',
|
|
137
156
|
description: 'ZhiPu AI (智谱清言) - Anthropic-compatible API for mainland China',
|
|
@@ -144,18 +163,20 @@ const providers = {
|
|
|
144
163
|
note: 'Requires extended timeout for large responses'
|
|
145
164
|
},
|
|
146
165
|
zai: {
|
|
147
|
-
name: 'Z.ai (GLM-5
|
|
166
|
+
name: 'Z.ai (GLM-5.1/5-Turbo/5/4.7) - ZhiPu Global',
|
|
148
167
|
baseUrl: 'https://api.z.ai/api/anthropic',
|
|
149
168
|
models: [
|
|
169
|
+
'glm-5.1',
|
|
170
|
+
'glm-5-turbo',
|
|
150
171
|
'glm-5',
|
|
151
|
-
'glm-4.7'
|
|
152
|
-
'glm-4.6',
|
|
153
|
-
'glm-4.5'
|
|
172
|
+
'glm-4.7'
|
|
154
173
|
],
|
|
155
174
|
versionAliases: {
|
|
156
|
-
'glm-4.5': 'glm-5',
|
|
157
|
-
'glm-4.6': 'glm-5',
|
|
158
|
-
'glm-4.7': 'glm-5'
|
|
175
|
+
'glm-4.5': 'glm-5.1',
|
|
176
|
+
'glm-4.6': 'glm-5.1',
|
|
177
|
+
'glm-4.7': 'glm-5.1',
|
|
178
|
+
'glm-5': 'glm-5.1',
|
|
179
|
+
'glm-5-turbo': 'glm-5.1'
|
|
159
180
|
},
|
|
160
181
|
authTokenFormat: 'sk-...',
|
|
161
182
|
description: 'Z.ai (ZhiPu AI Global) - Anthropic-compatible API for international users',
|
package/lib/ui/menu.js
CHANGED
|
@@ -60,8 +60,9 @@ class Menu {
|
|
|
60
60
|
* Display menu with current selection
|
|
61
61
|
* @param {boolean} clearScreen - Whether to clear screen before displaying (default: true)
|
|
62
62
|
* @param {string} versionInfo - Optional version info to display between banner and navigation
|
|
63
|
+
* @param {Function|null} hintCallback - Optional sync callback(selectedIndex) returning hint string or null
|
|
63
64
|
*/
|
|
64
|
-
displayMenu(clearScreen = true, versionInfo = null) {
|
|
65
|
+
displayMenu(clearScreen = true, versionInfo = null, hintCallback = null) {
|
|
65
66
|
// Clear screen and display header + menu together (like old version)
|
|
66
67
|
if (clearScreen) {
|
|
67
68
|
console.clear();
|
|
@@ -92,6 +93,15 @@ class Menu {
|
|
|
92
93
|
}
|
|
93
94
|
});
|
|
94
95
|
|
|
96
|
+
// Render dynamic hint if callback provided
|
|
97
|
+
if (hintCallback) {
|
|
98
|
+
const hintText = hintCallback(this.selectedIndex);
|
|
99
|
+
if (hintText) {
|
|
100
|
+
console.log('');
|
|
101
|
+
console.log(colors.green + ' \u2139 ' + hintText + colors.reset);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
95
105
|
console.log('');
|
|
96
106
|
}
|
|
97
107
|
|
|
@@ -107,8 +117,9 @@ class Menu {
|
|
|
107
117
|
* Handle keyboard navigation
|
|
108
118
|
* @param {boolean} clearScreen - Whether to clear screen on initial display (default: true)
|
|
109
119
|
* @param {string} versionInfo - Optional version info to display
|
|
120
|
+
* @param {Function|null} hintCallback - Optional sync callback(selectedIndex) returning hint string or null
|
|
110
121
|
*/
|
|
111
|
-
async navigate(clearScreen = true, versionInfo = null) {
|
|
122
|
+
async navigate(clearScreen = true, versionInfo = null, hintCallback = null) {
|
|
112
123
|
// Guard against empty menu to prevent NaN from modulo operations
|
|
113
124
|
if (!this.menuOptions || this.menuOptions.length === 0) {
|
|
114
125
|
console.log(colors.yellow + ' Warning: No menu options available' + colors.reset);
|
|
@@ -116,9 +127,10 @@ class Menu {
|
|
|
116
127
|
}
|
|
117
128
|
|
|
118
129
|
this.versionInfo = versionInfo; // Store for redrawing
|
|
130
|
+
this.hintCallback = hintCallback; // Store for redrawing
|
|
119
131
|
|
|
120
132
|
return new Promise((resolve, reject) => {
|
|
121
|
-
this.displayMenu(clearScreen, versionInfo);
|
|
133
|
+
this.displayMenu(clearScreen, versionInfo, hintCallback);
|
|
122
134
|
|
|
123
135
|
if (process.stdin.isTTY) {
|
|
124
136
|
const scope = stdinManager.acquire('raw', {
|
|
@@ -171,12 +183,12 @@ class Menu {
|
|
|
171
183
|
switch (key) {
|
|
172
184
|
case '\u001b[A': // Up arrow
|
|
173
185
|
this.selectedIndex = (this.selectedIndex - 1 + this.menuOptions.length) % this.menuOptions.length;
|
|
174
|
-
this.displayMenu(true, this.versionInfo);
|
|
186
|
+
this.displayMenu(true, this.versionInfo, this.hintCallback);
|
|
175
187
|
break;
|
|
176
188
|
|
|
177
189
|
case '\u001b[B': // Down arrow
|
|
178
190
|
this.selectedIndex = (this.selectedIndex + 1) % this.menuOptions.length;
|
|
179
|
-
this.displayMenu(true, this.versionInfo);
|
|
191
|
+
this.displayMenu(true, this.versionInfo, this.hintCallback);
|
|
180
192
|
break;
|
|
181
193
|
|
|
182
194
|
case '\r': // Enter
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kikkimo/claude-launcher",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Interactive launcher for Claude Code with beautiful Claude-style interface",
|
|
5
5
|
"main": "claude-launcher",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"start": "node claude-launcher",
|
|
11
|
-
"test": "
|
|
11
|
+
"test": "node test/providers.test.js && node test/menu-hints.test.js",
|
|
12
12
|
"prepublishOnly": "echo \"Publishing claude-launcher...\"",
|
|
13
13
|
"postinstall": "echo \"Claude Launcher installed successfully! Run 'claude-launcher' to start.\"",
|
|
14
14
|
"publish:public": "npm publish --access public"
|