@kikkimo/claude-launcher 2.5.0 → 3.0.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 CHANGED
@@ -5,6 +5,48 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.0.0] - 2026-04-07
9
+
10
+ ### Added
11
+ - **ANSI Screen Rendering Layer**: Full terminal rendering rewrite using alternate screen buffer (`\x1b[?1049h`) and absolute cursor positioning (`\x1b[H\x1b[2J`). Eliminates all position drift across page transitions. Program runs in isolated screen like vim/htop; exit restores original terminal content.
12
+ - New `lib/ui/screen.js` singleton: `render()`, `write()`, `enter()`, `exit()`, `exitForHandoff()`, `debug()`, `showCursor()`/`hideCursor()`, `setReadlineActive()`, `isActive()`
13
+ - Test mode (`SCREEN_TEST=1`): source-tagged write interception for automated leak detection
14
+ - Degradation: non-TTY passthrough, `SCREEN_NO_ALT=1` manual override
15
+ - **Edit API Feature**: New menu item to modify API name, provider, base URL, and model (API key not editable)
16
+ - Field-by-field editing with per-field validation (reuses Add API validators)
17
+ - Provider selection via preset list (not free text), preserves provider-specific envVars/timeout/upgrade detection
18
+ - Provider/URL mismatch warning in field menu hint area
19
+ - Auto-save per field edit with success/cancel feedback
20
+ - **Unified Password Guard**: Shared `passwordGuard()` function protects delete, edit, import, export operations
21
+ - Mode A (delete/edit): guard at dispatch layer with header display
22
+ - Mode B (export/import): guard inside handler after title page
23
+ - Handles wrong password, empty password, Esc cancel, Ctrl+C delegation distinctly
24
+ - Defense-in-depth: export/import return false when no password set
25
+ - **API Table Pagination**: ←→ page navigation for API selection tables (remove/switch/edit)
26
+ - Dynamic items-per-page based on terminal height
27
+ - Per-page selection memory across page switches
28
+ - 3 pure testable helpers: `calculatePagination()`, `initPaginationState()`, `handlePageKeyPress()`
29
+ - Legacy >99 API defensive guard with display truncation + warning
30
+ - **API Count Limit**: Maximum 99 APIs enforced in `addApi()` and import path
31
+ - **Launch Handoff Lifecycle**: Clean `screen.exitForHandoff()` → normal terminal output → `relinquishConsoleToChild()` → spawn sequence
32
+ - `handleLaunchFailure()` promoted to module-level with `rollbackFn(errorMessage)` callback chain
33
+ - Pre-handoff errors show in alt-screen; post-handoff errors use press-key + 60s timeout + exit
34
+ - **Menu Hint Enhancements**: Password-required hints (🔒) for edit/remove/export/import when password is set
35
+ - **Navigation i18n**: Action words (edit/remove/switch/select) fully localized across 11 locales
36
+
37
+ ### Changed
38
+ - **All Terminal Output**: 462 direct `console.clear/log/error/warn` and `process.stdout.write` calls replaced with `screen.render()`/`screen.write()`/`screen.debug()` across 12 files
39
+ - **Menu Component**: `displayMenu()` and `navigate()` now use `screen.render()` for absolute positioning; `clearScreen` parameter removed from `navigate()` signature
40
+ - **Interactive Table**: Refactored to `screen.render()` with pagination support; action text localized via i18n keys
41
+ - **Signal Ownership**: Global SIGINT handler respects `handleCtrlC()` return value (first Ctrl+C = warning only); SIGTERM/uncaughtException/unhandledRejection handlers call `screen.exit()` before exit
42
+ - **Launcher Lifecycle**: `relinquishConsoleToChild()` moved before `spawn()` for clean handoff; `updateApiModel()` delegates to `updateApiField()` for unified validation
43
+ - **Default Config Language**: Changed from `zh` to `en` in `loadConfig()`/`loadConfigSync()` to match `LanguageManager` default; config file written on first run
44
+ - **Hint Area Spacing**: Extra space after ℹ icon; multi-line hint indentation aligned
45
+
46
+ ### Fixed
47
+ - **First-run Language Bug**: Deleting config and restarting no longer switches from English to Chinese on second launch
48
+ - **Field Menu CJK Alignment**: Label padding uses `getStringWidth()`/`padStringToWidth()` for correct CJK character width
49
+
8
50
  ## [2.5.0] - 2026-03-31
9
51
 
10
52
  ### Added
package/README.md CHANGED
@@ -13,13 +13,16 @@ An elegant interactive launcher for Claude Code with a beautiful Claude-style in
13
13
 
14
14
  ### 🎨 **Beautiful Interface**
15
15
  - Claude-style interface with authentic orange/amber color scheme
16
+ - ANSI alternate screen buffer for drift-free rendering (like vim/htop)
16
17
  - Arrow key navigation with smooth menu transitions
