Commit Graph
1792 Commits
Author SHA1 Message Date
kaitranntt cc2d62db38 fix(profiles): prevent GLM auth regression from first-time install detection
- Check legacy config.json/profiles.json in isFirstTimeInstall()
- Use expandPath() for cross-platform path handling in profile-detector
- Add pre-flight API key validation for better error messages
- Enhance 401 error handling with Z.AI refresh guidance

Fixes #195
2025-12-24 18:09:09 -05:00
github-actions[bot] fdc5439c78 chore(release): 7.6.0-dev.2 [skip ci] 2025-12-24 22:53:56 +00:00
Kai (Tam Nhu) TranandGitHub 83b2645202 Merge pull request #196 from kaitranntt/fix/194-gemini-3-flash-preview-dropdown
fix(ui): add gemini-3-flash-preview to model dropdowns
2025-12-24 17:52:53 -05:00
kaitranntt 50653d1054 fix(ui): add gemini-3-flash-preview to model dropdowns
Added gemini-3-flash-preview model to agy and gemini provider catalogs
in the UI. This enables users to select the fast Gemini 3 Flash model
from dropdown menus.

Closes #194
2025-12-24 17:07:56 -05:00
kaitranntt df0c94781e feat(kiro): improve auth UX with normal browser default and URL display
- Change default to noIncognito=true (normal browser) for reliability
- Always print OAuth URL to terminal for VS Code popup detection
- Move incognito toggle from Proxy settings to Kiro provider page
- Add --incognito flag to opt into incognito mode (was --no-incognito)
- Update help text to reflect new defaults
2025-12-24 06:17:17 -05:00
kaitranntt 083e67426c feat(kiro): add UI toggle and auth hint for --no-incognito option
- Add "Kiro: Use normal browser" toggle in config dashboard (Proxy section)
- Add --no-incognito documentation to ccs --help output
- Show hint after successful Kiro auth about saving AWS credentials
2025-12-24 05:26:02 -05:00
kaitranntt 13e4baca22 fix(kiro): add --no-incognito option for normal browser auth
Kiro OAuth always opens in incognito browser mode, which doesn't save
login credentials. Users need to re-enter email each authentication.

Changes:
- Add noIncognito option to OAuthOptions interface
- Add kiro_no_incognito config option to CLIProxyConfig
- Pass --no-incognito flag to CLIProxyAPI binary when enabled
- Support both CLI flag (--no-incognito) and config.yaml setting

Usage:
- CLI: ccs kiro --auth --no-incognito
- Config: cliproxy.kiro_no_incognito: true in config.yaml
2025-12-24 05:02:33 -05:00
kaitranntt 0bcaf4bc68 feat(cliproxy): add variant port isolation for concurrent proxy instances
Enables running multiple CLIProxy variants simultaneously on different
ports. Each variant now gets a unique port in the 18100-18199 range,
allowing concurrent use of providers like Gemini + Codex + custom variants.

Key changes:
- Add port field to variant config schema
- Implement automatic port allocation (18100 + variant index)
- Support variant-specific settings paths in config generator
- Display port in dashboard UI for debugging
- Show all models in variant editor dropdown
- Add comprehensive tests for port allocation edge cases

Closes related variant isolation work.
2025-12-24 04:15:04 -05:00
github-actions[bot] a1e93eb940 chore(release): 7.6.0-dev.1 [skip ci] 2025-12-24 09:12:01 +00:00
Kai (Tam Nhu) TranandGitHub 1f31d68dd2 Merge pull request #192 from kaitranntt/fix/qwen-login-stdin-forward
fix(qwen): inherit stdin for Device Code flows to enable interactive prompts
2025-12-24 04:11:02 -05:00
kaitranntt c811fdfc79 fix(qwen): inherit stdin for Device Code flows to enable interactive prompts
Device Code flows (Qwen, GHCP) may require interactive terminal input
before generating the device code. For example, Qwen prompts for email.

Previously, all auth processes used piped stdin which blocked user input.
Now Device Code flows use 'inherit' for stdin, allowing users to respond
to prompts directly in the terminal.

Authorization Code flows (Gemini, Codex) still use piped stdin for
programmatic project selection.

Closes #188
2025-12-24 04:04:22 -05:00
semantic-release-bot df90bacf6b chore(release): 7.6.0 [skip ci]
## [7.6.0](https://github.com/kaitranntt/ccs/compare/v7.5.1...v7.6.0) (2025-12-24)

### Features

