semantic-release-bot
e89a79f357
chore(release): 7.8.0 [skip ci]
...
## [7.8.0](https://github.com/kaitranntt/ccs/compare/v7.7.1...v7.8.0 ) (2025-12-26)
### Features
* **api:** add auth tokens REST endpoints ([ffd4996 ](https://github.com/kaitranntt/ccs/commit/ffd499698e03f1849a0deef3d289c08079a0951e ))
* **cli:** add tokens command for auth token management ([0c6491c ](https://github.com/kaitranntt/ccs/commit/0c6491c9d27a3bfb1ecc8c1627d1e1a70f59220a ))
* **cliproxy:** add customizable auth token manager ([c4f0916 ](https://github.com/kaitranntt/ccs/commit/c4f09168ff35e52c8613a3181a86e4e4e5392dfc ))
* **cliproxy:** add variant port isolation for concurrent proxy instances ([0bcaf4b ](https://github.com/kaitranntt/ccs/commit/0bcaf4bc681e26bd13485678c88b55f4ac471eed ))
* **ui:** add auth tokens settings tab ([71335a6 ](https://github.com/kaitranntt/ccs/commit/71335a61935971c7621fefcef973cc2b42e313fd ))
* **ui:** add Settings link to control panel key hint ([7a6341f ](https://github.com/kaitranntt/ccs/commit/7a6341f0d9a8dffdcbb318cf34f3dbbfbea70cb5 ))
### Bug Fixes
* **cliproxy:** use auth inheritance in stats-fetcher and config-generator ([133aeba ](https://github.com/kaitranntt/ccs/commit/133aebaabc2295b75c13a14a448c2cc60d471363 ))
* **dashboard:** read accounts from unified config ([8d7845d ](https://github.com/kaitranntt/ccs/commit/8d7845d67fb156671713888726d631415d0f4f9c )), closes [#203 ](https://github.com/kaitranntt/ccs/issues/203 )
* **dashboard:** support unified config across health checks and settings ([9722e19 ](https://github.com/kaitranntt/ccs/commit/9722e1905dd25b9dd4d602e860ba36586db043b9 )), closes [#203 ](https://github.com/kaitranntt/ccs/issues/203 )
* **dashboard:** support unified config in overview and file watcher ([25f0ddb ](https://github.com/kaitranntt/ccs/commit/25f0ddb9ddb19f9eb75c880b7c878d840cb2a494 )), closes [#203 ](https://github.com/kaitranntt/ccs/issues/203 )
* **doctor:** comprehensive health check fixes ([ac74550 ](https://github.com/kaitranntt/ccs/commit/ac745503e2a1644b2cb3542b917dbce5e6109200 ))
* **doctor:** prefer config.yaml and make settings files optional ([4fca7d1 ](https://github.com/kaitranntt/ccs/commit/4fca7d16edc6985d14422a21d45dccd619ef9aba ))
* **ui:** initialize colors early for consistent status output ([e38af6a ](https://github.com/kaitranntt/ccs/commit/e38af6ad6e2f65a73b4d16f6b4f0cead2eb7374d )), closes [#201 ](https://github.com/kaitranntt/ccs/issues/201 )
* **ui:** simplify config header and add explicit save button ([7e031b5 ](https://github.com/kaitranntt/ccs/commit/7e031b5097b49f0cfc07334d31b83af41fac9669 ))
* **ui:** use effective management secret in control panel embed ([a762563 ](https://github.com/kaitranntt/ccs/commit/a762563f1b1fa8d984b7c9abf6b3b3c7f8ab6f97 ))
### Tests
* **cliproxy:** add comprehensive auth token test suite ([ed6776a ](https://github.com/kaitranntt/ccs/commit/ed6776aadcf06c0c8572babe1ddc1de4e0902a17 ))
* **cliproxy:** add integration tests for variant port isolation ([8f120b5 ](https://github.com/kaitranntt/ccs/commit/8f120b515f0b71a2730c7affb50c9b148c00e502 )), closes [#184 ](https://github.com/kaitranntt/ccs/issues/184 )
2025-12-26 18:35:37 +00:00
Kai (Tam Nhu) Tran
eeff3f48e5
Merge pull request #209 from kaitranntt/dev
...
feat: auth tokens, variant port isolation, and health check improvements
2025-12-26 10:34:34 -08:00
github-actions[bot]
2093ae2cc8
chore(sync): merge main into dev after release [skip ci]
...
# Conflicts:
# package.json
2025-12-26 18:09:54 +00:00
semantic-release-bot
8b9da926f2
chore(release): 7.7.1 [skip ci]
...
## [7.7.1](https://github.com/kaitranntt/ccs/compare/v7.7.0...v7.7.1 ) (2025-12-26)
### Bug Fixes
* **health:** correct CLIProxy port detection on macOS/Linux ([d1a0ebe ](https://github.com/kaitranntt/ccs/commit/d1a0ebee61b8987df85c328d359967e46d1e5226 ))
* **health:** use prefix matching for Linux process name truncation ([91e7b9f ](https://github.com/kaitranntt/ccs/commit/91e7b9f93787e5b2d45bffdaed75e75c151281e4 ))
2025-12-26 18:09:26 +00:00
Kai (Tam Nhu) Tran
3a95c0625f
Merge pull request #207 from shunkakinoki/fix/cliproxy-port-detection
...
fix(health): correct CLIProxy port detection on macOS/Linux
2025-12-26 10:08:20 -08:00
github-actions[bot]
32690460d1
chore(release): 7.7.0-dev.5 [skip ci]
2025-12-26 18:06:16 +00:00
Kai (Tam Nhu) Tran
ad4cfdc1a7
Merge pull request #208 from kaitranntt/fix/config-check-outdated-file-requirements
...
fix(doctor): prefer config.yaml and make settings files optional
2025-12-26 10:05:14 -08:00
kaitranntt
91e7b9f937
fix(health): use prefix matching for Linux process name truncation
...
Linux kernel truncates process names to 15 chars, causing
'cli-proxy-api-plus' to appear as 'cli-proxy-api-p' in lsof output.
Switch from exact whitelist to prefix matching for robust detection.
2025-12-26 12:57:56 -05:00
kaitranntt
ac745503e2
fix(doctor): comprehensive health check fixes
...
- profile-check.ts: check config.yaml first, fallback to config.json
- recovery-manager.ts: remove dead code (ensureGlm/Glmt/Kimi methods)
- 4 files: use os.homedir() for cross-platform compatibility
Fixes:
- ProfilesChecker now respects unified config format (yaml)
- Removed ~100 lines of dead code that contradicted install policy
- Windows compatibility for home directory detection
Files modified:
- src/management/checks/profile-check.ts
- src/management/recovery-manager.ts
- src/cliproxy/model-config.ts
- src/cliproxy/services/variant-service.ts
- src/web-server/health/config-checks.ts
- src/web-server/routes/settings-routes.ts
2025-12-26 12:54:54 -05:00
kaitranntt
4fca7d16ed
fix(doctor): prefer config.yaml and make settings files optional
...
- Check config.yaml first (v2 format), fallback to config.json (legacy)
- Make glm.settings.json and kimi.settings.json optional
- Only validate settings files if they exist
- Fix false positives: postinstall no longer creates these files
Fixes health check reporting errors for missing files that are now
optional and created on-demand when user configures a profile.
2025-12-26 12:45:12 -05:00
github-actions[bot]
aa5c3a1242
chore(release): 7.7.0-dev.4 [skip ci]
2025-12-26 17:36:24 +00:00
Kai (Tam Nhu) Tran
3a6e3cf6b6
Merge pull request #205 from kaitranntt/kai/feat/customizable-auth-tokens
...
feat(cliproxy): customizable auth tokens for CLIProxyAPI
2025-12-26 09:35:21 -08:00
kaitranntt
7a6341f0d9
feat(ui): add Settings link to control panel key hint
...
Adds a gear icon link next to the masked key hint that navigates
to Settings > Auth, improving UX for users who need to manage
their auth tokens.
2025-12-26 12:23:24 -05:00
github-actions[bot]
14d69d1477
chore(release): 7.7.0-dev.3 [skip ci]
2025-12-26 17:21:01 +00:00
Kai (Tam Nhu) Tran
90134de28b
Merge pull request #204 from kaitranntt/kai/fix/203-dashboard-accounts-unified-config
...
fix(dashboard): read accounts from unified config
2025-12-26 09:20:02 -08:00
Shun Kakinoki and Claude Opus 4.5
d1a0ebee61
fix(health): correct CLIProxy port detection on macOS/Linux
...
Two bugs caused the health check to incorrectly report "Proxy not running":
1. lsof command used mutually exclusive flags (-t and -F)
- Removed -t flag since -F already provides structured output
2. isCLIProxyProcess whitelist was missing common binary names
- Added: cliproxyapi, cli-proxy-api-plus (and .exe variants)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-26 19:42:23 +09:00
kaitranntt
a762563f1b
fix(ui): use effective management secret in control panel embed
...
- Fetch auth tokens from /api/settings/auth/tokens/raw
- Use effective management secret for local mode auto-login
- Remove hardcoded CCS_CONTROL_PANEL_SECRET constant
- Key hint now shows correct secret (custom or default)
2025-12-25 17:15:00 -05:00
kaitranntt
7e031b5097
fix(ui): simplify config header and add explicit save button
...
- Reduce config.yaml header from 26 lines to 2 lines
- Replace auto-save on blur with explicit Save button in Auth section
- Add hasChanges detection to enable/disable Save button
- Remove unused saveApiKey and saveSecret functions
2025-12-25 17:02:14 -05:00
kaitranntt
9722e1905d
fix(dashboard): support unified config across health checks and settings
...
- health-service.ts: respect isUnifiedMode() in fixHealthIssue()
- config-checks.ts: check config.yaml in unified mode
- profile-checks.ts: read profiles from unified config
- settings-routes.ts: use atomic writes (temp+rename) for presets
- profile-registry.ts: add DRY helpers getAllProfilesMerged(), getDefaultResolved()
Closes #203
2025-12-25 16:50:55 -05:00
kaitranntt
ed6776aadc
test(cliproxy): add comprehensive auth token test suite
...
- auth-token-manager.test.js: token generation, masking, inheritance (35 tests)
- tokens-command.test.js: CLI parsing and flag handling (24 tests)
- settings-routes-auth.test.js: API endpoint responses (22 tests)
- Total: 81 new tests covering all auth token functionality
2025-12-25 16:43:39 -05:00
kaitranntt
133aebaabc
fix(cliproxy): use auth inheritance in stats-fetcher and config-generator
...
- Replace hardcoded CCS_CONTROL_PANEL_SECRET with getEffectiveManagementSecret()
- Replace hardcoded CCS_INTERNAL_API_KEY with getEffectiveApiKey()
- Ensures custom tokens work across entire CLIProxy integration
2025-12-25 14:37:53 -05:00
kaitranntt
71335a6193
feat(ui): add auth tokens settings tab
...
- Add AuthSection component with API key and management secret inputs
- Show/hide toggle, copy to clipboard, regenerate secret button
- Reset to defaults action with disabled state when using defaults
- Add Auth tab to settings navigation with KeyRound icon
- Update SettingsTab type to include 'auth'
2025-12-25 14:37:03 -05:00
kaitranntt
ffd499698e
feat(api): add auth tokens REST endpoints
...
- GET /api/settings/auth/tokens - masked token status
- GET /api/settings/auth/tokens/raw - unmasked (Cache-Control: no-store)
- PUT /api/settings/auth/tokens - update API key or management secret
- POST /api/settings/auth/tokens/regenerate-secret - generate secure secret
- POST /api/settings/auth/tokens/reset - reset to defaults
2025-12-25 14:36:34 -05:00
kaitranntt
0c6491c9d2
feat(cli): add tokens command for auth token management
...
- Add ccs tokens command with subcommands:
--show, --api-key, --secret, --regenerate-secret, --reset, --variant
- Integrate tokens command into main CLI (ccs.ts)
- Display masked tokens by default, --show for unmasked
- Auto-regenerate CLIProxy config on token changes
2025-12-25 14:36:11 -05:00
kaitranntt
c4f09168ff
feat(cliproxy): add customizable auth token manager
...
- Add CLIProxyAuthConfig type with api_key and management_secret fields
- Implement auth-token-manager.ts with inheritance chain:
variant auth → global auth → default constants
- Add secure token generation using crypto.randomBytes (256-bit entropy)
- Export auth functions from cliproxy barrel (index.ts)
- Bump UNIFIED_CONFIG_VERSION to 6
2025-12-25 14:35:43 -05:00
kaitranntt
25f0ddb9dd
fix(dashboard): support unified config in overview and file watcher
...
- overview-routes: Use ProfileRegistry for account count, merge both
legacy and unified sources
- file-watcher: Add config.yaml to watch list for real-time updates
in unified mode
Related to #203
2025-12-25 14:35:31 -05:00
kaitranntt
8d7845d67f
fix(dashboard): read accounts from unified config
...
Dashboard accounts page was only reading from profiles.json, ignoring
accounts stored in config.yaml when in unified mode. This caused
accounts created via CLI to be invisible in the dashboard.
- Use ProfileRegistry instead of direct file access
- Merge legacy and unified accounts (unified takes precedence)
- Set default via unified config when in unified mode
Fixes #203
2025-12-25 14:25:40 -05:00
github-actions[bot]
af071cd467
chore(release): 7.7.0-dev.2 [skip ci]
2025-12-25 10:20:06 +00:00
Kai (Tam Nhu) Tran
459d730029
Merge pull request #184 from kaitranntt/kai/feat/variant-port-isolation
...
feat(cliproxy): add variant port isolation
2025-12-25 05:19:06 -05:00
kaitranntt
8f120b515f
test(cliproxy): add integration tests for variant port isolation
...
Add comprehensive test suite mapping to PR #184 test plan:
- Create multiple variants with unique ports (8318-8417)
- Verify port persistence in config and separate config-{port}.yaml
- Run multiple variants concurrently with isolated sessions
- Verify list shows port column for each variant
- Remove variant cleans config, session, and port-specific files
25 new tests covering edge cases:
- Port exhaustion (100 variant max)
- Port reuse after deletion
- Legacy variants without port field
- Stale session cleanup for dead PIDs
- Default port special handling (sessions.json)
2025-12-25 05:15:49 -05:00
github-actions[bot]
b2a7c7b3d2
chore(release): 7.7.0-dev.1 [skip ci]
2025-12-25 10:05:10 +00:00
Kai (Tam Nhu) Tran
7cf79732b1
Merge pull request #202 from kaitranntt/fix/status-line-colors-init
...
fix(ui): initialize colors early for consistent status output
2025-12-25 05:04:11 -05:00
kaitranntt
e38af6ad6e
fix(ui): initialize colors early for consistent status output
...
Call initUI() at the start of main() to ensure chalk is loaded
before any status messages. Previously, colors only worked when
an update notification was displayed because showUpdateNotification()
was the only place calling initUI().
Fixes #201
2025-12-25 04:53:32 -05:00
semantic-release-bot
2c977f686a
chore(release): 7.7.0 [skip ci]
...
## [7.7.0](https://github.com/kaitranntt/ccs/compare/v7.6.0...v7.7.0 ) (2025-12-25)
### Features
* **api:** add Minimax, DeepSeek, Qwen provider presets ([e7066b9 ](https://github.com/kaitranntt/ccs/commit/e7066b99972129114fb223c6cde40f3127599ae6 )), closes [#123 ](https://github.com/kaitranntt/ccs/issues/123 )
* **kiro:** add UI toggle and auth hint for --no-incognito option ([083e674 ](https://github.com/kaitranntt/ccs/commit/083e67426c382ce534bed4830bedbede94cfdca7 ))
* **kiro:** improve auth UX with normal browser default and URL display ([df0c947 ](https://github.com/kaitranntt/ccs/commit/df0c94781e5f198f867723e1b5bccf17d6c4b250 ))
### Bug Fixes
* **cliproxy:** preserve user API keys during config regeneration ([2b4d21e ](https://github.com/kaitranntt/ccs/commit/2b4d21e8ae615c840d76007d733017d375e6036f )), closes [#200 ](https://github.com/kaitranntt/ccs/issues/200 )
* **core:** address all code review issues from PR [#199 ](https://github.com/kaitranntt/ccs/issues/199 ) ([f2a4200 ](https://github.com/kaitranntt/ccs/commit/f2a4200625e13754c7f79738dba0562e8ff27895 ))
* **kiro:** add --no-incognito option for normal browser auth ([13e4bac ](https://github.com/kaitranntt/ccs/commit/13e4baca228313462b3e0e83d0b97594654a989b ))
* **profiles:** prevent GLM auth regression from first-time install detection ([cc2d62d ](https://github.com/kaitranntt/ccs/commit/cc2d62db38977fd5a0597388c2882e3600e5e179 )), closes [#195 ](https://github.com/kaitranntt/ccs/issues/195 )
* **qwen:** inherit stdin for Device Code flows to enable interactive prompts ([c811fdf ](https://github.com/kaitranntt/ccs/commit/c811fdfc7914cc3bde3811ea04281055ebb3e273 )), closes [#188 ](https://github.com/kaitranntt/ccs/issues/188 )
* **ui:** add gemini-3-flash-preview to model dropdowns ([50653d1 ](https://github.com/kaitranntt/ccs/commit/50653d1054f89f0eaff24a6d8f471266269383b6 )), closes [#194 ](https://github.com/kaitranntt/ccs/issues/194 )
* **ui:** respect initialMode in profile create dialog ([db3662b ](https://github.com/kaitranntt/ccs/commit/db3662b47986269ba9c12385021f4aa4bd1633f6 ))
### Code Refactoring
* **paths:** use expandPath() consistently for cross-platform path handling ([adb6222 ](https://github.com/kaitranntt/ccs/commit/adb6222bc671c3c4ade1bb019705a985de1947fa ))
### Tests
* **auth:** add comprehensive tests for GLM auth persistence fix ([92a79aa ](https://github.com/kaitranntt/ccs/commit/92a79aa78ba14aaf2b22f10eaab23f6e04220b17 ))
2025-12-25 03:18:32 +00:00
Kai (Tam Nhu) Tran
485da53780
Merge pull request #199 from kaitranntt/dev
...
feat: v7.6.0 release - provider presets, Kiro auth, CLIProxy key preservation
2025-12-24 22:17:26 -05:00
github-actions[bot]
4d3d3b16f2
chore(release): 7.6.0-dev.6 [skip ci]
2025-12-25 03:13:24 +00:00
kaitranntt
2b4d21e8ae
fix(cliproxy): preserve user API keys during config regeneration
...
When CCS updates trigger CLIProxy config regeneration, user-added API
keys in ~/.ccs/cliproxy/config.yaml were being overwritten with only
the internal CCS key.
Changes:
- Add parseUserApiKeys() to extract user keys from existing config
- Modify regenerateConfig() to preserve user API keys alongside port
- Update generateUnifiedConfigContent() to accept userApiKeys param
- Add comprehensive test suite (14 tests) for key preservation
Fixes #200
2025-12-24 22:12:09 -05:00
github-actions[bot]
7dafed663b
chore(release): 7.6.0-dev.5 [skip ci]
2025-12-25 03:00:22 +00:00
Kai (Tam Nhu) Tran
b52e6d69d6
Merge pull request #193 from kaitranntt/kai/fix/kiro-incognito
...
fix(kiro): add --no-incognito option for normal browser auth
2025-12-24 21:59:19 -05:00
github-actions[bot]
e2d8af5d90
chore(release): 7.6.0-dev.4 [skip ci]
2025-12-25 01:20:33 +00:00
kaitranntt
f2a4200625
fix(core): address all code review issues from PR #199
...
Critical fixes:
- CRIT-1: Fix placeholder detection case sensitivity in api-key-validator
- CRIT-2: Add TOCTOU protection via loadMigrationCheckData() for atomic config reads
- CRIT-3: Restore fs.existsSync mock in profile-detector tests
High priority fixes:
- H1-H3: API validator HTTP/HTTPS support, timeout abort, debug log
- H4-H6: OAuth explicit flow type, signal handling, TTY detection
- H7-H8: Profile collision warning, config-first save order
- H9-H11: expandPath consistency, preset sync CLI/UI
2025-12-24 20:18:57 -05:00
github-actions[bot]
ff7c3b6c4a
chore(release): 7.6.0-dev.3 [skip ci]
2025-12-24 23:49:39 +00:00
Kai (Tam Nhu) Tran
080ad11804
Merge pull request #197 from kaitranntt/fix/glm-auth-persistence
...
fix(profiles): prevent GLM auth regression from first-time install detection
2025-12-24 18:48:40 -05:00
Kai (Tam Nhu) Tran
40aa6de72a
Merge pull request #198 from kaitranntt/feat/add-more-models
...
feat(api): add Minimax, DeepSeek, Qwen provider presets
2025-12-24 18:47:33 -05:00
kaitranntt
db3662b479
fix(ui): respect initialMode in profile create dialog
...
- Fix "Create Custom API Profile" button to open Custom tab instead of OpenRouter
- Improve Custom button visibility with dashed border and better contrast
- Improve Quick Templates styling with better spacing and font weight
- Enhance CompactPresetCard with larger icons and clearer badge styling
2025-12-24 18:43:41 -05:00
kaitranntt
92a79aa78b
test(auth): add comprehensive tests for GLM auth persistence fix
...
Add 26 new unit tests covering:
- isFirstTimeInstall() legacy config detection (8 tests)
- loadSettingsFromFile() path expansion (5 tests)
- ProfileDetector detectProfileType() (4 tests)
- expandPath() cross-platform handling (10 tests)
Test coverage for issue #195 :
- Legacy config.json/profiles.json detection
- Tilde expansion to home directory
- Environment variable expansion (${VAR}, $VAR, %VAR%)
- Mixed path separator normalization
- Corrupted config graceful handling
Files:
- tests/unit/commands/setup-command.test.ts
- tests/unit/auth/profile-detector.test.ts
- tests/unit/utils/expand-path.test.ts
2025-12-24 18:33:52 -05:00
kaitranntt
e7066b9997
feat(api): add Minimax, DeepSeek, Qwen provider presets
...
Add three new Anthropic-compatible API providers as presets:
- Minimax: M2.1/M2.1-lightning/M2 models with 1M context
- DeepSeek: V3.2 and R1 reasoning model (128K context)
- Qwen: Alibaba Cloud qwen3-coder-plus (256K context)
Closes #123
2025-12-24 18:32:07 -05:00
kaitranntt
adb6222bc6
refactor(paths): use expandPath() consistently for cross-platform path handling
...
- variant-settings.ts: Use expandPath() in deleteSettingsFile()
- profile-writer.ts: Use expandPath() in removeApiProfileUnified()
- migration-manager.ts: Remove local expandPath(), import from helpers
All path expansion now uses the central expandPath() from utils/helpers.ts
which handles ~, ~\, ${VAR}, $VAR, and %VAR% on all platforms.
2025-12-24 18:19:47 -05:00
kaitranntt
cc2d62db38
fix(profiles): prevent GLM auth regression from first-time install detection
...
- Check legacy config.json/profiles.json in isFirstTimeInstall()
- Use expandPath() for cross-platform path handling in profile-detector
- Add pre-flight API key validation for better error messages
- Enhance 401 error handling with Z.AI refresh guidance
Fixes #195
2025-12-24 18:09:09 -05:00
github-actions[bot]
fdc5439c78
chore(release): 7.6.0-dev.2 [skip ci]
2025-12-24 22:53:56 +00:00