18
+ - Paginated API tables with ←→ page navigation for large API lists
17
19
  - Interactive tables for API selection and management
18
20
  - Multi-language support (English, Simplified Chinese, Traditional Chinese, German, French, Spanish, Italian, Portuguese, Japanese, Korean, Russian)
19
21
 
20
22
  ### 🔐 **Advanced Security**
21
23
  - AES-256-CBC encryption for all sensitive data
22
24
  - Machine-specific encryption keys for enhanced security
25
+ - Unified password guard for high-risk operations (edit, delete, import, export)
23
26
  - Password-protected configuration import/export
24
27
  - Secure API token storage with masked display
25
28
  - Strong password requirements and validation
@@ -27,10 +30,12 @@ An elegant interactive launcher for Claude Code with a beautiful Claude-style in
27
30
  ### 🚀 **Third-party API Management**
28
31
  - Full support for multiple third-party API providers (Anthropic, DeepSeek, Kimi K2.5, MiniMax M2.7, GLM-5.1/ZhiPu AI, and custom APIs)
29
32
  - Interactive API configuration with validation
33
+ - **Edit API**: Modify name, provider, base URL, and model for existing APIs
30
34
  - API usage statistics with success/failure tracking
31
35
  - Model upgrade notifications and auto-upgrade support
32
36
  - Secure configuration backup and restore
33
37
  - Easy API switching, removal, and bulk clear
38
+ - Maximum 99 APIs supported per configuration
34
39
 
35
40
  ### 🌍 **Enterprise-grade Features**
36
41
  - Global installation - use `claude-launcher` from anywhere
@@ -88,20 +93,21 @@ node claude-launcher
88
93
  4. **Launch Claude Code with Third-party API** - Use configured third-party API
89
94
  5. **Launch Claude Code with Third-party API (Skip Permissions)** - Combine third-party API with permission skipping
90
95
  6. **Third-party API Management** - Full API lifecycle management:
91
- - Add, switch, and remove APIs
96
+ - Add, edit, switch, and remove APIs
92
97
  - View usage statistics with success/failure rates
93
98
  - Model upgrade settings (auto/manual upgrade)
94
- - Import/export configurations
95
- 7. **Language Settings** - Switch between 11 supported languages
99
+ - Import/export configurations (password-protected)
100
+ 7. **Configuration Management** - Language, telemetry, launch mode, model upgrade settings
96
101
  8. **Version Update Check** - Check for launcher updates
97
102
  9. **Exit** - Close the launcher
98
103
 
99
104
  ### Interactive Navigation
100
105
 
101
- - **Arrow Keys**: Use ↑↓ to navigate, Enter to select
102
- - **Escape Key**: Press Esc to go back or exit
106
+ - **Arrow Keys**: Use ↑↓ to navigate, ←→ to switch pages (in paginated tables), Enter to select
107
+ - **Escape Key**: Press Esc to go back or cancel
108
+ - **Ctrl+C**: First press shows warning, second press exits cleanly
103
109
  - **Multi-language**: All interface text adapts to your selected language
104
- - **Smart Tables**: Interactive tables for API management with clear visual feedback
110
+ - **Smart Tables**: Paginated interactive tables for API management with per-page selection memory
105
111
 
106
112
  ### Example Session
107
113
 
@@ -120,7 +126,7 @@ $ claude-launcher
120
126
  Launch Claude Code with Third-party API
121
127
  Launch Claude Code with Third-party API (Skip Permissions)
122
128
  Third-party API Management
123
- Language Settings
129
+ Configuration Management
124
130
  Version Update Check
125
131
  Exit
126
132
  ```
@@ -133,12 +139,13 @@ Access comprehensive API management through the dedicated menu:
133
139
  📋 Third-party API Management
134
140
 
135
141
  → Add New API
142
+ Edit API → Select API → Edit name/provider/URL/model
136
143
  Remove API → Delete Single API / Clear All APIs
137
144
  Switch Active API
138
145
  View Statistics → View Details / Reset Statistics
139
146
  Model Upgrade → Auto Upgrade [ON/OFF] / Manual Upgrade
140
- Export Configuration
141
- Import Configuration
147
+ Export Configuration 🔒 (password required)
148
+ Import Configuration 🔒 (password required)
142
149
  Change Password
143
150
  Back to Main Menu
144
151
  ```
@@ -154,7 +161,7 @@ The launcher automatically checks for model upgrades when you start:
154
161
 
155
162
  ### Modern Configuration System
156
163
 
157
- Claude Launcher 2.0 uses an advanced configuration system:
164
+ Claude Launcher uses an advanced configuration system:
158
165
 
159
166
  1. **Encrypted JSON Storage**: Configuration stored at `~/.claude-launcher-apis.json`
160
167
  2. **Interactive Setup**: First-time wizard guides you through all options