feat: deprecate GitHub Copilot compatibility surfaces (#1196)

This commit is contained in:
Kai (Tam Nhu) Tran authored and GitHub committed 2026-05-07 13:06:03 -04:00
1 parent e2974ede44
commit 19a50a8dd8
15 files changed
+87 -35

No files matched your search

+2 -1
View File
@@ -26,7 +26,8 @@ CCS gives you one stable command surface while letting you switch between:
- multiple runtimes such as Claude Code, Factory Droid, and Codex CLI - multiple runtimes such as Claude Code, Factory Droid, and Codex CLI
- multiple Claude subscriptions and isolated account contexts - multiple Claude subscriptions and isolated account contexts
- OAuth providers like Codex, Copilot, Kiro, Claude, Qwen, Kimi, and more - OAuth providers like Codex, Kiro, Claude, Qwen, Kimi, and more, with legacy
Copilot compatibility for existing setups
- API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp, - API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp,
Novita, and Alibaba Coding Plan Novita, and Alibaba Coding Plan
+7 -7
View File
@@ -1,6 +1,6 @@
# CCS Product Development Requirements (PDR) # CCS Product Development Requirements (PDR)
Last Updated: 2026-04-08 Last Updated: 2026-05-07
## Product Overview ## Product Overview
@@ -31,7 +31,7 @@ Developers using Claude Code face these challenges:
CCS provides: CCS provides:
1. **Multi-Account Claude**: Isolated instances via `CLAUDE_CONFIG_DIR` 1. **Multi-Account Claude**: Isolated instances via `CLAUDE_CONFIG_DIR`
2. **OAuth Providers**: Zero-config Gemini, Codex, Antigravity, Copilot, Kiro (ghcp) integration 2. **OAuth Providers**: Zero-config Gemini, Codex, Antigravity, Kiro, and other active OAuth integrations, with deprecated Copilot compatibility for existing setups
3. **AI Providers**: Dedicated CLIProxy dashboard for Gemini, Codex, Claude, Vertex, and OpenAI-compatible API-key families 3. **AI Providers**: Dedicated CLIProxy dashboard for Gemini, Codex, Claude, Vertex, and OpenAI-compatible API-key families
4. **API Profiles**: GLM, Kimi, OpenRouter, any Anthropic-compatible API 4. **API Profiles**: GLM, Kimi, OpenRouter, any Anthropic-compatible API
5. **Visual Dashboard**: React SPA for configuration management 5. **Visual Dashboard**: React SPA for configuration management
@@ -68,8 +68,8 @@ CCS provides:
- Share commands, skills, agents across accounts - Share commands, skills, agents across accounts
### FR-003: OAuth Provider Integration ### FR-003: OAuth Provider Integration
- Support Gemini, Codex, Antigravity, Copilot, Kiro (ghcp) OAuth flows - Support Gemini, Codex, Antigravity, Kiro, and deprecated Copilot compatibility OAuth flows
- Browser-based authentication (Authorization Code flow for most, Device Code for ghcp) - Browser-based authentication (Authorization Code flow for most, Device Code for ghcp compatibility)
- Token caching and refresh - Token caching and refresh
### FR-004: API Profile Management ### FR-004: API Profile Management
@@ -273,7 +273,7 @@ CCS provides:
### v7.2 Release (Complete) ### v7.2 Release (Complete)
- [x] Kiro (AWS) OAuth provider support via CLIProxyAPIPlus - [x] Kiro (AWS) OAuth provider support via CLIProxyAPIPlus
- [x] GitHub Copilot (ghcp) OAuth provider via Device Code flow - [x] GitHub Copilot (ghcp) OAuth provider via Device Code flow (deprecated compatibility)
- [x] Authorization Code flow for Kiro (port 9876) - [x] Authorization Code flow for Kiro (port 9876)
- [x] Device Code flow for ghcp (no local port needed) - [x] Device Code flow for ghcp (no local port needed)
@@ -334,8 +334,8 @@ CCS provides:
### External Services ### External Services
- Anthropic Claude API - Anthropic Claude API
- Google Gemini API - Google Gemini API
- GitHub Codex/Copilot API - GitHub Codex API
- GitHub Copilot (ghcp - Device Code OAuth) - GitHub Copilot (ghcp - deprecated Device Code OAuth compatibility)
- AWS Kiro (Authorization Code OAuth) - AWS Kiro (Authorization Code OAuth)
- Z.AI GLM API - Z.AI GLM API
- OpenRouter API - OpenRouter API
+4 -3
View File
@@ -22,7 +22,7 @@ All major modularization work is complete. The codebase evolved from monolithic
| 8 | Auth Monitor | `monitoring/auth-monitor/` (465->8 files) | | 8 | Auth Monitor | `monitoring/auth-monitor/` (465->8 files) |
| 9 | Test Infrastructure | 1407 tests, 90% coverage | | 9 | Test Infrastructure | 1407 tests, 90% coverage |
| 10 | Remote CLIProxy | `proxy-config-resolver.ts`, `remote-proxy-client.ts` | | 10 | Remote CLIProxy | `proxy-config-resolver.ts`, `remote-proxy-client.ts` |
| 11 | Kiro + ghcp Providers | OAuth support via CLIProxyAPIPlus (v7.2) | | 11 | Kiro + legacy ghcp Providers | OAuth support via CLIProxyAPIPlus (v7.2) |
| 12 | Hybrid Quota Management | `quota-manager.ts`, `quota-fetcher.ts` (v7.14) | | 12 | Hybrid Quota Management | `quota-manager.ts`, `quota-fetcher.ts` (v7.14) |
| 13 | Docker Support | `docker/` directory with Dockerfile, Compose, entrypoint | | 13 | Docker Support | `docker/` directory with Dockerfile, Compose, entrypoint |
| 14 | Image Analysis Hook | Vision proxying via CLIProxy transformers (v7.34) | | 14 | Image Analysis Hook | Vision proxying via CLIProxy transformers (v7.34) |
@@ -41,6 +41,7 @@ All major modularization work is complete. The codebase evolved from monolithic
### Recent Fixes ### Recent Fixes
- **2026-05-07**: **#1103** GitHub Copilot is now treated as a deprecated compatibility bridge. The dashboard moves Copilot out of the active Identity & Access section and into Deprecated, quick setup no longer offers `ghcp` for new onboarding, CLI/help/config copy marks Copilot as deprecated, and existing `ccs copilot` / `ghcp` compatibility paths remain available for current setups.
- **2026-05-07**: **#1189** Headless settings-profile delegation now preserves native Claude passthrough args without a Claude flag allowlist. Explicit `--channels` values reach Claude Code, future native flags can carry multiple adjacent values, malformed CCS-owned flags no longer swallow the next native flag, and `--prompt=<text>` routes through headless delegation consistently with `--prompt <text>`. - **2026-05-07**: **#1189** Headless settings-profile delegation now preserves native Claude passthrough args without a Claude flag allowlist. Explicit `--channels` values reach Claude Code, future native flags can carry multiple adjacent values, malformed CCS-owned flags no longer swallow the next native flag, and `--prompt=<text>` routes through headless delegation consistently with `--prompt <text>`.
- **2026-05-03**: **#1172** Local CLIProxy config generation now keeps the CPAMC management dashboard aligned with backend selection. `backend: original` points to the upstream dashboard, `backend: plus` points to the CCS-maintained CPAMC fork, `cliproxy.management_panel_repository` lets advanced users override the panel repository, and stale generated configs are regenerated when the expected panel source changes. - **2026-05-03**: **#1172** Local CLIProxy config generation now keeps the CPAMC management dashboard aligned with backend selection. `backend: original` points to the upstream dashboard, `backend: plus` points to the CCS-maintained CPAMC fork, `cliproxy.management_panel_repository` lets advanced users override the panel repository, and stale generated configs are regenerated when the expected panel source changes.
- **2026-04-30**: **#1153** Native Claude launches now accept session-scoped `--effort low|medium|high|xhigh|max` overrides through CCS without mutating global Claude settings. CCS validates invalid or missing effort values before spawning Claude, normalizes accepted values, keeps default headless `-p/--prompt` launches on native Claude instead of delegation parsing, and preserves CLIProxy/Codex/Droid effort aliases. - **2026-04-30**: **#1153** Native Claude launches now accept session-scoped `--effort low|medium|high|xhigh|max` overrides through CCS without mutating global Claude settings. CCS validates invalid or missing effort values before spawning Claude, normalizes accepted values, keeps default headless `-p/--prompt` launches on native Claude instead of delegation parsing, and preserves CLIProxy/Codex/Droid effort aliases.
@@ -214,7 +215,7 @@ worktrees:
- **#158**: Fix AGY OAuth flow - **#158**: Fix AGY OAuth flow
- **#157**: ~~Add Kiro auth support from CLIProxyAPIPlus~~ **COMPLETE** (v7.2) - **#157**: ~~Add Kiro auth support from CLIProxyAPIPlus~~ **COMPLETE** (v7.2)
- GitHub Copilot (ghcp) Device Code flow **COMPLETE** (v7.2) - GitHub Copilot (ghcp) Device Code flow **COMPLETE** (v7.2, now deprecated compatibility)
- Hybrid quota management **COMPLETE** (v7.14) - Hybrid quota management **COMPLETE** (v7.14)
--- ---
@@ -225,7 +226,7 @@ worktrees:
|-----------|--------|--------| |-----------|--------|--------|
| Modularization (Phases 1-9) | COMPLETE | - | | Modularization (Phases 1-9) | COMPLETE | - |
| Remote CLIProxy Support (#142) | COMPLETE | v7.1 | | Remote CLIProxy Support (#142) | COMPLETE | v7.1 |
| Kiro + GitHub Copilot OAuth (#157) | COMPLETE | v7.2 | | Kiro + GitHub Copilot OAuth (#157) | COMPLETE, Copilot now deprecated compatibility | v7.2 |
| Hybrid Quota Management | COMPLETE | v7.14 | | Hybrid Quota Management | COMPLETE | v7.14 |
| Docker Support (PR #345) | COMPLETE | v7.23 | | Docker Support (PR #345) | COMPLETE | v7.23 |
| Image Analysis Hook | COMPLETE | v7.34 | | Image Analysis Hook | COMPLETE | v7.34 |
+7 -7
View File
@@ -14,7 +14,7 @@ CLIProxyAPI is a local OAuth proxy binary that enables seamless integration with
### Local Backend Choice ### Local Backend Choice
CCS defaults to the original `router-for-me/CLIProxyAPI` backend because it is the stable MIT upstream. The `plus` backend is an explicit opt-in path that downloads the community-maintained `kaitranntt/CLIProxyAPIPlus` fork for providers that still require Plus-only support, such as Kiro, GitHub Copilot, Cursor, GitLab, CodeBuddy, and Kilo. CCS does not silently downgrade `backend: plus` to `original`; users choose that backend deliberately when they need those providers. CCS defaults to the original `router-for-me/CLIProxyAPI` backend because it is the stable MIT upstream. The `plus` backend is an explicit opt-in path that downloads the community-maintained `kaitranntt/CLIProxyAPIPlus` fork for providers that still require Plus-only support, such as Kiro, Cursor, GitLab, CodeBuddy, Kilo, and deprecated GitHub Copilot compatibility. CCS does not silently downgrade `backend: plus` to `original`; users choose that backend deliberately when they need those providers.
Generated local CLIProxy configs also keep the management dashboard aligned with the selected backend. `backend: original` uses upstream CPAMC (`router-for-me/Cli-Proxy-API-Management-Center`), while `backend: plus` uses the CCS-maintained dashboard fork (`kaitranntt/Cli-Proxy-API-Management-Center`). Advanced users can override the generated `remote-management.panel-github-repository` value by setting `cliproxy.management_panel_repository` in `~/.ccs/config.yaml`; CCS will regenerate stale local CLIProxy configs when the expected dashboard repository changes. Generated local CLIProxy configs also keep the management dashboard aligned with the selected backend. `backend: original` uses upstream CPAMC (`router-for-me/Cli-Proxy-API-Management-Center`), while `backend: plus` uses the CCS-maintained dashboard fork (`kaitranntt/Cli-Proxy-API-Management-Center`). Advanced users can override the generated `remote-management.panel-github-repository` value by setting `cliproxy.management_panel_repository` in `~/.ccs/config.yaml`; CCS will regenerate stale local CLIProxy configs when the expected dashboard repository changes.
@@ -40,7 +40,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
| | - Callback to localhost:PORT | | - Callback to localhost:PORT
| | | |
| +---> Device Code Flow (no port needed) | +---> Device Code Flow (no port needed)
| - GitHub Copilot (ghcp) | - GitHub Copilot (ghcp, deprecated compatibility)
| - User enters code at github.com/login/device | - User enters code at github.com/login/device
| - Polls for token completion | - Polls for token completion
| | | |
@@ -73,7 +73,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
+---> GitHub (Codex) +---> GitHub (Codex)
+---> Antigravity (AGY) +---> Antigravity (AGY)
+---> AWS Kiro (Claude-powered) +---> AWS Kiro (Claude-powered)
+---> GitHub Copilot (ghcp) +---> GitHub Copilot (ghcp, deprecated compatibility)
+---> OpenAI-compatible endpoints +---> OpenAI-compatible endpoints
``` ```
@@ -85,7 +85,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
| Codex | `codex` | Authorization Code | 9876 | CLIProxyAPI | | Codex | `codex` | Authorization Code | 9876 | CLIProxyAPI |
| Antigravity | `agy` | Authorization Code | 9876 | CLIProxyAPI | | Antigravity | `agy` | Authorization Code | 9876 | CLIProxyAPI |
| Kiro (AWS) | `kiro` | Method-aware (default: Device Code) | 9876 | CLIProxyAPIPlus fork | | Kiro (AWS) | `kiro` | Method-aware (default: Device Code) | 9876 | CLIProxyAPIPlus fork |
| GitHub Copilot | `ghcp` | Device Code | none | CLIProxyAPIPlus fork | | GitHub Copilot (deprecated) | `ghcp` | Device Code | none | CLIProxyAPIPlus fork |
| Cursor | `cursor` | Browser URL polling | none | CLIProxyAPIPlus fork | | Cursor | `cursor` | Browser URL polling | none | CLIProxyAPIPlus fork |
### Codex Duplicate-Email Account Identity ### Codex Duplicate-Email Account Identity
@@ -299,7 +299,7 @@ When CCS detects exhaustion and a healthy fallback exists, it temporarily pauses
| | - Claude: policy limits endpoint | | - Claude: policy limits endpoint
| | - Codex: ChatGPT usage windows | | - Codex: ChatGPT usage windows
| | - Gemini CLI: Code Assist quota buckets | | - Gemini CLI: Code Assist quota buckets
| | - GitHub Copilot: copilot_internal/user snapshots | | - GitHub Copilot: copilot_internal/user snapshots (deprecated compatibility)
| | | |
| +---> Detect tier (free/paid/unknown) | +---> Detect tier (free/paid/unknown)
| | | |
@@ -391,7 +391,7 @@ function selectBestAccount(accounts: AccountInfo[]): AccountInfo | null {
### OAuth Providers - Device Code Flow ### OAuth Providers - Device Code Flow
**Providers**: GitHub Copilot (ghcp) **Providers**: GitHub Copilot (ghcp, deprecated compatibility)
Provider identity note: Provider identity note:
- Providers that do not expose a reliable email no longer require a manual nickname during first auth. - Providers that do not expose a reliable email no longer require a manual nickname during first auth.
@@ -591,7 +591,7 @@ Image Analysis Hook enables vision model proxying through CLIProxy with automati
| Codex | ✓ | Via CCS ImageAnalysis provider route | | Codex | ✓ | Via CCS ImageAnalysis provider route |
| Antigravity | ✓ | Via CCS ImageAnalysis provider route | | Antigravity | ✓ | Via CCS ImageAnalysis provider route |
| Kiro | ✓ | Via mapped CCS provider route when configured | | Kiro | ✓ | Via mapped CCS provider route when configured |
| Copilot | ✓ | Via mapped ghcp provider route | | Copilot | ✓ | Deprecated compatibility route via mapped ghcp provider |
| GLM/Kimi | ✓ | Via explicit or fallback backend mapping | | GLM/Kimi | ✓ | Via explicit or fallback backend mapping |
--- ---
+1 -1
View File
@@ -100,7 +100,7 @@ export const PROVIDER_CAPABILITIES: Record<CLIProxyProvider, ProviderCapabilitie
}, },
ghcp: { ghcp: {
displayName: 'GitHub Copilot (OAuth)', displayName: 'GitHub Copilot (OAuth)',
description: 'GitHub Copilot via OAuth', description: 'Deprecated GitHub Copilot compatibility via OAuth',
oauthFlow: 'device_code', oauthFlow: 'device_code',
callbackPort: null, callbackPort: null,
callbackProviderName: 'copilot', callbackProviderName: 'copilot',
+2 -2
View File
@@ -129,7 +129,7 @@ export const ROOT_COMMAND_CATALOG: readonly RootCommandEntry[] = [
}, },
{ {
name: 'copilot', name: 'copilot',
summary: 'Run or manage the GitHub Copilot bridge', summary: 'Run or manage the deprecated GitHub Copilot bridge',
group: 'runtime', group: 'runtime',
visibility: 'public', visibility: 'public',
}, },
@@ -198,7 +198,7 @@ export const BUILTIN_PROVIDER_SHORTCUTS: readonly ShortcutEntry[] = CLIPROXY_PRO
qwen: 'Qwen Code via CLIProxy OAuth', qwen: 'Qwen Code via CLIProxy OAuth',
iflow: 'iFlow via CLIProxy OAuth', iflow: 'iFlow via CLIProxy OAuth',
kiro: 'Kiro via CLIProxy OAuth', kiro: 'Kiro via CLIProxy OAuth',
ghcp: 'GitHub Copilot via CLIProxy OAuth', ghcp: 'Deprecated GitHub Copilot via CLIProxy OAuth',
claude: 'Claude via CLIProxy OAuth', claude: 'Claude via CLIProxy OAuth',
kimi: 'Kimi via CLIProxy OAuth', kimi: 'Kimi via CLIProxy OAuth',
cursor: 'Cursor via CLIProxy OAuth', cursor: 'Cursor via CLIProxy OAuth',
+7 -1
View File
@@ -73,7 +73,13 @@ function printCopilotWarnings(messages: string[]): void {
* Show help for copilot commands. * Show help for copilot commands.
*/ */
function handleHelp(): number { function handleHelp(): number {
console.log('GitHub Copilot Integration'); console.log('GitHub Copilot Integration (deprecated)');
console.log('');
console.log(
warn(
'Deprecated: GitHub usage-based Copilot billing begins June 1, 2026. Existing local setups remain available for compatibility; prefer Codex or another active provider for new work.'
)
);
console.log(''); console.log('');
console.log('Usage: ccs copilot <subcommand>'); console.log('Usage: ccs copilot <subcommand>');
console.log(''); console.log('');
+1 -1
View File
@@ -290,7 +290,7 @@ export async function handleHelpCommand(writeLine: HelpWriter = console.log): Pr
{ name: 'ccs proxy --help', summary: 'Deep help for the OpenAI-compatible local proxy' }, { name: 'ccs proxy --help', summary: 'Deep help for the OpenAI-compatible local proxy' },
{ name: 'ccs docker --help', summary: 'Deep help for Docker deployment commands' }, { name: 'ccs docker --help', summary: 'Deep help for Docker deployment commands' },
{ name: 'ccs cursor --help', summary: 'Deep help for Cursor runtime/admin commands' }, { name: 'ccs cursor --help', summary: 'Deep help for Cursor runtime/admin commands' },
{ name: 'ccs copilot --help', summary: 'Deep help for GitHub Copilot commands' }, { name: 'ccs copilot --help', summary: 'Deep help for deprecated GitHub Copilot commands' },
], ],
writeLine writeLine
); );
+6 -3
View File
@@ -162,11 +162,14 @@ export function generateYamlWithComments(config: UnifiedConfig): string {
lines.push(''); lines.push('');
} }
// Copilot section (GitHub Copilot proxy) // Copilot section (deprecated GitHub Copilot compatibility bridge)
if (config.copilot) { if (config.copilot) {
lines.push('# ----------------------------------------------------------------------------'); lines.push('# ----------------------------------------------------------------------------');
lines.push('# Copilot: GitHub Copilot API proxy (via copilot-api)'); lines.push('# Copilot: Deprecated GitHub Copilot compatibility bridge (via copilot-api)');
lines.push('# Uses your existing GitHub Copilot subscription with Claude Code.'); lines.push(
'# Existing local setups remain available, but prefer Codex or another active provider.'
);
lines.push('# GitHub usage-based Copilot billing begins June 1, 2026.');
lines.push('#'); lines.push('#');
lines.push('# !! DISCLAIMER - USE AT YOUR OWN RISK !!'); lines.push('# !! DISCLAIMER - USE AT YOUR OWN RISK !!');
lines.push('# This uses an UNOFFICIAL reverse-engineered API.'); lines.push('# This uses an UNOFFICIAL reverse-engineered API.');
+2 -2
View File
@@ -2,7 +2,7 @@
* Copilot and Cursor IDE integration configuration types and defaults. * Copilot and Cursor IDE integration configuration types and defaults.
* *
* Covers: * Covers:
* - CopilotConfig: GitHub Copilot proxy integration (strictly opt-in) * - CopilotConfig: deprecated GitHub Copilot proxy compatibility (strictly opt-in)
* - CursorConfig: Cursor IDE proxy daemon * - CursorConfig: Cursor IDE proxy daemon
*/ */
@@ -13,7 +13,7 @@ export type CopilotAccountType = 'individual' | 'business' | 'enterprise';
/** /**
* Copilot API configuration. * Copilot API configuration.
* Enables GitHub Copilot subscription usage via copilot-api proxy. * Enables deprecated GitHub Copilot compatibility via copilot-api proxy.
* Strictly opt-in - disabled by default. * Strictly opt-in - disabled by default.
* *
* !! DISCLAIMER - USE AT YOUR OWN RISK !! * !! DISCLAIMER - USE AT YOUR OWN RISK !!
+1 -1
View File
@@ -68,7 +68,7 @@ export interface UnifiedConfig {
global_env?: GlobalEnvConfig; global_env?: GlobalEnvConfig;
/** Cross-profile continuity inheritance mapping */ /** Cross-profile continuity inheritance mapping */
continuity?: ContinuityConfig; continuity?: ContinuityConfig;
/** Copilot API configuration (GitHub Copilot proxy) */ /** Copilot API configuration (deprecated GitHub Copilot compatibility bridge) */
copilot?: CopilotConfig; copilot?: CopilotConfig;
/** Cursor IDE configuration (Cursor proxy daemon) */ /** Cursor IDE configuration (Cursor proxy daemon) */
cursor?: CursorConfig; cursor?: CursorConfig;
+5 -1
View File
@@ -102,7 +102,6 @@ function buildNavGroups(t: (key: string) => string): SidebarGroupDef[] {
{ path: '/cliproxy/control-panel', icon: Gauge, label: t('nav.controlPanel') }, { path: '/cliproxy/control-panel', icon: Gauge, label: t('nav.controlPanel') },
], ],
}, },
{ path: '/copilot', icon: Github, label: t('nav.githubCopilot') },
{ {
path: '/accounts', path: '/accounts',
icon: Users, icon: Users,
@@ -126,6 +125,11 @@ function buildNavGroups(t: (key: string) => string): SidebarGroupDef[] {
{ {
title: t('nav.deprecated'), title: t('nav.deprecated'),
items: [ items: [
{
path: '/copilot',
icon: Github,
label: `${t('nav.githubCopilot')} (${t('nav.deprecated')})`,
},
{ {
path: '/legacy/cursor', path: '/legacy/cursor',
iconSrc: '/assets/sidebar/cursor.svg', iconSrc: '/assets/sidebar/cursor.svg',
@@ -25,7 +25,6 @@ const WIZARD_PROVIDER_ORDER: CLIProxyProvider[] = [
'iflow', 'iflow',
'kilo', 'kilo',
'kiro', 'kiro',
'ghcp',
]; ];
export const PROVIDERS: ProviderOption[] = WIZARD_PROVIDER_ORDER.map((id) => ({ export const PROVIDERS: ProviderOption[] = WIZARD_PROVIDER_ORDER.map((id) => ({
+24 -4
View File
@@ -1278,7 +1278,12 @@ const resources = {
}, },
copilotPage: { copilotPage: {
title: 'Copilot', title: 'Copilot',
subtitle: 'GitHub Copilot proxy', subtitle: 'Deprecated GitHub Copilot compatibility bridge',
deprecatedBadge: 'Deprecated',
deprecationTitle: 'Deprecated compatibility bridge',
deprecationItem1: 'GitHub usage-based Copilot billing begins June 1, 2026',
deprecationItem2: 'Existing local setups remain available for compatibility',
deprecationItem3: 'Prefer Codex or another active provider for new work',
setup: 'Setup', setup: 'Setup',
auth: 'Auth', auth: 'Auth',
daemon: 'Daemon', daemon: 'Daemon',
@@ -3813,7 +3818,12 @@ const resources = {
}, },
copilotPage: { copilotPage: {
title: 'Copilot', title: 'Copilot',
subtitle: 'GitHub Copilot 代理', subtitle: '已弃用的 GitHub Copilot 兼容桥接',
deprecatedBadge: '已弃用',
deprecationTitle: '已弃用的兼容桥接',
deprecationItem1: 'GitHub Copilot 用量计费将于 2026 年 6 月 1 日开始',
deprecationItem2: '现有本地配置仍可作为兼容路径继续使用',
deprecationItem3: '新的配置请优先使用 Codex 或其他活跃提供商',
setup: '安装', setup: '安装',
auth: '认证', auth: '认证',
daemon: '守护进程', daemon: '守护进程',
@@ -6396,7 +6406,12 @@ const resources = {
}, },
copilotPage: { copilotPage: {
title: 'Copilot', title: 'Copilot',
subtitle: 'Proxy GitHub Copilot', subtitle: 'Cầu nối tương thích GitHub Copilot đã ngừng ưu tiên',
deprecatedBadge: 'Đã ngừng ưu tiên',
deprecationTitle: 'Cầu nối tương thích đã ngừng ưu tiên',
deprecationItem1: 'GitHub Copilot bắt đầu tính phí theo mức dùng từ 2026-06-01',
deprecationItem2: 'Thiết lập cục bộ hiện có vẫn được giữ cho tương thích',
deprecationItem3: 'Thiết lập mới nên dùng Codex hoặc nhà cung cấp còn hoạt động',
setup: 'Cài đặt', setup: 'Cài đặt',
auth: 'Xác thực', auth: 'Xác thực',
daemon: 'Daemon', daemon: 'Daemon',
@@ -9004,7 +9019,12 @@ const resources = {
}, },
copilotPage: { copilotPage: {
title: 'Copilot', title: 'Copilot',
subtitle: 'GitHub Copilot プロキシ', subtitle: '非推奨の GitHub Copilot 互換ブリッジ',
deprecatedBadge: '非推奨',
deprecationTitle: '非推奨の互換ブリッジ',
deprecationItem1: 'GitHub Copilot の従量課金は 2026-06-01 に開始されます',
deprecationItem2: '既存のローカル設定は互換用として引き続き利用できます',
deprecationItem3: '新規設定では Codex または他の有効なプロバイダーを優先してください',
setup: 'セットアップ', setup: 'セットアップ',
auth: '認証', auth: '認証',
daemon: 'デーモン', daemon: 'デーモン',
+18
View File
@@ -125,6 +125,9 @@ export function CopilotPage() {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Github className="w-5 h-5 text-primary" /> <Github className="w-5 h-5 text-primary" />
<h1 className="font-semibold">{t('copilotPage.title')}</h1> <h1 className="font-semibold">{t('copilotPage.title')}</h1>
<span className="rounded border border-amber-300 bg-amber-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-amber-800 dark:border-amber-900/60 dark:bg-amber-950/40 dark:text-amber-200">
{t('copilotPage.deprecatedBadge')}
</span>
</div> </div>
<Button <Button
variant="ghost" variant="ghost"
@@ -145,6 +148,21 @@ export function CopilotPage() {
<LoadingSidebar /> <LoadingSidebar />
) : ( ) : (
<div className="p-3 space-y-4"> <div className="p-3 space-y-4">
{/* Deprecation Banner */}
<div className="rounded-md border border-amber-500/50 bg-amber-500/15 p-3 space-y-1.5">
<div className="flex items-center gap-2">
<AlertTriangle className="h-4 w-4 text-amber-600 dark:text-amber-400 shrink-0" />
<span className="text-xs font-semibold text-amber-800 dark:text-amber-200">
{t('copilotPage.deprecationTitle')}
</span>
</div>
<ul className="text-[11px] text-amber-700 dark:text-amber-300 space-y-0.5 pl-6 list-disc">
<li>{t('copilotPage.deprecationItem1')}</li>
<li>{t('copilotPage.deprecationItem2')}</li>
<li>{t('copilotPage.deprecationItem3')}</li>
</ul>
</div>
{/* Warning Banner - Disclaimer */} {/* Warning Banner - Disclaimer */}
<div className="rounded-md border border-yellow-500/50 bg-yellow-500/15 p-3 space-y-1.5"> <div className="rounded-md border border-yellow-500/50 bg-yellow-500/15 p-3 space-y-1.5">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">