Commit Graph
3400 Commits
Author SHA1 Message Date
Sergey Galuza de0f8b3264 test(model-pricing): add cache pricing coverage for Opus 4.7
Mirrors the existing `claude-opus-4-6` cache pricing test for both
`claude-opus-4-7` and `claude-opus-4-7-thinking` to explicitly
validate cache creation/read rates in end-to-end cost calculation.

Addresses PResto atrvd/ccs#8 issue #6 (suggestion).

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 19:24:43 +02:00
Sergey Galuza 7492688eff test(cliproxy): cover Claude Opus 4.7 in Claude provider catalog
Adds a unit test verifying that `claude-opus-4-7` is registered in
the `claude` provider with its provider-specific settings:

- `thinking.zeroAllowed: false` (contrasts with AGY where it is true)
- `extendedContext: true` (1M context via Anthropic API)

Addresses PResto atrvd/ccs#8 issue #4 (suggestion).

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 19:00:39 +02:00
Sergey Galuza 0d09199439 fix(cliproxy): address Presto review feedback on Opus 4.7
- model-catalog: change `claude-opus-4-7` description from "Latest
  flagship without thinking" to "Latest flagship model". The model
  supports thinking budget (min 1024, max 128000) but doesn't enable
  it by default; the old wording implied no thinking support, which
  was misleading. Aligns with the `claude` provider's description.

- generator: add DEFAULT_ANTIGRAVITY_ALIASES entry for non-thinking
  `claude-opus-4-7`, restoring symmetry with `claude-sonnet-4-6`
  (which has both -thinking and non-thinking aliases). Bump
  CLIPROXY_CONFIG_VERSION 18 → 19 to trigger regeneration on upgrade.

