- strip control characters from dynamic preset output
- render preset help from shared registry data
- include normalized alias hints without hardcoded lines
- add shared preset catalog used by CLI and Dashboard
- enforce alias/id integrity and canonical normalization
- replace duplicated preset definitions in service and UI layers
- allow Vite dev fs access to repo root for shared catalog imports
- strip CLAUDECODE from cliproxy-built Claude environments
- enforce sanitization in ClaudeAdapter buildEnv
- apply same env hardening in shared spawnClaude helper
Refs #588
Claude Code v2.1.39+ sets CLAUDECODE env var and refuses to launch
if detected, breaking CCS auto-delegation which spawns child Claude
processes. Strip the var from both interactive (execClaude) and
headless (HeadlessExecutor) spawn paths.
Closes#588
- Sync kimi-k2.5 description between backend and UI catalogs
to 'Latest multimodal model (262K context)' per official naming
- Add kimi-k2 pricing entry to avoid fallback to unknown model rate
- Add supportsModelConfig and getProviderCatalog tests for kimi
Address review feedback from PR #585:
- Add missing kimi-k2 pricing entry ($0.60/$2.50, cache $0.15)
to avoid fallback to unknown model pricing
- Add kimi provider tests to model-catalog.test.js verifying
catalog structure, default model, and model IDs
- Add kimi entry to UI model-catalogs.ts with K2.5, K2 Thinking, K2
models and preset mappings so dashboard shows available models
- Add kimi to CHANNEL_TO_PROVIDER and SYNCABLE_PROVIDERS in
catalog-cache.ts so models sync from upstream CLIProxyAPI
- Add kimi/moonshot to provider-editor ownerMap for model filtering
- Update Kimi model pricing to match official Kimi Platform rates:
kimi-k2.5 ($0.60/$3.00), kimi-k2-thinking ($0.60/$2.50),
kimi-k2-turbo-preview ($1.15/$8.00)
- Add missing kimi-k2.5 pricing entry
Closes#581
- export buildProviderMap from provider capabilities and reuse in auth-types
- add provider descriptions to backend capabilities and sync display names
- remove ui CLIPROXY_PORT alias and use CLIPROXY_DEFAULT_PORT directly
- return stable string from getProviderDescription
- extend backend/ui parity tests for display name and description values
- make refresh ownership handling exhaustive in provider refresher
- extend backend/ui sync test to provider IDs and device-code providers
- remove DEFAULT_CURSOR_PORT re-export from use-cursor hook
- import cursor default port directly from shared defaults module
- move callback/auth-url names, token type values, and prefixes
- derive auth maps from capabilities instead of hardcoded records
- route refresh delegation through capability ownership metadata
- resolve request model against current available catalog
- choose safe default when configured default id is not present
- add tests and docs for daemon request-model fallback behavior
- detect and de-duplicate unclassified quota window labels
- emit diagnostics in verbose/debug modes for API label drift
- add unit tests for unknown-label extraction behavior
- reuse shared wireChildProcessSignals for GLMT Claude execution
- centralize proxy stop logic on child error and exit paths
- guard global signal cleanup so cleanup failures do not block exit