mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-05-07 22:28:26 +08:00
* fix(copilot): 修复 GitHub Copilot 400 认证错误 问题:使用 GitHub Copilot provider 时报错 400 bad request 根因:与 copilot-api 项目对比发现多处差异 修复内容: - 更新版本号 0.26.7 到 0.38.2 - 更新 API 版本 2025-04-01 到 2025-10-01 - 添加缺失的关键 headers - 修正 openai-intent 值 - 添加动态 API endpoint 支持 - 同步更新 stream_check.rs headers Closes #1777 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: flush stream after write_all in hyper_client proxy Add explicit flush() calls after write_all() for TLS stream, plain TCP stream, and CONNECT tunnel requests to ensure buffered data is sent immediately, preventing connection hangs in Copilot auth header flow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复登录时的剪切板在mac与linux端可能没复制验证码 * fix: flush stream after write_all in hyper_client proxy Add explicit flush() calls after write_all() for TLS stream, plain TCP stream, and CONNECT tunnel requests to ensure buffered data is sent immediately, preventing connection hangs in Copilot auth header flow. * 修复登录时的剪切板在mac与linux端可能没复制验证码 * 1、修复不同类型的个人商业等不同类型的copilot账号问题 2、将验证码复制改为异步操作 * fix: address PR review comments for Copilot auth │ │ │ │ - Fix clipboard blocking by using spawn_blocking for arboard ops │ │ - Implement dynamic endpoint routing for enterprise Copilot users │ │ - Add api_endpoints cache cleanup in remove_account() and clear_auth() │ │ - Change API endpoint log level from info to debug │ │ - Fix clear_auth() to continue cleanup even if file deletion fails │ │ - Add 9 unit tests for Copilot detection and api_endpoints cachin * style: fix cargo fmt formatting * Fix Copilot dynamic endpoint handling * fix: restore clear_auth() memory-first cleanup order and fix cache leaks - Restore clear_auth() to clean memory state before deleting the storage file. The previous order (file deletion first) caused a regression where users could get stuck in a "cannot log out" state if file removal failed. - Add missing copilot_models.clear() in clear_auth() — this cache was cleaned in remove_account() but never in the full clear path. - Add endpoint_locks cleanup in both remove_account() and clear_auth() to prevent minor in-process memory leaks. - Update test to assert the correct behavior: memory should be cleaned even when file deletion fails. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: 周梦泽 <mengze.zhou@dafeng-tech.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Jason <farion1231@gmail.com>
107 lines
2.9 KiB
TOML
107 lines
2.9 KiB
TOML
[package]
|
||
name = "cc-switch"
|
||
version = "3.12.3"
|
||
description = "All-in-One Assistant for Claude Code, Codex & Gemini CLI"
|
||
authors = ["Jason Young"]
|
||
license = "MIT"
|
||
repository = "https://github.com/farion1231/cc-switch"
|
||
edition = "2021"
|
||
rust-version = "1.85.0"
|
||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||
|
||
[lib]
|
||
name = "cc_switch_lib"
|
||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||
doctest = false
|
||
|
||
[features]
|
||
default = []
|
||
test-hooks = []
|
||
|
||
[build-dependencies]
|
||
tauri-build = { version = "2.4.0", features = [] }
|
||
|
||
[dependencies]
|
||
serde_json = { version = "1.0", features = ["preserve_order"] }
|
||
serde = { version = "1.0", features = ["derive"] }
|
||
log = "0.4"
|
||
chrono = { version = "0.4", features = ["serde"] }
|
||
tauri = { version = "2.8.2", features = ["tray-icon", "protocol-asset", "image-png"] }
|
||
tauri-plugin-log = "2"
|
||
tauri-plugin-opener = "2"
|
||
tauri-plugin-process = "2"
|
||
tauri-plugin-updater = "2"
|
||
tauri-plugin-dialog = "2"
|
||
tauri-plugin-store = "2"
|
||
tauri-plugin-deep-link = "2"
|
||
dirs = "5.0"
|
||
toml = "0.8"
|
||
toml_edit = "0.22"
|
||
reqwest = { version = "0.12", features = ["rustls-tls", "json", "stream", "socks"] }
|
||
arboard = "3.6"
|
||
flate2 = "1"
|
||
brotli = "7"
|
||
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "sync"] }
|
||
futures = "0.3"
|
||
async-stream = "0.3"
|
||
bytes = "1.5"
|
||
axum = "0.7"
|
||
tower = "0.4"
|
||
tower-http = { version = "0.5", features = ["cors"] }
|
||
hyper = { version = "1.0", features = ["full"] }
|
||
hyper-util = { version = "0.1", features = ["tokio", "http1", "client-legacy"] }
|
||
hyper-rustls = { version = "0.27", features = ["http1", "tls12", "ring", "webpki-tokio"] }
|
||
http = "1"
|
||
http-body = "1"
|
||
http-body-util = "0.1"
|
||
httparse = "1"
|
||
tokio-rustls = "0.26"
|
||
rustls = "0.23"
|
||
webpki-roots = "0.26"
|
||
rustls-native-certs = "0.8"
|
||
regex = "1.10"
|
||
rquickjs = { version = "0.8", features = ["array-buffer", "classes"] }
|
||
thiserror = "2.0"
|
||
anyhow = "1.0"
|
||
zip = "2.2"
|
||
serde_yaml = "0.9"
|
||
tempfile = "3"
|
||
url = "2.5"
|
||
auto-launch = "0.5"
|
||
once_cell = "1.21.3"
|
||
base64 = "0.22"
|
||
rusqlite = { version = "0.31", features = ["bundled", "backup", "hooks"] }
|
||
indexmap = { version = "2", features = ["serde"] }
|
||
rust_decimal = "1.33"
|
||
uuid = { version = "1.11", features = ["v4"] }
|
||
sha2 = "0.10"
|
||
json5 = "0.4"
|
||
json-five = "0.3.1"
|
||
|
||
[target.'cfg(any(target_os = "macos", target_os = "windows", target_os = "linux"))'.dependencies]
|
||
tauri-plugin-single-instance = "2"
|
||
|
||
[target.'cfg(target_os = "linux")'.dependencies]
|
||
webkit2gtk = { version = "2.0.1", features = ["v2_16"] }
|
||
|
||
[target.'cfg(target_os = "windows")'.dependencies]
|
||
winreg = "0.52"
|
||
|
||
[target.'cfg(target_os = "macos")'.dependencies]
|
||
objc2 = "0.5"
|
||
objc2-app-kit = { version = "0.2", features = ["NSColor"] }
|
||
|
||
# Optimize release binary size to help reduce AppImage footprint
|
||
[profile.release]
|
||
codegen-units = 1
|
||
lto = "thin"
|
||
opt-level = "s"
|
||
# 使用 unwind 以便 panic hook 能捕获 backtrace(abort 会直接终止无法捕获)
|
||
panic = "unwind"
|
||
strip = "symbols"
|
||
|
||
[dev-dependencies]
|
||
serial_test = "3"
|
||
tempfile = "3"
|