semantic-release-bot
3e8957af8b
chore(release): 7.37.1 [skip ci]
...
## [7.37.1](https://github.com/kaitranntt/ccs/compare/v7.37.0...v7.37.1 ) (2026-02-05)
### Bug Fixes
* **cliproxy:** fix discoverExistingAccounts test failures ([759f289 ](https://github.com/kaitranntt/ccs/commit/759f28911958689ff2b56f03409545b6fec81dec ))
* **ui:** display device code for GitHub Copilot OAuth in Dashboard ([13f6c3f ](https://github.com/kaitranntt/ccs/commit/13f6c3f14bd0d1c920e339b2486dcd6e37ce50f4 )), closes [#460 ](https://github.com/kaitranntt/ccs/issues/460 )
### Code Refactoring
* **cliproxy:** modularize top 4 giant files ([b149e25 ](https://github.com/kaitranntt/ccs/commit/b149e252ebe3fc355e3e47772de4820810b8000f ))
* **ui:** address PR review feedback for device code auth ([a08d0cf ](https://github.com/kaitranntt/ccs/commit/a08d0cfece85ebb8c5960ad66ee48131af6ded05 ))
2026-02-05 22:54:56 +00:00
Kai (Tam Nhu) Tran and GitHub
aea33ce50b
Merge pull request #470 from kaitranntt/dev
...
feat(release): promote dev to main
2026-02-05 17:53:43 -05:00
github-actions[bot]
d8375e7ab1
chore(release): 7.37.0-dev.2 [skip ci]
2026-02-05 20:52:32 +00:00
Kai (Tam Nhu) Tran and GitHub
1b69e2f6ca
Merge pull request #469 from kaitranntt/fix/460-ghcp-device-code-display
...
fix(ui): display device code for GitHub Copilot OAuth in Dashboard
2026-02-05 15:51:29 -05:00
kaitranntt
a08d0cfece
refactor(ui): address PR review feedback for device code auth
...
- Extract INITIAL_STATE constant to reduce code repetition (DRY)
- Remove duplicate success toast for device code flow
(useDeviceCode already shows toast via deviceCodeCompleted WebSocket event)
- Replace 7 inline state reset objects with INITIAL_STATE reference
2026-02-05 15:37:18 -05:00
kaitranntt
13f6c3f14b
fix(ui): display device code for GitHub Copilot OAuth in Dashboard
...
For Device Code OAuth providers (ghcp, qwen), switch from /start-url
to /start endpoint which spawns CLIProxyAPI binary and emits WebSocket
events with userCode. DeviceCodeDialog then displays the code properly.
Closes #460
2026-02-05 15:27:30 -05:00
github-actions[bot]
10b73542da
chore(release): 7.37.0-dev.1 [skip ci]
2026-02-05 20:16:10 +00:00
Kai (Tam Nhu) Tran and GitHub
95aa1d6ce3
Merge pull request #468 from kaitranntt/kai/refactor/top4-giant-files
...
refactor(cliproxy): modularize top 4 giant files
2026-02-05 15:15:03 -05:00
kaitranntt
759f289119
fix(cliproxy): fix discoverExistingAccounts test failures
...
- Skip saving registry when no new accounts discovered (prevents empty
accounts.json creation for invalid files)
- Skip merging empty provider sections to prevent empty provider entries
- Update test module cache clearing to include new modular submodules
(accounts/registry, accounts/index) for proper test isolation
2026-02-05 15:09:47 -05:00
kaitranntt
b149e252eb
refactor(cliproxy): modularize top 4 giant files
...
Split 4 files exceeding 900 lines into focused modules:
- account-manager.ts (961 → 56 lines): 6 modules in accounts/
- registry, query, bulk-ops, token-file-ops, types, index
- config-generator.ts (981 → 16 lines): 6 modules in config/
- generator, port-manager, env-builder, thinking-config, path-resolver, index
- cliproxy-executor.ts (1,180 → 21 lines): 5 modules in executor/
- index, lifecycle-manager, env-resolver, retry-handler, session-bridge
- cliproxy-command.ts (1,297 → 10 lines): 8 modules in commands/cliproxy/
- index, auth, quota, variant, install, help, proxy-lifecycle subcommands
Total: 4,419 → 103 lines in original files (97.7% reduction)
Backward compatibility maintained via re-export shims.
Edge case fixes: CLI validation, thinking fallback, provider warning.
BREAKING CHANGES: None - all exports preserved via barrel re-exports.
2026-02-05 15:00:02 -05:00
semantic-release-bot
237f91ff69
chore(release): 7.37.0 [skip ci]
...
## [7.37.0](https://github.com/kaitranntt/ccs/compare/v7.36.0...v7.37.0 ) (2026-02-05)
### Features
* **oauth:** add interactive mode prompt for VPS/headless environments ([7a1b4d6 ](https://github.com/kaitranntt/ccs/commit/7a1b4d6f20176957892e217979062ba542e90343 )), closes [#461 ](https://github.com/kaitranntt/ccs/issues/461 )
* **oauth:** add interactive mode prompt for VPS/headless environments ([#462 ](https://github.com/kaitranntt/ccs/issues/462 )) ([2777202 ](https://github.com/kaitranntt/ccs/commit/2777202caa37db8c48f116ad256a3c183bb7eb1c )), closes [#461 ](https://github.com/kaitranntt/ccs/issues/461 )
### Bug Fixes
* **auth:** show command checks unified config for accounts ([0e140f8 ](https://github.com/kaitranntt/ccs/commit/0e140f83e40e1f21b3c52504e85639c90435e61e )), closes [#458 ](https://github.com/kaitranntt/ccs/issues/458 )
* **cliproxy:** add NO_PROXY support and error handling for proxy URLs ([bcde5f4 ](https://github.com/kaitranntt/ccs/commit/bcde5f4878731d45f4867d52300dcca623e0915f ))
* **cliproxy:** respect http_proxy env vars for binary downloads ([9c527b7 ](https://github.com/kaitranntt/ccs/commit/9c527b7d1501deb9aefff6ab95debb18adee87f0 )), closes [#266 ](https://github.com/kaitranntt/ccs/issues/266 )
* **cliproxy:** sanitize MCP tool input_schema to remove non-standard properties ([#459 ](https://github.com/kaitranntt/ccs/issues/459 )) ([f8c179f ](https://github.com/kaitranntt/ccs/commit/f8c179f6da47f6a0d0cb65fe3be12ea44a05bdef )), closes [#456 ](https://github.com/kaitranntt/ccs/issues/456 )
* **dashboard:** delete accounts from unified config mode ([8d5f7d2 ](https://github.com/kaitranntt/ccs/commit/8d5f7d2d8365bc8b02d3c0b72c4945673580b090 )), closes [#455 ](https://github.com/kaitranntt/ccs/issues/455 )
* **doctor:** use cmd.exe compatible quoting for Windows shell execution ([ff92c66 ](https://github.com/kaitranntt/ccs/commit/ff92c66b64cb902e6faf9cc54f2973a96d29173a ))
* **shell:** escape ! for cmd.exe delayed expansion ([61bc54a ](https://github.com/kaitranntt/ccs/commit/61bc54af0504d21bdf1e6a7e29dcf9ef322b89c7 ))
* **shell:** escape cmd.exe special chars (%, ^, newlines) ([ed91f21 ](https://github.com/kaitranntt/ccs/commit/ed91f21994a3aa35a9e40539015676466b794144 ))
* **ui:** allow backend switching in remote mode ([28e776d ](https://github.com/kaitranntt/ccs/commit/28e776d58e7b738a7fbedacb5385c0c423196cea )), closes [#463 ](https://github.com/kaitranntt/ccs/issues/463 )
### Tests
* **cliproxy:** add comprehensive proxy support unit tests ([713ee93 ](https://github.com/kaitranntt/ccs/commit/713ee936065d6b1f7f61a9aa07282c5f82d81774 ))
* **shell:** add unit tests for escapeShellArg ([48aa3cc ](https://github.com/kaitranntt/ccs/commit/48aa3cca30b2c5e7ff0b5faff865918759b048d1 ))
2026-02-05 16:32:33 +00:00
Kai (Tam Nhu) Tran and GitHub
93e9409548
Merge pull request #467 from kaitranntt/dev
...
feat: release v7.36.0 with shell escaping, backend switching, and quota improvements
2026-02-05 11:31:22 -05:00
github-actions[bot]
69ad62a47a
chore(release): 7.36.0-dev.6 [skip ci]
2026-02-05 16:00:56 +00:00
Kai (Tam Nhu) Tran and GitHub
f866441715
Merge pull request #466 from kaitranntt/kai/fix/doctor-claude-detection
...
fix(doctor): use cmd.exe compatible quoting for Windows shell execution
2026-02-05 10:59:50 -05:00
kaitranntt
61bc54af05
fix(shell): escape ! for cmd.exe delayed expansion
...
Adds defensive escaping for exclamation marks in case delayed
expansion is enabled in the user's cmd.exe environment.
2026-02-05 10:45:07 -05:00
kaitranntt
48aa3cca30
test(shell): add unit tests for escapeShellArg
...
- 11 tests covering Unix and Windows escaping behavior
- Tests for quotes, percent signs, carets, newlines, tabs
- Fixes comment inaccuracy (backslash → doubling)
2026-02-05 10:36:55 -05:00
kaitranntt
ed91f21994
fix(shell): escape cmd.exe special chars (%, ^, newlines)
...
Additional hardening for Windows shell escaping:
- Escape % as %% to prevent variable expansion
- Escape ^ as ^^ to prevent escape sequence interpretation
- Replace newlines/tabs with space to prevent parsing errors
2026-02-05 10:32:31 -05:00
kaitranntt
ff92c66b64
fix(doctor): use cmd.exe compatible quoting for Windows shell execution
...
The escapeShellArg function was using PowerShell-style single quotes,
but spawn({ shell: true }) uses cmd.exe by default on Windows.
cmd.exe does not recognize single quotes as string delimiters,
causing 'claude' '--version' to fail.
Changed to use double quotes which work correctly in cmd.exe.
2026-02-05 10:24:43 -05:00
github-actions[bot]
8f33234602
chore(release): 7.36.0-dev.5 [skip ci]
2026-02-05 02:45:44 +00:00
Kai (Tam Nhu) Tran and GitHub
f8e411c772
Merge pull request #464 from kaitranntt/kai/fix/463-backend-switch-remote
...
fix(ui): allow backend switching in remote mode
2026-02-04 21:44:39 -05:00
kaitranntt
28e776d58e
fix(ui): allow backend switching in remote mode
...
When in Remote mode, local proxy running status no longer blocks
backend switching. Introduced `isBackendSwitchBlocked` computed
variable that only evaluates true in Local mode with running proxy.
Closes #463
2026-02-04 21:36:20 -05:00
github-actions[bot]
4c5030dd62
chore(release): 7.36.0-dev.4 [skip ci]
2026-02-05 01:55:18 +00:00
Kai (Tam Nhu) Tran and GitHub
2777202caa
feat(oauth): add interactive mode prompt for VPS/headless environments ( #462 )
...
- Add promptOAuthModeChoice() for headless OAuth mode selection
- Add --port-forward flag to force port-forwarding mode
- Add conflict detection for --paste-callback + --port-forward
- Handle edge cases: Ctrl+C, invalid input, non-TTY stdin
- Update help docs with new flag
Closes #461
2026-02-04 20:54:13 -05:00
kaitranntt
7a1b4d6f20
feat(oauth): add interactive mode prompt for VPS/headless environments
...
- Add promptOAuthModeChoice() for headless OAuth mode selection
- Add --port-forward flag to force port-forwarding mode
- Add conflict detection for --paste-callback + --port-forward
- Handle edge cases: Ctrl+C, invalid input, non-TTY stdin
- Update help docs with new flag
Closes #461
2026-02-04 20:47:19 -05:00
github-actions[bot]
2486b3f59e
chore(release): 7.36.0-dev.3 [skip ci]
2026-02-05 01:21:05 +00:00
Kai (Tam Nhu) Tran and GitHub
f8c179f6da
fix(cliproxy): sanitize MCP tool input_schema to remove non-standard properties ( #459 )
...
Squash merge PR #459 : MCP tool input_schema sanitization
Fixes #456 - Gemini/Vertex APIs reject non-standard JSON Schema properties from MCP tools
Changes:
- Add allowlist-based schema sanitizer for JSON Schema Draft-07 keywords
- Recursive sanitization with circular ref protection and depth limit
- Handle all schema containers: properties, items, additionalProperties, additionalItems, oneOf/anyOf/allOf, not, if/then/else, $defs, definitions, patternProperties, contains, propertyNames, dependencies
- 22 unit tests covering edge cases
- Integrates into ToolSanitizationProxy pipeline before tool name sanitization
2026-02-04 20:19:58 -05:00
github-actions[bot]
dbb6ae8da3
chore(release): 7.36.0-dev.2 [skip ci]
2026-02-04 23:18:41 +00:00
Kai (Tam Nhu) Tran and GitHub
d39d0dbcca
Merge pull request #457 from kaitranntt/kai/fix/455-dashboard-delete-unified
...
fix(dashboard): delete accounts from unified config mode
2026-02-04 18:17:33 -05:00
kaitranntt
0e140f83e4
fix(auth): show command checks unified config for accounts
...
Use getAllProfilesMerged() and getDefaultResolved() to check both
unified config and legacy profiles when showing account details.
Fixes #458
2026-02-04 18:08:39 -05:00
kaitranntt
8d5f7d2d83
fix(dashboard): delete accounts from unified config mode
...
Dashboard API DELETE /api/accounts/:name now checks both unified config
(config.yaml) and legacy profiles (profiles.json) before deletion,
matching CLI behavior in remove-command.ts.
Fixes #455
2026-02-04 18:03:41 -05:00
github-actions[bot]
acb09f3223
chore(release): 7.36.0-dev.1 [skip ci]
2026-02-04 22:24:18 +00:00
Kai (Tam Nhu) Tran and GitHub
c8bc3a6f94
Merge pull request #454 from kaitranntt/kai/fix/266-cliproxy-proxy-support
...
fix(cliproxy): respect http_proxy env vars for binary downloads
2026-02-04 17:23:09 -05:00
kaitranntt
713ee93606
test(cliproxy): add comprehensive proxy support unit tests
...
Add 34 unit tests covering:
- getProxyUrl: env var precedence (lowercase > uppercase > all_proxy)
- shouldBypassProxy: wildcard, exact match, suffix patterns, case-insensitivity
- getHostname: URL parsing with error handling
- getProxyAgent: proxy creation, NO_PROXY bypass, error handling
Export internal functions via __testExports for testability.
2026-02-04 17:05:24 -05:00
kaitranntt
bcde5f4878
fix(cliproxy): add NO_PROXY support and error handling for proxy URLs
...
- Add shouldBypassProxy() to respect NO_PROXY/no_proxy env var
- Supports exact match, wildcard (*), and domain suffix patterns
- Add try-catch for malformed proxy URLs with graceful fallback
- Extract getHostname() helper for URL parsing
2026-02-04 16:59:18 -05:00
kaitranntt
9c527b7d15
fix(cliproxy): respect http_proxy env vars for binary downloads
...
CLIProxyAPI installation and updates now respect http_proxy, https_proxy,
and all_proxy environment variables when making network requests.
Uses https-proxy-agent and http-proxy-agent packages to route HTTP/HTTPS
requests through the configured proxy server.
Closes #266
2026-02-04 16:46:14 -05:00
semantic-release-bot
bfb5eefe49
chore(release): 7.36.0 [skip ci]
...
## [7.36.0](https://github.com/kaitranntt/ccs/compare/v7.35.1...v7.36.0 ) (2026-02-04)
### Features
* **detector:** add Windows native installer fallback detection ([3336736 ](https://github.com/kaitranntt/ccs/commit/333673615465727d2b25fef7a35203424859584d )), closes [#447 ](https://github.com/kaitranntt/ccs/issues/447 )
### Bug Fixes
* **detector:** use expandPath helper and add tests ([7f83a7d ](https://github.com/kaitranntt/ccs/commit/7f83a7d43574e12ae3685caa0f6cf682ea9631ca )), closes [#449 ](https://github.com/kaitranntt/ccs/issues/449 ) [#447 ](https://github.com/kaitranntt/ccs/issues/447 )
* **hooks:** deduplicate WebSearch hooks when saving via Dashboard ([57d4b04 ](https://github.com/kaitranntt/ccs/commit/57d4b04c682aac6246d2678a8104ed64e3bbd39a )), closes [#450 ](https://github.com/kaitranntt/ccs/issues/450 )
* **ui:** prevent settings tab truncation with grid layout ([bfb2a06 ](https://github.com/kaitranntt/ccs/commit/bfb2a062682be3bfb4a03d3a2e0b534829a37899 ))
### Tests
* add stress test and PostToolUse preservation tests ([2fe6c33 ](https://github.com/kaitranntt/ccs/commit/2fe6c336d71cd36e7983603491601307a5f674e7 )), closes [#452 ](https://github.com/kaitranntt/ccs/issues/452 )
* **glmt:** increase timeout for retry-logic tests on CI ([aa83b4d ](https://github.com/kaitranntt/ccs/commit/aa83b4db4e00296bd02ff1699ee7782d291f012a ))
* **uploader:** fix flaky timeout test with 5ms tolerance ([36c5605 ](https://github.com/kaitranntt/ccs/commit/36c560532331a6d12ec0d52e7f559004f241beea ))
2026-02-04 18:45:41 +00:00
Kai (Tam Nhu) Tran and GitHub
9c44e6b58e
Merge pull request #453 from kaitranntt/dev
...
fix(release): v7.35.1 - hook deduplication and Windows detection
2026-02-04 13:44:31 -05:00
github-actions[bot]
babc8f1c19
chore(release): 7.35.1-dev.2 [skip ci]
2026-02-04 17:07:08 +00:00
Kai (Tam Nhu) Tran and GitHub
ca2070dd35
Merge pull request #452 from kaitranntt/kai/fix/450-hook-duplication
...
fix(hooks): deduplicate WebSearch hooks when saving via Dashboard
2026-02-04 12:06:05 -05:00
kaitranntt
aa83b4db4e
test(glmt): increase timeout for retry-logic tests on CI
...
The GLMT retry logic tests use dynamic imports and GlmtProxy
instantiation which are slower on CI runners than locally.
Increase default timeout from 5s to 30s to prevent flaky failures.
2026-02-04 11:59:34 -05:00
kaitranntt
2fe6c336d7
test: add stress test and PostToolUse preservation tests
...
- Add stress test for 15 duplicate hooks (verifies O(n) scaling)
- Add test verifying PostToolUse/PreToolCall remain untouched
- Add optional debug logging when duplicates removed (CCS_DEBUG)
Addresses review feedback from PR #452
2026-02-04 11:44:33 -05:00
kaitranntt
57d4b04c68
fix(hooks): deduplicate WebSearch hooks when saving via Dashboard
...
Add deduplicateCcsHooks() call to PUT /api/settings/:profile endpoint.
This prevents WebSearch hooks from accumulating when users save settings
via the Dashboard UI.
Fixes #450
2026-02-04 11:36:31 -05:00
github-actions[bot]
e653be06b1
chore(release): 7.35.1-dev.1 [skip ci]
2026-02-04 16:25:34 +00:00
Kai (Tam Nhu) Tran and GitHub
e4f1793e4c
Merge pull request #451 from kaitranntt/kai/fix/settings-tabs-truncation
...
fix(ui): prevent settings tab truncation with grid layout
2026-02-04 11:24:27 -05:00
Kai (Tam Nhu) Tran and GitHub
ecdb227c68
Merge pull request #449 from kaitranntt/kai/feat/447-windows-claude-detection
...
feat(detector): add Windows native installer fallback detection
2026-02-04 11:23:56 -05:00
kaitranntt
bfb2a06268
fix(ui): prevent settings tab truncation with grid layout
...
- Use CSS grid (grid-cols-6) for even tab distribution
- Shorten tab labels to fit narrow panels
- Add scrollbar-thin utility for overflow scenarios
2026-02-04 11:19:39 -05:00
kaitranntt
36c5605323
test(uploader): fix flaky timeout test with 5ms tolerance
2026-02-04 11:16:47 -05:00
kaitranntt
7f83a7d435
fix(detector): use expandPath helper and add tests
...
- Refactor: Remove duplicate expandWindowsPath(), use expandPath() from helpers
- Simplify: Update WINDOWS_NATIVE_PATHS to actual install location
(%USERPROFILE%\.local\bin\claude.exe from Claude's install.ps1)
- Tests: Add comprehensive test suite for Windows detection (9 tests)
- Address code review feedback from PR #449
Refs: #447
2026-02-04 11:14:17 -05:00
kaitranntt
3336736154
feat(detector): add Windows native installer fallback detection
...
- Check common Windows installation paths when where.exe fails
- Improve error messages with Windows-specific guidance
- Suggest running 'claude install' for native installer users
Closes #447
2026-02-04 11:06:32 -05:00
semantic-release-bot
2b84322249
chore(release): 7.35.1 [skip ci]
...
## [7.35.1](https://github.com/kaitranntt/ccs/compare/v7.35.0...v7.35.1 ) (2026-02-04)
### Bug Fixes
* **cliproxy:** use os.homedir() for cross-platform path expansion ([39f77bd ](https://github.com/kaitranntt/ccs/commit/39f77bd9efffd97fb76fbb7bb550bfe25c58e6a7 )), closes [#445 ](https://github.com/kaitranntt/ccs/issues/445 )
2026-02-04 15:33:32 +00:00