Commit Graph
2516 Commits
Author SHA1 Message Date
Kai (Tam Nhu) TranandGitHub c70cd4b08b Merge pull request #707 from kaitranntt/kai/fix/706-proxy-version-install-restart
fix: restart CLIProxy after dashboard version install
2026-03-07 00:25:54 -05:00
Tam Nhu Tran aed7beb075 fix: confirm risky cliproxy installs in dashboard 2026-03-07 11:13:49 +07:00
Tam Nhu Tran fc3600e922 fix: improve quota diagnostics and oauth refresh handling 2026-03-07 11:09:15 +07:00
Tam Nhu Tran ad01196964 fix: stop untracked CLIProxy installs safely 2026-03-07 11:01:35 +07:00
Tam Nhu Tran a4b626aede fix: clarify CLIProxy dashboard install lifecycle 2026-03-07 10:52:46 +07:00
github-actions[bot] c55c4e88a5 chore(release): 7.52.2-dev.4 [skip ci] 2026-03-07 03:46:34 +00:00
Tam Nhu Tran e14df1fe05 fix: restart CLIProxy after dashboard version install 2026-03-07 10:45:29 +07:00
Kai (Tam Nhu) TranandGitHub 23ead7a215 Merge pull request #704 from kaitranntt/kai/fix/issue-696-defer-loading-clean
fix: strip unsupported tool fields for Gemini and Codex routing
2026-03-06 22:45:17 -05:00
Tam Nhu Tran 4baed01d49 fix: complete codex tool sanitization coverage 2026-03-07 10:35:41 +07:00
github-actions[bot] 15c6435685 chore(release): 7.52.2-dev.3 [skip ci] 2026-03-07 03:02:53 +00:00
Kai (Tam Nhu) TranandGitHub d7f0063f23 Merge pull request #705 from kaitranntt/kai/fix/issue-699-error-code-doc-links
fix: sync error code docs links
2026-03-06 22:01:38 -05:00
Tam Nhu Tran 2be5c5a706 fix: sync error code docs links 2026-03-07 09:56:35 +07:00
Tam Nhu Tran 8cfd86f1d1 fix: strip unsupported gemini and codex tool fields 2026-03-07 09:54:02 +07:00
github-actions[bot] 209b088bed chore(release): 7.52.2-dev.2 [skip ci] 2026-03-07 02:42:19 +00:00
Kai (Tam Nhu) TranandGitHub 60f84d0593 Merge pull request #703 from kaitranntt/kai/fix/issue-701-copilot-limit-clarity
fix(copilot): surface upstream model limits
2026-03-06 21:41:04 -05:00
Tam Nhu Tran 8a5ed656ee fix(copilot): surface upstream model limits 2026-03-07 09:26:09 +07:00
Tam Nhu Tran d6fc5dd64c fix: harden profile lifecycle validation and dashboard UX flows 2026-03-05 18:49:16 +07:00
Tam Nhu Tran 02c81743a0 feat: add API profile lifecycle discover/copy/export/import parity 2026-03-05 18:30:23 +07:00
github-actions[bot] 8403284cd2 chore(release): 7.52.2-dev.1 [skip ci] 2026-03-05 05:48:46 +00:00
Kai (Tam Nhu) TranandGitHub 48cbdbe9b9 Merge pull request #694 from kaitranntt/kai/feat/691-692-mcp-bare-profile
feat(auth): add --bare flag and MCP server sync for profiles
2026-03-05 00:47:34 -05:00
Tam Nhu Tran 8f8684ce85 fix(auth): preserve bare profile behavior across runtime and sync 2026-03-05 12:36:51 +07:00
Tam Nhu Tran bc9b04444e feat(auth): add --bare flag and MCP server sync for profiles
- Add --bare flag to `ccs auth create` to skip shared symlinks
  (commands/, skills/, agents/, settings.json). Bare profiles are
  clean instances without ClaudeKit or other global extensions.
  `ccs sync` respects bare flag and skips re-linking.

- Add MCP server sync from global ~/.claude.json to instances.
  Claude Code stores MCP config in ~/.claude.json (not settings.json),
  which was invisible to CCS profiles using CLAUDE_CONFIG_DIR isolation.
  Selective copy of mcpServers key only (not OAuth sessions/caches).
  `ccs sync` refreshes MCP servers across all non-bare instances.

Closes #691
Closes #692
2026-03-05 11:42:41 +07:00
Huynh Duc Dung 6078de78f2 fix(ui): use preset apiKeyPlaceholder when creating profiles
Fixes profile creation for local providers (llamacpp, ollama) where
apiKey is not required but server validation requires a truthy value.

Changes:
- Set apiKey to preset.apiKeyPlaceholder when selecting a preset
- Use preset.apiKeyPlaceholder as fallback in onSubmit
- Ensures sentinel values (e.g., "llamacpp", "ollama") are sent

