From e2e2ecda3c1948fb90f9b47b1e31782ef30cc31f Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Sun, 11 Jan 2026 15:24:35 -0500 Subject: [PATCH 01/12] fix(ui): improve sidebar navigation for collapsible menu items (#313) * fix(doctor): use dynamic profile discovery for delegation check Replace hardcoded ['glm', 'kimi'] list with DelegationValidator.getReadyProfiles() to detect all configured *.settings.json profiles including mm, or1, g7, etc. * fix(ci): exclude bot comments from triggering AI review Bot progress comments were triggering new workflow runs, which cancelled in-progress reviews due to concurrency group. Added check for github.event.comment.user.type != 'Bot'. * chore(release): 7.18.0-dev.1 [skip ci] * fix(delegation): only check profiles defined in config.yaml Previously getReadyProfiles() scanned all *.settings.json files, including orphan files (ghcp, kiro) not in config.yaml. Now reads from config.yaml: - profiles section (excluding 'default') - cliproxy.providers section Fixes doctor showing 11 profiles instead of configured 9. * chore(release): 7.18.0-dev.3 [skip ci] * fix(ui): improve sidebar navigation for collapsible menu items - CLIProxy Plus click now navigates to Overview AND opens submenu - Parent menu item highlights when any child route is active - Provides consistent visual hierarchy across all collapsible menus * chore(release): 7.18.0-dev.4 [skip ci] * fix(ci): add explicit instruction to post review as PR comment The AI reviewer was completing the review but not posting it because the prompt didn't explicitly instruct it to use gh pr comment. * chore(release): 7.18.0-dev.5 [skip ci] --------- Co-authored-by: github-actions[bot] --- .github/workflows/ai-review.yml | 7 +++++++ package.json | 2 +- ui/src/components/layout/app-sidebar.tsx | 10 ++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml index 7ba104ef..9e0a7f53 100644 --- a/.github/workflows/ai-review.yml +++ b/.github/workflows/ai-review.yml @@ -127,6 +127,13 @@ jobs: End your review with: > πŸ€– Reviewed by `${{ env.REVIEW_MODEL }}` + ## IMPORTANT: Posting the Review + After completing your analysis, you MUST post the review as a PR comment using: + ``` + gh pr comment ${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} --body "" + ``` + Use a heredoc for the body to handle multi-line content properly. + claude_args: | --model ${{ env.REVIEW_MODEL }} --allowedTools "Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Read,Glob,Grep" diff --git a/package.json b/package.json index 816b1221..2a5f67a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.0-dev.2", + "version": "7.18.0-dev.5", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", diff --git a/ui/src/components/layout/app-sidebar.tsx b/ui/src/components/layout/app-sidebar.tsx index bd5b489a..dc5da3b4 100644 --- a/ui/src/components/layout/app-sidebar.tsx +++ b/ui/src/components/layout/app-sidebar.tsx @@ -1,4 +1,4 @@ -import { Link, useLocation } from 'react-router-dom'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; import { Home, Key, @@ -85,6 +85,7 @@ const navGroups = [ export function AppSidebar() { const location = useLocation(); + const navigate = useNavigate(); const { state } = useSidebar(); // Helper to check if a route is active (exact match) @@ -118,8 +119,13 @@ export function AppSidebar() { className="group/collapsible" > + {/* Click navigates to overview AND opens submenu */} - + navigate(item.path)} + > {item.icon && } {item.label} From 22c7d4a20d96d12a2c38ec60d226a6bc26dce9b0 Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Tue, 13 Jan 2026 11:36:14 -0500 Subject: [PATCH 02/12] feat(doctor): add --help flag with comprehensive command documentation - Add showHelp() with usage, options, checks, examples, exit codes - Update handleDoctorCommand to accept args array instead of boolean - Update ccs.ts to pass restArgs to doctor command - Add doctor to CLAUDE.md Help Location Reference table --- CLAUDE.md | 10 ++++-- src/ccs.ts | 4 +-- src/commands/doctor-command.ts | 66 +++++++++++++++++++++++++++++++--- 3 files changed, 71 insertions(+), 9 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4142f8dc..5404a1a4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -109,10 +109,14 @@ bun run validate # Step 3: Final check (must pass) | Command | Help Handler Location | |---------|----------------------| | `ccs --help` | `src/commands/help-command.ts` | +| `ccs api --help` | `src/commands/api-command.ts` β†’ `showHelp()` | +| `ccs cleanup --help` | `src/commands/cleanup-command.ts` β†’ `printHelp()` | | `ccs cliproxy --help` | `src/commands/cliproxy-command.ts` β†’ `showHelp()` | -| `ccs auth --help` | `src/commands/auth-command.ts` | -| `ccs api --help` | `src/commands/api-command.ts` | -| `ccs copilot --help` | `src/commands/copilot-command.ts` | +| `ccs config --help` | `src/commands/config-command.ts` β†’ `showHelp()` | +| `ccs copilot --help` | `src/commands/copilot-command.ts` β†’ `handleHelp()` | +| `ccs doctor --help` | `src/commands/doctor-command.ts` β†’ `showHelp()` | +| `ccs migrate --help` | `src/commands/migrate-command.ts` β†’ `printMigrateHelp()` | +| `ccs setup --help` | `src/commands/setup-command.ts` β†’ `showHelp()` | **Note:** `lib/ccs` and `lib/ccs.ps1` are bootstrap wrappers onlyβ€”they delegate to Node.js and contain no help text. diff --git a/src/ccs.ts b/src/ccs.ts index bcfb2cc9..ca9c10d4 100644 --- a/src/ccs.ts +++ b/src/ccs.ts @@ -340,8 +340,8 @@ async function main(): Promise { // Special case: doctor command if (firstArg === 'doctor' || firstArg === '--doctor') { - const shouldFix = args.includes('--fix') || args.includes('-f'); - await handleDoctorCommand(shouldFix); + const restArgs = args.slice(args.indexOf(firstArg) + 1); + await handleDoctorCommand(restArgs); return; } diff --git a/src/commands/doctor-command.ts b/src/commands/doctor-command.ts index 6f4c7c65..5c4c9580 100644 --- a/src/commands/doctor-command.ts +++ b/src/commands/doctor-command.ts @@ -4,22 +4,80 @@ * Handle doctor command for CCS. */ +import { initUI, header, dim, color, subheader } from '../utils/ui'; + +/** + * Show help for doctor command + */ +function showHelp(): void { + console.log(''); + console.log(header('ccs doctor')); + console.log(''); + console.log(' Run health diagnostics on CCS installation.'); + console.log(''); + + console.log(subheader('Usage:')); + console.log(` ${color('ccs doctor', 'command')} [options]`); + console.log(''); + + console.log(subheader('Options:')); + console.log(` ${color('--fix, -f', 'command')} Attempt to auto-fix detected issues`); + console.log(` ${color('--help, -h', 'command')} Show this help message`); + console.log(''); + + console.log(subheader('Checks performed:')); + console.log(` ${dim('-')} Config files (config.yaml, config.json)`); + console.log(` ${dim('-')} CLIProxy installation and process status`); + console.log(` ${dim('-')} OAuth port availability (8085, 1455, 51121)`); + console.log(` ${dim('-')} Symlink integrity (shared settings)`); + console.log(` ${dim('-')} Profile configuration validity`); + console.log(''); + + console.log(subheader('Auto-fix capabilities:')); + console.log(` ${dim('-')} Kill zombie CLIProxy processes`); + console.log(` ${dim('-')} Free blocked OAuth callback ports`); + console.log(` ${dim('-')} Regenerate outdated CLIProxy config`); + console.log(` ${dim('-')} Restore broken shared settings symlinks`); + console.log(''); + + console.log(subheader('Examples:')); + console.log( + ` $ ${color('ccs doctor', 'command')} ${dim('# Run diagnostics (read-only)')}` + ); + console.log( + ` $ ${color('ccs doctor --fix', 'command')} ${dim('# Run diagnostics and fix issues')}` + ); + console.log(''); + + console.log(subheader('Exit codes:')); + console.log(` ${color('0', 'command')} All checks passed`); + console.log(` ${color('1', 'command')} One or more checks failed`); + console.log(''); +} + /** * Handle doctor command - * @param shouldFix - If true, attempt to fix detected issues + * @param args - Command line arguments */ -export async function handleDoctorCommand(shouldFix = false): Promise { +export async function handleDoctorCommand(args: string[]): Promise { + await initUI(); + + if (args.includes('--help') || args.includes('-h')) { + showHelp(); + return; + } + + const shouldFix = args.includes('--fix') || args.includes('-f'); + const DoctorModule = await import('../management/doctor'); const Doctor = DoctorModule.default; const doctor = new Doctor(); await doctor.runAllChecks(); - // Attempt to fix issues if --fix flag provided if (shouldFix) { await doctor.fixIssues(); } - // Exit with error code if unhealthy process.exit(doctor.isHealthy() ? 0 : 1); } From 120aca466d646ee1c770b2712a0d2742d5dd62d6 Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Tue, 13 Jan 2026 13:41:30 -0500 Subject: [PATCH 03/12] fix(ci): prevent self-cancelling AI review workflow Root cause: Bot progress comments triggered issue_comment events, which created new workflow runs with the same concurrency group, causing cancel-in-progress to kill the original review. Fixes: 1. Add event_name to concurrency group (prevents cross-event cancellation) 2. Explicit filter for ccs-agy-reviewer[bot] comments (belt-and-suspenders) Closes race condition causing 25+ cancelled AI review runs. --- .github/workflows/ai-review.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml index 9e0a7f53..cb017413 100644 --- a/.github/workflows/ai-review.yml +++ b/.github/workflows/ai-review.yml @@ -21,9 +21,10 @@ on: required: true type: string -# Cancel in-progress runs for same PR (safe now since auto-trigger is only on opened) +# Cancel in-progress runs for same PR + event type (prevents self-cancellation from bot comments) +# Each event type gets its own concurrency group to prevent cross-event cancellation concurrency: - group: ai-review-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} + group: ai-review-${{ github.event_name }}-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} cancel-in-progress: true jobs: @@ -38,14 +39,16 @@ jobs: # Conditions: # - PR event: only on opened (not synchronize to avoid cancel-on-push) - # - Comment event: only if it's a PR, contains /review, and NOT from a bot + # - Comment event: only if it's a PR, contains /review, NOT from a bot, and NOT from our review bot + # The explicit bot name check prevents self-triggering from progress comments if: > github.event_name == 'pull_request_target' || github.event_name == 'workflow_dispatch' || (github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '/review') && - github.event.comment.user.type != 'Bot') + github.event.comment.user.type != 'Bot' && + github.event.comment.user.login != 'ccs-agy-reviewer[bot]') # CLIProxy environment for model routing env: From 28f3206a201d9267a12ddf58e61f0662e570eb02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 13 Jan 2026 18:42:48 +0000 Subject: [PATCH 04/12] chore(release): 7.18.0-dev.6 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a5f67a2..904fd62e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.0-dev.5", + "version": "7.18.0-dev.6", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From a6346dc3933b445f19b0aa396460ab63d1143eef Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 13 Jan 2026 18:45:15 +0000 Subject: [PATCH 05/12] chore(release): 7.18.1 [skip ci] ## [7.18.1](https://github.com/kaitranntt/ccs/compare/v7.18.0...v7.18.1) (2026-01-13) ### Bug Fixes * **ci:** add explicit instruction to post review as PR comment ([85f6bc0](https://github.com/kaitranntt/ccs/commit/85f6bc07d44f54673163ad4fed6045a37ccabad0)) * **ci:** exclude bot comments from triggering AI review ([ce70617](https://github.com/kaitranntt/ccs/commit/ce70617ee94645399ba05af581240a696ca9cfed)) * **ci:** prevent self-cancelling AI review workflow ([120aca4](https://github.com/kaitranntt/ccs/commit/120aca466d646ee1c770b2712a0d2742d5dd62d6)) * **ci:** prevent self-cancelling AI review workflow ([#321](https://github.com/kaitranntt/ccs/issues/321)) ([fa1899f](https://github.com/kaitranntt/ccs/commit/fa1899f4611d570b2a8bf5e1a5342d5392466263)) * **delegation:** improve profile discovery and CI workflow ([#310](https://github.com/kaitranntt/ccs/issues/310)) ([affdaea](https://github.com/kaitranntt/ccs/commit/affdaead80c3635f49ef562cac81bde8db0cab23)) * **delegation:** only check profiles defined in config.yaml ([0075248](https://github.com/kaitranntt/ccs/commit/0075248273e2d4912c4e277deebd6e668c5b3466)) * **doctor:** use dynamic profile discovery for delegation check ([f88ad8e](https://github.com/kaitranntt/ccs/commit/f88ad8e78198302f68ee0b420075d704ab01d8ff)) * **ui:** improve sidebar navigation for collapsible menu items ([12b68f9](https://github.com/kaitranntt/ccs/commit/12b68f9f136c3529ac976eaec9e8903b43185e89)) * **ui:** improve sidebar navigation for collapsible menu items ([#313](https://github.com/kaitranntt/ccs/issues/313)) ([e2e2ecd](https://github.com/kaitranntt/ccs/commit/e2e2ecda3c1948fb90f9b47b1e31782ef30cc31f)) --- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c70b543e..749e1b65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [7.18.1](https://github.com/kaitranntt/ccs/compare/v7.18.0...v7.18.1) (2026-01-13) + +### Bug Fixes + +* **ci:** add explicit instruction to post review as PR comment ([85f6bc0](https://github.com/kaitranntt/ccs/commit/85f6bc07d44f54673163ad4fed6045a37ccabad0)) +* **ci:** exclude bot comments from triggering AI review ([ce70617](https://github.com/kaitranntt/ccs/commit/ce70617ee94645399ba05af581240a696ca9cfed)) +* **ci:** prevent self-cancelling AI review workflow ([120aca4](https://github.com/kaitranntt/ccs/commit/120aca466d646ee1c770b2712a0d2742d5dd62d6)) +* **ci:** prevent self-cancelling AI review workflow ([#321](https://github.com/kaitranntt/ccs/issues/321)) ([fa1899f](https://github.com/kaitranntt/ccs/commit/fa1899f4611d570b2a8bf5e1a5342d5392466263)) +* **delegation:** improve profile discovery and CI workflow ([#310](https://github.com/kaitranntt/ccs/issues/310)) ([affdaea](https://github.com/kaitranntt/ccs/commit/affdaead80c3635f49ef562cac81bde8db0cab23)) +* **delegation:** only check profiles defined in config.yaml ([0075248](https://github.com/kaitranntt/ccs/commit/0075248273e2d4912c4e277deebd6e668c5b3466)) +* **doctor:** use dynamic profile discovery for delegation check ([f88ad8e](https://github.com/kaitranntt/ccs/commit/f88ad8e78198302f68ee0b420075d704ab01d8ff)) +* **ui:** improve sidebar navigation for collapsible menu items ([12b68f9](https://github.com/kaitranntt/ccs/commit/12b68f9f136c3529ac976eaec9e8903b43185e89)) +* **ui:** improve sidebar navigation for collapsible menu items ([#313](https://github.com/kaitranntt/ccs/issues/313)) ([e2e2ecd](https://github.com/kaitranntt/ccs/commit/e2e2ecda3c1948fb90f9b47b1e31782ef30cc31f)) + ## [7.18.0](https://github.com/kaitranntt/ccs/compare/v7.17.0...v7.18.0) (2026-01-08) ### Features diff --git a/package.json b/package.json index 904fd62e..4020d6c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.0-dev.6", + "version": "7.18.1", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From 316350905233d776968f53732974a77997513f24 Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Tue, 13 Jan 2026 13:49:06 -0500 Subject: [PATCH 06/12] fix(ci): isolate concurrency groups by comment author Previous fix was incomplete - both human /review comments and bot progress comments were issue_comment events sharing the same concurrency group. Now includes comment author in concurrency group: - Human: ai-review-issue_comment-kaitranntt-320 - Bot: ai-review-issue_comment-ccs-agy-reviewer[bot]-320 - PR/dispatch: ai-review--system-320 This completely isolates bot activity from human-triggered reviews. --- .github/workflows/ai-review.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml index cb017413..78a02e9f 100644 --- a/.github/workflows/ai-review.yml +++ b/.github/workflows/ai-review.yml @@ -21,10 +21,12 @@ on: required: true type: string -# Cancel in-progress runs for same PR + event type (prevents self-cancellation from bot comments) -# Each event type gets its own concurrency group to prevent cross-event cancellation +# Concurrency strategy: +# - For issue_comment: include comment author to isolate bot progress comments from human /review requests +# - For other events: use event_name + PR number +# This prevents bot progress comments from cancelling active reviews concurrency: - group: ai-review-${{ github.event_name }}-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} + group: ai-review-${{ github.event_name }}-${{ github.event.comment.user.login || 'system' }}-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} cancel-in-progress: true jobs: From c122754dd1336e5e1d30d9af90ef559f7048cc25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 13 Jan 2026 18:50:17 +0000 Subject: [PATCH 07/12] chore(release): 7.18.1-dev.1 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4020d6c2..bc63f9d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.1", + "version": "7.18.1-dev.1", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From 7355360e8c12897b733b318a17fab30daab5bcee Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 13 Jan 2026 18:50:44 +0000 Subject: [PATCH 08/12] chore(release): 7.18.2 [skip ci] ## [7.18.2](https://github.com/kaitranntt/ccs/compare/v7.18.1...v7.18.2) (2026-01-13) ### Bug Fixes * **ci:** isolate concurrency groups by comment author ([3163509](https://github.com/kaitranntt/ccs/commit/316350905233d776968f53732974a77997513f24)) * **ci:** isolate concurrency groups by comment author ([#322](https://github.com/kaitranntt/ccs/issues/322)) ([1d33012](https://github.com/kaitranntt/ccs/commit/1d33012b4e5ad02bac63f9b559f64c3efdf26044)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 749e1b65..cffcf048 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [7.18.2](https://github.com/kaitranntt/ccs/compare/v7.18.1...v7.18.2) (2026-01-13) + +### Bug Fixes + +* **ci:** isolate concurrency groups by comment author ([3163509](https://github.com/kaitranntt/ccs/commit/316350905233d776968f53732974a77997513f24)) +* **ci:** isolate concurrency groups by comment author ([#322](https://github.com/kaitranntt/ccs/issues/322)) ([1d33012](https://github.com/kaitranntt/ccs/commit/1d33012b4e5ad02bac63f9b559f64c3efdf26044)) + ## [7.18.1](https://github.com/kaitranntt/ccs/compare/v7.18.0...v7.18.1) (2026-01-13) ### Bug Fixes diff --git a/package.json b/package.json index 4020d6c2..eb20e55d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.1", + "version": "7.18.2", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From 4ef2d4848cf12d197ba1f8cd5dac66b55c82c8be Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Tue, 13 Jan 2026 14:00:02 -0500 Subject: [PATCH 09/12] fix(ci): simplify AI review workflow by disabling progress tracking Root cause of cancellations was track_progress posting comments that triggered new workflow runs. Instead of complex concurrency isolation, simply disable progress tracking. Changes: - track_progress: false (no intermediate comments) - Simple concurrency: ai-review- - Removed extra bot filters (no longer needed) Result: Clean PRs with just the final review comment. --- .github/workflows/ai-review.yml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml index 78a02e9f..0334ab36 100644 --- a/.github/workflows/ai-review.yml +++ b/.github/workflows/ai-review.yml @@ -21,12 +21,10 @@ on: required: true type: string -# Concurrency strategy: -# - For issue_comment: include comment author to isolate bot progress comments from human /review requests -# - For other events: use event_name + PR number -# This prevents bot progress comments from cancelling active reviews +# Simple concurrency: one review per PR at a time +# With track_progress disabled, no bot comments are posted during review concurrency: - group: ai-review-${{ github.event_name }}-${{ github.event.comment.user.login || 'system' }}-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} + group: ai-review-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} cancel-in-progress: true jobs: @@ -41,16 +39,14 @@ jobs: # Conditions: # - PR event: only on opened (not synchronize to avoid cancel-on-push) - # - Comment event: only if it's a PR, contains /review, NOT from a bot, and NOT from our review bot - # The explicit bot name check prevents self-triggering from progress comments + # - Comment event: only if it's a PR, contains /review, and NOT from a bot if: > github.event_name == 'pull_request_target' || github.event_name == 'workflow_dispatch' || (github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '/review') && - github.event.comment.user.type != 'Bot' && - github.event.comment.user.login != 'ccs-agy-reviewer[bot]') + github.event.comment.user.type != 'Bot') # CLIProxy environment for model routing env: @@ -97,7 +93,7 @@ jobs: anthropic_api_key: ${{ secrets.CLIPROXY_API_KEY }} github_token: ${{ steps.app-token.outputs.token }} path_to_claude_code_executable: /home/github-runner/.local/bin/claude - track_progress: ${{ github.event_name != 'workflow_dispatch' }} + track_progress: false # Disabled - no progress comments, just final review prompt: | ultrathink From dfe0e2d5ba95117b5c419666d5eb9da0f6011c27 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 13 Jan 2026 19:01:15 +0000 Subject: [PATCH 10/12] chore(release): 7.18.2-dev.1 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eb20e55d..dd69cfb8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.2", + "version": "7.18.2-dev.1", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From 75609221b1db8de5c2557a7d3e674c02fd02cdc7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 13 Jan 2026 19:01:33 +0000 Subject: [PATCH 11/12] chore(release): 7.18.3 [skip ci] ## [7.18.3](https://github.com/kaitranntt/ccs/compare/v7.18.2...v7.18.3) (2026-01-13) ### Bug Fixes * **ci:** simplify AI review workflow by disabling progress tracking ([4ef2d48](https://github.com/kaitranntt/ccs/commit/4ef2d4848cf12d197ba1f8cd5dac66b55c82c8be)) * **ci:** simplify AI review workflow by disabling progress tracking ([#323](https://github.com/kaitranntt/ccs/issues/323)) ([39b37ca](https://github.com/kaitranntt/ccs/commit/39b37caa892f8b723f003c8ed0c6d8f2fe96d799)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cffcf048..ae9db056 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [7.18.3](https://github.com/kaitranntt/ccs/compare/v7.18.2...v7.18.3) (2026-01-13) + +### Bug Fixes + +* **ci:** simplify AI review workflow by disabling progress tracking ([4ef2d48](https://github.com/kaitranntt/ccs/commit/4ef2d4848cf12d197ba1f8cd5dac66b55c82c8be)) +* **ci:** simplify AI review workflow by disabling progress tracking ([#323](https://github.com/kaitranntt/ccs/issues/323)) ([39b37ca](https://github.com/kaitranntt/ccs/commit/39b37caa892f8b723f003c8ed0c6d8f2fe96d799)) + ## [7.18.2](https://github.com/kaitranntt/ccs/compare/v7.18.1...v7.18.2) (2026-01-13) ### Bug Fixes diff --git a/package.json b/package.json index eb20e55d..949f723e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.2", + "version": "7.18.3", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli", From 097b0185324df4a510bd40ddb238d63a0f42be11 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 13 Jan 2026 19:22:20 +0000 Subject: [PATCH 12/12] chore(release): 7.18.3-dev.1 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 949f723e..bb4381e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.3", + "version": "7.18.3-dev.1", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli",