Tam Nhu Tran
4e4c949967
fix(cliproxy): harden xAI provider contracts
2026-07-18 19:04:07 -04:00
Tam Nhu Tran
90c0409aac
Merge remote-tracking branch 'origin/dev' into kai/review/1641-xai-grok
2026-07-18 18:14:56 -04:00
github-actions[bot]
66189250a3
chore(release): 8.7.0-dev.11
2026-07-18 22:00:21 +00:00
Kai (Tam Nhu) Tran
4998153205
Merge pull request #1644 from kaitranntt/kai/fix/fast-bucket-bar-isolation
...
fix(ci): isolate Bar command fast tests
2026-07-18 17:54:13 -04:00
Tam Nhu Tran
6dc199a038
fix(ci): isolate Bar command fast tests
2026-07-18 17:46:53 -04:00
Kai (Tam Nhu) Tran
be97e43503
Merge pull request #1643 from kaitranntt/kai/fix/1642-bar-pool-quota
...
fix(bar): show Claude and Codex pool quota
2026-07-18 17:40:17 -04:00
Tam Nhu Tran
8996c92fda
fix(bar): preserve quota cache and reset semantics
2026-07-18 17:28:36 -04:00
Tam Nhu Tran
f77ed33cc7
fix(bar): show Claude and Codex pool quota
2026-07-18 17:13:40 -04:00
minhbi245
54a2b4759b
feat(cliproxy): add xAI Grok provider
2026-07-17 00:02:12 +07:00
github-actions[bot]
1b67c7840b
chore(release): 8.7.0-dev.10
2026-07-15 15:56:56 +00:00
Kai (Tam Nhu) Tran
802ea04712
Merge pull request #1640 from kaitranntt/kai/fix/1639-ccsx-profile-plugin-cache-v2
...
fix(codex-auth): share plugin cache across profiles
2026-07-15 11:52:26 -04:00
Tam Nhu Tran
234dce3150
fix(codex-auth): reject aliased plugin cache paths
2026-07-15 11:36:15 -04:00
Tam Nhu Tran
3103af5355
docs(codex-auth): document shared plugin cache
2026-07-15 10:24:13 -04:00
Tam Nhu Tran
960d6e23a0
test(codex-auth): cover profile cache repair entry points
2026-07-15 10:24:13 -04:00
Tam Nhu Tran
e5d4d860b3
fix(codex-auth): share plugin cache across profiles
2026-07-15 10:24:13 -04:00
github-actions[bot]
463a1ffa50
chore(release): 8.7.0-dev.9
2026-07-13 09:44:06 -04:00
github-actions[bot]
612a664259
chore(release): 8.7.0-dev.8
2026-07-13 13:37:36 +00:00
Kai (Tam Nhu) Tran
44c2e8ccc5
Merge pull request #1634 from KennethWKZ/feat/support-claude-sonnet-1m
...
fix: preserve saved Claude extended-context preference
2026-07-13 09:27:02 -04:00
Tam Nhu Tran
72f00bac1f
Merge remote-tracking branch 'origin/dev' into kai/review/pr-1634
2026-07-13 09:26:00 -04:00
Kai (Tam Nhu) Tran
073e795f61
Merge pull request #1638 from tom-price/fix/usage-aggregator-missing-modelbreakdowns
...
fix: guard against missing modelBreakdowns in usage aggregation
2026-07-13 09:25:43 -04:00
Tam Nhu Tran
b52e42eba4
Merge remote-tracking branch 'origin/dev' into kai/review/pr-1634
2026-07-13 09:16:46 -04:00
Tam Nhu Tran
5943c8fa3c
fix: strip stale Gemini extended context suffixes
2026-07-13 09:14:04 -04:00
Tom Price
a7f3e4bc0e
fix: guard against missing modelBreakdowns in usage aggregation
...
The CCS Bar server was crash-looping with:
[X] Cannot read properties of undefined (reading 'length')
Usage records from partially-written or legacy persisted files (e.g. a
Codex rollout scanned mid-write) can be missing modelBreakdowns despite
the type. getHourlyRequestCount() and the daily/monthly/hourly merges
read it unguarded, and the Bar re-runs aggregation every ~5 min and
restarts on crash - hence the loop.
Default modelBreakdowns to [] at every use site and fall back to 0 for
request count. Regression test added for all three merges.
I don't normally work in TS and this was heavily tool-assisted, but it
has fixed the crash loop on my machine.
2026-07-12 21:23:31 -04:00
github-actions[bot]
507ce278b9
chore(release): 8.7.0-dev.7
2026-07-10 17:30:09 +00:00
Kai (Tam Nhu) Tran
58c02a53d9
Merge pull request #1637 from kaitranntt/kai/feat/1633-gpt-5-6-models
...
feat(codex): add GPT-5.6 model catalog
2026-07-10 13:20:50 -04:00
Kai (Tam Nhu) Tran
ab09c96210
Merge pull request #1636 from kaitranntt/kai/fix/1635-codex-toml-recovery
...
fix(codex): preview joined migration TOML repair
2026-07-10 13:20:35 -04:00
Tam Nhu Tran
24eae8ae8f
feat(codex): add GPT-5.6 model catalog
...
Closes #1633
2026-07-10 08:54:48 -04:00
Tam Nhu Tran
77e73dd091
fix(codex): preview joined migration TOML repair
...
Closes #1635
2026-07-10 08:54:18 -04:00
Kenneth Wong
7f369f75dc
fix: claude model no get the 1m tag
2026-07-10 00:39:19 +08:00
github-actions[bot]
da6c99e3df
chore(release): 8.7.0-dev.6
2026-07-08 14:22:20 +00:00
Kai (Tam Nhu) Tran
5afd294c7e
Merge pull request #1631 from sgaluza/sergey/add-claude-sonnet-5-pricing
...
feat(pricing): register Claude Sonnet 5 in the pricing registry
2026-07-08 10:18:03 -04:00
Sergey Galuza
1e63c37baf
feat(pricing): register Claude Sonnet 5 in the pricing registry
...
Add explicit `claude-sonnet-5` and `claude-sonnet-5-thinking` entries to the
web-server PRICING_REGISTRY at the standard Sonnet rates ($3/$15 in/out,
$3.75/$0.30 cache).
The model catalog and dashboard already ship Sonnet 5 (it is the Claude
default), but pricing was missing: getModelPricing() fell through to
UNKNOWN_MODEL_PRICING, which only coincidentally matches Sonnet rates. As a
result hasCustomPricing('claude-sonnet-5') returned false and getKnownModels()
omitted it, so Sonnet 5 was treated as an unknown model in cost accounting and
known-model listings.
Registering it explicitly makes the pricing intentional and consistent with
every other Claude model, without changing any resolved values.
Built [OnSteroids](https://onsteroids.ai )
2026-07-07 14:51:43 +02:00
github-actions[bot]
f1eee3029e
chore(release): 8.7.0-dev.5
2026-07-02 15:15:30 +00:00
Kai (Tam Nhu) Tran
b95f95317e
Merge pull request #1630 from kaitranntt/kai/feat/copilot-model-ui
...
feat: support custom GHCP model selection
2026-07-02 11:11:20 -04:00
Tam Nhu Tran
c8a4b42990
feat: add Sonnet 5 to Claude provider catalog
2026-07-02 10:31:42 -04:00
Tam Nhu Tran
631a515986
feat: support custom GHCP model selection
2026-07-02 10:10:28 -04:00
github-actions[bot]
1aacbfd2a8
chore(release): 8.7.0-dev.4
2026-07-01 05:30:54 +00:00
Kai (Tam Nhu) Tran
1ee7cac555
fix: reject case-variant symlinked file paths ( #1629 )
...
* fix: reject case-variant symlinked file paths
* fix: validate requested case-variant symlink paths
2026-07-01 01:26:48 -04:00
github-actions[bot]
53fe7e1e8d
chore(release): 8.7.0-dev.3
2026-07-01 05:20:05 +00:00
Kai (Tam Nhu) Tran
343899f6c1
fix: prevent default profile credential collision ( #1628 )
...
* fix: prevent default profile credential collision
* fix: isolate default profile credential fallback
2026-07-01 01:15:45 -04:00
github-actions[bot]
20df3445d9
chore(release): 8.7.0-dev.2
2026-07-01 05:13:16 +00:00
Kai (Tam Nhu) Tran
0f9a87619c
fix: cap native quota profile refresh fan-out ( #1627 )
...
* fix: cap native quota profile refresh fan-out
* fix: preserve native quota live cache state
2026-07-01 01:09:01 -04:00
github-actions[bot]
f2cd076c08
chore(release): 8.7.0-dev.1
2026-07-01 04:54:25 +00:00
Kai (Tam Nhu) Tran
3621f8dcb1
fix: validate CCS Bar launch shim target integrity ( #1626 )
...
* fix: validate CCS Bar launch shim target integrity
* fix: execute verified bar shim bytes
2026-07-01 00:49:56 -04:00
Kai (Tam Nhu) Tran
05685d1c21
fix: keep agy websearch permissions enabled ( #1625 )
2026-07-01 00:45:09 -04:00
semantic-release-bot
99f023fe3d
chore(release): 8.7.0 [skip ci]
...
## [8.7.0](https://github.com/kaitranntt/ccs/compare/v8.6.1...v8.7.0 ) (2026-07-01)
### Features
* add Requesty as an OpenAI-compatible provider ([#1604 ](https://github.com/kaitranntt/ccs/issues/1604 )) ([a167f94 ](https://github.com/kaitranntt/ccs/commit/a167f94e1b07ee47f201cdbbc72c6fd0e68a8738 ))
* **bar:** enumerate ccs/ccsx subscription profiles with per-profile quota ([ed86a08 ](https://github.com/kaitranntt/ccs/commit/ed86a089ba9102538f2aee07cd47515c7cb498ed ))
* **bar:** make the profile carousel mouse-navigable ([f57eed8 ](https://github.com/kaitranntt/ccs/commit/f57eed8c34817ea77f313d63029fa9e746f8b9c9 ))
* **bar:** per-provider profile carousel with ccs/ccsx surface tags ([e8adcb8 ](https://github.com/kaitranntt/ccs/commit/e8adcb89993c3c972691679aee402e7844f58766 ))
* **bar:** swipeable profile carousel and condensed alerts ([#1603 ](https://github.com/kaitranntt/ccs/issues/1603 )) ([d7933c6 ](https://github.com/kaitranntt/ccs/commit/d7933c6243b7593eed524b6aa6c9c977f1e16eea )), closes [#1602 ](https://github.com/kaitranntt/ccs/issues/1602 )
* **websearch:** add agy provider and deprecate gemini cli fallback ([#1607 ](https://github.com/kaitranntt/ccs/issues/1607 )) ([9dd9bf2 ](https://github.com/kaitranntt/ccs/commit/9dd9bf297890c1802fdc491ec6b909e1e5136a84 ))
### Bug Fixes
* **auth:** honor legacy unified default profiles ([#1619 ](https://github.com/kaitranntt/ccs/issues/1619 )) ([2f1453e ](https://github.com/kaitranntt/ccs/commit/2f1453e39785889ba82cb4183dd0a31f32349f45 ))
* **bar:** align subscription carousel and collapse stale blank space ([#1600 ](https://github.com/kaitranntt/ccs/issues/1600 )) ([62274da ](https://github.com/kaitranntt/ccs/commit/62274dabfa62049a4ab0a0249e59b2d5645bc2b8 )), closes [#1599 ](https://github.com/kaitranntt/ccs/issues/1599 )
* **bar:** cache expired profiles and gate codex local fallback to the default ([a0a2dd0 ](https://github.com/kaitranntt/ccs/commit/a0a2dd00face1825aff6fbc4d87b93bd38bf7f9b ))
* **bar:** keep is_default on cache-fallback rows ([7b610f0 ](https://github.com/kaitranntt/ccs/commit/7b610f0e8275c4d61ae3b35a891cd17ef0f8262e ))
* **bar:** lead carousel with default account, label it as the base command ([b9f6837 ](https://github.com/kaitranntt/ccs/commit/b9f68379135afa653f835cd36fef8a6ad515bad9 ))
* **bar:** short-TTL parked rows + keep valid codex subs active ([b514986 ](https://github.com/kaitranntt/ccs/commit/b514986ddd947ebd4a67acd41bf6735586a72959 ))
* **bar:** show the active default ccs login as the leading Claude account ([54ef540 ](https://github.com/kaitranntt/ccs/commit/54ef5406ce891343ef6bd7fe885ae5db59466763 ))
* **bar:** tighten subscription carousel spacing ([d9bd5b6 ](https://github.com/kaitranntt/ccs/commit/d9bd5b6f8683bc279979156b76935fe09da5288b ))
* **bar:** use nonce-bound probe auth ([#1623 ](https://github.com/kaitranntt/ccs/issues/1623 )) ([0180b62 ](https://github.com/kaitranntt/ccs/commit/0180b624539eda3e34155b4ef3adc169282d3c6a ))
* bound bar raw socket probes ([#1618 ](https://github.com/kaitranntt/ccs/issues/1618 )) ([396e01a ](https://github.com/kaitranntt/ccs/commit/396e01ab6fbaddf74949a1777dc34a0ebbdc9677 ))
* **ci:** include compose parity in CI Gate ([#1614 ](https://github.com/kaitranntt/ccs/issues/1614 )) ([58a90d3 ](https://github.com/kaitranntt/ccs/commit/58a90d3633ddac8a932ef71833f9c53723dda7d5 ))
* **cliproxy:** clean up launch-settings overlay on synchronous spawn failure ([454e155 ](https://github.com/kaitranntt/ccs/commit/454e1555a7b1d50f77d77c2fd7b6690930e52260 ))
* **cliproxy:** keep proxy-chain base URL authoritative over --settings env ([3847443 ](https://github.com/kaitranntt/ccs/commit/3847443da37aa7361b14d7e840b1fe595991cab0 ))
* **cliproxy:** mask control panel login key ([#1617 ](https://github.com/kaitranntt/ccs/issues/1617 )) ([bb7c3a4 ](https://github.com/kaitranntt/ccs/commit/bb7c3a4037db6ff14a9511e6638b039437d7d68b ))
* close bar launch case bypass ([#1613 ](https://github.com/kaitranntt/ccs/issues/1613 )) ([3f1dce3 ](https://github.com/kaitranntt/ccs/commit/3f1dce30bc1a9743e3baab2cc479e32762d68cb5 ))
* **codex:** normalize CLIProxy responses routes ([#1605 ](https://github.com/kaitranntt/ccs/issues/1605 )) ([ba0e768 ](https://github.com/kaitranntt/ccs/commit/ba0e768fbf5d92d380caf1b8a1eb6cc2cf9d15fc ))
* **codex:** route codex CLI to /backend-api/codex on original CLIProxy backend ([a1a5651 ](https://github.com/kaitranntt/ccs/commit/a1a565177e5118bb06f1e159ee1dcd887c8ed19e )), closes [#1597 ](https://github.com/kaitranntt/ccs/issues/1597 )
* **cursor:** propagate daemon auth token ([#1616 ](https://github.com/kaitranntt/ccs/issues/1616 )) ([4283c46 ](https://github.com/kaitranntt/ccs/commit/4283c4665c7812a7eda343b31f6ff3359f8294b8 ))
* fail closed on websearch launch provisioning ([#1621 ](https://github.com/kaitranntt/ccs/issues/1621 )) ([f2843ad ](https://github.com/kaitranntt/ccs/commit/f2843ad2ce8f929e46a75ca8692d8f3bb9c0034c ))
* **glmt:** emit thinking signature as opaque string ([cbcdb6b ](https://github.com/kaitranntt/ccs/commit/cbcdb6ba626ee5438502ea32eb9505735fa0963a ))
* **logging:** redact browser debug endpoint ([#1622 ](https://github.com/kaitranntt/ccs/issues/1622 )) ([138ead0 ](https://github.com/kaitranntt/ccs/commit/138ead0e1ef36f96f7c7b3c515aaa308f27e389c ))
* make CCS Bar launch descriptor use private shim ([fb9509d ](https://github.com/kaitranntt/ccs/commit/fb9509d9be08187077baf44d2141aadc2518e551 ))
* restrict bar release workflow to main ([#1612 ](https://github.com/kaitranntt/ccs/issues/1612 )) ([23b2c3d ](https://github.com/kaitranntt/ccs/commit/23b2c3d6afd3170920bc00435f5013b7464e2795 ))
* skip paused codex accounts in bar refresh ([#1620 ](https://github.com/kaitranntt/ccs/issues/1620 )) ([0527e27 ](https://github.com/kaitranntt/ccs/commit/0527e276b12033a3718e1330120d020e9843188a ))
### Documentation
* **cliproxy:** document strip-vs-overlay launch-settings siblings and model-key superset ([13e23e0 ](https://github.com/kaitranntt/ccs/commit/13e23e0fc5b55c10af16e00a82535ca8c71a161f ))
### Tests
* **cliproxy:** cover launch-settings corrupt-JSON fallback and overlay permissions ([e5db374 ](https://github.com/kaitranntt/ccs/commit/e5db374e98ad25091bc8105acb6c83486c17dbb8 ))
* **glmt:** align thinking signature coverage ([045fc93 ](https://github.com/kaitranntt/ccs/commit/045fc932857bdc9c52fa7573ec1bbd81a951b6a0 ))
* **glmt:** assert thinking signature is a non-empty opaque string ([37d2bae ](https://github.com/kaitranntt/ccs/commit/37d2bae001cc52753696c575d86a4889591d8789 ))
2026-07-01 02:56:15 +00:00
Kai (Tam Nhu) Tran
eccb3d1997
Merge pull request #1624 from kaitranntt/dev
...
feat: promote dev to main
2026-06-30 22:52:18 -04:00
github-actions[bot]
772a9c246e
chore(release): 8.6.1-dev.13
2026-06-30 17:16:40 +00:00
Kai (Tam Nhu) Tran
0180b62453
fix(bar): use nonce-bound probe auth ( #1623 )
2026-06-30 13:10:56 -04:00
Kai (Tam Nhu) Tran
138ead0e1e
fix(logging): redact browser debug endpoint ( #1622 )
...
* fix(logging): redact browser debug endpoint
* fix(logging): redact prompt argv values
2026-06-30 13:07:46 -04:00