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] 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}