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-actions[bot]@users.noreply.github.com>
This commit is contained in:
Kai (Tam Nhu) Tran
2026-01-11 15:24:35 -05:00
committed by GitHub
co-authored by github-actions[bot] <github-actions[bot]@users.noreply.github.com>
parent affdaead80
commit e2e2ecda3c
3 changed files with 16 additions and 3 deletions
+7
View File
@@ -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 "<your review>"
```
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"
+1 -1
View File
@@ -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",
+8 -2
View File
@@ -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"
>
<SidebarMenuItem>
{/* Click navigates to overview AND opens submenu */}
<CollapsibleTrigger asChild>
<SidebarMenuButton tooltip={item.label}>
<SidebarMenuButton
tooltip={item.label}
isActive={isParentActive(item.children)}
onClick={() => navigate(item.path)}
>
{item.icon && <item.icon className="w-4 h-4" />}
<span className="group-data-[collapsible=icon]:hidden">
{item.label}