Fixes user-reported error when creating llamacpp profile via dashboard.
2026-03-05 12:36:39 +08:00
Huynh Duc Dung 0ca6428554 feat(api): add llama.cpp support as local model provider
- Add llamacpp provider preset to provider-presets.ts
- Add base-llamacpp.settings.json configuration
- Update help-command.ts with ccs llamacpp documentation
- Update UI provider presets for dashboard parity

llama.cpp is a popular C++ inference engine for LLaMA models.
This complements existing Ollama support for local inference.

Usage: ccs llamacpp (requires llama.cpp server on port 8080)

Closes #690
2026-03-05 12:29:49 +08:00
BbChip0103andClaude Opus 4.6 fedb4d4cde feat(api): add Anthropic direct API key support
Support native Anthropic API keys (sk-ant-...) via `ccs api create --preset anthropic`.
Profiles use ANTHROPIC_API_KEY env var without BASE_URL, letting Claude CLI
authenticate natively with x-api-key header instead of proxy Bearer token.

- Add anthropic preset to provider catalog
- Branch profile-writer env structure (native vs proxy)
- Add validateAnthropicKey() preflight with x-api-key header
- Auto-detect api.anthropic.com URL in interactive flow
- Fix hasApiKey/isConfigured to recognize ANTHROPIC_API_KEY
- Update delegation-validator for native mode profiles
- Add Droid target API key fallback (ANTHROPIC_API_KEY)

Closes #688

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:13:10 +09:00
github-actions[bot] 0c4d5244c8 chore(sync): merge main into dev after release [skip ci] 2026-03-04 12:53:07 +00:00
semantic-release-bot 4c4d00d835 chore(release): 7.52.2 [skip ci]
## [7.52.2](https://github.com/kaitranntt/ccs/compare/v7.52.1...v7.52.2) (2026-03-04)

### Bug Fixes

