Commit Graph
2730 Commits
Author SHA1 Message Date
Tam Nhu Tran c32fbdac5d Merge remote-tracking branch 'origin/main' into dev 2026-03-27 15:27:41 -04:00
Kai (Tam Nhu) TranandGitHub 67711dc748 Merge pull request #824 from kaitranntt/kai/hotfix-releaserc-hotfix-type
hotfix: add hotfix commit type to semantic-release config
2026-03-27 15:27:01 -04:00
github-actions[bot] 4cbb142703 chore(release): 7.60.0-dev.4 [skip ci] 2026-03-27 19:24:49 +00:00
Kai (Tam Nhu) TranandGitHub 508c96e289 Merge pull request #820 from kaitranntt/kai/feat/812-docker-command
feat: add ccs docker deployment commands
2026-03-27 15:23:12 -04:00
github-actions[bot] cf63f67413 chore(release): 7.60.0-dev.3 [skip ci] 2026-03-27 19:08:50 +00:00
Kai (Tam Nhu) TranandGitHub c7744a37c3 Merge pull request #822 from kaitranntt/kai/fix/821-websearch-validation-followup
fix(websearch): align provider validation metadata
2026-03-27 15:07:14 -04:00
Tam Nhu Tran 5b9954cfad test(docker): cover docker subcommand rendering paths
- add handler-level coverage for up, down, logs, config, update, and status

- exercise success, validation, follow-mode, and boxed error output paths
2026-03-27 15:05:17 -04:00
Tam Nhu Tran 5ad4303345 fix(docker): bound blocking command execution
- add default local and remote sync-command timeouts with clearer timeout diagnostics

- remove extra synchronous fs and process.exit patterns from docker assets/bootstrap helpers

- register the docker help handler in CLAUDE.md for the repo help-location reference
2026-03-27 15:05:17 -04:00
Tam Nhu Tran 6ac8f59a78 docs(docker): document integrated deployment flow
- document the new ccs docker command suite and remote host staging path
- clarify how the existing prebuilt image differs from the integrated CLI flow
- record issue #812 in the project roadmap

Refs #812
2026-03-27 15:05:17 -04:00
Tam Nhu Tran 23f767b0c5 feat(docker): add integrated deployment commands
- add ccs docker subcommands for up, down, status, update, logs, and config
- bundle integrated docker assets and remote ssh deployment support
- add executor regression tests and root help/router coverage

Refs #812
2026-03-27 15:05:17 -04:00
Tam Nhu Tran 0473f63623 hotfix: add hotfix commit type to semantic-release config
- Add hotfix type to releaseRules (triggers patch release)
- Add Hotfixes section to release notes generator
- Without this, hotfix: commits are silently ignored by semantic-release
2026-03-27 15:03:49 -04:00
Tam Nhu Tran 1fd7f81221 test(websearch): assert parser-layer null body errors 2026-03-27 14:58:54 -04:00
Kai (Tam Nhu) TranandGitHub b22ea85fca Merge pull request #823 from kaitranntt/kai/hotfix-818-ai-review-maxturns
hotfix(ci): fix AI review max-turns and Write tool enforcement
2026-03-27 14:57:41 -04:00
Tam Nhu Tran 179fa338b8 hotfix(ci): increase max-turns to 30 and enforce Write tool for review output
- Increase --max-turns from 20 to 30 (large PRs with 31 files need ~25 turns)
- Explicitly instruct Claude to use Write tool (not Edit/python3 fallback)
- Add READ-ONLY constraint to prevent source code modifications
- Previous run hit error_max_turns at turn 21 despite successfully writing review

