Commit Graph
1378 Commits
Author SHA1 Message Date
github-actions[bot] 8d634fece6 chore(release): 7.18.0-dev.4 [skip ci] 2026-01-11 19:50:56 +00:00
kaitranntt 12b68f9f13 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
2026-01-11 14:49:41 -05:00
github-actions[bot] 14f005a742 chore(release): 7.18.0-dev.3 [skip ci] 2026-01-09 06:20:17 +00:00
kaitranntt b7508910b6 chore: merge main into dev (resolve version conflict) 2026-01-09 01:19:09 -05:00
Kai (Tam Nhu) Tranandgithub-actions[bot] affdaead80 fix(delegation): improve profile discovery and CI workflow (#310)
* 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.2 [skip ci]

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-09 00:18:30 -06:00
Kai (Tam Nhu) Tran 1016cc47e2 Merge pull request #309 from kaitranntt/kai/fix/delegation-validator-config-only
fix(delegation): only check profiles defined in config.yaml
2026-01-09 00:17:04 -06:00
kaitranntt 0075248273 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.
2026-01-09 01:13:51 -05:00
github-actions[bot] 150b08fa6e chore(release): 7.18.0-dev.1 [skip ci] 2026-01-09 06:08:16 +00:00
Kai (Tam Nhu) Tran b080280ecc Merge pull request #308 from kaitranntt/kai/fix/delegation-dynamic-profiles
fix(doctor): use dynamic profile discovery for delegation check
2026-01-09 00:07:14 -06:00
kaitranntt ce70617ee9 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'.
2026-01-09 01:05:37 -05:00
kaitranntt f88ad8e781 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.
2026-01-09 00:18:35 -05:00
kaitranntt c8c1894272 fix(ui): reduce excessive AGY quota API requests
- Match staleTime to refetchInterval (60s) to prevent early refetches

- Disable refetchOnWindowFocus to prevent tab switch triggers

- Disable refetchOnMount to prevent HMR/navigation remount triggers
2026-01-09 00:11:18 -05:00
kaitranntt 7c5f36580a docs(cli): add extended thinking section to help
- W3: explain thinking levels (off/auto/low/medium/high/xhigh)

- W3: document supported providers (agy, gemini)
2026-01-08 16:56:31 -05:00
kaitranntt 35f28a6e77 fix(ui): add provider indicator, retry button, and optimistic locking
- U4: add blue info box showing supported providers

- W1: add inline retry button in error alert

- W4: track lastModified, handle 409 conflict with auto-refresh
2026-01-08 16:56:05 -05:00
kaitranntt ba19e1fcda fix(api): add optimistic locking for thinking config
- W4: return lastModified on GET /api/thinking

- W4: check mtime on PUT, return 409 on conflict
2026-01-08 16:55:45 -05:00
kaitranntt f7cc9f4653 fix(config): improve YAML error messages and thinking validation
- U3: show line/column/snippet for YAML syntax errors

- W2: warn when thinking: true used instead of object
2026-01-08 16:55:31 -05:00
kaitranntt d5652de634 fix(cliproxy): improve thinking flag validation and warnings
- U1: reject --thinking with no value (show usage hint)

- U2: warn when provider doesn't support thinking budget
2026-01-08 16:55:14 -05:00
kaitranntt 3ea549addd fix(ui): add thinking tab to URL sync conditional 2026-01-08 16:26:50 -05:00
kaitranntt b996153e7f fix(ui): add missing useThinkingConfig export to barrel file 2026-01-08 16:24:17 -05:00
kaitranntt 36bcc04133 fix(cliproxy): add case-insensitive model lookup
Normalize model IDs to lowercase for comparison in findModel()
2026-01-08 15:50:05 -05:00
kaitranntt b634f365f3 fix(ui): add fetch timeout and abort controller cleanup
- Add 10s timeout for API requests using AbortController
- Clean up pending requests on unmount to prevent memory leaks
2026-01-08 15:49:40 -05:00
kaitranntt 31b9520d54 fix(api): add override type and provider_overrides validation
- Reject objects/arrays for override field (only string/number)
- Validate provider_overrides keys and values against valid levels
2026-01-08 15:49:26 -05:00
kaitranntt 19e52399fe fix(config): add null guard and document nested paren limitation
- Add optional chaining for tier_defaults to prevent crash
- Document nested parenthesis matching limitation
2026-01-08 15:49:10 -05:00
kaitranntt 3060373797 fix(cli): add --thinking=value format and improve flag handling
- Support --thinking=value in addition to --thinking value
- Warn when multiple --thinking flags detected (uses first)
- Document intentional negative number blocking
2026-01-08 15:48:55 -05:00
kaitranntt 5f8d23c60b fix(cliproxy): add NaN/Infinity and empty string validation
- Add Number.isFinite() check to reject NaN/Infinity budgets
- Add explicit empty string handling before level validation
2026-01-08 15:48:39 -05:00
kaitranntt 3bd3e379fe test(cliproxy): add unit tests for thinking validator
- test budget bounds and constants

- test off/auto/level values handling

- test budget-type and level-type models

- test edge cases and unknown models

Refs #307
2026-01-08 15:20:37 -05:00
kaitranntt 0a95f361a2 feat(ui): add Thinking settings tab to dashboard
- add ThinkingSection with mode selector and tier defaults

- add useThinkingConfig hook for API integration

- add tab navigation for Thinking settings

- add ThinkingConfig types for UI

Refs #307
2026-01-08 15:20:12 -05:00
kaitranntt 9a2598fb61 feat(api): add /api/thinking endpoints for budget config
- GET /api/thinking returns current config

- PUT /api/thinking updates mode/override/tier_defaults

- validate override bounds and level names

Refs #307
2026-01-08 15:19:57 -05:00
kaitranntt 4d361b2ecf feat(cli): add --thinking flag for runtime budget override
- parse --thinking=value from CLI arguments

- pass thinking value to config generator

- update help command with --thinking documentation

Refs #307
2026-01-08 15:19:42 -05:00
kaitranntt 014b5e68b8 feat(cliproxy): inject thinking suffix into model config
- add getEffectiveThinkingValue() to resolve tier defaults

- append (budget) or (level) suffix to model ID

- validate thinking value against model capabilities

- respect mode: auto uses tier defaults, manual uses override

Refs #307
2026-01-08 15:19:15 -05:00
kaitranntt 0c2fd9cf5f feat(config): add ThinkingConfig to unified config
- add ThinkingConfig type with mode/override/tier_defaults

- add getThinkingConfig() and getEffectiveThinkingBudget() helpers

- support auto/off/manual modes with tier-based defaults

Refs #307
2026-01-08 15:19:00 -05:00
kaitranntt ebf7e04b72 feat(cliproxy): add ThinkingSupport to model catalog
- define ThinkingSupport interface (budget/levels/none types)

- add thinking config to agy and gemini models

- add getModelThinkingSupport() and supportsThinking() helpers

Refs #307
2026-01-08 15:18:44 -05:00
kaitranntt 82ef6804bb feat(cliproxy): add thinking budget validator module
- validate user-provided thinking values against model capabilities

- clamp out-of-range budgets, map invalid levels to closest valid

- export constants for budget bounds (MIN=0, MAX=100000)

- support off/auto/level names and numeric budgets

Refs #307
2026-01-08 15:18:29 -05:00
semantic-release-bot f290aae4cb chore(release): 7.18.0 [skip ci]
## [7.18.0](https://github.com/kaitranntt/ccs/compare/v7.17.0...v7.18.0) (2026-01-08)

### Features

* **codex:** inject OpenAI reasoning.effort per tier ([204eea0](https://github.com/kaitranntt/ccs/commit/204eea00ce006fd667ce8c9e71dad397423dae2d))

### Bug Fixes

* **ci:** only auto-review on PR opened, not synchronize ([6f65697](https://github.com/kaitranntt/ccs/commit/6f65697d74772751eb515d76c356f117aaa017d9))
* **cliproxy:** remove stable version cap, only v81-88 are faulty ([0abd021](https://github.com/kaitranntt/ccs/commit/0abd021d256513b88145f88c7a6a2d3a03e0746e))
* **codex-proxy:** security hardening and edge case fixes ([87cfcc5](https://github.com/kaitranntt/ccs/commit/87cfcc5b3cbecfdccaa56c1a02b24fb8b84eb654))

### Styles

* **ci:** enhance ai-review prompt with rich emoji formatting ([6dcc8b2](https://github.com/kaitranntt/ccs/commit/6dcc8b28601cba9067b248c9a6befb3f9c3e1d34))
2026-01-08 16:26:44 +00:00
Kai (Tam Nhu) Tran 348e9cf637 Merge pull request #305 from kaitranntt/dev
feat(codex): inject OpenAI reasoning.effort per tier
2026-01-08 10:25:40 -06:00
github-actions[bot] af65c832b9 chore(sync): merge main into dev after release [skip ci]
# Conflicts:
#	package.json
2026-01-08 16:20:17 +00:00
github-actions[bot] 79cfa30be7 chore(release): 7.17.0-dev.1 [skip ci] 2026-01-08 16:19:56 +00:00
semantic-release-bot c7a728ff85 chore(release): 7.17.0 [skip ci]
## [7.17.0](https://github.com/kaitranntt/ccs/compare/v7.16.0...v7.17.0) (2026-01-08)

### Features

* **ci:** migrate ai-review to claude-code-action with fork PR support ([#304](https://github.com/kaitranntt/ccs/issues/304)) ([5651935](https://github.com/kaitranntt/ccs/commit/5651935797f71e9cfcf658c701f48d6efa0d9fea)), closes [#298](https://github.com/kaitranntt/ccs/issues/298) [#302](https://github.com/kaitranntt/ccs/issues/302) [#289](https://github.com/kaitranntt/ccs/issues/289)

### Bug Fixes

* **ci:** only auto-review on PR opened, not synchronize ([211e642](https://github.com/kaitranntt/ccs/commit/211e6424f015242ee393b4227dfc649c81115369))
2026-01-08 16:19:49 +00:00
kaitranntt 0e5de5356d Merge branch 'main' into dev 2026-01-08 11:18:59 -05:00
kaitranntt 211e6424f0 fix(ci): only auto-review on PR opened, not synchronize
Removes synchronize trigger to prevent cancel-on-push issue.
Reviews now trigger:
- Auto: when PR is first opened
- Manual: via /review comment
- Manual: via workflow_dispatch

This prevents pushes from cancelling in-progress reviews.
Must be on main for pull_request_target to use updated workflow.
2026-01-08 11:18:41 -05:00
github-actions[bot] 432623fddc chore(release): 7.16.0-dev.9 [skip ci] 2026-01-08 16:11:49 +00:00
kaitranntt 6f65697d74 fix(ci): only auto-review on PR opened, not synchronize
Removes synchronize trigger to prevent cancel-on-push issue.
Reviews now trigger:
- Auto: when PR is first opened
- Manual: via /review comment
- Manual: via workflow_dispatch

This prevents pushes to dev from cancelling in-progress reviews.
2026-01-08 11:10:55 -05:00
github-actions[bot] 37a65e3a32 chore(release): 7.16.0-dev.8 [skip ci] 2026-01-08 16:08:03 +00:00
kaitranntt 6dcc8b2860 style(ci): enhance ai-review prompt with rich emoji formatting
- Add emojis to review focus areas and output sections
- Use priority color indicators (🔴/🟡/🟢)
- Add ⭐ for exceptional strengths
- Request tables for checklists
- Improve visual scannability
2026-01-08 11:06:55 -05:00
github-actions[bot] 55049120ae chore(release): 7.16.0-dev.7 [skip ci] 2026-01-08 15:50:52 +00:00
kaitranntt 0abd021d25 fix(cliproxy): remove stable version cap, only v81-88 are faulty
- Set CLIPROXY_MAX_STABLE_VERSION to 9.9.999-0 (effectively no cap)
- v89+ are all stable, no longer show experimental warning
- Only v81-88 remain marked as faulty with known bugs
- Simplified lifecycle.ts to remove redundant experimental warning
2026-01-08 10:49:37 -05:00
github-actions[bot] 40aa3367fb chore(release): 7.16.0-dev.6 [skip ci] 2026-01-08 15:43:34 +00:00
Kai (Tam Nhu) Tran 71a0f9e91a Merge pull request #301 from oscarlehuu/feat/codex-reasoning-effort
Codex: inject OpenAI reasoning.effort per tier
2026-01-08 09:42:35 -06:00
Kai (Tam Nhu) Tranandgithub-actions[bot] 5651935797 feat(ci): migrate ai-review to claude-code-action with fork PR support (#304)
* fix(ci): add persistent logging and remove turn/diff limits for AI review (#298)

- Remove --max-turns limit (unlimited exploration)
- Remove head -8000 diff limit (full diff)
- Add persistent logging to /opt/actions-runner/logs/ai-review/
- Save prompt, stdout, stderr, timing, metadata as separate files
- Add structured metadata.json with run details
- Separate stdout/stderr capture for better debugging
- Include debug info in failure comments (exit code, duration, log path)
- Retry without tool restrictions if first attempt fails

* fix(cliproxy): correct faulty version range to v81-85 and set v89 as stable (#302)

PR #289 incorrectly marked all v81+ as faulty. v89 confirmed stable.
- CLIPROXY_MAX_STABLE_VERSION: 6.6.80-0 → 6.6.89-0
- CLIPROXY_FAULTY_RANGE max: 6.6.999-0 → 6.6.85-0

* ci(github): migrate ai-review to claude-code-action with CLIProxy

- Replace manual claude CLI setup with anthropics/claude-code-action@v1
- Add REVIEW_MODEL env var for centralized model configuration
- Configure ANTHROPIC_BASE_URL for CLIProxy routing
- Enable track_progress for live PR comment updates
- Add model attribution footer instruction
- Restrict tools to gh pr commands, Read, Glob, Grep only
- Simplify workflow from 424 to 55 lines (-369 lines)

* chore(release): 7.16.0-dev.1 [skip ci]

* fix(ci): skip ai-review when secrets unavailable

Add secrets check to job condition to gracefully skip on fork PRs
where CCS_REVIEWER_APP_ID secret is not accessible

* chore(release): 7.16.0-dev.2 [skip ci]

* feat(ci): enable ai-review for fork PRs via pull_request_target

Use pull_request_target event to allow secrets access for fork PRs.
Safe for code review since we only read diff, not execute fork code.

* chore(release): 7.16.0-dev.3 [skip ci]

* fix(ci): disable track_progress for workflow_dispatch

* chore(release): 7.16.0-dev.4 [skip ci]

* fix(ci): clear Claude install locks before each run

* perf(ci): use pre-installed Claude executable on runner

* chore(release): 7.16.0-dev.5 [skip ci]

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-08 09:33:21 -06:00
semantic-release-bot 80e2124f63 chore(release): 7.16.0 [skip ci]
## [7.16.0](https://github.com/kaitranntt/ccs/compare/v7.15.0...v7.16.0) (2026-01-08)

### Features

* **ci:** add workflow_dispatch for AI review ([#291](https://github.com/kaitranntt/ccs/issues/291)) ([b6d6520](https://github.com/kaitranntt/ccs/commit/b6d65209cd9ba8616179c6c75c38b47732bb8858)), closes [#289](https://github.com/kaitranntt/ccs/issues/289)
* **ci:** AI code review workflow with Claude Code CLI ([#295](https://github.com/kaitranntt/ccs/issues/295)) ([c915ca5](https://github.com/kaitranntt/ccs/commit/c915ca5922e2ed5b8169a91b480136856885ae80)), closes [#289](https://github.com/kaitranntt/ccs/issues/289) [#293](https://github.com/kaitranntt/ccs/issues/293) [#294](https://github.com/kaitranntt/ccs/issues/294) [#296](https://github.com/kaitranntt/ccs/issues/296)
* **ci:** Claude Code CLI for AI reviews ([#290](https://github.com/kaitranntt/ccs/issues/290)) ([49c4d29](https://github.com/kaitranntt/ccs/commit/49c4d299c03d477c5492e82d559f0f3a1831f062))

### Bug Fixes

* **cliproxy:** update version range and add persistent AI review logging ([#303](https://github.com/kaitranntt/ccs/issues/303)) ([6e0bf7c](https://github.com/kaitranntt/ccs/commit/6e0bf7cb1b07d1a9960f7a44a24c80a08b2df3c3)), closes [#298](https://github.com/kaitranntt/ccs/issues/298) [#302](https://github.com/kaitranntt/ccs/issues/302) [#289](https://github.com/kaitranntt/ccs/issues/289)
2026-01-08 14:16:35 +00:00