github-actions[bot]
4ac5235884
chore(sync): merge main into dev after release [skip ci]
...
# Conflicts:
# package.json
2026-01-18 20:20:04 +00:00
semantic-release-bot
29c8f499cd
chore(release): 7.24.0 [skip ci]
...
## [7.24.0](https://github.com/kaitranntt/ccs/compare/v7.23.0...v7.24.0 ) (2026-01-18)
### Features
* **cliproxy:** add backend selection for CLIProxyAPI vs CLIProxyAPIPlus ([8ade4a6 ](https://github.com/kaitranntt/ccs/commit/8ade4a6b26a7870b730094ca47085cf4dc1bc411 ))
### Bug Fixes
* **cliproxy:** address PR review issues for backend selection ([a019ed2 ](https://github.com/kaitranntt/ccs/commit/a019ed2cf88a0e458d220fa0e9117c1490e9e6a6 ))
### Documentation
* add Docker support documentation ([90bced9 ](https://github.com/kaitranntt/ccs/commit/90bced95a42178c5bafae259285413552740cb54 ))
### Code Refactoring
* **ci:** simplify ai-review to use claude-code-action directly ([5e22547 ](https://github.com/kaitranntt/ccs/commit/5e22547f3fc19202039dc855a4516e12253960c6 ))
* **ci:** simplify ai-review to vanilla claude-code-action ([bdfc409 ](https://github.com/kaitranntt/ccs/commit/bdfc40966a316b36b3689c8cdc3e6326ba789399 ))
2026-01-18 20:19:40 +00:00
github-actions[bot]
ca5551f61a
chore(release): 7.23.0-dev.3 [skip ci]
2026-01-18 20:19:27 +00:00
kaitranntt
bdfc40966a
refactor(ci): simplify ai-review to vanilla claude-code-action
...
- Use anthropics/claude-code-action@v1 directly
- Remove ccs-reviewer wrapper dependency
- Match pr-review-comprehensive.yml pattern
- Keep CLIProxy env vars for model routing
- Restore comprehensive allowedTools for posting
2026-01-18 15:18:17 -05:00
kaitranntt
5e22547f3f
refactor(ci): simplify ai-review to use claude-code-action directly
...
- Remove ccs-reviewer wrapper dependency
- Set ANTHROPIC_BASE_URL directly in env block
- Remove use_cliproxy input (no longer needed)
2026-01-18 14:58:36 -05:00
github-actions[bot]
a2f1c85bc3
chore(release): 7.23.0-dev.2 [skip ci]
2026-01-18 15:28:58 +00:00
Kai (Tam Nhu) Tran and GitHub
b8664c43fe
Merge pull request #347 from kaitranntt/feat/cliproxy-backend-selection
...
feat(cliproxy): add backend selection for CLIProxyAPI vs CLIProxyAPIPlus
2026-01-18 10:28:01 -05:00
kaitranntt
a019ed2cf8
fix(cliproxy): address PR review issues for backend selection
...
- Remove duplicate CLIProxyBackend type from platform-detector.ts (import from types.ts)
- Add warning for invalid --backend CLI value (was silently ignored)
- Show toast notification when backend change blocked by running proxy
- Migrate from deprecated CLIPROXY_FALLBACK_VERSION to getFallbackVersion()
- Add comprehensive JSDoc for backend API endpoints
2026-01-18 10:24:53 -05:00
kaitranntt
8ade4a6b26
feat(cliproxy): add backend selection for CLIProxyAPI vs CLIProxyAPIPlus
...
Add cliproxy.backend config field to choose between CLIProxyAPI (original)
and CLIProxyAPIPlus backends. Includes CLI --backend flag, Dashboard toggle,
and provider validation to block Kiro/ghcp on original backend.
2026-01-18 10:10:01 -05:00
github-actions[bot]
c2016c2f18
chore(release): 7.23.0-dev.1 [skip ci]
2026-01-18 13:59:36 +00:00
kaitranntt
90bced95a4
docs: add Docker support documentation
2026-01-18 08:58:31 -05:00
semantic-release-bot
3a44899516
chore(release): 7.23.0 [skip ci]
...
## [7.23.0](https://github.com/kaitranntt/ccs/compare/v7.22.0...v7.23.0 ) (2026-01-18)
### Features
* **docker:** add Docker/Compose setup for CCS dashboard ([a14c7f3 ](https://github.com/kaitranntt/ccs/commit/a14c7f3f6ba0d694dda622a59c9f878f648976b4 ))
### Bug Fixes
* **docker:** address security and reproducibility issues ([b386410 ](https://github.com/kaitranntt/ccs/commit/b38641002fadc8732c81aa9c7bd01bee826095a5 ))
* **docker:** use bun 1.2.21 ([1dee718 ](https://github.com/kaitranntt/ccs/commit/1dee71897e89cc20bc1e78a57e29176ddacdb321 ))
2026-01-18 13:21:06 +00:00
Kai (Tam Nhu) Tran and GitHub
8a89bc97aa
Merge pull request #345 from opastorello/main
...
feat(docker): add Docker/Compose setup for CCS dashboard
2026-01-18 08:20:00 -05:00
kaitranntt
1dee71897e
fix(docker): use bun 1.2.21
2026-01-18 08:11:54 -05:00
kaitranntt and opastorello
b38641002f
fix(docker): address security and reproducibility issues
...
Fixes from maintainer review:
.dockerignore:
- Add .env* files to prevent secret leakage (CRITICAL)
- Add tests/, docs/, IDE files to reduce build context
- Add organized comments for maintainability
Dockerfile:
- Pin bun version (ARG BUN_VERSION=1.2.2) for reproducible builds
- Add build artifact validation step
- Add npm cache clean to reduce image size
- Add section comments for readability
docker-compose.yml:
- Add grok_home volume for grok-cli persistence
- Add start_period to healthcheck for slow starts
- Add resource limits (1G RAM, 2 CPUs) with reservations
- Add documentation comments
entrypoint.sh:
- Improve chown error handling with warning message
- Add usage help when no command provided
README.md:
- Add Resource Limits section with examples
- Add Graceful Shutdown documentation
- Add Troubleshooting section (permissions, ports, restart loops)
- Add Security Notes section
- Update persistence docs to include grok-cli
Co-authored-by: opastorello <nicolas@pastorello-lab.com.br >
2026-01-18 08:10:44 -05:00
opastorello
a14c7f3f6b
feat(docker): add Docker/Compose setup for CCS dashboard
2026-01-17 00:19:53 -03:00
semantic-release-bot
ca86772208
chore(release): 7.22.0 [skip ci]
...
## [7.22.0](https://github.com/kaitranntt/ccs/compare/v7.21.0...v7.22.0 ) (2026-01-15)
### Features
* **cliproxy:** add HTTPS tunnel for remote proxy mode ([#1 ](https://github.com/kaitranntt/ccs/issues/1 )) ([9e9cbd4 ](https://github.com/kaitranntt/ccs/commit/9e9cbd48585200c890fe6bb83539fe3a99b25cdc ))
* **dashboard:** add project_id display for Antigravity accounts ([ed2ce13 ](https://github.com/kaitranntt/ccs/commit/ed2ce138e41f07997eb6fa7e650cb4f16849b3df ))
* **dashboard:** show projectId warning in Live Account Monitor ([28b0faa ](https://github.com/kaitranntt/ccs/commit/28b0faa0cb842737c9a2b0409822b1339078cf0d ))
### Bug Fixes
* address PR [#4 ](https://github.com/kaitranntt/ccs/issues/4 ) review - HTTPS tests and timeout handling ([e055890 ](https://github.com/kaitranntt/ccs/commit/e055890e16fa6d79411faae5f04794807db39c87 ))
* address PR [#4 ](https://github.com/kaitranntt/ccs/issues/4 ) review suggestions ([c3bfa34 ](https://github.com/kaitranntt/ccs/commit/c3bfa34703a501b502508dbf41cff75d2cd84dbe ))
* **cliproxy:** add try-catch for file operations in pause/resume ([d87a653 ](https://github.com/kaitranntt/ccs/commit/d87a6531952313b1e3795feb67ab152f2bfbb1e9 ))
* **cliproxy:** move token files when pausing/resuming accounts ([9d2442f ](https://github.com/kaitranntt/ccs/commit/9d2442f9fa772e1048b8153b8a2d586a4ec032ce )), closes [#337 ](https://github.com/kaitranntt/ccs/issues/337 )
* **cliproxy:** show clear message for paused accounts in Live Monitor ([a931bc9 ](https://github.com/kaitranntt/ccs/commit/a931bc9745572c0b5ddb488f568f1bec62d69a25 ))
* **cliproxy:** use sibling auth-paused/ dir to prevent token refresh loops ([4d31128 ](https://github.com/kaitranntt/ccs/commit/4d31128b63ad3996dcb783cd08d956d53ff7face ))
* **dashboard:** harden projectId handling with edge case fixes ([bc02ecc ](https://github.com/kaitranntt/ccs/commit/bc02ecc94c5120bb0a4491fd9f88c71fb9f26b7f ))
* **dashboard:** update projectId for existing accounts during discovery ([36367d4 ](https://github.com/kaitranntt/ccs/commit/36367d49f0f51f4ecba9a32adf54308af153bdb2 ))
* increase timeout in connection tracking test for CI ([e7e95e6 ](https://github.com/kaitranntt/ccs/commit/e7e95e69700ed4c94c89d88bdf7d674a55053961 ))
* make connection tracking test deterministic ([b735234 ](https://github.com/kaitranntt/ccs/commit/b735234beb6c9559c2798ab48d8b876cf5e6c495 ))
* resolve CI test timing and merge conflict with dev ([504b1b3 ](https://github.com/kaitranntt/ccs/commit/504b1b3974c2538a692a54a7d83b1dea7e500433 ))
* **ui:** improve paused account display in Live Account Monitor ([502b30a ](https://github.com/kaitranntt/ccs/commit/502b30a589c8aef948e8d58ffc543fcb4e0248ad ))
2026-01-15 19:32:08 +00:00
Kai (Tam Nhu) Tran and GitHub
3c4e74955b
Merge pull request #343 from kaitranntt/dev
...
feat(release): promote dev to main
2026-01-15 14:31:00 -05:00
github-actions[bot]
02d05e23ed
chore(release): 7.21.0-dev.3 [skip ci]
2026-01-15 19:07:40 +00:00
Kai (Tam Nhu) Tran and GitHub
1e45e955a4
Merge pull request #332 from sgaluza/feat/cliproxy-https-remote
...
feat(cliproxy): add HTTPS tunnel for remote proxy mode
2026-01-15 14:06:27 -05:00
kaitranntt
b735234beb
fix: make connection tracking test deterministic
...
The previous test relied on client socket receiving close event from
server-side destroy, which is timing-dependent and flaky in CI.
New approach:
- Verify stop() behavior directly via getPort() returning null
- Test what we control (server state) not what we observe (client state)
- Remove timing-dependent assertions
- Faster and more reliable (83ms vs 1000ms+ timeout)
2026-01-15 14:00:36 -05:00
kaitranntt
504b1b3974
fix: resolve CI test timing and merge conflict with dev
...
- Fix connection tracking test: wait for 'close' event instead of only
checking socket.destroyed (more reliable in CI environments)
- Increase timeout from 500ms to 1000ms for CI latency
- Add proper socket cleanup after test
- Merge dev changes: add projectId parameter to registerAccount()
2026-01-15 13:39:16 -05:00
github-actions[bot]
9e233d8bc9
chore(release): 7.21.0-dev.2 [skip ci]
2026-01-15 18:07:52 +00:00
Kai (Tam Nhu) Tran and GitHub
126b244b36
Merge pull request #338 from kaitranntt/kai/fix/pause-account-cliproxy-usage
...
fix(cliproxy): move token files when pausing/resuming accounts
2026-01-15 13:06:50 -05:00
kaitranntt
502b30a589
fix(ui): improve paused account display in Live Account Monitor
...
- Add Pause icon with amber color for paused accounts
- Show styled "PAUSED" badge instead of plain error text
- Distinguish paused state from other errors visually
2026-01-15 13:04:17 -05:00
kaitranntt
a931bc9745
fix(cliproxy): show clear message for paused accounts in Live Monitor
...
- Check isAccountPaused() before readAuthData() in fetchAccountQuota()
- Return "Account is paused" instead of confusing "Auth file not found"
- Improves UX by explaining why quota fetch fails for paused accounts
2026-01-15 12:57:37 -05:00
kaitranntt
4d31128b63
fix(cliproxy): use sibling auth-paused/ dir to prevent token refresh loops
...
CLIProxyAPI's watcher uses filepath.Walk() which recursively scans
all subdirectories of auth/. Moving paused tokens to auth/paused/
subdirectory didn't hide them from CLIProxyAPI, causing token refresh
loops where paused tokens were immediately recreated.
Solution: Use auth-paused/ as a sibling directory instead of auth/paused/
subdirectory. This places paused tokens completely outside CLIProxyAPI's
scan path, preventing token discovery and refresh.
Path change:
- Before: ~/.ccs/cliproxy/auth/paused/
- After: ~/.ccs/cliproxy/auth-paused/
2026-01-15 12:41:44 -05:00
github-actions[bot]
936d706e4b
chore(release): 7.21.0-dev.1 [skip ci]
2026-01-15 17:14:24 +00:00
Kai (Tam Nhu) Tran and GitHub
14196ee19b
Merge pull request #340 from kaitranntt/feat/agy-project-id-display
...
feat(dashboard): add project_id display for Antigravity accounts
2026-01-15 12:13:21 -05:00
kaitranntt
28b0faa0cb
feat(dashboard): show projectId warning in Live Account Monitor
...
Add warning indicator on Antigravity account dots when projectId is
missing. Matches the warning shown in Provider Editor for consistency.
2026-01-15 11:59:41 -05:00
kaitranntt
d87a653195
fix(cliproxy): add try-catch for file operations in pause/resume
...
Address PR review feedback:
- Wrap fs.renameSync() in try-catch for pauseAccount/resumeAccount
- Wrap fs.mkdirSync() in try-catch for paused directory creation
- Add idempotent checks (skip if already paused/active)
- Rely on syncRegistryWithTokenFiles() for recovery on failure
Follows same error handling pattern as removeAccount().
2026-01-15 11:50:35 -05:00
kaitranntt
bc02ecc94c
fix(dashboard): harden projectId handling with edge case fixes
...
- Validate empty string projectId with typeof check and trim()
- Include projectId in registerAccount return value
- Update projectId when changed (not just when missing)
- Add aria-hidden/aria-label for accessibility
- Add max-width + truncate for long projectId overflow
2026-01-15 11:46:02 -05:00
kaitranntt
36367d49f0
fix(dashboard): update projectId for existing accounts during discovery
...
Previously, discoverExistingAccounts skipped existing token files
entirely, so accounts created before the projectId feature never
got their projectId populated from auth files.
Now when a token file is already registered, we still check if
projectId needs to be updated for agy accounts.
2026-01-15 11:22:40 -05:00
kaitranntt
ed2ce138e4
feat(dashboard): add project_id display for Antigravity accounts
...
Display GCP project_id for Antigravity (agy) accounts in the Dashboard:
- Add projectId field to AccountInfo interface (account-manager.ts)
- Read project_id from auth files when discovering/registering accounts
- Pass projectId through token-manager when registering new accounts
- Add projectId to OAuthAccount type (api-client.ts)
- Add projectId to AccountRow type (auth-monitor/types.ts)
- Display project_id in account-item.tsx with FolderCode icon
- Show N/A warning with amber tooltip if project_id is missing
suggesting user remove and re-add account to fetch it
Note: project_id is read-only and respects privacy mode blur.
2026-01-15 10:49:23 -05:00
semantic-release-bot
3de894784f
chore(release): 7.21.0 [skip ci]
...
## [7.21.0](https://github.com/kaitranntt/ccs/compare/v7.20.1...v7.21.0 ) (2026-01-14)
### Features
* **dashboard:** implement full parity UX improvements ([bd5e9d2 ](https://github.com/kaitranntt/ccs/commit/bd5e9d2b78b7348443770de3f4e5848390ff34fd ))
### Bug Fixes
* **dashboard:** address code review feedback for PR [#336 ](https://github.com/kaitranntt/ccs/issues/336 ) ([e808972 ](https://github.com/kaitranntt/ccs/commit/e808972df0e3ce1987bb3b5a346add3e6d592b56 ))
* **dashboard:** resolve 6 critical security and UX edge cases ([623a314 ](https://github.com/kaitranntt/ccs/commit/623a3146d775b9666218343a0dc39434b77dd24d ))
* **dashboard:** resolve edge cases in backup restore and settings UI ([2e45447 ](https://github.com/kaitranntt/ccs/commit/2e45447bb7c6bb48337076871d78a152bfb79880 ))
* **persist:** add rate limiting, tests, and code quality improvements ([7b80dcc ](https://github.com/kaitranntt/ccs/commit/7b80dccdd312fc6651ce03524699a30b8310c998 )), closes [#339 ](https://github.com/kaitranntt/ccs/issues/339 )
### Documentation
* update minimax preset references to 'mm' ([eee62a4 ](https://github.com/kaitranntt/ccs/commit/eee62a46a23f925e7ee891ef0c0ee5ca2271a462 ))
2026-01-14 23:10:15 +00:00
Kai (Tam Nhu) Tran and GitHub
d662f43447
Merge pull request #339 from kaitranntt/dev
...
feat(release): v7.21 - dashboard UX parity, login auth, backup management
2026-01-14 18:09:11 -05:00
github-actions[bot]
64a46d298b
chore(release): 7.20.1-dev.3 [skip ci]
2026-01-14 23:00:38 +00:00
kaitranntt
7b80dccdd3
fix(persist): add rate limiting, tests, and code quality improvements
...
- Add express-rate-limit to restore endpoint (5 req/min)
- Add JSDoc documentation to RestoreMutex class
- Extract magic numbers to named constants in BackupsSection
- Add unit tests for persist-routes.ts (23 tests)
- Add unit tests for BackupsSection component (28 tests)
Addresses PR #339 code review feedback.
2026-01-14 17:59:15 -05:00
github-actions[bot]
a63373fd6a
chore(release): 7.20.1-dev.2 [skip ci]
2026-01-14 22:45:10 +00:00
kaitranntt
eee62a46a2
docs: update minimax preset references to 'mm'
...
Align README and CLI help with actual preset ID.
2026-01-14 17:43:52 -05:00
github-actions[bot]
2626ee99ea
chore(release): 7.20.1-dev.1 [skip ci]
2026-01-14 22:37:54 +00:00
Kai (Tam Nhu) Tran and GitHub
812447e3f0
Merge pull request #336 from kaitranntt/kai/feat/dashboard-ux-parity
...
feat(dashboard): implement full UX parity with edge case fixes
2026-01-14 17:36:55 -05:00
kaitranntt
e808972df0
fix(dashboard): address code review feedback for PR #336
...
- Fix documentation: config.yaml -> settings.json in backups-section
- Wrap restoreBackup in useCallback for callback stability
- Auth middleware verified: inherited from app.use(authMiddleware)
2026-01-14 16:51:56 -05:00
kaitranntt
623a3146d7
fix(dashboard): resolve 6 critical security and UX edge cases
...
- TOCTOU symlink attack: use file descriptor for atomic read in persist-routes
- Non-atomic mutex: add RestoreMutex class with Promise queue pattern
- Restore confirmation: add AlertDialog before destructive backup restore
- Sensitive data exposure: sanitize auth_token/management_key in debug console
- Chunk retry: add lazyWithRetry wrapper with exponential backoff (3 retries)
- URL tab case sensitivity: normalize tab param with toLowerCase()
2026-01-14 16:47:11 -05:00
kaitranntt
9d2442f9fa
fix(cliproxy): move token files when pausing/resuming accounts
...
Pausing an account now physically moves the token file to auth/paused/
subdirectory, preventing CLIProxyAPI from discovering and using it.
Resume moves the file back to auth/ directory.
Changes:
- Add getPausedDir() helper for paused tokens location
- Update pauseAccount() to move token to paused/ subdir
- Update resumeAccount() to move token back to auth/
- Update syncRegistryWithTokenFiles() to check both directories
- Update removeAccount() to clean up from both directories
- Update getAccountTokenPath() to return correct path based on state
Fixes #337
2026-01-14 16:01:56 -05:00
kaitranntt
2e45447bb7
fix(dashboard): resolve edge cases in backup restore and settings UI
...
Backend:
- Add atomic restore with mutex to prevent concurrent corruption
- Implement rollback on failure for backup restore
- Add symlink security validation
Frontend:
- Add 'backups' tab to URL validation in settings hook
- Add error boundary for lazy-loaded settings sections
- Clamp progress bar values to prevent visual bugs
- Add AbortController cleanup to prevent memory leaks
- Fix misleading debug mode description and add actual console logging
2026-01-14 15:42:12 -05:00
kaitranntt
bd5e9d2b78
feat(dashboard): implement full parity UX improvements
...
- Remove 'agy' hardcode from quota hook (multi-provider support)
- Add quota N/A badge with AlertCircle icon for fetch failures
- Add new 'backups' tab to Settings page with Archive icon
- Create BackupsSection component with list/restore UI
- Add persist backend routes (GET /api/persist/backups, POST /api/persist/restore)
- Add debug mode toggle in Settings proxy section (localStorage persisted)
Closes documentation gap for persist command dashboard parity.
2026-01-14 13:52:54 -05:00
semantic-release-bot
01fe780514
chore(release): 7.20.1 [skip ci]
...
## [7.20.1](https://github.com/kaitranntt/ccs/compare/v7.20.0...v7.20.1 ) (2026-01-14)
### Bug Fixes
* **ci:** expand ai-review allowedTools to prevent token waste ([ac7b324 ](https://github.com/kaitranntt/ccs/commit/ac7b324d4989883c7a8e92030891e51bfc040cc3 ))
* **cliproxy:** address PR review feedback ([04c9b08 ](https://github.com/kaitranntt/ccs/commit/04c9b087ca3466c4b2871a777906f87b19566d3c ))
* **cliproxy:** return null for unknown quota, add verbose diagnostics ([1ac1941 ](https://github.com/kaitranntt/ccs/commit/1ac19415ce835df15f3fcefbb698f12ec89ec5e9 ))
* **deps:** add express-rate-limit to production dependencies ([d9631be ](https://github.com/kaitranntt/ccs/commit/d9631be81a018d9e007f241bcb6b928664cc6991 )), closes [#333 ](https://github.com/kaitranntt/ccs/issues/333 )
2026-01-14 18:39:17 +00:00
Kai (Tam Nhu) Tran and GitHub
bc1b1b6799
Merge pull request #335 from kaitranntt/dev
...
feat(release): v7.20.1 - quota diagnostics and ai-review improvements
2026-01-14 13:38:10 -05:00
github-actions[bot]
bb9549cb22
chore(release): 7.20.0-dev.3 [skip ci]
2026-01-14 18:32:34 +00:00