Key changes:
- Changed default model from claude-sonnet-4.5 to gpt-4.1 (free tier compatible)
- Updated all Claude models to minPlan: 'pro' (requires paid Copilot subscription)
- Replaced 'localhost' with '127.0.0.1' for more reliable local connections
(bypasses DNS resolution and potential IPv6 issues)
- Updated UI presets: replaced Claude Haiku with Raptor Mini in free tier
- Fixed FREE_PRESETS to only include actually free models
This fixes the "model_not_supported" error when using free tier GitHub Copilot
subscription, which doesn't have access to Claude models.
Changed copilot command routing logic to only intercept known subcommands
(auth, status, models, start, stop, enable, disable, help). When user runs
bare 'ccs copilot' without subcommands, it now falls through to profile
detection and executes Claude with the Copilot API backend.
This allows:
- `ccs copilot auth` → command handler (authenticate)
- `ccs copilot status` → command handler (show status)
- `ccs copilot` → profile execution (run Claude with Copilot)
Make the "use at your own risk" warning more transparent:
- UI: Expanded warning banner with clear "Unofficial API" heading
- UI: Added explicit no warranty/no responsibility text
- Config YAML: Updated comments with !! DISCLAIMER !! section
- Types: Updated CopilotConfig JSDoc with full disclaimer
CCS provides no warranty and accepts no responsibility for
consequences of using this reverse-engineered GitHub Copilot API.
- Add CopilotPlanTier type and extend CopilotModel with minPlan,
multiplier, preview fields
- Show plan tier badges (free/pro/pro+/business/enterprise) with
color-coded styling in model dropdown
- Display multiplier info (0x=free, 1x=standard, 3x-10x=premium)
- Add Preview badge for non-GA models
- Create 3 free tier presets: GPT-4.1, GPT-5 Mini, Claude Haiku 4.5
- Create 5 paid presets: Claude Opus/Sonnet 4.5, GPT-5.2,
GPT-5.1 Codex Max, Gemini 2.5 Pro
- Separate presets into Free Tier and Pro+ Required sections
- add CopilotAuthResult interface with deviceCode field
- expose startAuthAsync and authResult from useCopilot hook
- immediately refetch status on auth success
- add hasTokenFile() for fast auth check without subprocess
- capture device code from copilot-api auth output
- export AuthFlowResult type with deviceCode and verificationUrl
- echo auth output to terminal while capturing for UI
- add CopilotInfo type and install mutation to useCopilot hook
- show version in status card when installed
- add Install button with loading state when not installed
- POST /api/copilot/install: install copilot-api (optional version)
- GET /api/copilot/info: get install status, version, path
- GET /api/copilot/status: include version in response
- copilot-auth: use getCopilotApiBinPath() instead of npx
- copilot-daemon: move PID file to ~/.ccs/copilot/daemon.pid
- copilot-executor: auto-install copilot-api on first use
- index: export package manager functions
- install copilot-api locally to ~/.ccs/copilot/
- auto-update with version caching (1hr TTL)
- version pinning support via .version-pin file
- mirrors CLIProxy binary-manager pattern
- Split-view layout (40% left / 60% right) matching CLIProxy design
- Left panel: Model Config tab with FlexibleModelSelector components,
Settings tab, and Info tab
- Right panel: Raw JSON editor for copilot.settings.json
- Add preset buttons for quick model tier mapping
- Bidirectional sync between UI and raw JSON
- Simplify copilot.tsx page layout with narrower sidebar
- add GET/PUT /api/copilot/settings/raw for copilot.settings.json
- update PUT /api/copilot/config to handle model mapping fields
- sync model mappings between settings file and unified config
- add opus_model, sonnet_model, haiku_model to CopilotConfig
- update generateCopilotEnv to use tier-specific models
- fall back to default model when tier not configured
- use-copilot.ts: React hook for copilot state management
- copilot-status-card.tsx: status display with auth/daemon controls
- copilot-config-form.tsx: configuration form with model selector
- copilot.tsx: main page combining status and config
- add /copilot route and sidebar navigation
- GET/PUT /api/copilot/config for configuration
- GET /api/copilot/status for integration status
- POST /api/copilot/auth/start for OAuth flow
- GET /api/copilot/models for available models
- POST /api/copilot/daemon/start|stop for daemon control
- add 'ccs copilot' subcommand with auth, status, models, start, stop, enable, disable
- route 'ccs copilot' as profile name to copilot executor
- integrate copilot command into main CLI entry point
- replace "CCS Config" header text with two promotional buttons
- add ClaudeKit badge with logo linking to claudekit.cc
- add Sponsor button with heart icon linking to GitHub Sponsors
- both buttons feature hover effects and consistent styling
- fix dark theme hover text visibility
- add filterUnits="userSpaceOnUse" to flow-glow filter for consistent rendering
- unify connector-side padding to p*-4 across all zones (top/bottom/left/right)
- previous: top pb-5, left pr-6, right pl-6, bottom no extra
- now: all zones have consistent 16px padding on connector side
- Removed MAX_THINKING_TOKENS (8191) limit for Claude models via agy.
- Updated default agy haiku model to gemini-3-flash-preview.
- Updated unit tests to match new model expectations.
- Change flow viz section from items-center to items-stretch
- Use justify-center with gap-8 instead of justify-between for middle row
- Add w-full to top/bottom zone containers
- Increase gap from gap-3 to gap-4 for consistent spacing
Fixes issue where visualization left huge blank spaces
- Add 4-zone layout (top/left/right/bottom) based on account count
- Dynamic provider card sizing scales with account count
- Add localStorage persistence for card positions with reset button
- Implement click-to-toggle for account detail panel
- Add drag vs click detection to prevent accidental selections
- Fix connection curves to properly follow dragged cards using getBoundingClientRect
- Add fixed widths (w-44) to all zone cards for consistency
- Add top/bottom connector points to provider card