Commit Graph
3242 Commits
Author SHA1 Message Date
Tam Nhu Tran 7fc39f7c03 fix(cli): match managed prompt files by exact path 2026-04-13 08:39:59 -04:00
Tam Nhu Tran a63417e567 fix(ci): sync bun.lock for browser MCP types 2026-04-13 08:33:29 -04:00
Yehor Baklanov 45c231a717 feat(cli): add --append-system-prompt-file support 2026-04-13 06:37:19 +00:00
Wooseong Kim a76265a7c0 fix(image-analysis): wrap defaultDeps in arrow functions to fix circular dep capture
Direct function references in defaultDeps (checkRemoteProxy, fetchRemoteAuthStatus,
getAuthStatus, getProxyTarget, initializeAccounts) are captured at module load time.
Due to circular dependencies in the module graph, auth-handler.js may not have
finished initializing when this module is first evaluated, causing these references
to be captured as undefined.

Wrapping each reference in an arrow function defers evaluation to call time,
by which point all modules are fully initialized.

isCliproxyRunning was already wrapped correctly; this patch applies the same
pattern consistently to all deps.

Fixes #973
2026-04-13 15:05:22 +09:00
walker1211 2527889d1d test(ui): 修复彩色输出下的脆弱断言 2026-04-13 11:19:16 +08:00
walker1211 7754c6c0ff test(browser): 修复 default profile browser launch 竞态测试 2026-04-13 11:19:16 +08:00
walker 26059c78dc build(types): 补充 Bun 类型声明配置 2026-04-13 11:19:16 +08:00
walkerandClaude Opus 4.6 74f028168d fix(browser): 加固 browser_click 激活语义并修复相关验证阻塞
- 将 browser_click 调整为 mousedown/mouseup 后走 native click
- 在取消激活和中途 detached 场景下避免强制触发 native activation
- 补齐 browser_click 的回归测试与取消激活场景覆盖
- 修复 cliproxy 本地代理、Droid 环境隔离、图像分析 hook 与 proxy 集成测试的验证阻塞

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 11:19:16 +08:00
walkerandClaude Opus 4.6 eb8149e8fa feat(browser): 接入 CCS browser MCP 与最小交互闭环
新增 browser MCP 安装、Chrome 复用与运行时接线,
实现 navigate、click、type、take_screenshot 四个 phase-1 工具并补齐相关单测。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 11:19:16 +08:00
github-actions[bot] efecd7c7d9 chore(release): 7.68.1-dev.6 [skip ci] 2026-04-12 21:03:50 +00:00
Tam Nhu Tran 18e5cd5d94 feat(ui): persist paused account toggle state in localStorage 2026-04-12 16:59:04 -04:00
github-actions[bot] 52d51b1402 chore(release): 7.68.1-dev.5 [skip ci] 2026-04-12 20:44:31 +00:00
Kai (Tam Nhu) TranandGitHub a18146b83e Merge pull request #971 from kaitranntt/kai/feat/966-cursor-integration-usable
feat: make Cursor integration usable and supportable
2026-04-12 16:42:32 -04:00
github-actions[bot] 4b526e1c01 chore(release): 7.68.1-dev.4 [skip ci] 2026-04-12 20:03:53 +00:00
Kai (Tam Nhu) TranandGitHub affe07e1ea Merge pull request #962 from sgaluza/feat/cliproxy-catalog-json
feat(cliproxy): add --json flag to catalog command
2026-04-12 16:02:03 -04:00
github-actions[bot] 66467f9409 chore(release): 7.68.1-dev.3 [skip ci] 2026-04-12 19:30:42 +00:00
Kai (Tam Nhu) TranandGitHub 9b3d464bfb Merge pull request #958 from buiducnhat/main
feat(websearch): add SearXNG provider support and configuration
2026-04-12 15:28:39 -04:00
Tam Nhu Tran 8d8f4469b6 fix(websearch): reject blank searxng status urls 2026-04-12 14:46:56 -04:00
Tam Nhu Tran 54791b5cca Merge remote-tracking branch 'origin/dev' into kai/fix/958-searxng-pr-review 2026-04-12 06:32:27 -04:00
Tam Nhu Tran 8b553c35c1 fix(websearch): harden searxng url handling 2026-04-12 06:31:20 -04:00
Tam Nhu Tran 2719d7a6f7 fix(cursor): align auto-detect status and CI coverage 2026-04-12 04:42:28 -04:00
Tam Nhu Tran cf5df0630a fix(cursor): resolve PR review findings 2026-04-12 02:14:26 -04:00
Tam Nhu Tran e1049e38d4 feat(cursor): harden live probe and runtime contracts 2026-04-12 01:51:26 -04:00
github-actions[bot] 2eaf760d20 chore(release): 7.68.1-dev.2 [skip ci] 2026-04-12 05:47:44 +00:00
Kai (Tam Nhu) TranandGitHub d04c9abf09 Merge pull request #970 from kaitranntt/kai/feat/gemini-quota-tooltip-ux
fix(ui): clarify Gemini quota tooltip labels
2026-04-12 01:45:48 -04:00
github-actions[bot] b2f584114a chore(release): 7.68.1-dev.1 [skip ci] 2026-04-12 05:37:37 +00:00
github-actions[bot] 07120c9990 chore(sync): merge main into dev after release [skip ci]
# Conflicts:
#	package.json
2026-04-12 05:35:40 +00:00
semantic-release-bot d725a3c061 chore(release): 7.68.1 [skip ci]
## [7.68.1](https://github.com/kaitranntt/ccs/compare/v7.68.0...v7.68.1) (2026-04-12)

