@kikkimo/claude-launcher 2.3.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 +70 -0
- package/README.md +35 -13
- package/claude-launcher +425 -48
- package/docs/README-zh.md +35 -13
- 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/api-manager.js +135 -1
- package/lib/i18n/locales/de.js +74 -3
- package/lib/i18n/locales/en.js +72 -2
- package/lib/i18n/locales/es.js +74 -3
- package/lib/i18n/locales/fr.js +74 -3
- package/lib/i18n/locales/it.js +72 -2
- package/lib/i18n/locales/ja.js +74 -3
- package/lib/i18n/locales/ko.js +74 -3
- package/lib/i18n/locales/pt.js +72 -2
- package/lib/i18n/locales/ru.js +72 -2
- package/lib/i18n/locales/zh-TW.js +74 -3
- package/lib/i18n/locales/zh.js +74 -3
- package/lib/launcher.js +10 -0
- package/lib/presets/providers.js +86 -15
- package/lib/ui/menu.js +17 -5
- package/lib/utils/model-upgrade-checker.js +103 -0
- package/lib/utils/version-checker.js +22 -3
- 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/api-manager.js
CHANGED
|
@@ -133,8 +133,13 @@ class ApiManager {
|
|
|
133
133
|
model: modelValidation.value,
|
|
134
134
|
smallFastModel: modelValidation.value, // Same as model as requested
|
|
135
135
|
createdAt: new Date().toISOString(),
|
|
136
|
+
// Existing statistics fields
|
|
136
137
|
lastUsed: null,
|
|
137
|
-
usageCount: 0
|
|
138
|
+
usageCount: 0,
|
|
139
|
+
// New statistics fields
|
|
140
|
+
successCount: 0,
|
|
141
|
+
failCount: 0,
|
|
142
|
+
lastError: null
|
|
138
143
|
};
|
|
139
144
|
|
|
140
145
|
this.config.apis.push(newApi);
|
|
@@ -172,6 +177,18 @@ class ApiManager {
|
|
|
172
177
|
return removedApi;
|
|
173
178
|
}
|
|
174
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Clear all API configurations
|
|
182
|
+
* @returns {number} Number of APIs cleared
|
|
183
|
+
*/
|
|
184
|
+
clearAllApis() {
|
|
185
|
+
const count = this.config.apis.length;
|
|
186
|
+
this.config.apis = [];
|
|
187
|
+
this.config.activeIndex = -1;
|
|
188
|
+
this.saveConfig();
|
|
189
|
+
return count;
|
|
190
|
+
}
|
|
191
|
+
|
|
175
192
|
/**
|
|
176
193
|
* Get all API configurations
|
|
177
194
|
*/
|
|
@@ -217,7 +234,60 @@ class ApiManager {
|
|
|
217
234
|
return null;
|
|
218
235
|
}
|
|
219
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Update the model for a specific API
|
|
239
|
+
* @param {string} apiId - The API ID
|
|
240
|
+
* @param {string} newModel - The new model name
|
|
241
|
+
* @returns {Object} The updated API object
|
|
242
|
+
*/
|
|
243
|
+
updateApiModel(apiId, newModel) {
|
|
244
|
+
const index = this.config.apis.findIndex(api => api.id === apiId);
|
|
245
|
+
if (index === -1) {
|
|
246
|
+
throw new Error(`API not found: ${apiId}`);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
this.config.apis[index].model = newModel;
|
|
250
|
+
this.config.apis[index].smallFastModel = newModel;
|
|
251
|
+
this.saveConfig();
|
|
252
|
+
return this.config.apis[index];
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Record a successful API launch
|
|
257
|
+
* @returns {Object|null} The updated API object or null
|
|
258
|
+
*/
|
|
259
|
+
recordSuccessfulLaunch() {
|
|
260
|
+
const activeApi = this.getActiveApi();
|
|
261
|
+
if (activeApi) {
|
|
262
|
+
const index = this.config.activeIndex;
|
|
263
|
+
this.config.apis[index].lastUsed = new Date().toISOString();
|
|
264
|
+
this.config.apis[index].usageCount = (this.config.apis[index].usageCount || 0) + 1;
|
|
265
|
+
this.config.apis[index].successCount = (this.config.apis[index].successCount || 0) + 1;
|
|
266
|
+
this.config.apis[index].lastError = null;
|
|
267
|
+
this.saveConfig();
|
|
268
|
+
return this.config.apis[index];
|
|
269
|
+
}
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
220
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Record a failed API launch
|
|
275
|
+
* @param {string} errorMessage - The error message
|
|
276
|
+
* @returns {Object|null} The updated API object or null
|
|
277
|
+
*/
|
|
278
|
+
recordFailedLaunch(errorMessage) {
|
|
279
|
+
const activeApi = this.getActiveApi();
|
|
280
|
+
if (activeApi) {
|
|
281
|
+
const index = this.config.activeIndex;
|
|
282
|
+
this.config.apis[index].lastUsed = new Date().toISOString();
|
|
283
|
+
this.config.apis[index].usageCount = (this.config.apis[index].usageCount || 0) + 1;
|
|
284
|
+
this.config.apis[index].failCount = (this.config.apis[index].failCount || 0) + 1;
|
|
285
|
+
this.config.apis[index].lastError = errorMessage;
|
|
286
|
+
this.saveConfig();
|
|
287
|
+
return this.config.apis[index];
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
221
291
|
|
|
222
292
|
/**
|
|
223
293
|
* Get statistics about API usage
|
|
@@ -236,6 +306,70 @@ class ApiManager {
|
|
|
236
306
|
};
|
|
237
307
|
}
|
|
238
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Get enhanced statistics with success/fail tracking
|
|
311
|
+
* @returns {Object} Enhanced statistics object
|
|
312
|
+
*/
|
|
313
|
+
getEnhancedStatistics() {
|
|
314
|
+
const apis = this.config.apis;
|
|
315
|
+
const activeApi = this.getActiveApi();
|
|
316
|
+
|
|
317
|
+
const totalUsage = apis.reduce((sum, api) => sum + (api.usageCount || 0), 0);
|
|
318
|
+
const totalSuccess = apis.reduce((sum, api) => sum + (api.successCount || 0), 0);
|
|
319
|
+
const totalFail = apis.reduce((sum, api) => sum + (api.failCount || 0), 0);
|
|
320
|
+
|
|
321
|
+
const mostUsed = apis.reduce((prev, current) =>
|
|
322
|
+
(current.usageCount > (prev?.usageCount || 0)) ? current : prev, null);
|
|
323
|
+
|
|
324
|
+
return {
|
|
325
|
+
totalApis: apis.length,
|
|
326
|
+
activeApiName: activeApi?.name || 'None',
|
|
327
|
+
mostUsedApi: mostUsed?.name || 'None',
|
|
328
|
+
totalUsage,
|
|
329
|
+
totalSuccess,
|
|
330
|
+
totalFail,
|
|
331
|
+
successRate: totalUsage > 0 ? ((totalSuccess / totalUsage) * 100).toFixed(1) + '%' : 'N/A',
|
|
332
|
+
apiStats: apis.map(api => ({
|
|
333
|
+
name: api.name,
|
|
334
|
+
model: api.model,
|
|
335
|
+
provider: api.provider,
|
|
336
|
+
usageCount: api.usageCount || 0,
|
|
337
|
+
successCount: api.successCount || 0,
|
|
338
|
+
failCount: api.failCount || 0,
|
|
339
|
+
successRate: (api.usageCount || 0) > 0
|
|
340
|
+
? (((api.successCount || 0) / api.usageCount) * 100).toFixed(1) + '%'
|
|
341
|
+
: 'N/A',
|
|
342
|
+
lastUsed: api.lastUsed,
|
|
343
|
+
lastError: api.lastError
|
|
344
|
+
}))
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Reset statistics for all APIs or a specific API
|
|
350
|
+
* @param {string|null} apiId - API ID to reset, or null for all
|
|
351
|
+
*/
|
|
352
|
+
resetStatistics(apiId = null) {
|
|
353
|
+
const resetFields = (api) => {
|
|
354
|
+
api.usageCount = 0;
|
|
355
|
+
api.successCount = 0;
|
|
356
|
+
api.failCount = 0;
|
|
357
|
+
api.lastUsed = null;
|
|
358
|
+
api.lastError = null;
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
if (apiId) {
|
|
362
|
+
const index = this.config.apis.findIndex(a => a.id === apiId);
|
|
363
|
+
if (index !== -1) {
|
|
364
|
+
resetFields(this.config.apis[index]);
|
|
365
|
+
}
|
|
366
|
+
} else {
|
|
367
|
+
this.config.apis.forEach(resetFields);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
this.saveConfig();
|
|
371
|
+
}
|
|
372
|
+
|
|
239
373
|
/**
|
|
240
374
|
* Check if this is first time usage (no password set AND no APIs configured)
|
|
241
375
|
*/
|
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",
|
|
@@ -28,6 +29,12 @@ module.exports = {
|
|
|
28
29
|
change_password: "Passwort ändern",
|
|
29
30
|
back: "Zurück zum Hauptmenü"
|
|
30
31
|
},
|
|
32
|
+
remove_api: {
|
|
33
|
+
title: "API entfernen",
|
|
34
|
+
delete_single: "Einzelne API löschen",
|
|
35
|
+
clear_all: "Alle APIs löschen",
|
|
36
|
+
back: "Zurück"
|
|
37
|
+
},
|
|
31
38
|
language: {
|
|
32
39
|
title: "Spracheinstellungen",
|
|
33
40
|
current: "Aktuelle Sprache: {0}",
|
|
@@ -44,6 +51,9 @@ module.exports = {
|
|
|
44
51
|
no_apis: "Keine Drittanbieter-APIs konfiguriert",
|
|
45
52
|
add_api_first: "Bitte fügen Sie zuerst eine API mit \"Neue Drittanbieter-API hinzufügen\" hinzu",
|
|
46
53
|
all_apis_removed: "Alle APIs wurden entfernt",
|
|
54
|
+
all_apis_cleared: "{0} APIs wurden gelöscht",
|
|
55
|
+
clear_cancelled: "Löschvorgang abgebrochen",
|
|
56
|
+
current_api_count: "Aktuelle APIs: {0}",
|
|
47
57
|
apis_removed_or_none: "Alle APIs wurden entfernt oder es waren keine konfiguriert.",
|
|
48
58
|
removal_cancelled: "Entfernung abgebrochen",
|
|
49
59
|
operation_cancelled: "Vorgang abgebrochen",
|
|
@@ -79,7 +89,9 @@ module.exports = {
|
|
|
79
89
|
enter_model_name: "Geben Sie den Modellnamen ein: ",
|
|
80
90
|
select_provider: "Anbieter auswählen: ",
|
|
81
91
|
enter_import_file: "Geben Sie den Import-Dateipfad ein: ",
|
|
82
|
-
ctrl_c_again: "Drücken Sie Ctrl+C erneut, um das Programm zu beenden"
|
|
92
|
+
ctrl_c_again: "Drücken Sie Ctrl+C erneut, um das Programm zu beenden",
|
|
93
|
+
confirm_clear_all: "Dies wird alle {0} APIs dauerhaft löschen. Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
94
|
+
confirm_clear_all_input: "Geben Sie CLEAR ein, um zu bestätigen: "
|
|
83
95
|
}
|
|
84
96
|
},
|
|
85
97
|
|
|
@@ -493,7 +505,8 @@ module.exports = {
|
|
|
493
505
|
"Mindest-Passwort-Stärke: Gut (Schwache und sehr schwache Passwörter werden abgelehnt)"
|
|
494
506
|
],
|
|
495
507
|
example_strong_password: "Beispiel für starkes Passwort: {0}",
|
|
496
|
-
new_password_attempt: "Neues Passwort (Versuch {0}/{1}): "
|
|
508
|
+
new_password_attempt: "Neues Passwort (Versuch {0}/{1}): ",
|
|
509
|
+
confirm_password_prompt: "Passwort bestätigen: "
|
|
497
510
|
}
|
|
498
511
|
},
|
|
499
512
|
|
|
@@ -504,7 +517,27 @@ module.exports = {
|
|
|
504
517
|
active_api: "Aktive API: {0}",
|
|
505
518
|
most_used: "Meistgenutzte API: {0}",
|
|
506
519
|
total_usage: "Gesamtnutzung: {0} mal",
|
|
507
|
-
no_usage: "Keine Nutzung aufgezeichnet"
|
|
520
|
+
no_usage: "Keine Nutzung aufgezeichnet",
|
|
521
|
+
|
|
522
|
+
// Erweiterte Statistiken (neu)
|
|
523
|
+
success_rate: "Gesamterfolgsrate: {0}",
|
|
524
|
+
|
|
525
|
+
header_name: "API-Name",
|
|
526
|
+
header_usage: "Nutzung",
|
|
527
|
+
header_success: "Erfolg",
|
|
528
|
+
header_last_used: "Zuletzt verwendet",
|
|
529
|
+
|
|
530
|
+
time_never: "Nie",
|
|
531
|
+
time_just_now: "Gerade eben",
|
|
532
|
+
time_minutes_ago: "Vor {0}m",
|
|
533
|
+
time_hours_ago: "Vor {0}h",
|
|
534
|
+
time_days_ago: "Vor {0}d",
|
|
535
|
+
|
|
536
|
+
menu_view: "Statistikdetails anzeigen",
|
|
537
|
+
menu_reset: "Statistiken zurücksetzen",
|
|
538
|
+
menu_back: "Zurück",
|
|
539
|
+
reset_confirm: "Alle Statistiken zurücksetzen? [y/N]",
|
|
540
|
+
reset_success: "Statistiken erfolgreich zurückgesetzt"
|
|
508
541
|
},
|
|
509
542
|
|
|
510
543
|
// Versions-Updates
|
|
@@ -534,5 +567,43 @@ module.exports = {
|
|
|
534
567
|
update_command: "Update-Befehl: npm update -g @kikkimo/claude-launcher",
|
|
535
568
|
up_to_date: "Sie verwenden die neueste Version",
|
|
536
569
|
unexpected_error: "Unerwarteter Fehler während der Prüfung aufgetreten"
|
|
570
|
+
},
|
|
571
|
+
|
|
572
|
+
// Modell-Upgrade-Funktion
|
|
573
|
+
model_upgrade: {
|
|
574
|
+
notification: "Modell-Upgrade verfügbar: {0} → {1}",
|
|
575
|
+
notification_api: "API: {0}",
|
|
576
|
+
notification_hint: "Gehen Sie zu \"Drittanbieter-API-Verwaltung > Modell-Upgrade-Einstellungen\" zum Upgraden",
|
|
577
|
+
auto_upgraded: "Modell automatisch upgegradet: {0} → {1}",
|
|
578
|
+
|
|
579
|
+
settings_title: "Modell-Upgrade-Einstellungen",
|
|
580
|
+
current_config: "Aktuelle Konfiguration",
|
|
581
|
+
auto_upgrade_label: "Neuestes Modell automatisch verwenden",
|
|
582
|
+
auto_upgrade_on: "AN",
|
|
583
|
+
auto_upgrade_off: "AUS",
|
|
584
|
+
|
|
585
|
+
menu_toggle_auto_on: "Auto-Upgrade [● AN]",
|
|
586
|
+
menu_toggle_auto_off: "Auto-Upgrade [○ AUS]",
|
|
587
|
+
menu_manual_upgrade: "Alle Modelle manuell upgraden",
|
|
588
|
+
menu_back: "Zurück",
|
|
589
|
+
|
|
590
|
+
manual_title: "Modell-Upgrade-Prüfung",
|
|
591
|
+
manual_checking: "{0} API-Konfigurationen werden geprüft...",
|
|
592
|
+
manual_api_current: "Aktuell: {0}",
|
|
593
|
+
manual_api_latest: "Neueste: {0}",
|
|
594
|
+
manual_api_uptodate: "(Bereits aktuell)",
|
|
595
|
+
manual_api_no_info: "(Keine Upgrade-Info)",
|
|
596
|
+
manual_confirm: "Dieses Modell upgraden? [y/N]",
|
|
597
|
+
manual_upgraded: "Upgegradet: {0} → {1}",
|
|
598
|
+
manual_skipped: "Übersprungen",
|
|
599
|
+
|
|
600
|
+
manual_complete: "Upgrade abgeschlossen!",
|
|
601
|
+
manual_stats_upgraded: "Upgegradet: {0}",
|
|
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.'
|
|
537
608
|
}
|
|
538
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",
|
|
@@ -28,6 +29,12 @@ module.exports = {
|
|
|
28
29
|
change_password: "Change Password",
|
|
29
30
|
back: "Back to Main Menu"
|
|
30
31
|
},
|
|
32
|
+
remove_api: {
|
|
33
|
+
title: "Remove API",
|
|
34
|
+
delete_single: "Delete Single API",
|
|
35
|
+
clear_all: "Clear All APIs",
|
|
36
|
+
back: "Back"
|
|
37
|
+
},
|
|
31
38
|
language: {
|
|
32
39
|
title: "Language Settings",
|
|
33
40
|
current: "Current Language: {0}",
|
|
@@ -44,6 +51,9 @@ module.exports = {
|
|
|
44
51
|
no_apis: "No third-party APIs configured",
|
|
45
52
|
add_api_first: "Please add an API first using \"Add New 3rd-party API\"",
|
|
46
53
|
all_apis_removed: "All APIs have been removed",
|
|
54
|
+
all_apis_cleared: "{0} APIs have been cleared",
|
|
55
|
+
clear_cancelled: "Clear operation cancelled",
|
|
56
|
+
current_api_count: "Current APIs: {0}",
|
|
47
57
|
apis_removed_or_none: "All APIs have been removed or none were configured.",
|
|
48
58
|
removal_cancelled: "Removal cancelled",
|
|
49
59
|
operation_cancelled: "Operation cancelled",
|
|
@@ -79,7 +89,9 @@ module.exports = {
|
|
|
79
89
|
enter_model_name: "Enter model name: ",
|
|
80
90
|
select_provider: "Select provider: ",
|
|
81
91
|
enter_import_file: "Enter import file path: ",
|
|
82
|
-
ctrl_c_again: "Press Ctrl+C again to exit"
|
|
92
|
+
ctrl_c_again: "Press Ctrl+C again to exit",
|
|
93
|
+
confirm_clear_all: "This will permanently delete all {0} APIs. This action cannot be undone.",
|
|
94
|
+
confirm_clear_all_input: "Type CLEAR to confirm: "
|
|
83
95
|
}
|
|
84
96
|
},
|
|
85
97
|
|
|
@@ -505,7 +517,27 @@ module.exports = {
|
|
|
505
517
|
active_api: "Active API: {0}",
|
|
506
518
|
most_used: "Most Used API: {0}",
|
|
507
519
|
total_usage: "Total Usage: {0} times",
|
|
508
|
-
no_usage: "No usage recorded"
|
|
520
|
+
no_usage: "No usage recorded",
|
|
521
|
+
|
|
522
|
+
// Enhanced statistics (new)
|
|
523
|
+
success_rate: "Overall Success Rate: {0}",
|
|
524
|
+
|
|
525
|
+
header_name: "API Name",
|
|
526
|
+
header_usage: "Usage",
|
|
527
|
+
header_success: "Success",
|
|
528
|
+
header_last_used: "Last Used",
|
|
529
|
+
|
|
530
|
+
time_never: "Never",
|
|
531
|
+
time_just_now: "Just now",
|
|
532
|
+
time_minutes_ago: "{0}m ago",
|
|
533
|
+
time_hours_ago: "{0}h ago",
|
|
534
|
+
time_days_ago: "{0}d ago",
|
|
535
|
+
|
|
536
|
+
menu_view: "View Statistics Details",
|
|
537
|
+
menu_reset: "Reset Statistics",
|
|
538
|
+
menu_back: "Back",
|
|
539
|
+
reset_confirm: "Reset all statistics? [y/N]",
|
|
540
|
+
reset_success: "Statistics reset successfully"
|
|
509
541
|
},
|
|
510
542
|
|
|
511
543
|
// Version updates
|
|
@@ -535,5 +567,43 @@ module.exports = {
|
|
|
535
567
|
update_command: "Update command: npm update -g @kikkimo/claude-launcher",
|
|
536
568
|
up_to_date: "You are using the latest version",
|
|
537
569
|
unexpected_error: "Unexpected error occurred during check"
|
|
570
|
+
},
|
|
571
|
+
|
|
572
|
+
// Model upgrade feature
|
|
573
|
+
model_upgrade: {
|
|
574
|
+
notification: "Model upgrade available: {0} → {1}",
|
|
575
|
+
notification_api: "API: {0}",
|
|
576
|
+
notification_hint: "Go to \"3rd-party API Management > Model Upgrade Settings\" to upgrade",
|
|
577
|
+
auto_upgraded: "Model auto-upgraded: {0} → {1}",
|
|
578
|
+
|
|
579
|
+
settings_title: "Model Upgrade Settings",
|
|
580
|
+
current_config: "Current Configuration",
|
|
581
|
+
auto_upgrade_label: "Auto use latest model",
|
|
582
|
+
auto_upgrade_on: "ON",
|
|
583
|
+
auto_upgrade_off: "OFF",
|
|
584
|
+
|
|
585
|
+
menu_toggle_auto_on: "Auto Upgrade [● ON]",
|
|
586
|
+
menu_toggle_auto_off: "Auto Upgrade [○ OFF]",
|
|
587
|
+
menu_manual_upgrade: "Manual upgrade all models",
|
|
588
|
+
menu_back: "Back",
|
|
589
|
+
|
|
590
|
+
manual_title: "Model Upgrade Check",
|
|
591
|
+
manual_checking: "Checking {0} API configurations...",
|
|
592
|
+
manual_api_current: "Current: {0}",
|
|
593
|
+
manual_api_latest: "Latest: {0}",
|
|
594
|
+
manual_api_uptodate: "(Already latest)",
|
|
595
|
+
manual_api_no_info: "(No upgrade info)",
|
|
596
|
+
manual_confirm: "Upgrade this model? [y/N]",
|
|
597
|
+
manual_upgraded: "Upgraded: {0} → {1}",
|
|
598
|
+
manual_skipped: "Skipped",
|
|
599
|
+
|
|
600
|
+
manual_complete: "Upgrade complete!",
|
|
601
|
+
manual_stats_upgraded: "Upgraded: {0}",
|
|
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.'
|
|
538
608
|
}
|
|
539
609
|
};
|