- add broken flag to model catalog for models with known issues
- display [BROKEN] badge in model selection and config display
- show warning message when starting with a broken model
- link to tracking issue: CLIProxyAPI#415
Claude proxy models (gemini-claude-*) currently fail with tool calls
due to upstream CLIProxyAPI bug. Warning helps users know to switch
to gemini-3-pro-preview until fixed.
- Fix --config showing wrong default star position by using current
user model instead of catalog default when reconfiguring
- Update CLIPROXY_FALLBACK_VERSION from 6.5.31 to 6.5.40
Replace misleading "[Paid API]" and "API key" references with "[Paid Tier]"
and clarify that paid tier refers to a paid Google account (not free tier),
not an API key purchase. Updates model descriptions in both catalog and
configuration to accurately reflect the tier requirement.
Replace custom formatting with ui.ts imports (color, bold, dim, ok, info,
header, initUI) to maintain consistent styling with ccs doctor. Add model
descriptions to catalog and clarify [Paid API] tier labeling. Update
showCurrentConfig to async for UI initialization. Improves code reuse and
visual consistency across CLI commands.
Terminals using bracketed paste mode wrap pasted content with ESC[200~
(start) and ESC[201~ (end) sequences. These were incorrectly passed
through to API keys, causing "[200~API_KEY[201~" instead of "API_KEY".
Now buffers ESC sequences and discards recognized paste markers.
Introduces new model-catalog and model-config modules to manage LLM
provider configurations and aliases. Enables dynamic model selection
with validated configuration per provider.
- Remove dev branch from semantic-release (main only)
- Add dev-release.yml: simple X.Y.Z-dev.N bump workflow
- Update sync workflow: handle merge conflicts for version files
- Update release.yml: trigger only on main branch
Dev versions now stay at {stable}-dev.N until merged to main.
PR merge commit type (feat/fix) determines actual version bump.
- Update base-kimi.settings.json with model fields
- Update install.sh KIMI_MODEL variable
- Update postinstall.js template and migration to add model fields
- Migration now adds model fields instead of removing them (v5.5.0)
- Replace before()/after() with beforeAll()/afterAll()
- Remove this.timeout() calls (unsupported by bun)
- Update package.json scripts to use bun test
- Fix error message regex for cross-runtime compatibility
- Skip integration tests requiring network/child process mocking
- Format source files with prettier
When upgrading from older CCS versions, ~/.ccs/shared/* directories may
exist as broken symlinks (dangling symlinks pointing to deleted targets).
Problem:
- fs.existsSync() returns false for broken symlinks
- fs.mkdirSync() fails with ENOENT because path exists as broken symlink
Solution:
- Added removeIfBrokenSymlink() helper that detects and removes dangling
symlinks using lstatSync (doesn't follow symlinks) + statSync (follows)
- Applied to shared directory and all subdirectories before mkdir
Fixes npm install error: ENOENT: no such file or directory, mkdir
- Keep main version 5.4.1 as production release
- Merge Windows symlink fallback fix from dev into main
- Consolidate CHANGELOG entries for v5.4.1
- Update installer versions to match production release
When symlink creation fails on Windows (due to Developer Mode being
disabled or insufficient permissions), fall back to copying files
and directories instead.
Changes:
- Add copyFallback() method for Windows symlink failures
- Add copyDirRecursive() helper for directory copying
- Update checkHealth() to recognize copied files as valid on Windows
- Add isCopiedItem() helper to validate copied content
- Update uninstall() to handle both symlinks and copied files
Fixes#45
Windows .cmd/.bat wrapper scripts require shell: true in spawn options.
Uses same pattern as other files (ccs.ts, cliproxy-executor.ts, shell-executor.ts):
- getClaudeCliInfo() returns needsShell flag
- Concatenate command string when shell needed to avoid DEP0190 warning
Closes#41