# CCS Project Roadmap Last Updated: 2026-03-24 Forward-looking roadmap documenting current priorities, GitHub issues, and future feature plans. --- ## Completed Modularization Summary All major modularization work is complete. The codebase evolved from monolithic files to a well-structured modular architecture. | Phase | Description | Key Result | |-------|-------------|------------| | 1 | Type System | `src/types/` with barrel exports | | 2 | CLI Commands | `src/commands/` (8 handlers extracted) | | 3 | CLIProxy | `src/cliproxy/` with auth/, binary/, services/ subdirs | | 4 | Utils/Errors | `src/utils/ui/`, `src/errors/`, `src/management/` | | 5 | UI Components | 5 monster files split into modular dirs (54+ modules) | | 6 | Settings Page | `pages/settings/` (1,781->20 files) | | 7 | Analytics Page | `pages/analytics/` (420->8 files) | | 8 | Auth Monitor | `monitoring/auth-monitor/` (465->8 files) | | 9 | Test Infrastructure | 1407 tests, 90% coverage | | 10 | Remote CLIProxy | `proxy-config-resolver.ts`, `remote-proxy-client.ts` | | 11 | Kiro + ghcp Providers | OAuth support via CLIProxyAPIPlus (v7.2) | | 12 | Hybrid Quota Management | `quota-manager.ts`, `quota-fetcher.ts` (v7.14) | | 13 | Docker Support | `docker/` directory with Dockerfile, Compose, entrypoint | | 14 | Image Analysis Hook | Vision proxying via CLIProxy transformers (v7.34) | | 15 | Third-Party Tool Integration | `ccs env` command with multi-format export (v7.39) | **Metrics Achieved**: - Files >500 lines: 12 -> 5 (-58%) - UI files >200 lines: 28 -> 8 (-71%) - Barrel exports: 5 -> 39 (+680%) - Test coverage: 0% -> 90% - Total tests: 1440 (6 skipped) --- ## Current Status ### Recent Fixes - **2026-03-24**: Official Claude Channels now follow Anthropic's actual runtime contract. CCS blocks auto-enable unless Bun is available, Claude Code is verified at v2.1.80+, and `claude.ai` auth is verified; treats `--allow-dangerously-skip-permissions` as an explicit override; keeps Telegram/Discord bot tokens in Claude's shared `~/.claude/channels/` state (or official `*_STATE_DIR` overrides); and upgrades the dashboard/CLI status flow with Bun/version/auth/state-scope guidance, safer token draft retention on refresh failures, and a non-macOS iMessage toggle that can still be turned off when already selected. - **2026-03-23**: CLIProxy providers that do not expose an email no longer require a user-supplied nickname on first auth. CCS now derives a stable internal account identifier for Kiro/Copilot-style flows, preserves later rename support, hardens account discovery/registry sync around that identifier, and updates AI Provider CRUD to use stable entry IDs instead of dashboard list indexes. - **2026-03-23**: Sensitive dashboard management routes now fail closed to localhost-only access whenever dashboard auth is disabled. Remote access remains available after `ccs config auth setup`, but AI Provider management, CLIProxy auth/status helpers, and other write-capable settings endpoints no longer trust unauthenticated non-loopback requests. - **2026-03-19**: **#649** CCS splits CLIProxy provider-key authoring into a dedicated `CLIProxy -> AI Providers` dashboard route. `/cliproxy` now stays focused on OAuth accounts and variants, `/cliproxy/ai-providers` owns Gemini/Codex/Claude/Vertex/OpenAI-compatible key management, and `/providers` stays reserved for CCS-native API Profiles. - **2026-03-18**: **#755** Marketplace refresh no longer reuses one shared `known_marketplaces.json` across isolated instances. CCS now keeps marketplace payload directories shared while reconciling per-instance marketplace metadata so Claude Code validation succeeds for alternating or concurrent profiles, including Windows copy fallback. - **2026-03-17**: Deprecated user-facing GLMT discovery across CLI help, completions, presets, and docs. Existing `glmt` profiles now run through a compatibility path that normalizes legacy proxy settings to the direct GLM endpoint. - **#748**: API profile creation now keeps provider selection compact by collapsing advanced presets behind an explicit toggle, shrinking chooser cards so the form fields stay visually primary, and giving `llama.cpp` a dedicated provider logo. - **#744**: API profile creation now keeps featured providers in a horizontal rail with scroll fallback, moves Anthropic Direct API to the end, reuses the shared Claude logo, and separates the custom-endpoint entry point from advanced template discovery. - **#724**: Codex startup is now free-plan safe. CCS defaults new Codex sessions to a cross-plan model and auto-repairs stale paid-only Codex defaults when the active account is on the free plan. - **#737**: Dashboard model pickers in Cursor, Copilot, and CLIProxy now use a searchable combobox with autofocus and explicit no-results states for large model catalogs. - **#736**: `ccs config` now supports explicit dashboard bind hosts via `--host`, and surfaces remote-access warnings plus reachable URLs when the effective bind is non-loopback. ### Maintainability Hardening Kickoff - Issue owner: Stream D for **#542** - Automated inventory command: `bun run report:hardening` - Generated report artifacts: - `docs/reports/hardening-inventory.json` - `docs/reports/hardening-inventory.md` - Debt burndown tracker: [Hardening Debt Burndown Tracker](./hardening-debt-burndown.md) ### Remaining Large Files (Acceptable) **CLI** (complex core logic): - `model-pricing.ts` (676 lines) - Data file - `glmt-proxy.ts` (675 lines) - Legacy internal compatibility proxy - `cliproxy-executor.ts` (666 lines) - Core execution - `ccs.ts` (596 lines) - Entry point **UI** (external/shadcn): - `components/ui/sidebar.tsx` (674 lines) - shadcn component --- ## GitHub Issues Backlog ### Critical (Blocking Users) | Issue | Title | Type | |-------|-------|------| | #158 | AGY not working - Missing API Key - Run /login | bug | | #155 | Invalid JSON payload error with Gemini/Antigravity | bug | | #124 | Incorrect model ID for Claude 3.5 Sonnet (Thinking) | bug | ### High Priority (Features) | Issue | Title | Type | Status | |-------|-------|------|--------| | #142 | Configure with available CLIProxyAPI | enhancement | **COMPLETE** (v7.1) | | #157 | Support for Kiro auth from CLIProxyAPIPlus | enhancement | **COMPLETE** (v7.2) | | #123 | Add More Models | enhancement | Ongoing | | #114 | OpenCode Zen Free model + Auto Rotation API Key | enhancement | - | ### Medium Priority | Issue | Title | Type | |-------|-------|------| | #137 | CCS Cannot Connect to IDE, but Native Claude Works | support | | #89 | Add Claude Code CLI flag passthrough for delegation | enhancement | | #659 | Comprehensive Vietnamese i18n for dashboard | enhancement | ### Low Priority / Questions | Issue | Title | Type | |-------|-------|------| | #156 | Configure API for Zed IDE | docs | | #140 | Do we support ampcode? | question | | #111 | Factory droid CLI support | enhancement | | #103 | /context command returns incorrect context | invalid | --- ## Future Roadmap ### Priority 1: Multiple CLIProxyAPI Instances Support connecting to multiple CLIProxyAPI servers simultaneously. **Use Cases**: - Load balancing across multiple proxy servers - Failover when primary server unavailable - Geographic distribution for latency optimization - Separate proxies for different provider groups **Proposed Config**: ```yaml cliproxy: instances: primary: url: http://localhost:8000 providers: [gemini, codex] weight: 80 secondary: url: http://192.168.1.100:8000 providers: [agy] weight: 20 failover: url: http://backup.example.com:8000 priority: 2 # Only if primary/secondary fail strategy: weighted-round-robin ``` ### Priority 2: Native Git Worktree Support Opt-in automatic git worktree management for features/issues. **Use Cases**: - Automatic worktree creation when starting issue - Isolation of feature development - Easy cleanup after merge - Integration with GitHub issues **Proposed Settings**: ```yaml worktrees: enabled: true base_path: ~/.ccs/worktrees auto_create: true auto_cleanup: true naming: "{issue-number}-{short-title}" ``` ### Priority 3: Enhanced Model Support - **#123**: Expand model catalog with new releases - **#124**: Fix Claude 3.5 Sonnet (Thinking) model ID - **#114**: OpenCode Zen free model + API key rotation ### Priority 4: IDE Integration - **#137**: Debug CCS-to-IDE connection issues - **#156**: Zed IDE configuration documentation - **#140**: Investigate ampcode compatibility - **#111**: Factory droid CLI support assessment ### Priority 5: Authentication Enhancements - **#158**: Fix AGY OAuth flow - **#157**: ~~Add Kiro auth support from CLIProxyAPIPlus~~ **COMPLETE** (v7.2) - GitHub Copilot (ghcp) Device Code flow **COMPLETE** (v7.2) - Hybrid quota management **COMPLETE** (v7.14) --- ## Milestones | Milestone | Status | Target | |-----------|--------|--------| | Modularization (Phases 1-9) | COMPLETE | - | | Remote CLIProxy Support (#142) | COMPLETE | v7.1 | | Kiro + GitHub Copilot OAuth (#157) | COMPLETE | v7.2 | | Hybrid Quota Management | COMPLETE | v7.14 | | Docker Support (PR #345) | COMPLETE | v7.23 | | Image Analysis Hook | COMPLETE | v7.34 | | Third-Party Tool Integration | COMPLETE | v7.39 | | Critical Bug Fixes (#158, #155, #124) | PLANNED | Q1 2026 | | Multiple CLIProxyAPI Instances | PLANNED | Q1 2026 | | Git Worktree Support | PLANNED | Q2 2026 | | Enhanced Model Support | PLANNED | Q2 2026 | --- ## Success Criteria All criteria achieved: - [x] Files under 200 lines (except documented exceptions) - [x] Every directory has barrel export - [x] No circular dependencies - [x] TypeScript strict mode passing - [x] 90%+ test coverage - [x] Clear domain boundaries - [x] Consistent naming conventions ## Maintainability Gate (Issue #539 Foundation) - Baseline metrics artifact: `docs/metrics/maintainability-baseline.json` - Branch-aware gate wrapper: `scripts/maintainability-check.js` - Generate or refresh baseline: - `bun run maintainability:baseline` - `npm run maintainability:baseline` - Run regression check gate: - `bun run maintainability:check` - `npm run maintainability:check` - `bun run maintainability:check:strict` (force strict locally) The baseline/check scripts enumerate git-tracked files under `src` for deterministic results and fail fast if git file listing is unavailable. Default gate behavior: - strict mode on protected branches (`main`, `dev`, `hotfix/*`, `kai/hotfix-*`) - warning mode on PR CI and non-protected branches (parallel PR friendly) The check mode supports a maintainability regression gate that blocks increases in: - `process.exit` references - synchronous fs API references - TypeScript files over 350 LOC --- ## Related Documentation - [Codebase Summary](./codebase-summary.md) - Current structure - [Code Standards](./code-standards.md) - Patterns and conventions - [System Architecture](./system-architecture/index.md) - Architecture diagrams - [Hardening Debt Burndown Tracker](./hardening-debt-burndown.md) - Legacy shim + sync-fs debt tracking - [CLAUDE.md](../CLAUDE.md) - AI development guidance