* **ci:** remove LOC count from maintainability gate ([619c47d](https://github.com/kaitranntt/ccs/commit/619c47d89ae405690cddc849dcf15e8cc3240ab5))
* **ci:** strip ANSI codes before detecting published release ([a8d7f7c](https://github.com/kaitranntt/ccs/commit/a8d7f7caafb361e961aa2f17e0084d551b4674f7))
* **cliproxy:** reduce gemini alias model bloat ([276649f](https://github.com/kaitranntt/ccs/commit/276649f05d8da2948b10db5ab1d7a78c60e1e654))
* **copilot:** harden daemon lifecycle and validate config updates ([1fd128e](https://github.com/kaitranntt/ccs/commit/1fd128e50feb3fe779ac30e8706c722024e77543))
* **copilot:** improve daemon liveness and flag aliases ([4b1cda2](https://github.com/kaitranntt/ccs/commit/4b1cda25d945e6482be68804907177a8ad38489e))
* **copilot:** refine ownership checks and command error handling ([930d66f](https://github.com/kaitranntt/ccs/commit/930d66fc0d31468ecc53fc50bd6db81aaed1fb7b))
* **copilot:** sync alias UX and harden daemon stop safety ([f4678d6](https://github.com/kaitranntt/ccs/commit/f4678d639772699d9f3504dcd05bc9e311f67527))

### Code Refactoring

* **daemon:** share process ownership guard for safe shutdown ([5ad2416](https://github.com/kaitranntt/ccs/commit/5ad2416a863e8190351a1ee42e00646093e3e70f))

### Tests

* **cliproxy:** strengthen alias non-enrichment assertions ([e28d9c8](https://github.com/kaitranntt/ccs/commit/e28d9c8abcea772b8fff7e6587582aac692a2726))

### CI

* **release:** use PAT_TOKEN for semantic-release branch protection bypass ([91280e3](https://github.com/kaitranntt/ccs/commit/91280e3043bd981b86b187fbfbead5ca6f31139d))
2026-03-04 12:52:34 +00:00
Tam Nhu Tran c6f6fe940c Merge branch 'main' into dev 2026-03-04 19:51:20 +07:00
Tam Nhu Tran 619c47d89a fix(ci): remove LOC count from maintainability gate
largeFileCountOver350Loc is a vanity metric that blocks releases
for borderline cases (359-372 LOC files). Keep processExit and
synchronousFs gates which track real anti-patterns. LOC still
collected/reported but no longer gated.
2026-03-04 19:50:03 +07:00
Tam Nhu Tran d3ede45c96 fix(ci): remove LOC count from maintainability gate
largeFileCountOver350Loc is a vanity metric that blocks releases
for borderline cases (359-372 LOC files). Keep processExit and
synchronousFs gates which track real anti-patterns. LOC still
collected/reported but no longer gated.
2026-03-04 19:49:44 +07:00
Kai (Tam Nhu) TranandGitHub 16b47e5b3e Merge pull request #685 from kaitranntt/dev
fix: copilot daemon liveness and cliproxy model optimization
2026-03-04 07:23:09 -05:00
github-actions[bot] bebd3dfffb chore(release): 7.52.1-dev.2 [skip ci] 2026-03-04 11:58:25 +00:00
Kai (Tam Nhu) TranandGitHub 760ed15783 Merge pull request #683 from kaitranntt/kai/fix/copilot-daemon-liveness-dx
fix(copilot): improve daemon liveness and flag aliases
2026-03-04 06:57:04 -05:00
Tam Nhu Tran 930d66fc0d fix(copilot): refine ownership checks and command error handling 2026-03-04 17:18:44 +07:00
Tam Nhu Tran 1fd128e50f fix(copilot): harden daemon lifecycle and validate config updates 2026-03-04 17:05:35 +07:00
Tam Nhu Tran 5ad2416a86 refactor(daemon): share process ownership guard for safe shutdown 2026-03-04 16:42:59 +07:00
Tam Nhu Tran f4678d6397 fix(copilot): sync alias UX and harden daemon stop safety 2026-03-04 16:37:23 +07:00
Tam Nhu Tran 4b1cda25d9 fix(copilot): improve daemon liveness and flag aliases 2026-03-04 16:14:12 +07:00
Brian Le 09aeec5763 fix(config): update claude base models to latest
- ANTHROPIC_MODEL: claude-sonnet-4-5-20250929 -> claude-sonnet-4-6
- ANTHROPIC_DEFAULT_SONNET_MODEL: claude-sonnet-4-5-20250929 -> claude-sonnet-4-6
- ANTHROPIC_DEFAULT_OPUS_MODEL: claude-opus-4-5-20251101 -> claude-opus-4-6
- ANTHROPIC_DEFAULT_HAIKU_MODEL: unchanged (claude-haiku-4-5-20251001, still latest)
2026-03-04 01:18:43 -05:00
Brian Le 0060c77c25 fix(hooks): handle thinking blocks in image analyzer response parsing
When models have thinking enabled (e.g. codex with thinking: auto), the
API returns content as [{ type: 'thinking', thinking: '...' }, { type:
'text', text: '...' }]. The hook reads content[0].text which is
undefined for thinking blocks, causing 'No text content in response'
errors that block the Read tool (exit 2).

Also fix cross-provider model fallback: getModelsToTry() unconditionally
appends DEFAULT_MODEL (gemini-2.5-flash) as retry, which 502s on
non-gemini provider routes (e.g. codex). Only use DEFAULT_MODEL when no
provider-specific model is configured.

Fixes: content[0].text -> content.find(b => b.type === 'text')
Fixes: cross-provider retry causing 'unknown provider' 502
Ref: #511
2026-03-04 00:29:17 -05:00
Brian Le 7e8f9e82c1 fix(cliproxy): handle Claude OAuth quota 401 2026-03-03 21:56:18 -05:00
Brian Le fa027022a8 fix(cliproxy): use management oauth-callback in paste flow 2026-03-03 17:59:10 -05:00
Brian Le 6fcd924b1c fix(cliproxy): use management auth-url route in paste callback 2026-03-03 17:16:07 -05:00
github-actions[bot] 571ba4946c chore(release): 7.52.1-dev.1 [skip ci] 2026-03-03 19:59:23 +00:00
Kai (Tam Nhu) TranandGitHub 187b452b97 Merge pull request #676 from kaitranntt/kai/fix/cliproxy-control-panel-model-bloat
fix(cliproxy): reduce gemini alias model bloat
2026-03-03 14:57:52 -05:00
Tam Nhu Tran e28d9c8abc test(cliproxy): strengthen alias non-enrichment assertions 2026-03-04 02:51:42 +07:00
Tam Nhu Tran 276649f05d fix(cliproxy): reduce gemini alias model bloat 2026-03-04 02:46:52 +07:00
github-actions[bot] 9281ac24fb chore(sync): merge main into dev after release [skip ci]
# Conflicts:
#	package.json
2026-03-03 19:30:01 +00:00
semantic-release-bot 58731eb9ea chore(release): 7.52.1 [skip ci]
## [7.52.1](https://github.com/kaitranntt/ccs/compare/v7.52.0...v7.52.1) (2026-03-03)

### Bug Fixes

* **ci:** strip ANSI codes before detecting published release ([6e16f1c](https://github.com/kaitranntt/ccs/commit/6e16f1cf3e2a3d43fa600a6fbadd35a513bf5db7))
2026-03-03 19:28:12 +00:00
github-actions[bot] f70e1a48c3 chore(release): 7.52.0-dev.1 [skip ci] 2026-03-03 19:24:41 +00:00