* **cli:** add config command hints to help and error messages ([e981c39](https://github.com/kaitranntt/ccs/commit/e981c391a26d51de749099ca844915ffc06976e2))
* **setup:** add first-time setup wizard for config initialization ([cec616d](https://github.com/kaitranntt/ccs/commit/cec616d530d9cf61a3a45032465b01e9a4037558)), closes [#142](https://github.com/kaitranntt/ccs/issues/142)

### Bug Fixes

* **cliproxy:** respect enabled:false and use protocol-based port defaults ([a99b6eb](https://github.com/kaitranntt/ccs/commit/a99b6eb93f06c6788bbf13a196bbca908fa06f4c))
* **config:** improve edge case handling for config initialization ([ca78993](https://github.com/kaitranntt/ccs/commit/ca78993e7612143b3193e3cec3f8976be909e2d6))
* **ghcp:** display device code during OAuth device code flow ([46f1699](https://github.com/kaitranntt/ccs/commit/46f1699b1c6f716d06c1eaa3dc6aac94dd5761ec)), closes [#189](https://github.com/kaitranntt/ccs/issues/189)

### Code Refactoring

* **config:** migrate to config.yaml as primary format ([b34469d](https://github.com/kaitranntt/ccs/commit/b34469d75fd2c2b7fd4f4cc4c0cc28885001649b)), closes [#142](https://github.com/kaitranntt/ccs/issues/142)
* **ghcp:** remove unused device code session management ([5de6ccc](https://github.com/kaitranntt/ccs/commit/5de6cccee08aa06d6533181a1db189a595c5e123))
2025-12-24 08:43:29 +00:00
Kai (Tam Nhu) TranandGitHub 948a20d342 Merge pull request #191 from kaitranntt/dev
feat(release): config setup wizard, device code display, and proxy bug fixes
2025-12-24 03:42:21 -05:00
github-actions[bot] 91a079ad20 chore(release): 7.5.1-dev.4 [skip ci] 2025-12-24 08:38:07 +00:00
kaitranntt a99b6eb93f fix(cliproxy): respect enabled:false and use protocol-based port defaults
- Fix port default logic: HTTP→8317, HTTPS→443 (was always 8317)
- Fix enabled:false being ignored in proxy config resolution
- Update stale comments referencing HTTP:80 to HTTP:8317
- Add 9 unit tests for edge cases (enabled handling, port defaults)
2025-12-24 03:36:48 -05:00
github-actions[bot] 659761f019 chore(release): 7.5.1-dev.3 [skip ci] 2025-12-24 08:24:13 +00:00
Kai (Tam Nhu) TranandGitHub 1a8ba4e40c Merge pull request #190 from kaitranntt/fix/ghcp-auth-code-display
fix(ghcp): display device code during OAuth device code flow
2025-12-24 03:23:11 -05:00
kaitranntt 5de6cccee0 refactor(ghcp): remove unused device code session management
- Remove unused functions: registerDeviceCode, completeDeviceCode,
  failDeviceCode, getActiveDeviceCode, hasActiveDeviceCode,
  getAllActiveDeviceCodes, ActiveSession interface, activeSessions Map
- Reduce device-code-handler.ts from 168 to 33 lines (YAGNI)
- Add ARIA labels to copy button for accessibility
- Fix timer to stop at 0 seconds instead of continuing negative
- Add "(Code expired)" visual indicator with destructive styling
- Change void sessionId to data-session-id attribute for debugging

Code review findings applied. Gemini OAuth unaffected (uses separate
project-selection-handler.ts with Authorization Code Flow).
2025-12-24 03:15:57 -05:00
kaitranntt 46f1699b1c fix(ghcp): display device code during OAuth device code flow
When authenticating with GitHub Copilot using device code flow,
the user code was not being displayed. This fix:

- Parses device codes from CLIProxy output in oauth-process.ts
- Displays code prominently in CLI terminal with box formatting
- Broadcasts device code events via WebSocket for UI display
- Creates DeviceCodeDialog component for web UI (ccs config)
- Follows same pattern as Gemini project selection dialog

Closes #189
2025-12-24 03:02:36 -05:00
github-actions[bot] 8d1f1a6a94 chore(release): 7.5.1-dev.2 [skip ci] 2025-12-24 04:03:58 +00:00
Kai (Tam Nhu) TranandGitHub 4867df26fc Merge pull request #187 from kaitranntt/fix/config-init-defaults
feat(setup): add first-time setup wizard and migrate to config.yaml
2025-12-23 23:02:57 -05:00
kaitranntt ca78993e76 fix(config): improve edge case handling for config initialization
- setup-command.ts: Add Ctrl+C handling (UserCancelledError), port
  validation (1-65535), protocol stripping from host, try-catch with
  user-friendly error messages
- postinstall.js: Add ~/.ccs file check (not directory), wrap js-yaml
  require in try-catch with JSON fallback, validate config.json before
  migration, warn when both config files exist
- recovery-manager.ts: Verify config is loadable (not just exists),
  add nested error handling for fallback write
- ccs.ts: Make first-time install hint independent of recovery status
  (shows even when user manually created empty config.yaml)

All edge cases identified by code review addressed.
2025-12-23 22:34:32 -05:00
kaitranntt b34469d75f refactor(config): migrate to config.yaml as primary format
- Update postinstall.js to create config.yaml instead of config.json
- Update recovery-manager to create config.yaml as primary config
- Fix isFirstTimeInstall() to check for meaningful config content
  (profiles, accounts, variants, oauth_accounts, remote proxy)
- Update validation to accept config.yaml OR config.json
- Preserve backward compatibility: legacy config.json is migrated
  to config.yaml on first run via autoMigrate()
- Update postinstall tests to verify config.yaml creation

Fixes #142 - remote CLIProxyAPI configuration
2025-12-23 21:54:55 -05:00
kaitranntt cec616d530 feat(setup): add first-time setup wizard for config initialization
Addresses Issue #142 - remote CLIProxyAPI configuration for Docker/server deployments.

Changes:
- Add `ccs setup` command with interactive wizard
- Support local vs remote CLIProxy mode selection
- Guide users through remote proxy config (host, port, auth token)
- Auto-detect first-time install and suggest setup wizard
- Update help command to include setup

Scenarios covered:
1. New users - wizard guides through local/remote/skip choice
2. Remote proxy users - configure host/port/protocol/auth_token
3. Local users - default auto-start behavior
4. Skip CLIProxy - only API profiles or Claude accounts
2025-12-23 21:28:38 -05:00
github-actions[bot] 9d8268b0f6 chore(release): 7.5.1-dev.1 [skip ci] 2025-12-23 05:56:23 +00:00
kaitranntt e981c391a2 feat(cli): add config command hints to help and error messages
Enhance discoverability of the 'ccs config' command by adding hints to
the help menu, post-update/doctor messages, and relevant error states.
2025-12-23 00:55:17 -05:00
semantic-release-bot f62b48972d chore(release): 7.5.1 [skip ci]
## [7.5.1](https://github.com/kaitranntt/ccs/compare/v7.5.0...v7.5.1) (2025-12-23)

### Bug Fixes

* **ui:** use UI color system for consistent CLI indicators ([91cd9ff](https://github.com/kaitranntt/ccs/commit/91cd9ffc16e46737d190b3858340e7c745021ef4))

### Code Refactoring

* **cliproxy:** enhance binary downloader with robust error handling ([c2dd026](https://github.com/kaitranntt/ccs/commit/c2dd0261b7c2a8e4b9bd11b04df16ed3ba6e93be))
2025-12-23 00:46:30 +00:00
Kai (Tam Nhu) TranandGitHub d552ec0251 Merge pull request #182 from kaitranntt/dev
fix(ui): consistent CLI indicators and enhanced binary downloader
2025-12-22 19:45:21 -05:00
github-actions[bot] 4ec931801c chore(release): 7.5.0-dev.2 [skip ci] 2025-12-23 00:42:11 +00:00
kaitranntt 91cd9ffc16 fix(ui): use UI color system for consistent CLI indicators 2025-12-22 19:41:05 -05:00
github-actions[bot] dbc128948e chore(release): 7.5.0-dev.1 [skip ci] 2025-12-22 23:23:39 +00:00
kaitranntt c2dd0261b7 refactor(cliproxy): enhance binary downloader with robust error handling
- Add categorized error detection for socket, timeout, HTTP, and redirect errors
- Implement smarter exponential backoff (longer delays for socket errors)
- Increase max retries from 3 to 5 with dynamic timeout adjustment
- Add resource cleanup (disable connection pooling for clean process exit)
- Add user-friendly error messages for each error type
- Refactor fetchText/fetchJson with retry logic and proper error handling
- Set 120s timeout for large binary downloads, 15-30s for text/JSON
- Prevent double-resolution and race conditions in Promise handlers
2025-12-22 18:22:32 -05:00
semantic-release-bot c367149756 chore(release): 7.5.0 [skip ci]
## [7.5.0](https://github.com/kaitranntt/ccs/compare/v7.4.0...v7.5.0) (2025-12-22)

### Features

* **glm:** add GLM 4.7 model support ([a827b73](https://github.com/kaitranntt/ccs/commit/a827b73eef72f58705a6ebced0cf8620dda09399)), closes [#179](https://github.com/kaitranntt/ccs/issues/179)
2025-12-22 21:29:46 +00:00
Kai (Tam Nhu) TranandGitHub 5fc558cc08 Merge pull request #181 from kaitranntt/dev
feat(glm): add GLM 4.7 model support
2025-12-22 16:28:40 -05:00
github-actions[bot] df662492a6 chore(release): 7.4.0-dev.1 [skip ci] 2025-12-22 21:17:04 +00:00
Kai (Tam Nhu) TranandGitHub fe9491740e Merge pull request #180 from kaitranntt/kai/feat/glm-4.7-support
feat(glm): add GLM 4.7 model support
2025-12-22 16:16:02 -05:00
kaitranntt a827b73eef feat(glm): add GLM 4.7 model support
- Update default GLM/GLMT model from glm-4.6 to glm-4.7
- Add glm-4.7 pricing entry
- Sync UI presets with CLI changes

Closes #179
2025-12-22 16:13:19 -05:00
semantic-release-bot 3da29e58e3 chore(release): 7.4.0 [skip ci]
## [7.4.0](https://github.com/kaitranntt/ccs/compare/v7.3.0...v7.4.0) (2025-12-22)

### Features

* **api:** add Azure Foundry preset ([31bafaa](https://github.com/kaitranntt/ccs/commit/31bafaab8dbff03c984df3b2d0b0d743d71b012b))
2025-12-22 20:38:39 +00:00
Kai (Tam Nhu) TranandGitHub 4e6c5b5e71 Merge pull request #141 from MinhOmega/main
feat(foundry): add Microsoft Azure Foundry support
2025-12-22 15:37:38 -05:00
kaitrannttandMinhOmega 31bafaab8d feat(api): add Azure Foundry preset
Add Microsoft Azure AI Foundry as a provider preset for `ccs api create`.

Usage: `ccs api create --preset foundry`

This is a cleaner implementation than the postinstall-based approach,
leveraging the existing preset system.

Co-authored-by: MinhOmega <49482201+MinhOmega@users.noreply.github.com>
2025-12-22 15:34:27 -05:00
semantic-release-bot f1f726d163 chore(release): 7.3.0 [skip ci]
## [7.3.0](https://github.com/kaitranntt/ccs/compare/v7.2.0...v7.3.0) (2025-12-22)

### Features

* **auth:** add Kiro and GitHub Copilot OAuth providers ([2b441f6](https://github.com/kaitranntt/ccs/commit/2b441f64982c74174cb350537956e24970ef69f4))
* **cliproxy:** add ghcp settings and update variant adapter ([fae1ee2](https://github.com/kaitranntt/ccs/commit/fae1ee2b3139a22a753b55908305c5d4303be560))
* **cliproxy:** add kiro and ghcp OAuth configurations ([a01abe1](https://github.com/kaitranntt/ccs/commit/a01abe181b63d88fcf7e7fa9404071a69e7727d7))
* **cliproxy:** add kiro and ghcp providers to CLIProxyProvider type ([036714c](https://github.com/kaitranntt/ccs/commit/036714c77447c4887da038b7979495c80f171c88))
* **cliproxy:** add kiro and ghcp to OAuth diagnostics and account manager ([49bc0a4](https://github.com/kaitranntt/ccs/commit/49bc0a44cc58cafdb74d008e32500a6154460246))
* **cliproxy:** migrate from CLIProxyAPI to CLIProxyAPIPlus ([6f8587d](https://github.com/kaitranntt/ccs/commit/6f8587db6881dd3638320882e2eadcbf943c3945))
* **config:** add base settings for Kiro and Copilot providers ([b15ff7f](https://github.com/kaitranntt/ccs/commit/b15ff7f2355bf88f5867fe97475690a5affcbe10))
* **config:** add kiro and ghcp to unified config and auth routes ([d04bcc1](https://github.com/kaitranntt/ccs/commit/d04bcc117f5fd79bf52ab97ce597173a9c40ff00))
* **ui:** add Kiro and Copilot provider icons ([9ca20e7](https://github.com/kaitranntt/ccs/commit/9ca20e70de856f5cadb2cf8d1aeb60f1e725052a))
* **ui:** add kiro and ghcp to provider types and configs ([bf3d51a](https://github.com/kaitranntt/ccs/commit/bf3d51ade33620653a9dff297b394d1f3eaa2cf3))
* **ui:** add kiro and ghcp to wizard, auth flow, and settings ([9221545](https://github.com/kaitranntt/ccs/commit/92215457f0226695a0d57b25fba4744b85401bac))
* **ui:** integrate Kiro and Copilot providers, rename to CLIProxy Plus ([0f029f9](https://github.com/kaitranntt/ccs/commit/0f029f960a835f307f045eb9b7e01b448d4b539e))
* **ui:** update cliproxy components with kiro and ghcp providers ([099b712](https://github.com/kaitranntt/ccs/commit/099b712d4a1cd64388e669493851750f072f6d98))

### Bug Fixes

* update download URLs and binary names for CLIProxyAPIPlus ([4829902](https://github.com/kaitranntt/ccs/commit/48299028268a95587e5dbcb8285ab449b83b23ff))

### Documentation

* add CLIProxyAPIPlus attribution for Kiro and Copilot ([743d34a](https://github.com/kaitranntt/ccs/commit/743d34a881dbe3adccaca5d8a8e80529cb061eb7))
* **cli:** add ccs kiro and ccs ghcp to help text ([8c8a15f](https://github.com/kaitranntt/ccs/commit/8c8a15f1e14a71d0359a9d3a93abb29fee36633c))
* update documentation for kiro and ghcp providers ([b93b91c](https://github.com/kaitranntt/ccs/commit/b93b91c92596a747aae6b083819b1ec8162c1f5d))

### Code Refactoring

* complete CLIProxy Plus branding across CLI and UI ([af92bc3](https://github.com/kaitranntt/ccs/commit/af92bc30bf45a7816b07b4dfa6a5f0a42b9b03f4))
* rename CLIProxyAPI to CLIProxy Plus across UI and CLI ([670993d](https://github.com/kaitranntt/ccs/commit/670993d3644e9551c474c27014c25351d0e3c92a))
2025-12-22 06:26:08 +00:00
Kai (Tam Nhu) TranandGitHub 14f0fa4a49 Merge pull request #178 from kaitranntt/dev
feat(cliproxy): migrate to CLIProxyAPIPlus with Kiro and GitHub Copilot OAuth
2025-12-22 01:25:06 -05:00
github-actions[bot] 3c55ac906c chore(release): 7.2.0-dev.1 [skip ci] 2025-12-22 06:12:03 +00:00
Kai (Tam Nhu) TranandGitHub ccc296d50d Merge pull request #177 from kaitranntt/kai/feat/kiro-auth
feat(cliproxy): migrate to CLIProxyAPIPlus with Kiro and GitHub Copilot OAuth
2025-12-22 01:10:58 -05:00
kaitranntt b93b91c925 docs: update documentation for kiro and ghcp providers
- add ccs kiro and ccs ghcp to README commands

- update project-overview-pdr with v7.2 and FR-003 OAuth flows

- update system-architecture with OAuth flow types

- update codebase-summary with 7 CLIProxy providers

- update project-roadmap with Phase 11 completion
2025-12-22 01:09:25 -05:00
kaitranntt 92215457f0 feat(ui): add kiro and ghcp to wizard, auth flow, and settings
- update PROVIDERS in wizard constants with ghcp

- add AUTH_ENDPOINTS for qwen, iflow, kiro, ghcp

- update globalenv description text
2025-12-22 00:48:10 -05:00
kaitranntt 099b712d4a feat(ui): update cliproxy components with kiro and ghcp providers
- add ghcp to PROVIDER_IMAGES and PROVIDER_CONFIG in provider-logo

- update providers array and options in cliproxy-dialog

- add kiro and ghcp to providerLabels in cliproxy-table

- complete providers list in cliproxy-header

- update ownerMap key from copilot to ghcp in provider-editor
2025-12-22 00:47:34 -05:00
kaitranntt bf3d51ade3 feat(ui): add kiro and ghcp to provider types and configs
- update Variant, CreateVariant, UpdateVariant, OAuthAccount types

- add ghcp to PROVIDER_ASSETS, PROVIDER_COLORS, PROVIDER_NAMES

- add ghcp catalog with model configurations
2025-12-22 00:46:51 -05:00
kaitranntt f5a382c3d5 chore(config): remove deprecated base-copilot.settings.json
- replaced by base-ghcp.settings.json for ghcp provider
2025-12-22 00:46:29 -05:00
kaitranntt 8c8a15f1e1 docs(cli): add ccs kiro and ccs ghcp to help text
- add 'ccs kiro' entry for AWS CodeWhisperer

- add 'ccs ghcp' entry for GitHub Copilot OAuth

- clarify ccs copilot is for copilot-api integration
2025-12-22 00:46:01 -05:00