The upstream router-for-me/CLIProxyAPIPlus repo was deleted, breaking any
install/update path that resolved backend: plus. Existing users with
`backend: plus` saved in config.yaml hit 404s on every bootstrap.
Changes:
- Flip DEFAULT_BACKEND from 'plus' to 'original' (platform-detector.ts)
- Flip default cliproxy.backend in createEmptyUnifiedConfig() to 'original'
- Runtime 404 fallback: getConfiguredBackend() degrades 'plus' -> 'original'
with a one-time warning, so existing installations keep working without a
manual reconfig step
- Update CLIProxyBackend docblock to document the fallback behavior
- Update tests to match new default
Retains the 'plus' type and BACKEND_CONFIG entry for forward compatibility
once CCS self-maintains its own Plus fork.
Closes#1062
Adds a unit test verifying that `claude-opus-4-7` is registered in
the `claude` provider with its provider-specific settings:
- `thinking.zeroAllowed: false` (contrasts with AGY where it is true)
- `extendedContext: true` (1M context via Anthropic API)
Addresses PResto atrvd/ccs#8 issue #4 (suggestion).
Built [OnSteroids](https://onsteroids.ai)
Adds Claude Opus 4.7 as a new model to the AGY (Antigravity) and Claude
provider catalogs, with pricing, Cursor IDE support, and updated defaults
across the codebase.
- Add claude-opus-4-7-thinking and claude-opus-4-7 to AGY catalog
(defaultModel bumped to claude-opus-4-7-thinking)
- Add claude-opus-4-7 entry to Claude provider catalog
- Register claude-opus-4-7-thinking fork alias in CLIProxy config
(CLIPROXY_CONFIG_VERSION bumped 17 -> 18)
- Add pricing for claude-opus-4-7 and claude-opus-4-7-thinking
($5/$25 per million, matching Opus 4.6)
- Add claude-4.7-opus and claude-4.7-opus-fast-mode to Cursor catalog
- Update ANTHROPIC_DEFAULT_OPUS_MODEL in base-claude settings to 4.7
- Update Droid adapter and code-reviewer fallback models to 4.7
- Update unit tests for model-catalog and model-pricing
Opus 4.6 is retained as a supported fallback in both catalogs.
Built [OnSteroids](https://onsteroids.ai)
The previous assertion read the generated CLIProxy config.yaml directly via
getConfigPathForPort(). On the self-hosted CI runner this produced ENOENT even
though applyCliproxyRoutingStrategy returned 'config-only', indicating the
read path and write path diverged in the full test-suite context.
Verify persistence via loadUnifiedConfig() instead — that's the canonical
source mutateUnifiedConfig writes to, independent of regenerateConfig's
file-path resolution.
- capture the resolved local cliproxy config/auth paths before regenerating
routing strategy config
- thread explicit override paths into regenerateConfig so scoped config writes
stay deterministic during the full test suite
- add regression coverage for explicit config path overrides
- derive repo imports from each test file via file URLs
- avoid hardcoded paths in the repo
- launch child scripts with the current runtime for consistent local and runner behavior
- isolate tokens and session-tracker tests in child processes
- make child scripts resolve repo modules from the test location
- avoid machine-specific paths in the repo
- skip CLIProxy auto-update checks on runtime bootstrap paths
- fail fast when local startup needs a missing binary instead of attempting installs
- add regression coverage for dashboard limited mode and startup test isolation
- fall back to stale CLIProxy version caches instead of surfacing 500s
- remove duplicate dashboard update-check fetches and disable retry/focus refetch
- add backend and UI regressions for the degraded-path behavior
- fetch live provider model definitions through /api/cliproxy/catalog
- overlay CCS preset metadata without keeping UI dropdowns as the source of truth
- wire /cliproxy and quick setup to the upstream-backed catalog path
- stop the Codex free-plan compatibility guard from rewriting codex.settings.json
- keep saved dashboard selections intact and rely on runtime fallback when needed
- update reconcile coverage to lock the non-mutating behavior in place