Addresses PResto atrvd/ccs#8 issues #2 (important) and #3 (suggestion).

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 18:43:15 +02:00
Sergey Galuza faca421705 docs(cliproxy): document v18 config bump for Opus 4.7
Addresses PResto review (atrvd/ccs#8, issue #1): bumping
CLIPROXY_CONFIG_VERSION 17→18 was missing a changelog entry in the
header comment. Adds the v18 line to preserve regeneration history.

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 18:14:15 +02:00
Sergey Galuza 61058123e1 feat(cliproxy): add Claude Opus 4.7 support
Adds Claude Opus 4.7 as a new model to the AGY (Antigravity) and Claude
provider catalogs, with pricing, Cursor IDE support, and updated defaults
across the codebase.

- Add claude-opus-4-7-thinking and claude-opus-4-7 to AGY catalog
  (defaultModel bumped to claude-opus-4-7-thinking)
- Add claude-opus-4-7 entry to Claude provider catalog
- Register claude-opus-4-7-thinking fork alias in CLIProxy config
  (CLIPROXY_CONFIG_VERSION bumped 17 -> 18)
- Add pricing for claude-opus-4-7 and claude-opus-4-7-thinking
  ($5/$25 per million, matching Opus 4.6)
- Add claude-4.7-opus and claude-4.7-opus-fast-mode to Cursor catalog
- Update ANTHROPIC_DEFAULT_OPUS_MODEL in base-claude settings to 4.7
- Update Droid adapter and code-reviewer fallback models to 4.7
- Update unit tests for model-catalog and model-pricing

Opus 4.6 is retained as a supported fallback in both catalogs.

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 17:49:18 +02:00
Sergey Galuza dea704c57d fix(husky): re-exec pre-push under bash for sh compatibility
Husky v9 invokes hooks via `sh -e` regardless of the script's shebang,
causing `set -o pipefail` and bash regex `[[ =~ ]]` in .husky/pre-push
to fail with "Illegal option -o pipefail" on systems where /bin/sh is
not bash (Debian/Ubuntu dash).

Add a POSIX-compatible preamble that re-execs the script under bash
when invoked without BASH_VERSION. No changes to gate logic.

Built [OnSteroids](https://onsteroids.ai)
2026-04-20 17:23:27 +02:00
Sergey Galuza 91acec692a Merge remote-tracking branch 'upstream/main' 2026-04-20 17:19:23 +02:00
semantic-release-bot 513896b1af chore(release): 7.73.0 [skip ci]
## [7.73.0](https://github.com/kaitranntt/ccs/compare/v7.72.1...v7.73.0) (2026-04-19)

### Features

* **proxy:** enhance Anthropic-to-OpenAI message transformation and schema sanitization ([2672e35](https://github.com/kaitranntt/ccs/commit/2672e35362938b054710de681760bd24c3c39e19))

### Bug Fixes

* **browser:** bootstrap managed attach profile setup ([b525033](https://github.com/kaitranntt/ccs/commit/b52503300b0c434fbb9d88283643d3ceaa673d44))
* **cliproxy:** preserve legacy openai-compat connectors on restart ([16f81fc](https://github.com/kaitranntt/ccs/commit/16f81fc8a595792f1c1a6df060f88cdf28d7afb6))
* **codex:** probe Windows cmd wrappers via cmd shell ([210ec33](https://github.com/kaitranntt/ccs/commit/210ec33c04fe88be2b651c2163f638085b1b6bd2))
* **proxy:** harden Anthropic request transformation semantics ([ebc9219](https://github.com/kaitranntt/ccs/commit/ebc92194bb9bf2810e10f64de1fa6e599c2fa156))
* **proxy:** preserve valid enums during schema normalization ([22ab58b](https://github.com/kaitranntt/ccs/commit/22ab58b02e5dc34f152ecce048c1fbf7d615bdfb))
* **proxy:** restore strict Anthropic message validation ([32d6bfd](https://github.com/kaitranntt/ccs/commit/32d6bfdda7881a42a376d0973c021f0b47eed7e2))
* **repo:** remove tracked plans workspace files ([bc4ab98](https://github.com/kaitranntt/ccs/commit/bc4ab98af41e9c9f049cc5da2e6ff356832ef14b))
* **targets:** use cmd.exe for escaped Windows wrapper launches ([a945b0b](https://github.com/kaitranntt/ccs/commit/a945b0b1047b85a7b343dfe35d8ae9680346e25f))
* **windows:** align escaped wrapper shell handling ([ccdd0b6](https://github.com/kaitranntt/ccs/commit/ccdd0b6e8e4185ec2b01186cfc69e28f171d0906))

### Tests

* **cliproxy:** assert routing persistence via unified config loader ([485fe4b](https://github.com/kaitranntt/ccs/commit/485fe4ba1c5878083c6e2b6a2d98b37208772a1f))
* **cliproxy:** cover legacy connector removal cleanup ([00d902b](https://github.com/kaitranntt/ccs/commit/00d902b6e64839cd6b89446cc5dee540f2a059b8))
* **cliproxy:** isolate routing strategy service state ([5e1e807](https://github.com/kaitranntt/ccs/commit/5e1e8070e821dbe660ea77bc96fec610937ed44a))
* **websearch:** clear CCS_PROFILE_TYPE in SearXNG fallback spawn env ([e25d791](https://github.com/kaitranntt/ccs/commit/e25d791d9bee38e7143757d37c42bd850e471ae8))

### CI

* add concurrency group and split build/test with artifact sharing ([ad54e17](https://github.com/kaitranntt/ccs/commit/ad54e179b6a3921fd26ad3ac585f5ef965b01c1b))
* **pre-push:** skip gate for delete-only pushes ([6236cb7](https://github.com/kaitranntt/ccs/commit/6236cb7feb15e954f7f65ae98e6fd98b323a4adb))
2026-04-19 21:38:12 +00:00
Kai (Tam Nhu) TranandGitHub 92a2419a05 Merge pull request #1048 from kaitranntt/dev
chore: promote dev to main
2026-04-19 17:35:37 -04:00
Kai (Tam Nhu) TranandGitHub ba0a7ccd60 Merge pull request #1046 from kaitranntt/kai/fix/remove-tracked-plans
fix(repo): remove tracked plans workspace files
2026-04-19 17:31:02 -04:00
Tam Nhu Tran bc4ab98af4 fix(repo): remove tracked plans workspace files 2026-04-19 17:22:40 -04:00
Tam Nhu Tran 6236cb7feb ci(pre-push): skip gate for delete-only pushes
Git passes refs on stdin; deletes have local-sha = 40 zeros. Running the
full parity gate just to delete an already-merged branch wastes ~90s per
cleanup. Guard short-circuits when every ref being pushed is a delete.
2026-04-19 15:52:41 -04:00
github-actions[bot] 719ba177fb chore(release): 7.72.1-dev.7 [skip ci] 2026-04-19 19:45:13 +00:00
Kai (Tam Nhu) TranandGitHub 14e2249564 Merge pull request #1045 from kaitranntt/kai/chore/ci-optimization-pass
ci: concurrency group + split build/test with artifact sharing
2026-04-19 15:43:05 -04:00
Tam Nhu Tran ad54e179b6 ci: add concurrency group and split build/test with artifact sharing
- Add concurrency group keyed on github.ref with cancel-in-progress to stop superseded runs on rapid pushes
- Split validate matrix into: validate (typecheck/lint/format), build, test
- Build uploads dist/ artifact; test downloads instead of rebuilding (removes inline build:all duplication)
- Net: faster feedback, less runner time, DRY build step
2026-04-19 15:40:21 -04:00
github-actions[bot] 76283e0c69 chore(release): 7.72.1-dev.6 [skip ci] 2026-04-19 19:35:58 +00:00
Kai (Tam Nhu) TranandGitHub 4a924fc523 Merge pull request #1044 from kaitranntt/kai/chore/ci-speed-and-ai-doc-gate
chore(ci): parallelize CI matrix + cache, tighten AI-facing quality gate
2026-04-19 15:33:28 -04:00
Tam Nhu Tran 485fe4ba1c test(cliproxy): assert routing persistence via unified config loader
The previous assertion read the generated CLIProxy config.yaml directly via
getConfigPathForPort(). On the self-hosted CI runner this produced ENOENT even
though applyCliproxyRoutingStrategy returned 'config-only', indicating the
read path and write path diverged in the full test-suite context.

Verify persistence via loadUnifiedConfig() instead — that's the canonical
source mutateUnifiedConfig writes to, independent of regenerateConfig's
file-path resolution.
2026-04-19 15:27:24 -04:00
Tam Nhu Tran e25d791d9b test(websearch): clear CCS_PROFILE_TYPE in SearXNG fallback spawn env
The SearXNG-to-DuckDuckGo fallback test inherited the caller's CCS_PROFILE_TYPE
via `...process.env`, causing the hook to take the 'native_default_profile'
skip path and produce empty stdout. All other subprocess spawns in this file
set CCS_PROFILE_TYPE to NEUTRAL_PROFILE_TYPE; this one was the outlier.

Deterministic locally when CCS_PROFILE_TYPE=default is set in the shell.
2026-04-19 15:21:36 -04:00
Tam Nhu Tran b014b5cb51 chore(ci): parallelize CI matrix + cache, tighten AI-facing quality gate
- ci.yml: 5-job matrix (typecheck/lint/format/build/test), fail-fast off,
  actions/cache on ~/.bun/install/cache + node_modules + ui/node_modules.
  Target wall time ~60-90s vs prior ~3-4min.
- .husky/pre-push: add bun run build:all to feature-branch fast gate so
  UI tsc -b errors are caught pre-push (~18s warm).
- CLAUDE.md (symlinked as AGENTS.md): fix validate drift (maintainability
  is NOT part of validate), add CI-First Protocol mandating gh pr checks
  --watch after every push, replace pre-commit checklist with two-tier
  model (iterative push vs pre-merge).

Branch protection on main/dev must be updated post-merge to require the
new matrix status checks instead of the single legacy "validate" check.
2026-04-19 14:47:18 -04:00
github-actions[bot] 003f55f41a chore(release): 7.72.1-dev.5 [skip ci] 2026-04-19 18:38:03 +00:00
Kai (Tam Nhu) TranandGitHub cfe4dc2de0 Merge pull request #1043 from kaitranntt/kai/fix/windows-codex-wrapper-quoting
fix(targets): use cmd.exe for escaped Windows wrapper launches
2026-04-19 14:35:45 -04:00
Tam Nhu Tran ccdd0b6e8e fix(windows): align escaped wrapper shell handling
Use ComSpec-aware shell selection for escaped wrapper launches.

Apply it to the remaining Windows Claude launch paths.

Rewrite the Codex exec regression test to use scoped spies so the full suite stays isolated.
2026-04-19 14:27:27 -04:00
Tam Nhu Tran a945b0b104 fix(targets): use cmd.exe for escaped Windows wrapper launches
Align Windows .cmd/.bat launch behavior with the Codex detector shell contract.

This keeps escaped -c overrides intact through wrapper execution.

Adds regression coverage for the Codex runtime path and the shared Windows shell launch path.
2026-04-19 14:09:12 -04:00
github-actions[bot] 9ccac9bf39 chore(release): 7.72.1-dev.4 [skip ci] 2026-04-19 00:46:12 +00:00
Kai (Tam Nhu) TranandGitHub 06e339b7be Merge pull request #1041 from kaitranntt/kai/fix/1038-openai-compat-regen
fix(cliproxy): preserve legacy openai-compat connectors on restart
2026-04-18 20:43:52 -04:00
Tam Nhu Tran 00d902b6e6 test(cliproxy): cover legacy connector removal cleanup 2026-04-18 20:39:46 -04:00
github-actions[bot] eeea3e1c99 chore(release): 7.72.1-dev.3 [skip ci] 2026-04-19 00:12:55 +00:00
Kai (Tam Nhu) TranandGitHub 72c0dca5d8 Merge pull request #1037 from grndis/main
feat(proxy): enhance Anthropic-to-OpenAI message transformation
2026-04-18 20:10:37 -04:00
Tam Nhu Tran 25193187e0 chore(proxy): remove unused schema sanitizer draft 2026-04-18 20:05:22 -04:00
Tam Nhu Tran 16f81fc8a5 fix(cliproxy): preserve legacy openai-compat connectors on restart 2026-04-18 20:05:05 -04:00
Tam Nhu Tran ebc92194bb fix(proxy): harden Anthropic request transformation semantics
- enforce strict tool_result ordering and pairing against assistant tool_use ids
- reject tool_result image payloads that cannot map to OpenAI tool messages
- preserve raw tool schemas on the /v1/messages proxy path instead of silently tightening them
- forward Anthropic tool_choice semantics and cover adaptive routing plus upstream payload checks
2026-04-18 19:39:13 -04:00
Tam Nhu Tran 22ab58b02e fix(proxy): preserve valid enums during schema normalization 2026-04-18 19:02:55 -04:00
Tam Nhu Tran 32d6bfdda7 fix(proxy): restore strict Anthropic message validation 2026-04-18 19:02:38 -04:00
github-actions[bot] b71e5845d5 chore(release): 7.72.1-dev.2 [skip ci] 2026-04-18 22:56:19 +00:00
Kai (Tam Nhu) TranandGitHub f87d09f278 Merge pull request #1040 from kaitranntt/kai/fix/browser-attach-bootstrap
fix(browser): bootstrap managed attach profile setup
2026-04-18 18:53:56 -04:00
Tam Nhu Tran 5e1e8070e8 test(cliproxy): isolate routing strategy service state 2026-04-18 17:28:34 -04:00
github-actions[bot] 374c4975fc chore(release): 7.72.1-dev.1 [skip ci] 2026-04-18 21:20:40 +00:00
NamNH2andKai (Tam Nhu) Tran 210ec33c04 fix(codex): probe Windows cmd wrappers via cmd shell 2026-04-18 17:18:18 -04:00
Tam Nhu Tran b52503300b fix(browser): bootstrap managed attach profile setup 2026-04-18 17:18:14 -04:00
Grandis SYF 2672e35362 feat(proxy): enhance Anthropic-to-OpenAI message transformation and schema sanitization 2026-04-18 13:49:20 +07:00
semantic-release-bot eaa37c749e chore(release): 7.72.1 [skip ci]
## [7.72.1](https://github.com/kaitranntt/ccs/compare/v7.72.0...v7.72.1) (2026-04-17)

### Bug Fixes

* **cliproxy:** pin routing config regeneration path ([d3de83e](https://github.com/kaitranntt/ccs/commit/d3de83e157b4d286cc9b684339cccbe501b911a3))

### Hotfixes

* **browser:** avoid aborting launch on missing managed profile ([41bf507](https://github.com/kaitranntt/ccs/commit/41bf5075e0ece90401dfa22fe9ffbed797825387))

### Tests

* **cliproxy:** pin routing strategy test env scope ([bc1606d](https://github.com/kaitranntt/ccs/commit/bc1606da756fdf1552029d3a74add4464caa2377))
2026-04-17 03:43:09 +00:00
Kai (Tam Nhu) TranandGitHub d5b4dfde1e Merge pull request #1034 from kaitranntt/kai/hotfix/browser-attach-profile-dir-invalid
hotfix(browser): avoid aborting launch on missing managed profile
2026-04-16 23:40:48 -04:00
Tam Nhu Tran bc1606da75 test(cliproxy): pin routing strategy test env scope 2026-04-16 23:35:08 -04:00
Tam Nhu Tran d3de83e157 fix(cliproxy): pin routing config regeneration path
- capture the resolved local cliproxy config/auth paths before regenerating
  routing strategy config
- thread explicit override paths into regenerateConfig so scoped config writes
  stay deterministic during the full test suite
- add regression coverage for explicit config path overrides
2026-04-16 23:29:10 -04:00
Tam Nhu Tran 41bf5075e0 hotfix(browser): avoid aborting launch on missing managed profile
- skip managed Claude browser attach when the default CCS browser profile
  directory has not been created yet
- keep explicit env override flows failing fast so real misconfiguration still
  surfaces clearly
- add regression coverage for default and settings-profile launches
2026-04-16 22:59:43 -04:00
semantic-release-bot a0183073b3 chore(release): 7.72.0 [skip ci]
## [7.72.0](https://github.com/kaitranntt/ccs/compare/v7.71.0...v7.72.0) (2026-04-17)

### Features

* add missing i18n keys for analytics chart empty states ([d3ef82c](https://github.com/kaitranntt/ccs/commit/d3ef82cd601732522e1b98d4c9a4035a9ab31941))
* **cli:** add browser automation commands ([4e30c9b](https://github.com/kaitranntt/ccs/commit/4e30c9b080a4e240b1fa17c3b0486dafc28224da))
* **cliproxy:** integrate missing provider support ([2d9f8c9](https://github.com/kaitranntt/ccs/commit/2d9f8c96950d2c13522c088063dd84d20c69d51c))
* **cursor:** split legacy bridge from cliproxy provider ([3b5941c](https://github.com/kaitranntt/ccs/commit/3b5941c60bf5578c49785c001f85612cfec8a7e5))
* **proxy:** add openai-compatible local proxy runtime ([074e900](https://github.com/kaitranntt/ccs/commit/074e90055789bd146d96fd3d1ad917f91e602186))
* **proxy:** complete openai routing scope ([17187c4](https://github.com/kaitranntt/ccs/commit/17187c4abd5d62552e137cd783a92e7dbd356e88))
* **settings:** refine browser automation tab ([06f6f54](https://github.com/kaitranntt/ccs/commit/06f6f5485fdae1790ac50eee3f0bdc4905b340b1))

### Bug Fixes

* **accounts:** prefer live codex plan over stale free tags ([0bfdc52](https://github.com/kaitranntt/ccs/commit/0bfdc522d5606119b5051bdabc4b8d59aaeb4891))
* **accounts:** refine codex plan badges ([25aa8bd](https://github.com/kaitranntt/ccs/commit/25aa8bdb16e04f9f81e5b54487716c7cb85728ea))
* **accounts:** show one codex plan badge ([2a3632e](https://github.com/kaitranntt/ccs/commit/2a3632e5a5efa825cdee0e03ffc26410b3c42ee9))
* **accounts:** show one codex plan tag ([25f94bb](https://github.com/kaitranntt/ccs/commit/25f94bb180cb6b50b1ee297942dbc45508184502))
* **accounts:** simplify codex free tier badges ([72ea1fc](https://github.com/kaitranntt/ccs/commit/72ea1fc9d69a8958b045c74eade7beb8cdd7b6bf))
* **browser:** address platform and port review ([8a17410](https://github.com/kaitranntt/ccs/commit/8a17410f9642911d3b74357d6bbfd16aecddad4e))
* **browser:** reset blank attach path to default ([4583ffa](https://github.com/kaitranntt/ccs/commit/4583ffa022909c4456051c6e89be791c18933eab))
* chronological ordering in usage trends chart ([#1008](https://github.com/kaitranntt/ccs/issues/1008)) ([0e8abed](https://github.com/kaitranntt/ccs/commit/0e8abed7982ed6640455b52e61fb658ba8363b2b))
* clarify docker dashboard auth setup guidance ([8edb563](https://github.com/kaitranntt/ccs/commit/8edb56331e5f847f06c72624320874c7c884b334))
* **cli:** document gitlab shortcut flags and harden cursor routing ([4e738ee](https://github.com/kaitranntt/ccs/commit/4e738ee021603e5553eafa1a5e9c61566f6979f5))
* **cli:** narrow cursor cliproxy shortcut routing ([93afdb5](https://github.com/kaitranntt/ccs/commit/93afdb50bf767087839123d1a09bda045fca34c7))
* **cliproxy:** align codex defaults with gpt-5.4 ([80847b4](https://github.com/kaitranntt/ccs/commit/80847b4e6b68eab95e08b0acadbce888799f30b0))
* **cliproxy:** align delegated gemini auth recovery ([6b53df0](https://github.com/kaitranntt/ccs/commit/6b53df0147989dac42a76ca53039fc7a714d495c))
* **cliproxy:** avoid duplicate gemini management retries ([637a591](https://github.com/kaitranntt/ccs/commit/637a591dcaa94843cd1c74e18f713b36bcf2a1f4))
* **cliproxy:** avoid network-bound local startup ([27f1416](https://github.com/kaitranntt/ccs/commit/27f1416181904cc256a8694e6e15189ca673333c))
* **cliproxy:** clear stale auth quota cache ([769b54f](https://github.com/kaitranntt/ccs/commit/769b54fb4f20e2045d1b1af42efa5eb2c920c414))
* **cliproxy:** delegate gemini refresh to upstream ([9dc6374](https://github.com/kaitranntt/ccs/commit/9dc6374851718bb971175a3ebe0ff611d584847d))
* **cliproxy:** fetch Claude OAuth quota from usage endpoint ([9e88082](https://github.com/kaitranntt/ccs/commit/9e880825e744a078fa60fdbf8dd89d267184c9cb))
* **cliproxy:** harden Claude OAuth quota window parsing ([050b41b](https://github.com/kaitranntt/ccs/commit/050b41bb554a90b5938be1e081efc033cb390f3e))
* **codex:** prefer cmd wrappers over powershell on windows ([a94de01](https://github.com/kaitranntt/ccs/commit/a94de010dbb0a3c808e813b5c9ac9ec229f37708))
* **cursor:** deprecate legacy bridge and harden gitlab auth ([87d93b6](https://github.com/kaitranntt/ccs/commit/87d93b651bccb5e085b41925ebfff0c7e0cad82e))
* **cursor:** migrate legacy settings and validate gitlab urls ([58c2c46](https://github.com/kaitranntt/ccs/commit/58c2c46ed73326d9d16f5889326150cd0965022a))
* **gitlab:** sanitize PAT auth failures across cli and web ([7f1c236](https://github.com/kaitranntt/ccs/commit/7f1c23607db9692ffcfa593930f90809f03f3af8))
* **proxy:** detect dashscope compatible-mode profiles ([a6aa576](https://github.com/kaitranntt/ccs/commit/a6aa576d5a6e11d53cdd1d85f22b57a63fbe9b47))
* **proxy:** keep stream guards active through sse piping ([841eeb4](https://github.com/kaitranntt/ccs/commit/841eeb497c274ed38ec2c653ec7c9cd02c1ea0ed))
* **shared-manager:** exclude .staging dirs from marketplace registry sync ([5b262f0](https://github.com/kaitranntt/ccs/commit/5b262f0139cf31331168b2c28304b499c3f23466))
* **shared-manager:** prune transient and malformed marketplace entries ([2293368](https://github.com/kaitranntt/ccs/commit/2293368e31f43f779a865a280513702542dc0870))
* **ui:** align cliproxy provider assets ([1bad3b0](https://github.com/kaitranntt/ccs/commit/1bad3b0305f32b13e78a8a41dba9c63a52449722))

### Documentation

* **proxy:** credit claude-code-router ([b346693](https://github.com/kaitranntt/ccs/commit/b346693c3a70205a3f6cce46e556cd6e1ceaad8b))
* **proxy:** document openai-compatible routing ([7b64852](https://github.com/kaitranntt/ccs/commit/7b6485249530c890d9bf3549221dcbd0f3f6d18f))
* **roadmap:** note private-network startup fix ([3b17bc9](https://github.com/kaitranntt/ccs/commit/3b17bc934a01b93f016e85de4c4a7a162863dcf7))

### Styles

* **ui:** format gitlab auth launch options ([dc94b9c](https://github.com/kaitranntt/ccs/commit/dc94b9c1c938b8d32bc3daf1b0bc6c5bb05b2bf0))

### Code Refactoring

* **accounts:** localize codex identity labels ([cfbc967](https://github.com/kaitranntt/ccs/commit/cfbc9672c3360ed1a5578b1cf715ea58df1b8702))
* **proxy:** internalize sse translation and cleanup handlers ([a340709](https://github.com/kaitranntt/ccs/commit/a3407093d70bef44874cdf26a06436e0d287c1a7))

### Tests

* **ci:** stabilize runner-sensitive isolated tests ([2ba3a0a](https://github.com/kaitranntt/ccs/commit/2ba3a0ab02fc4909681a36cc265e5ff2d1680426))
* **ci:** use runtime-relative isolated child scripts ([2e2ba1c](https://github.com/kaitranntt/ccs/commit/2e2ba1c09b81b5e79b7ec65bbd0979d5ce1a1204))
* **cliproxy:** stabilize routing strategy config scope ([4845b79](https://github.com/kaitranntt/ccs/commit/4845b797de4a1e326e4ebea0109e884319e1bd3e))
* **proxy:** cover proxy lifecycle and routing ([5c66c1f](https://github.com/kaitranntt/ccs/commit/5c66c1f12162306d1039ec2e255ad9894199d1f4))
2026-04-17 02:03:58 +00:00
Kai (Tam Nhu) TranandGitHub 5730122069 Merge pull request #1033 from kaitranntt/dev
feat(release): promote dev to main
2026-04-16 22:01:30 -04:00
github-actions[bot] 196a645458 chore(release): 7.71.0-dev.13 [skip ci] 2026-04-17 01:21:08 +00:00
Kai (Tam Nhu) TranandGitHub e02bd2bc07 Merge pull request #1032 from kaitranntt/kai/feat/1030-browser-automation-parity
feat: add first-class browser automation settings
2026-04-16 21:18:45 -04:00