github-actions[bot]
15f7bce432
chore(release): 7.44.0-dev.1 [skip ci]
2026-02-14 10:52:05 +00:00
semantic-release-bot
98f1dd965f
chore(release): 7.44.0 [skip ci]
...
## [7.44.0](https://github.com/kaitranntt/ccs/compare/v7.43.0...v7.44.0 ) (2026-02-14)
### Features
* **cliproxy:** add CLI edit command for composite variants ([43e73f3 ](https://github.com/kaitranntt/ccs/commit/43e73f335f85f051b7294b0d9f4bdae405780a26 ))
* **cliproxy:** add composite variant CLI wizard ([4926c20 ](https://github.com/kaitranntt/ccs/commit/4926c200f2601655e0a93f73c9dd8d03c44e12da )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **cliproxy:** add composite variant runtime execution ([44b30b8 ](https://github.com/kaitranntt/ccs/commit/44b30b875328bf795dfc5783948f81da018c2f2e )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **cliproxy:** add composite variant type definitions ([3d207fa ](https://github.com/kaitranntt/ccs/commit/3d207faac5ca3389572b88eb0881b2dca040c6fb )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **cliproxy:** add dashboard CRUD for composite variants ([1ebd9f4 ](https://github.com/kaitranntt/ccs/commit/1ebd9f43d6e5fe76f50be31458955b1a53312b25 ))
* **cliproxy:** add explicit start and restart commands ([8395364 ](https://github.com/kaitranntt/ccs/commit/83953649704c5957a2522e3b8cf041fd2725510e ))
* **cliproxy:** add per-tier thinking config for composite variants ([ed22c1a ](https://github.com/kaitranntt/ccs/commit/ed22c1aa1ec9d3c3bf6e161b31326e603e299620 ))
* **cliproxy:** add provider error detection for composite fallback ([478e9e8 ](https://github.com/kaitranntt/ccs/commit/478e9e8f7342300ec5368c606bc7619ed497c481 ))
* **cliproxy:** clarify codex effort mapping and preset UX ([945db1d ](https://github.com/kaitranntt/ccs/commit/945db1d6909e546fef988f7823d60e03adcffd44 ))
* **cliproxy:** extend composite schema with fallback and thinking fields ([20d6079 ](https://github.com/kaitranntt/ccs/commit/20d60791ffc5c805a2d2d88fc95c5e734dbcbc67 )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **cliproxy:** implement composite variant CRUD and settings ([c58fdc9 ](https://github.com/kaitranntt/ccs/commit/c58fdc931e40026322419d6353535e95308e9a8e )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **cliproxy:** wire composite variant into main execution flow ([07bef9f ](https://github.com/kaitranntt/ccs/commit/07bef9f50eeb3a8fe4beace38de04784f6bdda1e )), closes [#506 ](https://github.com/kaitranntt/ccs/issues/506 )
* **codex:** add gpt-5.3 preset defaults ([7fddb63 ](https://github.com/kaitranntt/ccs/commit/7fddb63ab9ffb826eee514e791ac923067938a04 ))
* **codex:** keep gpt-5.2 catalog entry ([d6aa1d9 ](https://github.com/kaitranntt/ccs/commit/d6aa1d90a6d7722829f5cdb0d9208a22fc4ae7e3 ))
* **cursor:** add auth module with SQLite auto-detect and types ([56270d9 ](https://github.com/kaitranntt/ccs/commit/56270d99f3511058bb71390df4c0b85f4a0e54e0 )), closes [#519 ](https://github.com/kaitranntt/ccs/issues/519 ) [#517 ](https://github.com/kaitranntt/ccs/issues/517 )
* **cursor:** add config integration and dashboard routes ([93dafa0 ](https://github.com/kaitranntt/ccs/commit/93dafa04d53367653aadb6d32c59d85a0502865e ))
* **cursor:** add core protobuf encoder/decoder and executor ([9daf943 ](https://github.com/kaitranntt/ccs/commit/9daf9430bb76f175e34a9aa05c6060b4a959312e ))
* **cursor:** add daemon lifecycle, models catalog, and CLI commands ([aaa31c6 ](https://github.com/kaitranntt/ccs/commit/aaa31c64270d0e718ad82d584c8c76692e39dbf4 )), closes [#520 ](https://github.com/kaitranntt/ccs/issues/520 ) [#521 ](https://github.com/kaitranntt/ccs/issues/521 ) [#522 ](https://github.com/kaitranntt/ccs/issues/522 )
* **cursor:** complete daemon wiring and add dedicated dashboard page ([be9d7cf ](https://github.com/kaitranntt/ccs/commit/be9d7cf73e10ede766affe932881969788eadfb7 ))
* **cursor:** namespace FIELD constants and implement true streaming SSE ([#531 ](https://github.com/kaitranntt/ccs/issues/531 ), [#535 ](https://github.com/kaitranntt/ccs/issues/535 )) ([4e5b502 ](https://github.com/kaitranntt/ccs/commit/4e5b502fc9b2b8e576105dddb5c9d068db5b73d2 ))
### Bug Fixes
* **analytics:** stabilize responsive row alignment ([0cc1f11 ](https://github.com/kaitranntt/ccs/commit/0cc1f111f7032fa6685ed59161b43d60a9f39f67 ))
* **cli:** add kiro auth-method flag wiring and help ([e425f47 ](https://github.com/kaitranntt/ccs/commit/e425f477a44fa030a8dc5a6c28bed14d9bdfd762 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 ) [#233 ](https://github.com/kaitranntt/ccs/issues/233 )
* **cliproxy:** add circular fallback and empty model validation in API ([ef77607 ](https://github.com/kaitranntt/ccs/commit/ef77607c41cbf7e7529581071d03bea158bad44f ))
* **cliproxy:** add defensive null checks for composite tier config ([0c7dc39 ](https://github.com/kaitranntt/ccs/commit/0c7dc398f77806a1aa47ed73f0828f36ad88d948 ))
* **cliproxy:** add session check on delete and atomic settings writes ([7486897 ](https://github.com/kaitranntt/ccs/commit/74868972ddbc9c4dcb689ea6a3e27a52893f6935 ))
* **cliproxy:** address 3 code review issues in composite variants ([399d7e1 ](https://github.com/kaitranntt/ccs/commit/399d7e163a30568ae6ec8070c517c54225eb1307 ))
* **cliproxy:** address 3 functional regressions in composite variants ([61f46e7 ](https://github.com/kaitranntt/ccs/commit/61f46e738d1935f9db5afb030e34daba2e95ac59 ))
* **cliproxy:** address 4 functional regressions in composite variants ([27d22e8 ](https://github.com/kaitranntt/ccs/commit/27d22e836ffc83c62eefbeeb2ef29aefcb36c834 ))
* **cliproxy:** address code review feedback (attempt 1/5) ([854b198 ](https://github.com/kaitranntt/ccs/commit/854b198b64c0feb5cfe6f7ecdf87980d18c0fda6 ))
* **cliproxy:** address code review feedback (attempt 2/5) ([ac574e0 ](https://github.com/kaitranntt/ccs/commit/ac574e0bafaf5a7124857e7f38fe3c44f5d67a8a ))
* **cliproxy:** address code review feedback (attempt 3/5) ([6cfbdd6 ](https://github.com/kaitranntt/ccs/commit/6cfbdd649b6b2e1d5038c42e69f74e2c744d2bb4 ))
* **cliproxy:** address code review feedback (attempt 4/5) ([4c002ca ](https://github.com/kaitranntt/ccs/commit/4c002caee1d64b2b90967a67a18db8f097bbac80 ))
* **cliproxy:** address lifecycle port and thinking regressions ([f02e7dc ](https://github.com/kaitranntt/ccs/commit/f02e7dc5c62084fc7fb73e08d3ca667210d17317 ))
* **cliproxy:** align kiro auth methods with upstream contracts ([fd46ad0 ](https://github.com/kaitranntt/ccs/commit/fd46ad022aae1a4d2fe6dbb8304f691465860214 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 ) [#233 ](https://github.com/kaitranntt/ccs/issues/233 )
* **cliproxy:** fix edit dialog empty model and composite guidance ([8e6b67b ](https://github.com/kaitranntt/ccs/commit/8e6b67bf99204f4fe187ba59e739491d4a2ab193 ))
* **cliproxy:** fix thinking off regression and composite error handling ([e914fe9 ](https://github.com/kaitranntt/ccs/commit/e914fe977895c7d036e6cd81f48d833ac29bb9f7 ))
* **cliproxy:** harden composite validation and runtime safeguards ([1a23f91 ](https://github.com/kaitranntt/ccs/commit/1a23f912a4629cb73d83351f6c1f4acf18f7a214 ))
* **cliproxy:** harden composite variant routing and validation ([0a8adb2 ](https://github.com/kaitranntt/ccs/commit/0a8adb22fcdffc993b06ed577217ccb8e55253c9 ))
* **cliproxy:** harden kiro device-code auth flow consistency ([826a42d ](https://github.com/kaitranntt/ccs/commit/826a42d8d6c4877431474c27e14f0f1d4ec092d7 ))
* **cliproxy:** improve multi-provider auth with continue-on-error pattern ([6ff17d8 ](https://github.com/kaitranntt/ccs/commit/6ff17d848091e1087ce2631ef2363e628346a8a2 ))
* **cliproxy:** keep daemon running after parent exit ([3136f24 ](https://github.com/kaitranntt/ccs/commit/3136f24b9b4a879199e272cf8d1e52c919270f10 ))
* **cliproxy:** keep variant updates atomic and persisted ([7bb9ceb ](https://github.com/kaitranntt/ccs/commit/7bb9ceb4aff0d806ec19b3e97486a96d667834d2 ))
* **cliproxy:** mark Kiro as device_code flow for dashboard auth ([6c20839 ](https://github.com/kaitranntt/ccs/commit/6c2083949f887a9f1a1d37bf8cc2a27c3bd650d7 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 )
* **cliproxy:** resolve merge-duplicate lifecycle handlers ([9268c05 ](https://github.com/kaitranntt/ccs/commit/9268c05ee526e9c12b7ad33e180d3b8818443e62 ))
* **cliproxy:** restore POST tier validation and guard null payloads ([a99180f ](https://github.com/kaitranntt/ccs/commit/a99180fa22c83db51b3ff2f7b4dbadab0f79fbbc ))
* **cliproxy:** strip thinking suffix in detectFailedTier matching ([efd3f21 ](https://github.com/kaitranntt/ccs/commit/efd3f21e29dd17c287f4e569670d80c9d0f85d5a ))
* **cliproxy:** unify codex reasoning flags and thinking flow ([f9df3cf ](https://github.com/kaitranntt/ccs/commit/f9df3cfa7ad5fe3668780b714edd33f17529083f ))
* **codex:** align quota display to 5h and weekly windows ([f8af5a8 ](https://github.com/kaitranntt/ccs/commit/f8af5a8c3cb9e2c0de09f0a1ffde942c642cdca0 ))
* **codex:** infer code review cadence from reset window ([1d2ee82 ](https://github.com/kaitranntt/ccs/commit/1d2ee827fe38204d8d4ceb376c604abcff130836 ))
* **codex:** preserve sonnet high alias on variant model updates ([3410c52 ](https://github.com/kaitranntt/ccs/commit/3410c52f7ed0af34428e0265b1ff510e3f3dafdf ))
* **codex:** preserve xhigh default effort for gpt-5.3 ([164d195 ](https://github.com/kaitranntt/ccs/commit/164d1953679392772506defc6024cf514fbbb188 ))
* **codex:** reduce quota timeout flakes in dashboard ([b3d9dce ](https://github.com/kaitranntt/ccs/commit/b3d9dce6e1e7b631d24bb98111a14b239074db2b ))
* **codex:** stabilize code review window labeling ([40512fe ](https://github.com/kaitranntt/ccs/commit/40512fe3388e0e517838926438c8ae4559cc09d3 ))
* **codex:** type cast provider in model update path ([41d9978 ](https://github.com/kaitranntt/ccs/commit/41d99788da96b7f59144d391d672d070e34ace00 ))
* **commands:** await async command validation ([b98335c ](https://github.com/kaitranntt/ccs/commit/b98335c1620bda79a3e27e5392f5e77f6bdd7f03 ))
* **config:** serialize cursor section in generateYamlWithComments ([4b7de69 ](https://github.com/kaitranntt/ccs/commit/4b7de69d9bd330c07d834e610ca36e657a7ab2eb ))
* **cursor:** add enabled field to tests, simplify cursor routing ([f9834c8 ](https://github.com/kaitranntt/ccs/commit/f9834c81c947315ebe2527135e6df4bdc4da37c7 ))
* **cursor:** add input validation on dashboard settings routes ([1bebf16 ](https://github.com/kaitranntt/ccs/commit/1bebf163575dc3f0a8a936d630714f48292655e4 ))
* **cursor:** add resolve guard, port validation, and daemon tests ([7d4e6d6 ](https://github.com/kaitranntt/ccs/commit/7d4e6d6b65d467cf182710805b4ee15f44a4f5f0 ))
* **cursor:** add response body handling and size limit ([36f0308 ](https://github.com/kaitranntt/ccs/commit/36f0308a72141e0481c9044a4e49b35b3065cf73 ))
* **cursor:** add subcommand parity comment and raw settings TODO ([4ca4a9d ](https://github.com/kaitranntt/ccs/commit/4ca4a9d2ab55eb0b339ac62e7a11d517ada1aff3 ))
* **cursor:** address CI gate and review regressions ([0e55db8 ](https://github.com/kaitranntt/ccs/commit/0e55db88a5b92ecde8528ee8bf396ce411c93296 ))
* **cursor:** address code review edge cases in protobuf and executor ([cc5a903 ](https://github.com/kaitranntt/ccs/commit/cc5a9039e40d952bd769b8b2dce7df9ecfd0cfa8 ))
* **cursor:** address code review feedback (attempt 1/5) ([31f5741 ](https://github.com/kaitranntt/ccs/commit/31f574118d6c1f293dd8dc59c311079bde9b0bd1 ))
* **cursor:** address code review feedback on auth module ([7e4f080 ](https://github.com/kaitranntt/ccs/commit/7e4f08004c00771ee624a09c045f920a5e105358 ))
* **cursor:** address fourth-round review feedback for protobuf module ([c5e8241 ](https://github.com/kaitranntt/ccs/commit/c5e82413932f83958bb56f37aee5dc82ab5207d3 ))
* **cursor:** address PR [#527 ](https://github.com/kaitranntt/ccs/issues/527 ) review feedback ([9f0ea25 ](https://github.com/kaitranntt/ccs/commit/9f0ea25448a8e4ca3019052812452885a4058190 ))
* **cursor:** address PR [#528 ](https://github.com/kaitranntt/ccs/issues/528 ) review feedback ([d58e988 ](https://github.com/kaitranntt/ccs/commit/d58e98815b5ccf0aa62f9fc929f88d43b4905d8e ))
* **cursor:** address remaining LOW review items in protobuf module ([f3d532a ](https://github.com/kaitranntt/ccs/commit/f3d532afd971e998ee7f72fcfc8a2940ff735ff4 ))
* **cursor:** address remaining PR [#527 ](https://github.com/kaitranntt/ccs/issues/527 ) review feedback ([afb5e74 ](https://github.com/kaitranntt/ccs/commit/afb5e746b3c11951147c381b298bc562a078685c ))
* **cursor:** address remaining PR [#528 ](https://github.com/kaitranntt/ccs/issues/528 ) review feedback ([b8aaa58 ](https://github.com/kaitranntt/ccs/commit/b8aaa58d6ebf2b715fd9f53cf42ea363bbb55042 ))
* **cursor:** address remaining review items in auth module ([b412ba2 ](https://github.com/kaitranntt/ccs/commit/b412ba2a9eb6e92630de3c4b98bb95a1375927a0 )), closes [#526 ](https://github.com/kaitranntt/ccs/issues/526 )
* **cursor:** address second-round review feedback for auth module ([84a256d ](https://github.com/kaitranntt/ccs/commit/84a256d0ac8ac2c3be6c4ffdbd422eda47f3abcc ))
* **cursor:** address second-round review feedback for protobuf module ([e177a4b ](https://github.com/kaitranntt/ccs/commit/e177a4b09796cfc48a4932428449809d8ab68015 )), closes [#531 ](https://github.com/kaitranntt/ccs/issues/531 ) [#531 ](https://github.com/kaitranntt/ccs/issues/531 )
* **cursor:** address third-round review feedback for auth module ([a8a68c9 ](https://github.com/kaitranntt/ccs/commit/a8a68c95992614e7c7ea1e3f65c85e29713ed746 ))
* **cursor:** address third-round review feedback for protobuf module ([66a93ee ](https://github.com/kaitranntt/ccs/commit/66a93ee46f26a226294cdfd25abeac78af614aff )), closes [#535 ](https://github.com/kaitranntt/ccs/issues/535 )
* **cursor:** align daemon routes, add enabled field, handle bare command ([6af7186 ](https://github.com/kaitranntt/ccs/commit/6af718626ff9db1e58a132972d08abbc3aece5bd ))
* **cursor:** clean up PID file on startDaemon failure and improve daemon robustness ([cda037e ](https://github.com/kaitranntt/ccs/commit/cda037e7e5a9a77bb6bb9768e3d601008d102b70 ))
* **cursor:** clean up settings validation and route consistency ([1e4cae3 ](https://github.com/kaitranntt/ccs/commit/1e4cae34900b307aaa7d9ddb20e624bbbf17bfb4 ))
* **cursor:** close ReadableStream controller on abort to prevent consumer hangs ([36a67c4 ](https://github.com/kaitranntt/ccs/commit/36a67c48377a0fbd325d2ed9a267de5c5357b52f ))
* **cursor:** export missing symbols, eliminate subcommand sync risk, improve tests ([9342387 ](https://github.com/kaitranntt/ccs/commit/934238740e124f6b89d04f571fe201153dbf85af ))
* **cursor:** fix router fall-through, add daemon marker, use random test port ([bfc9361 ](https://github.com/kaitranntt/ccs/commit/bfc9361701376b0a2d5541f2c8e48e95e2637539 ))
* **cursor:** fix test isolation and daemon exit handling ([fe97d72 ](https://github.com/kaitranntt/ccs/commit/fe97d720d41f83a35acf90307ef4471fb02a4cc6 ))
* **cursor:** guard raw-settings save race and enforce daemon preconditions ([9a76f86 ](https://github.com/kaitranntt/ccs/commit/9a76f866b09bfb7b864da236011658046f24f150 ))
* **cursor:** harden auth security and add token expiry warning ([aeb5802 ](https://github.com/kaitranntt/ccs/commit/aeb580281fc4b9f0d585a99e95730e65bd6fae6f ))
* **cursor:** harden stopDaemon PID validation, tighten regex, add lifecycle test ([760a5c3 ](https://github.com/kaitranntt/ccs/commit/760a5c3ca4fb10f408ddafc2bcd9a1c20e805e23 ))
* **cursor:** kill orphaned daemon on timeout and fix exit codes ([88ad13e ](https://github.com/kaitranntt/ccs/commit/88ad13ee7ba7957a6d1756e994b707d6f7402e2a ))
* **cursor:** pass all args to handler, use getCursorConfig in routes ([d7e0d1c ](https://github.com/kaitranntt/ccs/commit/d7e0d1cacff827ee1cd0015cbf8143e0a5346680 ))
* **cursor:** save credentials after auto-detect and fix signal hang ([9f9db7d ](https://github.com/kaitranntt/ccs/commit/9f9db7dcea29f8ed0e2b8d52dc8ade81f8ab050d ))
* **cursor:** show auto-detect error message, add subcommand sync comment ([887efa4 ](https://github.com/kaitranntt/ccs/commit/887efa406957bb88f0dfdfe12732b1ac0e1cfae1 ))
* **cursor:** split daemon helpers to satisfy maintainability gate ([08a3e0b ](https://github.com/kaitranntt/ccs/commit/08a3e0bae68aeefdb9e5cfaf4cb879363b16e056 ))
* **cursor:** tighten rate limit detection string matching ([79ba1de ](https://github.com/kaitranntt/ccs/commit/79ba1de4e237f126a65b981660755a0845925ce9 ))
* **cursor:** use getCursorConfig(), fix help text and stub messages ([2ba826b ](https://github.com/kaitranntt/ccs/commit/2ba826bb722c75bc773dd132095d6a42abb36691 ))
* **cursor:** use process.execPath and add safeResolve to model fetcher ([9478967 ](https://github.com/kaitranntt/ccs/commit/94789676b9642d539e9365fc03a961691981ed12 ))
* **cursor:** use stdio ignore, sequential polling, move CursorConfig to types ([ce19153 ](https://github.com/kaitranntt/ccs/commit/ce1915366d5012097b5b6814c2c672d04f16ab61 ))
* **cursor:** validate fetch status before streaming fallback and register abort early ([27badb2 ](https://github.com/kaitranntt/ccs/commit/27badb2584a9131b9408dacc1f58417745968dbe ))
* **cursor:** validate request body on settings endpoints ([f5a912b ](https://github.com/kaitranntt/ccs/commit/f5a912b114107bdc26fdcacb936ac6bf4d9f50c5 ))
* **format:** align image analysis check with pinned prettier ([ae83be1 ](https://github.com/kaitranntt/ccs/commit/ae83be159052e064ab639db2bde140326d42769f ))
* **hardening:** count executable sync fs call sites ([d21b5c4 ](https://github.com/kaitranntt/ccs/commit/d21b5c44ee736a4fea6473a32071d289fa43202e ))
* **hardening:** handle regex literals after else/do ([65a1d8a ](https://github.com/kaitranntt/ccs/commit/65a1d8ae2cd2027eb6e6992daf15466a000c48d2 ))
* **hardening:** handle regex literals in sync-call scanner ([bb9d846 ](https://github.com/kaitranntt/ccs/commit/bb9d846a549642c8b90de96a8f2377546dc2d11c ))
* **hardening:** ignore literal text in sync-call metrics ([8193e9d ](https://github.com/kaitranntt/ccs/commit/8193e9d67fef073c221f470559faa5b19db65056 ))
* **maintainability:** enforce gate and correct loc metric ([2610971 ](https://github.com/kaitranntt/ccs/commit/2610971d2e023af24c3364d94fc1a7be7e00843f ))
* **maintainability:** harden tracked scan and baseline checks ([33e9a88 ](https://github.com/kaitranntt/ccs/commit/33e9a8849420b2cdf68f1ddd5ef93d22fafc50f7 ))
* **maintainability:** require git-tracked scan for gate ([b7481cf ](https://github.com/kaitranntt/ccs/commit/b7481cf346c80fc3b178cb7c60c9459865a52f8c ))
* **maintainability:** scan tracked src files for stable gate ([8f0ba48 ](https://github.com/kaitranntt/ccs/commit/8f0ba481edf22fd87da1ad44e4eea2c257695d75 ))
* **test:** avoid global ui mock leakage in shell completion tests ([851f870 ](https://github.com/kaitranntt/ccs/commit/851f870fa8cce523205f547712ad5596e96bf3d6 ))
* **ui:** add method-aware kiro auth flow parity ([6a21f39 ](https://github.com/kaitranntt/ccs/commit/6a21f3921b618ba61949cf1eeccc2251dd3f6719 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 ) [#233 ](https://github.com/kaitranntt/ccs/issues/233 )
* **ui:** add trim validation for composite tier model fields ([b6e1d0c ](https://github.com/kaitranntt/ccs/commit/b6e1d0c4810581bd5a4e68b990601ac3c1f90cc8 ))
* **ui:** fix TypeScript error in composite edit dialog tier mapping ([240dfe2 ](https://github.com/kaitranntt/ccs/commit/240dfe29cf2aefead7850c03b5da592d3ebd04b0 ))
* **ui:** use default tier provider instead of hardcoded 'gemini' ([f3618c5 ](https://github.com/kaitranntt/ccs/commit/f3618c51d77512993dbe6a587c03db18d799cc32 ))
* **ui:** use type-only import for KiroAuthMethod ([e3f0860 ](https://github.com/kaitranntt/ccs/commit/e3f0860750e9213572727b8c3f5deb3c57615937 ))
* **web-server:** make kiro auth routes method-aware ([577991c ](https://github.com/kaitranntt/ccs/commit/577991c282fb3646f42d5c657c94dd5c07f6b4e3 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 ) [#233 ](https://github.com/kaitranntt/ccs/issues/233 )
### Documentation
* **guidelines:** add AGENTS symlink and neutral wording ([fca5ca2 ](https://github.com/kaitranntt/ccs/commit/fca5ca203f03d918ae3557754715a535a9ea85c4 ))
* **kiro:** document method-aware auth behavior ([14dd341 ](https://github.com/kaitranntt/ccs/commit/14dd34187d94fc07419175c17cd893e3f0081537 )), closes [#552 ](https://github.com/kaitranntt/ccs/issues/552 ) [#233 ](https://github.com/kaitranntt/ccs/issues/233 )
### Code Refactoring
* **cliproxy:** centralize provider capability registry ([924e368 ](https://github.com/kaitranntt/ccs/commit/924e3686c8741986def8474d079cc60ea13eee29 ))
* **commands:** add command contract and migrate shell completion ([fc4b77b ](https://github.com/kaitranntt/ccs/commit/fc4b77bc520da688af6e26add33fc7b25ff4d5c0 ))
### Tests
* **cliproxy:** add composite variant v2 unit tests ([e0ae5f2 ](https://github.com/kaitranntt/ccs/commit/e0ae5f20ff60fb8c94788a04b9c63ddb4b01b884 ))
* **cliproxy:** add regression coverage for update consistency ([7dd4ce5 ](https://github.com/kaitranntt/ccs/commit/7dd4ce5453b7e22ff1d378f396e4f8d61300a543 ))
* **cliproxy:** add thinking suffix test and document exit 0 behavior ([c35de7e ](https://github.com/kaitranntt/ccs/commit/c35de7ec9ab1eac166fc1a74bb9da3be61975ee8 ))
* **cliproxy:** stabilize path-sensitive CI test assertions ([c9faf6c ](https://github.com/kaitranntt/ccs/commit/c9faf6cdc9d5e34b1e69ed055b4e845657444c87 ))
* **cliproxy:** stabilize thinking override assertion ([d28fb2c ](https://github.com/kaitranntt/ccs/commit/d28fb2cdbd9d585f2d045fb0a64f9ec41ab5776b ))
* use getCcsDir() instead of os.homedir() for test isolation ([ca7bb23 ](https://github.com/kaitranntt/ccs/commit/ca7bb23970ba66c9b5f7ce68e96700bca8303656 ))
2026-02-14 08:44:57 +00:00
github-actions[bot]
d3ea238782
chore(release): 7.43.0-dev.20 [skip ci]
2026-02-14 06:39:14 +00:00
github-actions[bot]
34a310c73f
chore(release): 7.43.0-dev.19 [skip ci]
2026-02-14 06:31:48 +00:00
github-actions[bot]
a0d7c14ea0
chore(release): 7.43.0-dev.18 [skip ci]
2026-02-14 03:40:17 +00:00
github-actions[bot]
84e0bce99e
chore(release): 7.43.0-dev.17 [skip ci]
2026-02-14 02:43:01 +00:00
github-actions[bot]
2fe8f2b4ca
chore(release): 7.43.0-dev.16 [skip ci]
2026-02-14 02:33:13 +00:00
github-actions[bot]
baa621aedd
chore(release): 7.43.0-dev.15 [skip ci]
2026-02-14 02:09:45 +00:00
github-actions[bot]
bb164b16f7
chore(release): 7.43.0-dev.14 [skip ci]
2026-02-14 02:04:19 +00:00
github-actions[bot]
1ed0923af5
chore(release): 7.43.0-dev.13 [skip ci]
2026-02-14 01:22:03 +00:00
github-actions[bot]
60ee88cabc
chore(release): 7.43.0-dev.12 [skip ci]
2026-02-13 23:52:54 +00:00
github-actions[bot]
fcddd650d4
chore(release): 7.43.0-dev.11 [skip ci]
2026-02-13 23:33:54 +00:00
github-actions[bot]
6f1c8e348d
chore(release): 7.43.0-dev.10 [skip ci]
2026-02-13 13:27:52 +00:00
github-actions[bot]
33a48f2c76
chore(release): 7.43.0-dev.9 [skip ci]
2026-02-13 01:46:02 +00:00
github-actions[bot]
c403ef7920
chore(release): 7.43.0-dev.8 [skip ci]
2026-02-12 23:41:44 +00:00
github-actions[bot]
9aca2290c0
chore(release): 7.43.0-dev.7 [skip ci]
2026-02-12 23:34:32 +00:00
github-actions[bot]
43d441ce23
chore(release): 7.43.0-dev.6 [skip ci]
2026-02-12 22:39:25 +00:00
github-actions[bot]
52e04f5cf3
chore(release): 7.43.0-dev.5 [skip ci]
2026-02-12 09:22:23 +00:00
Kai (Tam Nhu) Tran and GitHub
a2520d2ed8
Merge pull request #543 from kaitranntt/kai/feat/538-stream-d-hardening
...
chore(hardening): add debt inventory and async I/O kickoff (stream D)
2026-02-12 16:21:18 +07:00
Tam Nhu Tran
2610971d2e
fix(maintainability): enforce gate and correct loc metric
2026-02-12 14:18:48 +07:00
Tam Nhu Tran
cefb564948
chore(hardening): add debt inventory and async io kickoff
2026-02-12 12:57:46 +07:00
Tam Nhu Tran
975c864f94
chore(maintainability): add baseline metrics gate
2026-02-12 12:57:24 +07:00
github-actions[bot]
e68ae5b166
chore(release): 7.43.0-dev.4 [skip ci]
2026-02-12 04:40:14 +00:00
github-actions[bot]
f6400b4bf9
chore(release): 7.43.0-dev.3 [skip ci]
2026-02-12 03:49:10 +00:00
github-actions[bot]
0c898466fb
chore(release): 7.43.0-dev.2 [skip ci]
2026-02-11 20:49:34 +00:00
github-actions[bot]
a7b89df54e
chore(release): 7.43.0-dev.1 [skip ci]
2026-02-11 20:17:58 +00:00
semantic-release-bot
f3e7e2ad3c
chore(release): 7.43.0 [skip ci]
...
## [7.43.0](https://github.com/kaitranntt/ccs/compare/v7.42.0...v7.43.0 ) (2026-02-11)
### Features
* **cliproxy:** add account safety guards to prevent Google account bans ([#516 ](https://github.com/kaitranntt/ccs/issues/516 )) ([e055dac ](https://github.com/kaitranntt/ccs/commit/e055dac1996bd3cd3c4e5ee0f11dad22d8d2a838 )), closes [#509 ](https://github.com/kaitranntt/ccs/issues/509 ) [#512 ](https://github.com/kaitranntt/ccs/issues/512 )
* **cliproxy:** runtime quota monitoring during active sessions ([#529 ](https://github.com/kaitranntt/ccs/issues/529 )) ([c6c94a0 ](https://github.com/kaitranntt/ccs/commit/c6c94a0c1e7bf82dd56295a76d833d7d52694718 )), closes [#524 ](https://github.com/kaitranntt/ccs/issues/524 )
* **glm:** update default model to GLM-5 and fix all GLM pricing ([3e26dee ](https://github.com/kaitranntt/ccs/commit/3e26dee0134fa576a57f216f232a0215084e74a3 )), closes [#532 ](https://github.com/kaitranntt/ccs/issues/532 )
### Bug Fixes
* **cliproxy:** add fork:true for Claude model aliases in config generator ([#523 ](https://github.com/kaitranntt/ccs/issues/523 )) ([4065399 ](https://github.com/kaitranntt/ccs/commit/4065399d8aa46ccdb115081e461c5651d0afaa2e )), closes [#522 ](https://github.com/kaitranntt/ccs/issues/522 )
* **cliproxy:** address all review feedback (Low + informational) ([7d049d8 ](https://github.com/kaitranntt/ccs/commit/7d049d8f1e8655856a1a9636d21f6eb3992752a0 ))
* **cliproxy:** mask email in ban detection and fix JSDoc default ([fcc605b ](https://github.com/kaitranntt/ccs/commit/fcc605bc1f02af4da518d21c10f8c77b38a793ad ))
* **cliproxy:** migrate deprecated gemini-claude-* model names to upstream claude-* names ([#515 ](https://github.com/kaitranntt/ccs/issues/515 )) ([6afbb72 ](https://github.com/kaitranntt/ccs/commit/6afbb72b472029358fc3d9b2fed488fd4779695b )), closes [#513 ](https://github.com/kaitranntt/ccs/issues/513 )
* **glm:** fix missed help text reference and glm-4.5-air pricing ([7d9c538 ](https://github.com/kaitranntt/ccs/commit/7d9c538248f93089ae6483af4ea1d01e555e2e20 ))
* **hooks:** isolate image type check before error-prone processing ([#514 ](https://github.com/kaitranntt/ccs/issues/514 )) ([19de427 ](https://github.com/kaitranntt/ccs/commit/19de42704f683a29134982dfb643e97c3123bf7c )), closes [#511 ](https://github.com/kaitranntt/ccs/issues/511 )
2026-02-11 19:24:41 +00:00
github-actions[bot]
273e290bc0
chore(release): 7.42.0-dev.1 [skip ci]
2026-02-11 19:21:43 +00:00
semantic-release-bot
f62f732249
chore(release): 7.42.0 [skip ci]
...
## [7.42.0](https://github.com/kaitranntt/ccs/compare/v7.41.0...v7.42.0 ) (2026-02-11)
### Features
* account safety, quota monitoring, and stability fixes ([#530 ](https://github.com/kaitranntt/ccs/issues/530 )) ([0518050 ](https://github.com/kaitranntt/ccs/commit/051805074eb80db839a4deb8ab1dcb89f29766de )), closes [#515 ](https://github.com/kaitranntt/ccs/issues/515 ) [#513 ](https://github.com/kaitranntt/ccs/issues/513 ) [#514 ](https://github.com/kaitranntt/ccs/issues/514 ) [#511 ](https://github.com/kaitranntt/ccs/issues/511 ) [#523 ](https://github.com/kaitranntt/ccs/issues/523 ) [#522 ](https://github.com/kaitranntt/ccs/issues/522 ) [#516 ](https://github.com/kaitranntt/ccs/issues/516 ) [#509 ](https://github.com/kaitranntt/ccs/issues/509 ) [#512 ](https://github.com/kaitranntt/ccs/issues/512 ) [#529 ](https://github.com/kaitranntt/ccs/issues/529 ) [#524 ](https://github.com/kaitranntt/ccs/issues/524 )
2026-02-11 17:57:36 +00:00
051805074e
feat: account safety, quota monitoring, and stability fixes ( #530 )
...
* fix(cliproxy): migrate deprecated gemini-claude-* model names to upstream claude-* names (#515 )
* fix(cliproxy): migrate deprecated gemini-claude-* model names to upstream claude-* names
CLIProxyAPI registry no longer recognizes the gemini-claude-* prefix convention.
Model names in catalog, base config, and user settings are migrated to upstream
claude-* names. Auto-migration in env-builder rewrites existing user settings on
load and persists the change.
Closes #513
* fix: address code review feedback — sync UI layer and add migration tests
- Sync UI isNativeGeminiModel() with backend (remove gemini-claude- exclusion)
- Update UI model catalog agy entries from gemini-claude-* to claude-*
- Update CI/CD workflow and code-reviewer default model names
- Add unit tests for migrateDeprecatedModelNames() logic
* fix(hooks): isolate image type check before error-prone processing (#514 )
* fix(hooks): isolate image type check before error-prone processing
Restructure processHook() into two phases so non-image Read calls
never see hook error messages. Phase 1 defensively checks tool name
and file extension, exiting 0 silently on any failure. Phase 2 only
runs for confirmed image/PDF files where errors are relevant.
Closes #511
* fix(hooks): sync image analyzer hook file on every profile launch
Add installImageAnalyzerHook() call to cliproxy executor, matching
the existing installWebSearchHook() pattern. This ensures the .cjs
file in ~/.ccs/hooks/ gets refreshed from the npm package on every
launch, so users receive hook updates after npm update.
* chore(release): 7.41.0-dev.1 [skip ci]
* fix(cliproxy): add fork:true for Claude model aliases in config generator (#523 )
Config generator now outputs fork:true for Claude model alias entries,
ensuring both upstream (claude-*) and aliased (gemini-claude-*) model
names appear in /v1/models listings. Also preserves fork flag when
parsing user-added aliases during config regeneration.
Bumps config version to v7 to trigger regeneration on next ccs doctor.
Closes #522
* chore(release): 7.41.0-dev.2 [skip ci]
* feat(cliproxy): add account safety guards to prevent Google account bans (#516 )
* feat(cliproxy): add account safety guards to prevent Google account bans
Implements cross-provider isolation to prevent Google from flagging
concurrent OAuth usage across different client IDs (ref: #509 , #512 ).
Three pillars:
1. Auto-pause enforcement at session launch — conflicting accounts in
other Google OAuth providers are paused so CLIProxyAPI can't use them,
restored on session exit with crash recovery via auto-paused.json
2. Ban/disable detection — error responses matching Google ban patterns
auto-pause the affected account to prevent further damage
3. Cross-provider conflict warnings during OAuth registration
Key design decisions:
- PID-based session tracking for crash recovery (dead PID = restore)
- Timestamp comparison prevents restoring ban-paused accounts on exit
- Schema validation on auto-paused.json prevents corrupted state
- Falls back to warn-only when another session is managing isolation
* fix(cliproxy): address code review feedback (attempt 1/5)
- Re-read auto-paused.json before write in enforceProviderIsolation to
reduce concurrent write race window
- Use actual email from registry for display instead of raw accountId
- Export maskEmail for testability
- Add 27 unit tests covering ban detection, email masking,
cross-provider duplicate detection, enforcement lifecycle,
crash recovery, and timestamp-guarded restore
* fix(cliproxy): address remaining review feedback (attempt 2/5)
- Add handleBanDetection test verifying account pause on ban error
- Add warnCrossProviderDuplicates tests (true/false/non-Google)
- Document PID reuse limitation in isPidAlive JSDoc comment
* chore(release): 7.41.0-dev.3 [skip ci]
* feat(cliproxy): runtime quota monitoring during active sessions (#529 )
* feat(cliproxy): add runtime quota monitoring during active sessions
Adds adaptive background quota polling to detect and respond to quota
exhaustion during active CLIProxy sessions. Prevents rate-limit-driven
account bans by auto-cooling exhausted accounts and switching defaults.
- Adaptive polling: 300s normal, 60s at 20% threshold, stops at 0%
- Stderr warnings at 20%, boxed exhaustion alerts at 0%
- Cooldown + default switch on exhaustion (existing patterns)
- Configurable via quota_management.runtime_monitor in config.yaml
- Timer.unref() prevents blocking process exit
- monitorStopped guard for in-flight poll safety
Closes #524
* fix: address code review feedback (attempt 1/5)
- M1: Round quotaPercent display with Math.round() to avoid ugly floats
- M2: Rename exhaust_threshold -> exhaustion_threshold for consistency
with existing auto.exhaustion_threshold config field
- M3: Replace async not.toThrow() with direct await assertion pattern
* fix: address code review feedback (attempt 2/5)
- Remove .claude/agent-memory/ from tracking and add to .gitignore
- Unify cooldown_minutes default to 5 (was 10 in runtime_monitor, 5 in auto)
- Add threshold validation in startQuotaMonitor (warn > exhaustion)
- Document intentional post-switch monitoring gap in code comment
* chore(release): 7.41.0-dev.4 [skip ci]
* fix(cliproxy): mask email in ban detection and fix JSDoc default
- Use maskEmail() in handleBanDetection output for consistency
- Fix cooldown_minutes JSDoc: default is 5, not 10
* chore(release): 7.41.0-dev.5 [skip ci]
* fix(cliproxy): address all review feedback (Low + informational)
- Add sync constraint comment on process.exit handler (executor)
- Add TOCTOU race acceptability comment (account-safety)
- Mask email in handleQuotaExhaustion reason string
- Use realistic exhaustion_threshold (5) in test configs
* chore(release): 7.41.0-dev.6 [skip ci]
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-12 00:48:29 +07:00
semantic-release-bot
59e3e0286e
chore(release): 7.41.0 [skip ci]
...
## [7.41.0](https://github.com/kaitranntt/ccs/compare/v7.40.0...v7.41.0 ) (2026-02-11)
### Features
* **config:** add CCS_DIR env var and --config-dir flag for config directory override ([7a0e6a4 ](https://github.com/kaitranntt/ccs/commit/7a0e6a4112b50dad14bf48004b07a77d1a5fd4d8 )), closes [#507 ](https://github.com/kaitranntt/ccs/issues/507 )
* **env:** add ccs env command for third-party tool integration ([2e85064 ](https://github.com/kaitranntt/ccs/commit/2e85064b8a6a3eed694abb56bef70bf889f648d3 )), closes [#503 ](https://github.com/kaitranntt/ccs/issues/503 )
* update cliproxy, config loader, glmt transformer, and provider routes ([8c6afe2 ](https://github.com/kaitranntt/ccs/commit/8c6afe2e73049ecfbb12cb29a894e83eb2576354 ))
### Bug Fixes
* **cliproxy:** prevent OAuth process hang on Qwen device code flow ([086bf95 ](https://github.com/kaitranntt/ccs/commit/086bf958e9c6c9d6d745e78a29a95a9a58490bf1 )), closes [#314 ](https://github.com/kaitranntt/ccs/issues/314 )
* **cliproxy:** strip Gemini-unsupported schema fields including "examples" ([505d6d0 ](https://github.com/kaitranntt/ccs/commit/505d6d0f111b11e4e231742d65d2a3bbfb73864a )), closes [#155 ](https://github.com/kaitranntt/ccs/issues/155 )
* **config:** dynamic health message, cache getters, static imports, cloud hint ([706cca8 ](https://github.com/kaitranntt/ccs/commit/706cca8b3e57c1f9e6c559dc4c1a18ed6854a96d ))
* **config:** lazy-evaluate paths, fix TOCTOU, segment-boundary cloud detection ([d5abc7d ](https://github.com/kaitranntt/ccs/commit/d5abc7d69170132cc5c604c453e45f54fa2973b6 ))
* **config:** migrate all hardcoded paths to getCcsDir() and improve validation ([60d6bbd ](https://github.com/kaitranntt/ccs/commit/60d6bbd0271a4bad4df1eaa705c11d34f7abd464 ))
* **config:** resolve remaining hardcoded paths and improve readability ([c8800b4 ](https://github.com/kaitranntt/ccs/commit/c8800b418a8ee2143366a2e199c42384ff5693f4 ))
* **delegation:** use exitCode instead of killed for process termination checks ([4b1fcac ](https://github.com/kaitranntt/ccs/commit/4b1fcacf307e0bb8935495202f0322210eb395ea ))
* **env:** add key sanitization and shell completions ([76457a5 ](https://github.com/kaitranntt/ccs/commit/76457a567d7d1fe52a983a3c6e37b49d503071c9 ))
* **env:** add missing CLIProxy profiles to bash completion and shell validation ([6d9351d ](https://github.com/kaitranntt/ccs/commit/6d9351dcbc1baa4135d75361301e36cafc3556a3 ))
* **env:** address all PR review feedback ([44b3152 ](https://github.com/kaitranntt/ccs/commit/44b3152d347a7f0c96af4e2e4cd8027ea30634fc ))
* **env:** address P1-P3 review items from code review ([3f5ecd4 ](https://github.com/kaitranntt/ccs/commit/3f5ecd4d6963a25ce909cd7e17fcca610d9dc978 ))
* **env:** fix fish escaping, profile parsing, and add OPENAI_MODEL mapping ([d5c03d1 ](https://github.com/kaitranntt/ccs/commit/d5c03d1f2d2ad600b4106a9a2fb38a028d099338 ))
* **env:** improve empty profile UX and consolidate shell validation constants ([b96eacf ](https://github.com/kaitranntt/ccs/commit/b96eacfc06a97e89796620c1ea675aaac290e427 ))
* **env:** sync CLIProxy profiles across all shell completions and improve error messages ([a98f4a5 ](https://github.com/kaitranntt/ccs/commit/a98f4a54278f9f8d9e4b30ccccc900514c08b32f ))
* **env:** use single quotes to prevent shell injection via eval ([a5dc15d ](https://github.com/kaitranntt/ccs/commit/a5dc15d174dec2e39b251d63bc4a4093003fc0cb ))
* separate type-only exports and migrate test imports from dist/ to src/ ([0483444 ](https://github.com/kaitranntt/ccs/commit/048344486456bd561c03a1441060bfc4ca650655 ))
### Documentation
* update local docs for ccs env command ([38bd562 ](https://github.com/kaitranntt/ccs/commit/38bd562687865c2cb523734509143390f83a5dcc ))
### Code Refactoring
* **config:** DRY precedence logic, dynamic recovery messages, CCS_HOME cloud warning ([9699e01 ](https://github.com/kaitranntt/ccs/commit/9699e01725c3b33ca1bf24a4eeea7ec7f7e9c220 ))
* **utils:** extract killWithEscalation to shared process-utils ([90b4627 ](https://github.com/kaitranntt/ccs/commit/90b4627740ae90374b06e0013c09bd583e1ddb39 ))
### Tests
* **cliproxy:** add edge case coverage for Gemini schema sanitizer ([917f0bb ](https://github.com/kaitranntt/ccs/commit/917f0bbef7b7132dca0c37e474a82a9bb07f0df1 ))
* **utils:** add unit tests for killWithEscalation ([dc9b276 ](https://github.com/kaitranntt/ccs/commit/dc9b27623bd3cd92dd1b556329d20fd62043b37b ))
2026-02-11 07:13:59 +00:00
github-actions[bot]
a0431466c1
chore(release): 7.40.0-dev.6 [skip ci]
2026-02-11 07:06:55 +00:00
github-actions[bot]
8262c8d205
chore(release): 7.40.0-dev.5 [skip ci]
2026-02-11 05:12:38 +00:00
github-actions[bot]
687c3f2b83
chore(release): 7.40.0-dev.4 [skip ci]
2026-02-11 04:31:16 +00:00
github-actions[bot]
372b04e6a9
chore(release): 7.40.0-dev.3 [skip ci]
2026-02-10 19:30:48 +00:00
github-actions[bot]
72ee3122bd
chore(release): 7.40.0-dev.2 [skip ci]
2026-02-10 18:34:20 +00:00
github-actions[bot]
fa293b3d53
chore(release): 7.40.0-dev.1 [skip ci]
2026-02-10 15:46:34 +00:00
semantic-release-bot
7ceb019bb7
chore(release): 7.40.0 [skip ci]
...
## [7.40.0](https://github.com/kaitranntt/ccs/compare/v7.39.0...v7.40.0 ) (2026-02-07)
### Features
* **cliproxy:** add hybrid catalog sync with CLIProxyAPI ([#485 ](https://github.com/kaitranntt/ccs/issues/485 )) ([c8a0995 ](https://github.com/kaitranntt/ccs/commit/c8a099509a878f24a211f01ee0000f01020c4d6b )), closes [#477 ](https://github.com/kaitranntt/ccs/issues/477 )
* **cliproxy:** delegate kiro/ghcp token refresh to CLIProxyAPIPlus ([#488 ](https://github.com/kaitranntt/ccs/issues/488 )) ([215c00e ](https://github.com/kaitranntt/ccs/commit/215c00e9830e4a604231dd64c01154c91574ace9 )), closes [#487 ](https://github.com/kaitranntt/ccs/issues/487 )
### Bug Fixes
* **cliproxy:** disable 1M extended context for opus 4.6 (256k limit) ([#492 ](https://github.com/kaitranntt/ccs/issues/492 )) ([43cd19a ](https://github.com/kaitranntt/ccs/commit/43cd19a52b128363c7202590869fb4bd9349b859 )), closes [#490 ](https://github.com/kaitranntt/ccs/issues/490 )
* **cliproxy:** guard against empty upstream SSE responses in agy profile ([#489 ](https://github.com/kaitranntt/ccs/issues/489 )) ([545c8b9 ](https://github.com/kaitranntt/ccs/commit/545c8b9515d5afeda17976f418e22037cc9acef9 )), closes [#350 ](https://github.com/kaitranntt/ccs/issues/350 )
* **hooks:** add image analysis env vars for settings-based profiles ([#484 ](https://github.com/kaitranntt/ccs/issues/484 )) ([b0dff7a ](https://github.com/kaitranntt/ccs/commit/b0dff7a148c795994c2e3f871db9f60dd1cc737a )), closes [#440 ](https://github.com/kaitranntt/ccs/issues/440 )
* **teams:** propagate CLAUDE_CONFIG_DIR to tmux session for agent teammates ([db88290 ](https://github.com/kaitranntt/ccs/commit/db88290b9110ba78f484d707ae3e64521db4e622 ))
### Code Refactoring
* **cliproxy:** check lifecycle events in remaining SSE buffer ([42a3eb1 ](https://github.com/kaitranntt/ccs/commit/42a3eb150630b3a466b7ec9063a2256ecc38c60e ))
* **cliproxy:** deduplicate message_delta/message_stop in synthetic SSE response ([152f543 ](https://github.com/kaitranntt/ccs/commit/152f5432ae26e42e07ea422b882298033ed66c7f )), closes [#491 ](https://github.com/kaitranntt/ccs/issues/491 )
* **cliproxy:** extract SSE lifecycle tracker and add backpressure handling ([1b3440b ](https://github.com/kaitranntt/ccs/commit/1b3440b93962e347797105b9bf92c2aaeb954a27 ))
* **teams:** use spawnSync array args instead of execSync string ([0f7d5f9 ](https://github.com/kaitranntt/ccs/commit/0f7d5f97576d68b9c73ea952a4ea5853b0993467 ))
2026-02-07 10:46:43 +00:00
github-actions[bot]
cff5133e14
chore(release): 7.39.0-dev.5 [skip ci]
2026-02-07 10:41:42 +00:00
github-actions[bot]
68f37efda9
chore(release): 7.39.0-dev.4 [skip ci]
2026-02-07 09:39:23 +00:00
github-actions[bot]
17029c0ca2
chore(release): 7.39.0-dev.3 [skip ci]
2026-02-07 09:20:42 +00:00
github-actions[bot]
2599136876
chore(release): 7.39.0-dev.2 [skip ci]
2026-02-07 09:10:32 +00:00
github-actions[bot]
984e007468
chore(release): 7.39.0-dev.1 [skip ci]
2026-02-07 08:35:20 +00:00
semantic-release-bot
5ed6fd9fa3
chore(release): 7.39.0 [skip ci]
...
## [7.39.0](https://github.com/kaitranntt/ccs/compare/v7.38.0...v7.39.0 ) (2026-02-07)
### Features
* hybrid CLIProxy catalog sync + agent teams env fix ([#486 ](https://github.com/kaitranntt/ccs/issues/486 )) ([0b39493 ](https://github.com/kaitranntt/ccs/commit/0b394933aec723f77a552b7d951afaf065399a92 )), closes [#485 ](https://github.com/kaitranntt/ccs/issues/485 ) [#477 ](https://github.com/kaitranntt/ccs/issues/477 )
2026-02-07 05:05:37 +00:00
0b394933ae
feat: hybrid CLIProxy catalog sync + agent teams env fix ( #486 )
...
* fix(teams): propagate CLAUDE_CONFIG_DIR to tmux session for agent teammates
When CCS launches Claude with CLAUDE_CONFIG_DIR pointing to the isolated
instance path, agent team teammates spawned via tmux split-window don't
inherit it because tmux creates new panes from its own session environment.
This causes teammates to use ~/.claude/ instead of ~/.ccs/instances/{profile}/,
creating a split-brain in shared state (tasks, teams, mailbox).
Sets key CCS env vars in the tmux session environment via `tmux setenv` so
all new panes inherit the correct config directory.
* refactor(teams): use spawnSync array args instead of execSync string
Avoids shell interpretation of env values by passing args as array
to spawnSync instead of interpolating into a shell command string.
* chore(release): 7.38.0-dev.1 [skip ci]
* feat(cliproxy): add hybrid catalog sync with CLIProxyAPI (#485 )
* chore(release): 7.38.0 [skip ci]
## [7.38.0](https://github.com/kaitranntt/ccs/compare/v7.37.1...v7.38.0 ) (2026-02-07)
### Features
* **release:** v7.38.0 - Extended Context, Qwen Models, Bug Fixes ([#480 ](https://github.com/kaitranntt/ccs/issues/480 )) ([b454834 ](https://github.com/kaitranntt/ccs/commit/b4548341750804339c87c48259dd8741425d2acf )), closes [#472 ](https://github.com/kaitranntt/ccs/issues/472 ) [#474 ](https://github.com/kaitranntt/ccs/issues/474 ) [#103 ](https://github.com/kaitranntt/ccs/issues/103 ) [#478 ](https://github.com/kaitranntt/ccs/issues/478 ) [#482 ](https://github.com/kaitranntt/ccs/issues/482 )
* feat(cliproxy): add hybrid catalog sync with CLIProxyAPI
Add `ccs cliproxy catalog` command family for syncing model catalogs
from CLIProxyAPI's model-definitions endpoint. Cached locally with
24h TTL, merges remote models with static catalog preserving
broken/deprecated flags. Dashboard API endpoint at /api/cliproxy/catalog.
Closes #477
---------
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net >
* chore(reviewer): upgrade review model from opus 4.5 to opus 4.6
- update default model in code-reviewer.ts
- update REVIEW_MODEL, ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL
in ai-review.yml workflow
- aligns reviewer with AGY model catalog default
* chore(release): 7.38.0-dev.2 [skip ci]
* fix(hooks): add image analysis env vars for settings-based profiles (#484 )
* chore(release): 7.38.0 [skip ci]
## [7.38.0](https://github.com/kaitranntt/ccs/compare/v7.37.1...v7.38.0 ) (2026-02-07)
### Features
* **release:** v7.38.0 - Extended Context, Qwen Models, Bug Fixes ([#480 ](https://github.com/kaitranntt/ccs/issues/480 )) ([b454834 ](https://github.com/kaitranntt/ccs/commit/b4548341750804339c87c48259dd8741425d2acf )), closes [#472 ](https://github.com/kaitranntt/ccs/issues/472 ) [#474 ](https://github.com/kaitranntt/ccs/issues/474 ) [#103 ](https://github.com/kaitranntt/ccs/issues/103 ) [#478 ](https://github.com/kaitranntt/ccs/issues/478 ) [#482 ](https://github.com/kaitranntt/ccs/issues/482 )
* fix(hooks): add image analysis env vars for settings-based profiles
Image analysis hook was injected into settings files for API profiles
but the CCS_IMAGE_ANALYSIS_* env vars were never set, causing the hook
to skip. Add getImageAnalysisHookEnv() call to both settings-based and
GLMT proxy execution paths, matching CLIProxy profile behavior.
Closes #440
* fix(hooks): add hook env vars to copilot executor
Copilot profile had same gap as settings-based profiles: hooks installed
but webSearch/imageAnalysis env vars and CCS_PROFILE_TYPE never set.
Add missing env var injection matching other profile flows.
---------
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net >
* chore(release): 7.38.0-dev.3 [skip ci]
---------
Co-authored-by: Carlos Umanzor <cumanzor@gmail.com >
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net >
2026-02-06 23:54:03 -05:00
semantic-release-bot
e24d8d89e3
chore(release): 7.38.0 [skip ci]
...
## [7.38.0](https://github.com/kaitranntt/ccs/compare/v7.37.1...v7.38.0 ) (2026-02-07)
### Features
* **release:** v7.38.0 - Extended Context, Qwen Models, Bug Fixes ([#480 ](https://github.com/kaitranntt/ccs/issues/480 )) ([b454834 ](https://github.com/kaitranntt/ccs/commit/b4548341750804339c87c48259dd8741425d2acf )), closes [#472 ](https://github.com/kaitranntt/ccs/issues/472 ) [#474 ](https://github.com/kaitranntt/ccs/issues/474 ) [#103 ](https://github.com/kaitranntt/ccs/issues/103 ) [#478 ](https://github.com/kaitranntt/ccs/issues/478 ) [#482 ](https://github.com/kaitranntt/ccs/issues/482 )
2026-02-07 01:31:41 +00:00
b454834175
feat(release): v7.38.0 - Extended Context, Qwen Models, Bug Fixes ( #480 )
...
* fix(version): show active config path instead of deprecated config.json
The version command was using deprecated getConfigPath() which always
returned config.json path. Now uses getActiveConfigPath() which shows
config.yaml in unified mode or config.json in legacy mode.
* chore(release): 7.37.1-dev.1 [skip ci]
* fix(ui): use native dynamic import to fix Node 24 ESM/CJS interop
TypeScript compiles import() to require() when targeting CommonJS,
which breaks ESM packages like ora on Node 24. Use new Function()
to create native dynamic import at runtime, bypassing TS transform.
Closes #472
* chore(release): 7.37.1-dev.2 [skip ci]
* fix(env): strip ANTHROPIC_* from account/default profiles
Account and default profiles inherit process.env which may contain
stale ANTHROPIC_BASE_URL from prior CLIProxy sessions. This causes
ConnectionRefused errors when Claude tries to hit an unavailable proxy.
Settings-based profiles already handle this by explicitly injecting
their own ANTHROPIC_* values. This fix applies the same protection
to account/default profiles by stripping ANTHROPIC_* before spawn.
Closes #474
* test(env): add unit tests for stripAnthropicEnv
Address code review feedback from PR #475 . Tests cover:
- Removing all ANTHROPIC_* keys
- Preserving non-ANTHROPIC keys
- Empty object handling
- Undefined value preservation
- Case sensitivity (only uppercase ANTHROPIC_)
- All ANTHROPIC_ prefixed variants stripped
* chore(release): 7.37.1-dev.3 [skip ci]
* feat(cliproxy): add extended context support for 1M token window
Add --1m and --no-1m flags to enable/disable 1M token context window.
Uses Claude Code's [1m] suffix mechanism.
Behavior:
- Gemini models: auto-enabled by default
- Claude models: opt-in with --1m flag
- New extendedContext field in model catalog
Also adds Claude Opus 4.6 to model catalog with extended context support.
Closes #103
* feat(ui): add extended context toggle in dashboard model config
- Add ExtendedContextToggle component for 1M token context window
- Add Claude Opus 4.6 (claude-opus-4-6-20260203) to model catalogs
- Mark Gemini and Claude models with extendedContext: true
- Toggle only appears when selected model supports extended context
- Auto-enabled info for native Gemini, opt-in info for Claude
Part of extended context feature implementation for issue #103 .
* fix: address code review findings and CI failure
- Fix CI error: add missing 'provider' prop to ModelConfigSection
- Fix case sensitivity in applyExtendedContextSuffix
- Fix whitespace handling in stripModelSuffixes
- Handle --1m=value and --no-1m=value CLI patterns
- Add warning when --1m used on unsupported model
- Sync agy catalog: add extendedContext to gemini-3-pro-preview
- Extract isNativeGeminiModel to shared utility (DRY)
- Add 21 unit tests for extended-context-config
* fix(catalog): rename claude-opus-4-6-20260203 to claude-opus-4-6
* fix(ui): wire extended context toggle through component tree
- Add extendedContextEnabled and toggleExtendedContext to useProviderEditor hook
- Store setting as CCS_EXTENDED_CONTEXT env var in provider settings
- Pass props through provider-editor → model-config-tab → model-config-section
- Update UseProviderEditorReturn type with new properties
* fix(ui): apply [1m] suffix directly to model strings in settings
- Toggle now applies/strips [1m] suffix to all ANTHROPIC_*MODEL env vars
- Extended context detected by checking if any model has [1m] suffix
- Remove legacy CCS_EXTENDED_CONTEXT flag approach
- Add suffix utilities: applyExtendedContextSuffix, stripExtendedContextSuffix
- Raw Configuration now shows actual model values with [1m] suffix
* fix(qwen): update model catalog with correct context windows and tier mappings
- Update context window specs from official Alibaba docs:
- Qwen3 Coder Plus: 1M context (was 32K)
- Qwen3 Max: 256K context (flagship)
- Qwen3 Coder Flash: fast code generation
- Fix preset mappings for Claude tier equivalence:
- Opus → qwen3-max (flagship 256K)
- Sonnet → qwen3-coder-plus (balanced 1M)
- Haiku → qwen3-coder-flash (fast)
- Update provider descriptions to reflect 256K-1M context range
- Add all 7 Qwen models from CLIProxyAPI: qwen3-coder-plus, qwen3-max,
qwen3-max-preview, qwen3-235b, qwen3-vl-plus, qwen3-coder-flash, qwen3-32b
Closes #478
* fix(ui): only apply [1m] suffix to ANTHROPIC_MODEL, fix toggle refresh
- Only ANTHROPIC_MODEL gets [1m] suffix, not tier mappings
- Strip [1m] when looking up model in catalog to prevent toggle disappearing
- Fix odd page refresh when toggling extended context
* chore(release): 7.37.1-dev.4 [skip ci]
* fix(ui): remove duplicate import in use-provider-editor
* chore: address PR review feedback - sync comment and unused import
* chore(release): 7.37.1-dev.5 [skip ci]
* feat(cliproxy): add Opus 4.6 to Antigravity model catalog (#482 )
* feat(cliproxy): add Opus 4.6 to Antigravity model catalog
- Add gemini-claude-opus-4-6-thinking as new default agy model
- Update preset mappings to route opus tier to Opus 4.6
- Bump CLIProxy fallback versions to v6.8.2
- Keep Opus 4.5 as previous flagship option
* fix(cliproxy): include oauth-model-alias in config generation
Root cause: CLIProxy config.yaml was missing Opus 4.6 alias because:
1. CLIProxyPlus startup migration is disabled (intentional)
2. CCS config generator never wrote oauth-model-alias section
3. Existing users with outdated aliases got 502 on Opus 4.6
Fix:
- Add DEFAULT_ANTIGRAVITY_ALIASES to config generator
- Generate oauth-model-alias section in config.yaml template
- Preserve claude-api-key and custom aliases during regeneration
- Bump config version to v6 to trigger auto-regeneration
- Update model catalog tests for new model count
* fix(cliproxy): preserve YAML indentation in extractYamlSection
- Replace .trim() with regex to strip only leading/trailing newlines,
preserving 2-space indent on claude-api-key children
- Skip standalone comments at col 0 in section boundary detection
- Update stale test description (4 → 5 models)
* chore(release): 7.37.1-dev.6 [skip ci]
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-06 20:28:58 -05:00
semantic-release-bot
3e8957af8b
chore(release): 7.37.1 [skip ci]
...
## [7.37.1](https://github.com/kaitranntt/ccs/compare/v7.37.0...v7.37.1 ) (2026-02-05)
### Bug Fixes
* **cliproxy:** fix discoverExistingAccounts test failures ([759f289 ](https://github.com/kaitranntt/ccs/commit/759f28911958689ff2b56f03409545b6fec81dec ))
* **ui:** display device code for GitHub Copilot OAuth in Dashboard ([13f6c3f ](https://github.com/kaitranntt/ccs/commit/13f6c3f14bd0d1c920e339b2486dcd6e37ce50f4 )), closes [#460 ](https://github.com/kaitranntt/ccs/issues/460 )
### Code Refactoring
* **cliproxy:** modularize top 4 giant files ([b149e25 ](https://github.com/kaitranntt/ccs/commit/b149e252ebe3fc355e3e47772de4820810b8000f ))
* **ui:** address PR review feedback for device code auth ([a08d0cf ](https://github.com/kaitranntt/ccs/commit/a08d0cfece85ebb8c5960ad66ee48131af6ded05 ))
2026-02-05 22:54:56 +00:00
github-actions[bot]
d8375e7ab1
chore(release): 7.37.0-dev.2 [skip ci]
2026-02-05 20:52:32 +00:00
github-actions[bot]
10b73542da
chore(release): 7.37.0-dev.1 [skip ci]
2026-02-05 20:16:10 +00:00