- replace ~/.config/factory/config.json diagnostics with legacy ~/.factory/config.json
- keep ~/.factory/settings.json as the primary BYOK source in UI + API payload
- update droid dashboard tests and frontend typings for legacyConfig
- add /droid route under a new Compatible CLIs sidebar section
- expose /api/droid/diagnostics and /api/droid/settings/raw for install and BYOK visibility
- include read-only settings.json viewer plus model/provider breakdown
- add unit coverage for droid dashboard service parsing and path logic
- persist selector in ~/.factory/settings.json as settings.model
- stop injecting '-m custom:...' for interactive droid launches
- improve provider inference for localhost /v1 and qwen/deepseek/kimi
- add regression tests for adapter, provider, and config manager
- add Droid provider resolver aligned with Factory BYOK schema
- persist and normalize CCS_DROID_PROVIDER across CLI and dashboard flows
- use Droid managed selector aliases with safe legacy fallback
- add unit coverage for provider inference and selector usage
Closes#632
- support POSIX -- terminator so dash-prefixed variant names remain positional
- export variant parser for direct unit tests
- add --target parsing coverage for API and cliproxy arg parsers
- resolve settings file from profile.settingsPath instead of reconstructing by name
- skip non-claude targets for local claude-api-key sync semantics
- add mapper regression tests for both behaviors
- parse and validate --target claude|droid on api create flow
- show target in API and CLIProxy list tables and usage output
- add parser unit tests for target success and failure cases
Handle shared skills and agents when entries are symlinked directories.
Also avoid classifying root markdown files in skills/agents as commands.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- bind real spawn/spawnSync/execSync before module mocking
- avoid potential rebinding recursion or mock passthrough drift in CI
- keeps non-Claude process execution untouched during test mocks
- register child_process module mock in beforeAll instead of module load
- keep passthrough for non-Claude commands and restore after suite
- avoids cross-suite side effects that stalled cursor daemon CI tests
- mock only Claude command spawns and pass through real child_process for others
- add missing ChildProcess-compatible fields (pid/unref) on mock child
- stabilizes cursor daemon and ccsd alias tests in CI parallel execution