### Hotfixes

* detect bun-owned installs through symlinked ccs path ([5f8e66e](https://github.com/kaitranntt/ccs/commit/5f8e66ec1e1ef9cceb135c560f9bd44c9269dd6b))
2026-04-12 05:34:46 +00:00
Tam Nhu Tran 898e7a6321 hotfix: detect bun-owned installs through symlinked ccs path 2026-04-12 01:33:48 -04:00
Kai (Tam Nhu) TranandGitHub 46f9567df5 Merge pull request #968 from kaitranntt/kai/hotfix-update-bun-install-detection
hotfix: detect bun-owned installs through symlinked ccs path
2026-04-12 01:32:39 -04:00
Tam Nhu Tran 5076b212af fix(ui): clarify Gemini quota tooltip labels 2026-04-12 01:24:40 -04:00
Tam Nhu Tran 5f8e66ec1e hotfix: detect bun-owned installs through symlinked ccs path 2026-04-12 01:22:15 -04:00
github-actions[bot] ca8401e5fc chore(release): 7.68.0-dev.1 [skip ci] 2026-04-11 22:13:58 +00:00
Kai (Tam Nhu) TranandGitHub 7e52635706 Merge pull request #965 from kaitranntt/kai/fix/964-docker-restart-supervisord
fix(docker): delegate restart/install to supervisorctl in Docker deployments
2026-04-11 18:11:59 -04:00
Tam Nhu Tran 7776715eba fix(docker): delegate restart/install to supervisorctl in Docker deployments
The dashboard restart button and install service used local-mode process
management (stopProxy + ensureCliproxyService) which conflicts with
supervisord in Docker deployments. Killing the CLIProxy binary caused the
bootstrap wrapper to exit, supervisord to attempt a restart, but
ensureCliproxyService already spawned an orphaned process on :8317
resulting in EADDRINUSE and supervisord entering FATAL state.

Detect supervisord via /var/run/supervisor.sock and delegate to
supervisorctl restart, matching the pattern already used by
ccs docker update.

Closes #964
2026-04-11 17:50:11 -04:00
Sergey Galuza ef564cafdf ci: retrigger validation 2026-04-11 21:08:08 +02:00
Sergey Galuza ea2b16bb66 docs(cliproxy): add catalog --json to --help output
Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:47:10 +02:00
Sergey Galuza 7bf5b4b95e fix(cliproxy): guard against undefined catalog and add issueUrl field
- Add null check for catalog entries from Partial<Record> type
- Include issueUrl in JSON output for broken model tracking

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza 22acd96ba4 feat(cliproxy): add thinking config to catalog --json and test false values
- Include thinking support configuration (type, min, max, levels) in
  JSON output for reasoning-capable models
- Add test verifying explicit false booleans are preserved (not omitted)
- Add test verifying thinking config appears for thinking models

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza 9ac1ac9804 fix(cliproxy): preserve explicit false values in catalog --json
Use !== undefined checks instead of truthy checks so that explicitly
set false booleans (e.g. extendedContext: false) appear in JSON output,
allowing consumers to distinguish "not set" from "explicitly disabled".

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza fbfb130f4d feat(cliproxy): include model metadata in catalog --json output
- Expose tier, description, deprecated, broken, extendedContext,
  nativeImageInput fields (omitted when undefined)
- Simplify tests to use static imports instead of dynamic cache-busting
- Add integration tests verifying --json routing through handleCliproxyCommand
- Test --json priority over refresh/reset subcommands

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza 509d2e4dd8 test(cliproxy): add catalog --json tests and clarify flag priority
- Add unit tests verifying JSON output structure, field filtering,
  and minified format
- Document that --json takes priority over subcommands (refresh/reset)

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza ac92688cc5 docs(cliproxy): clarify catalog --json output format in JSDoc
Use TypeScript-style index signature notation instead of ambiguous
placeholder name in format description.

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza dceb6f6d37 feat(cliproxy): add --json flag to catalog command
Add machine-readable JSON output for `ccs cliproxy catalog --json`
to enable programmatic access to available models per provider.

Output format: { "provider": [{ "id": "...", "name": "..." }, ...] }

Closes CCS-1

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 20:12:46 +02:00
Sergey Galuza 79251d7af8 test(ci): add env isolation comment to persist-command-handler
Align with claudecode-env-stripping.test.ts style — explain why
CLAUDE_CONFIG_DIR is cleared in beforeEach for consistency across
test files.

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 17:29:15 +02:00
Sergey Galuza 1a7fc4a3f2 test(ci): improve test isolation readability per review feedback
- Extract NEUTRAL_PROFILE_TYPE constant with JSDoc explaining why
  CCS_PROFILE_TYPE must be neutralised in subprocess env blocks
- Replace 6 bare '' occurrences with the named constant (DRY)
- Group save/delete operations in beforeEach with section comments

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 17:18:51 +02:00
buiducnhat 36d828f99c feat(websearch): add url property to WebSearchProviderConfig interface 2026-04-11 19:35:41 +07:00
buiducnhat eec8c8b4a3 feat(websearch): add SearXNG provider support and configuration
- Updated websearch.md to include SearXNG in the configuration guide.
- Implemented SearXNG JSON API integration in websearch-transformer.cjs.
- Enhanced unified-config-loader.ts to support SearXNG settings.
- Defined SearXNG configuration types in unified-config-types.ts.
- Updated hook-env.ts to manage SearXNG environment variables.
- Modified status.ts to include SearXNG in web search provider checks.
- Added SearXNG routes and validation in websearch-routes.ts.
- Implemented SearXNG provider tests in websearch-transformer.test.ts.
- Updated readiness tests to account for SearXNG in status.test.ts.
- Enhanced websearch routes tests to validate SearXNG settings.
- Added SearXNG configuration fields in the UI settings.
2026-04-11 16:43:59 +07:00
Sergey Galuza 2cc92e8bb8 test(ci): isolate CCS-managed env vars from host session
When tests run inside a CCS-managed Claude session, host env vars
(CLAUDE_CONFIG_DIR, CCS_PROFILE_TYPE) leak into subprocess spawns
and fixture setup, causing 9 test failures:

- persist-command-handler: reads real symlinked settings.json instead
  of temp fixture because CLAUDE_CONFIG_DIR overrides scoped CCS_HOME
- websearch-transformer: hook silently exits via shouldSkipHook()
  because CCS_PROFILE_TYPE=account triggers native_account_profile skip
- claudecode-env-stripping: normalizeSharedPluginMetadataPaths receives
  leaked CLAUDE_CONFIG_DIR instead of undefined for default profiles

Fix: clear CCS-managed env vars in beforeEach and neutralize
CCS_PROFILE_TYPE in subprocess env blocks.

Built [OnSteroids](https://onsteroids.ai)
2026-04-11 07:16:50 +02:00
semantic-release-bot 8e413e49f6 chore(release): 7.68.0 [skip ci]
## [7.68.0](https://github.com/kaitranntt/ccs/compare/v7.67.0...v7.68.0) (2026-04-11)

### Features

* **api:** add Hugging Face provider preset ([83255f4](https://github.com/kaitranntt/ccs/commit/83255f477197c9f74b472b36d9a0086030c10713))
* **cliproxy:** add entitlement evidence for gemini and agy ([bb331ff](https://github.com/kaitranntt/ccs/commit/bb331ff5d8a9ff8bc387599a491335ffe89e7a1c))
* **cliproxy:** add pinned model routing prefixes ([4d5e528](https://github.com/kaitranntt/ccs/commit/4d5e52828b9d20759bf20e7b4353192fbecfc868))
* **profiles:** add local runtime readiness checks ([63b67f1](https://github.com/kaitranntt/ccs/commit/63b67f1c1c270f3e4e6c1a676e1c9256f2577d99))
* **ui:** add paused filter to account flow viz ([a169917](https://github.com/kaitranntt/ccs/commit/a169917692016e1a01560c13c95a554da430cd38))
* **ui:** reposition providers around quality and local lanes ([ad70f93](https://github.com/kaitranntt/ccs/commit/ad70f93b1b95edb8d6f029a7613a44f3d2db83ab))

### Bug Fixes

* **api:** constrain preset target defaults ([52ac29e](https://github.com/kaitranntt/ccs/commit/52ac29e7a8a6f7450eb3c1daa357d84d0b03031f))
* **cliproxy:** align AGY preset aliases ([25dd9ab](https://github.com/kaitranntt/ccs/commit/25dd9ab9e14d7c4131c0cace99222346bfb006bc))
* **cliproxy:** attach entitlement evidence to agy failures ([7c4545e](https://github.com/kaitranntt/ccs/commit/7c4545eb1b35914a20762e14fdbd7832828b1324))
* **cliproxy:** cover managed prefix review follow-up ([b6aa6fb](https://github.com/kaitranntt/ccs/commit/b6aa6fb0d4471b68fb795ef4ba2449f2a9f72788))
* **cliproxy:** dedupe variant prefix sync ([eaddfc4](https://github.com/kaitranntt/ccs/commit/eaddfc467fa4380d5c642ad7063442b6edc22efc))
* **cliproxy:** harden pinned routing follow-up ([40c4816](https://github.com/kaitranntt/ccs/commit/40c4816acf36b3b79f13bf32862f7c88ed7debf4))
* **cliproxy:** harden routing prefix sync and UI pinning ([0c10cb6](https://github.com/kaitranntt/ccs/commit/0c10cb6f47d23db33cbce17456d46aee1843b9ae))
* **cliproxy:** keep new live provider models selectable ([34d7044](https://github.com/kaitranntt/ccs/commit/34d70442bf132c6772dc528875377e4d16a221ec))
* **cliproxy:** prefer live entitlement tier in account badges ([7330fdb](https://github.com/kaitranntt/ccs/commit/7330fdbf2830911bcac09826cabf5929cc741be8))
* **cliproxy:** preserve entitlement evidence on agy failures ([b56b58c](https://github.com/kaitranntt/ccs/commit/b56b58c0679d888baa7daa7526f8c06f2a49e16c))
* **cliproxy:** propagate agy entitlement failure metadata ([506b61e](https://github.com/kaitranntt/ccs/commit/506b61eca61381b8717d16b97be94b193e9fcbbf))
* **cliproxy:** refresh non-default gemini quota tokens ([b6fb443](https://github.com/kaitranntt/ccs/commit/b6fb443f572cc5c1bb4e3763abd1aa6fa3ba14e5))
* **cliproxy:** use type-only account provider import ([92a2478](https://github.com/kaitranntt/ccs/commit/92a24786d674ca647caa44db9ee2ce638b843b55))
* **image-analysis:** preserve default runtime deps ([e090c8b](https://github.com/kaitranntt/ccs/commit/e090c8b0d4e65eda3c9b4dcdd4ef0521c96a68b9))
* **image-analysis:** tolerate missing auth init dependency ([2f02ddf](https://github.com/kaitranntt/ccs/commit/2f02ddfb74062aefa4d006ca16bec9a94a2272c7))
* **review:** harden quota retry and tooltip edge cases ([7ac6d0a](https://github.com/kaitranntt/ccs/commit/7ac6d0a4d4a08113b48c008c1850dc6b089b66d1))
* sanitize cliproxy provider model pickers ([0e4677f](https://github.com/kaitranntt/ccs/commit/0e4677f558a2231b7eef7eb3de5c7f0336bbb041))
* **ui:** accept partial raw model records ([42d5724](https://github.com/kaitranntt/ccs/commit/42d5724f34c03c48e1d5d963a85f7cf0a164e9b0)), closes [#941](https://github.com/kaitranntt/ccs/issues/941)
* **ui:** add paused filter locale strings ([3687de0](https://github.com/kaitranntt/ccs/commit/3687de062581b9968b3858b8c51a6cdbb23edcd3))
* **ui:** address provider lane review notes ([5f9bafe](https://github.com/kaitranntt/ccs/commit/5f9bafe9cde488aed26e3c03be8ff84852723e74))
* **ui:** clarify filtered flow viz metrics ([94eda99](https://github.com/kaitranntt/ccs/commit/94eda996e3c0cee8cca50b5cc2c49f7284c7524e))
* **ui:** guard optional raw model fields ([01c1193](https://github.com/kaitranntt/ccs/commit/01c1193a994cc6efc80135590d5bacaf3b78deed)), closes [#941](https://github.com/kaitranntt/ccs/issues/941)
* **ui:** harden provider model alias editing ([92a769d](https://github.com/kaitranntt/ccs/commit/92a769d773a8ec63fd02744aff60d3691df7cf94)), closes [#941](https://github.com/kaitranntt/ccs/issues/941)
* **ui:** preserve requested provider model aliases ([49c4338](https://github.com/kaitranntt/ccs/commit/49c4338f28f5b22ea8834d103582eccd2ad54c62)), closes [#941](https://github.com/kaitranntt/ccs/issues/941)
* **ui:** type shared AGY compatibility lookup ([c078a96](https://github.com/kaitranntt/ccs/commit/c078a9633736faa2b5e45d6a7345d3d2883c6a7b))
* **update:** align no-update dependency injection ([94bcad2](https://github.com/kaitranntt/ccs/commit/94bcad2d1a7c843be5a75aba1140d997f7fcc0bd))
* **update:** harden install verification flow ([a4496ff](https://github.com/kaitranntt/ccs/commit/a4496ff1d944fbe989d1ae18f7f78eb470846731))
* **update:** isolate updater test dependencies ([59e04cb](https://github.com/kaitranntt/ccs/commit/59e04cb56f4d8c8cde6733bc15d3b8d9be94ab9f))
* **update:** target the current CCS installation ([2aaabb2](https://github.com/kaitranntt/ccs/commit/2aaabb2deb03253493a19191690c001113a44040))

### Documentation

* **cliproxy:** clarify gemini and agy tier semantics ([f9c61e0](https://github.com/kaitranntt/ccs/commit/f9c61e0faceae2532798bcfe7ff87d458024c6a3))
* **roadmap:** note cliproxy routing prefix clarity ([b8a8f84](https://github.com/kaitranntt/ccs/commit/b8a8f841536f89386e3452261037f0fdcc389059))
* **roadmap:** record Hugging Face preset support ([414e8c8](https://github.com/kaitranntt/ccs/commit/414e8c80f5ed5f4ed91766de85603abaa195bcbf))

### Code Refactoring

* **ui:** align visible provider flow data ([aedccec](https://github.com/kaitranntt/ccs/commit/aedccec0414fdffac049e4db8130e4f40b2cd744))

### Tests

* **ci:** isolate config env and cli entry fallbacks ([b8aa59a](https://github.com/kaitranntt/ccs/commit/b8aa59a8f0d56e3a2589bf7714d54392a0325dd8))
* **ci:** stop leaking update-command module mocks ([ef75172](https://github.com/kaitranntt/ccs/commit/ef751723f5088ff39184e322cb69aa8186cf2053))
* **cliproxy:** cover managed pinned route hints ([d87a126](https://github.com/kaitranntt/ccs/commit/d87a126938d9d71b3bb0de163e4265111fa09944))
* **cliproxy:** isolate session tracker config env ([4b9fa4e](https://github.com/kaitranntt/ccs/commit/4b9fa4e45787950c73d6b9792d8e1bf2c25a7f5b))
* **ui:** cover paused account flow viz filtering ([7b2743b](https://github.com/kaitranntt/ccs/commit/7b2743b845a822356f18de854ea201c72eb1f542))
2026-04-11 04:07:00 +00:00