Part of #818
2026-03-27 14:55:22 -04:00
Tam Nhu Tran dff40b5e24 fix(websearch): align provider validation metadata 2026-03-27 14:49:00 -04:00
github-actions[bot] 48da0f3538 chore(release): 7.60.0-dev.2 [skip ci] 2026-03-27 18:42:40 +00:00
Kai (Tam Nhu) TranandGitHub 68d261d0f5 Merge pull request #817 from kaitranntt/kai/fix/816-websearch-localhost-guard
fix(websearch): restrict dashboard secrets routes
2026-03-27 14:41:04 -04:00
github-actions[bot] a7e5bd983f chore(release): 7.60.0-dev.1 [skip ci] 2026-03-27 18:33:05 +00:00
Kai (Tam Nhu) TranandGitHub b58c25c10d Merge pull request #819 from kaitranntt/kai/hotfix-818-ai-review-perf
hotfix(ci): fix AI review performance and reliability
2026-03-27 14:28:42 -04:00
Tam Nhu Tran 0a7fef0368 hotfix(ci): fix AI review performance — bypass permissions, cap turns, reduce thinking
- Add --permission-mode bypassPermissions to eliminate 16+ permission denials per review
- Add --max-turns 20 to prevent runaway 41+ turn sessions
- Replace ultrathink with think (32K→16K thinking tokens) — sufficient for read-only review
- Expand --allowedTools with commonly-tried tools (wc, head, tail, find, git show)
- Remove unnecessary tools (Edit, LS — review shouldn't edit files)
- Reduce timeout from 20 to 15 minutes for faster failure detection

Evidence from run #23659037151: 11.6 min, 41 turns, 16 permission denials, $1.95, failed to write review.

Closes #818
2026-03-27 14:26:21 -04:00
Tam Nhu Tran 4ccc3edcbb fix(websearch): restrict dashboard secrets routes 2026-03-27 14:14:23 -04:00
semantic-release-bot aaed6f39e0 chore(release): 7.60.0 [skip ci]
## [7.60.0](https://github.com/kaitranntt/ccs/compare/v7.59.0...v7.60.0) (2026-03-27)

### Features

* **websearch:** manage provider API keys in dashboard ([20c48c6](https://github.com/kaitranntt/ccs/commit/20c48c61050c9c15b07df1a996ec1d3b73328217))

### Bug Fixes

* **settings:** prevent config panel flash on refresh ([5782edf](https://github.com/kaitranntt/ccs/commit/5782edf62706427c985d03f115726ca765c369ac))
* **websearch:** narrow provider key handlers for build ([a3ca496](https://github.com/kaitranntt/ccs/commit/a3ca496fa814e7c711b610ced79694e9489dfa4f))
* **websearch:** narrow provider key summary access ([d883951](https://github.com/kaitranntt/ccs/commit/d883951c9e4738b33bc057fe9230727a9bf5c25f))

### Documentation

* **websearch:** document inline provider key flow ([f462b9f](https://github.com/kaitranntt/ccs/commit/f462b9fed107e506488356dc7384fa22485e40cf))

### Styles

* **ui:** format files for enforced prettier rules ([1c8246a](https://github.com/kaitranntt/ccs/commit/1c8246a60edfff8ca9ea03793505bb8d9e4a6b23))

### CI

* **ai-review:** enable show_full_output for review visibility ([6dca069](https://github.com/kaitranntt/ccs/commit/6dca069c7d4642b24c2270cd51e0f0c0d2c900d8))
* **ai-review:** remove custom Claude CLI path to prevent version drift ([0334f70](https://github.com/kaitranntt/ccs/commit/0334f70991a926dfff5b097284f12bf2aa04e3d1)), closes [#810](https://github.com/kaitranntt/ccs/issues/810)
* **ai-review:** upgrade model, add fallback extraction, preserve logs ([bb5862f](https://github.com/kaitranntt/ccs/commit/bb5862f0a01772f975cc95bc2b6581c8b1bb454a))
2026-03-27 17:56:24 +00:00
Kai (Tam Nhu) TranandGitHub c7f3c5138b Merge pull request #814 from kaitranntt/dev
feat(release): promote dev to main
2026-03-27 13:54:48 -04:00
github-actions[bot] c225509b15 chore(release): 7.59.0-dev.2 [skip ci] 2026-03-27 17:47:51 +00:00
Kai (Tam Nhu) TranandGitHub ff48e00e8b Merge pull request #809 from kaitranntt/kai/feat/websearch-api-key-dashboard
feat(websearch): manage provider API keys in dashboard
2026-03-27 13:46:12 -04:00
Tam Nhu Tran 5782edf627 fix(settings): prevent config panel flash on refresh 2026-03-27 13:25:26 -04:00
Tam Nhu Tran d883951c9e fix(websearch): narrow provider key summary access 2026-03-27 13:25:26 -04:00
Tam Nhu Tran a3ca496fa8 fix(websearch): narrow provider key handlers for build 2026-03-27 13:25:26 -04:00
Tam Nhu Tran 1c8246a60e style(ui): format files for enforced prettier rules 2026-03-27 13:25:26 -04:00
Tam Nhu Tran f462b9fed1 docs(websearch): document inline provider key flow
- update the WebSearch guide for dashboard-managed Exa, Tavily, and Brave keys
- record the dashboard readiness and secret-management change in the project roadmap
2026-03-27 13:25:26 -04:00
Tam Nhu Tran 20c48c6105 feat(websearch): manage provider API keys in dashboard
- add masked dashboard-managed API key state for Exa, Tavily, and Brave
- persist WebSearch keys through global_env while keeping WebSearch as the UX surface
- treat dashboard-managed keys as ready in status checks and cover the flow with route/UI tests
2026-03-27 13:25:26 -04:00
github-actions[bot] eea0f57688 chore(release): 7.59.0-dev.1 [skip ci] 2026-03-27 16:13:36 +00:00
Kai (Tam Nhu) TranandGitHub e73a27124a Merge pull request #811 from kaitranntt/kai/fix/810-ai-review-cli-drift
ci(ai-review): remove custom Claude CLI path to prevent version drift
2026-03-27 12:12:04 -04:00
Tam Nhu Tran bb5862f0a0 ci(ai-review): upgrade model, add fallback extraction, preserve logs
- Upgrade review model from glm-5 to glm-5.1
- Add fallback step: if Claude doesn't write pr_review.md, extract
  last assistant message from execution output as review content
- Upload claude-execution-output.json as artifact (7-day retention)
  so review sessions can be inspected after the job completes
- Publish review comment runs on always() instead of only on success,
  so fallback-extracted reviews still get posted
2026-03-27 12:09:24 -04:00
Tam Nhu Tran 6dca069c7d ci(ai-review): enable show_full_output for review visibility
Allows seeing Claude's full output in CI logs instead of the
opaque "full output hidden for security" message. Helps debug
slow reviews and identify bottlenecks.
2026-03-27 12:02:11 -04:00
Tam Nhu Tran 0334f70991 ci(ai-review): remove custom Claude CLI path to prevent version drift
claude-code-action@v1 auto-updates its bundled Claude Code and Agent SDK.
The custom path_to_claude_code_executable forced the runner's stale CLI
(v2.1.39) to be used instead, causing validateHeaders auth failures when
the SDK updated to 0.2.85. Let the action manage its own installation.

Closes #810
2026-03-27 11:55:03 -04:00
semantic-release-bot f70d149c0b chore(release): 7.59.0 [skip ci]
## [7.59.0](https://github.com/kaitranntt/ccs/compare/v7.58.0...v7.59.0) (2026-03-26)

### Features

* **auth:** let power user mode skip Gemini auth gate ([ce4401e](https://github.com/kaitranntt/ccs/commit/ce4401e84ea11a0b5518b9eca4d4a44a304e8878))

### Bug Fixes

* **ci:** resolve flaky api-command module resolution and migrate to self-hosted runner ([41a31c8](https://github.com/kaitranntt/ccs/commit/41a31c8a4ffb49c6cf046de0b437961f4422a4e1))
* **cliproxy:** harden gemini quota error fallbacks ([31b7d45](https://github.com/kaitranntt/ccs/commit/31b7d45b58a6929f168a25f724c56ccbd1dcc9fa))
* **cliproxy:** preserve auth-file source fallback ([63c8ec5](https://github.com/kaitranntt/ccs/commit/63c8ec5d7c8d5830bd514f812081fb31804564a8))
* **cliproxy:** preserve explicit Claude long-context intent ([c05189b](https://github.com/kaitranntt/ccs/commit/c05189b4b1e2d90ee6bb88a4024feef1f8dbe1b1)), closes [#789](https://github.com/kaitranntt/ccs/issues/789)
* **cliproxy:** restore live monitor provider attribution ([368a625](https://github.com/kaitranntt/ccs/commit/368a625d925a176a42e426d363aeb355a4f0657b))
* **cliproxy:** scope account stats by provider ([75ccbb3](https://github.com/kaitranntt/ccs/commit/75ccbb3ad13ee6d8b84ad7ef3aacb6b8994256c5))
* **cliproxy:** surface gemini quota failure details ([99f78f1](https://github.com/kaitranntt/ccs/commit/99f78f156a8bc329ee6524f2113a5fc643c0e131))
* **cliproxy:** surface quota metadata in CLI ([19f6b3c](https://github.com/kaitranntt/ccs/commit/19f6b3c4e65c514b42b331380065f34db9dc5405))
* **tests:** stabilize command help CI validation ([be4ba13](https://github.com/kaitranntt/ccs/commit/be4ba13e9654f177a417a7956228653efe1a6210))
* **ui:** clarify antigravity and gemini power mode copy ([4d49d13](https://github.com/kaitranntt/ccs/commit/4d49d13931537ad32a5588880e09212696354609))
* **ui:** constrain bounded code editor scroll viewports ([aeab284](https://github.com/kaitranntt/ccs/commit/aeab2840de0c69122c49dba1b6f286597e4d606a))
* **ui:** harden power user mode auth checks ([604f9fc](https://github.com/kaitranntt/ccs/commit/604f9fc78a72b6ee76cf0ecc44ea91a372c4a114))
* **ui:** resolve cliproxy account stats by provider ([1edc103](https://github.com/kaitranntt/ccs/commit/1edc10362adf1be3a6f06041929e2548614c73a6))
* **ui:** restore scrolling in bounded code editors ([44d4df1](https://github.com/kaitranntt/ccs/commit/44d4df12544a02572e5c1c68f70f73c80795fb29))

### Tests

* **cliproxy:** cover Claude long-context parity flows ([5e11bba](https://github.com/kaitranntt/ccs/commit/5e11bba5149d061879002ad88ca91f404c09522a)), closes [#789](https://github.com/kaitranntt/ccs/issues/789)
* **ui:** cover bounded code editor scroll mode ([823cf96](https://github.com/kaitranntt/ccs/commit/823cf96e7788cc9f69d65b97688c56df84e6b632))
* **ui:** cover bounded editor height contracts ([92d067d](https://github.com/kaitranntt/ccs/commit/92d067d0622c9a02c11b4b20b7416901a0929b4f))
* **ui:** cover Gemini power user auth bypass ([a15c729](https://github.com/kaitranntt/ccs/commit/a15c729079643344d130d4d522de3e874b6d0d03))

### CI

* **ai-review:** add --bare flag to prevent CLAUDE.md pollution in reviews ([57019c1](https://github.com/kaitranntt/ccs/commit/57019c1105e92f74ca4e556c7a3a03f7468b853e))
2026-03-26 22:24:05 +00:00
Kai (Tam Nhu) TranandGitHub 3c642af32f Merge pull request #808 from kaitranntt/dev
feat(release): promote dev to main
2026-03-26 18:22:23 -04:00
github-actions[bot] 8042abc9ee chore(release): 7.58.0-dev.4 [skip ci] 2026-03-26 22:20:37 +00:00
Kai (Tam Nhu) TranandGitHub b4ab51e813 Merge pull request #807 from kaitranntt/kai/fix/bare-ai-review
ci(ai-review): add --bare flag to prevent CLAUDE.md pollution
2026-03-26 18:19:10 -04:00
Tam Nhu Tran 41a31c8a4f fix(ci): resolve flaky api-command module resolution and migrate to self-hosted runner
Root cause: Bun's test runner fails to resolve exports from directory
index.ts files during parallel test execution. The api-command/index.ts
imports 8 subcommand modules — if any fail to load during concurrent
test runs, the entire module fails with "Export not found."

Fix: extract createApiCommandHandler into handler.ts (lightweight, only
imports named-command-router). Test imports from handler.ts directly,
bypassing the heavy index.ts that loads all subcommand modules.

Also:
- Remove stale api-command.ts barrel file
- Use explicit /index import paths in source
- Migrate CI validate to self-hosted runner with clean artifact step
- Disable Bun cache (no-cache: true) on self-hosted runner
2026-03-26 18:12:32 -04:00
Tam Nhu Tran 57019c1105 ci(ai-review): add --bare flag to prevent CLAUDE.md pollution in reviews
Review prompt already contains self-contained CCS-specific rules.
Loading project CLAUDE.md caused dev-oriented rules (no-emoji, quality
gates, branching) to leak into review output. --bare makes the review
prompt the sole source of truth and saves ~2K tokens per run.
2026-03-26 17:37:47 -04:00
Kai (Tam Nhu) TranandGitHub a5c765b221 Merge pull request #805 from kaitranntt/kai/fix/804-live-monitor-auth-index
fix(cliproxy): restore live monitor provider attribution
2026-03-26 17:37:01 -04:00
Kai (Tam Nhu) TranandGitHub 550316f1b3 Merge pull request #801 from kaitranntt/kai/fix/gemini-quota-error-surface
fix(cliproxy): surface gemini quota failure details
2026-03-26 17:22:38 -04:00
Tam Nhu Tran 63c8ec5d7c fix(cliproxy): preserve auth-file source fallback 2026-03-26 17:18:48 -04:00
Tam Nhu Tran 368a625d92 fix(cliproxy): restore live monitor provider attribution 2026-03-26 17:18:47 -04:00
Tam Nhu Tran 19f6b3c4e6 fix(cliproxy): surface quota metadata in CLI 2026-03-26 17:13:11 -04:00
Tam Nhu Tran 4d49d13931 fix(ui): clarify antigravity and gemini power mode copy 2026-03-26 17:13:11 -04:00
Tam Nhu Tran 31b7d45b58 fix(cliproxy): harden gemini quota error fallbacks 2026-03-26 17:13:11 -04:00
Tam Nhu Tran 99f78f156a fix(cliproxy): surface gemini quota failure details
- preserve structured HTTP/error metadata for Gemini quota failures

- keep upstream verification detail and actionable hints for dashboard users

- add regression coverage for 401, 403, and 429 Gemini quota responses
2026-03-26 17:13:11 -04:00