Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ ByeByeCode 是一个 Rust 编写的 Claude Code 状态栏增强工具,用于
| `fix/issue-9-subscription-usage-display` | Issue #9 修复 | PR #10 | ✅ 已合并 |
| `feature/progress-bar-usage-display` | 进度条功能 | PR #11 | ✅ 已合并 |
| `fix/skip-free-subscription` | 跳过 FREE 套餐 | PR #12 | ✅ 已合并 |
| `feature/simplify-subscription-display` | 精简订阅显示格式 | PR #15 | 🔄 待审核 |

### 分支工作流

Expand Down
18 changes: 13 additions & 5 deletions src/api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ impl Default for ApiConfig {
Self {
enabled: false,
api_key: String::new(),
usage_url: "https://www.88code.org/api/usage".to_string(),
subscription_url: "https://www.88code.org/api/subscription".to_string(),
usage_url: "https://www.88code.ai/api/usage".to_string(),
subscription_url: "https://www.88code.ai/api/subscription".to_string(),
}
}
}
Expand Down Expand Up @@ -257,7 +257,7 @@ fn get_claude_settings_path() -> Option<PathBuf> {
dirs::home_dir().map(|home| home.join(".claude").join("settings.json"))
}

/// Read API key from Claude settings.json if base URL is 88code.org or packyapi.com
/// Read API key from Claude settings.json if base URL is 88code or packyapi
pub fn get_api_key_from_claude_settings() -> Option<String> {
let settings_path = get_claude_settings_path()?;

Expand All @@ -270,9 +270,13 @@ pub fn get_api_key_from_claude_settings() -> Option<String> {

let env = settings.env?;

// Support both 88code.org and packyapi.com
// Support 88code (both .org and .ai), packyapi.com, and rainapp.top (国内线路)
if let Some(base_url) = env.base_url {
if base_url.contains("88code.org") || base_url.contains("packyapi.com") {
if base_url.contains("88code.org")
|| base_url.contains("88code.ai")
|| base_url.contains("packyapi.com")
|| base_url.contains("rainapp.top")
{
return env.auth_token;
}
}
Expand All @@ -295,7 +299,11 @@ pub fn get_usage_url_from_claude_settings() -> Option<String> {

if base_url.contains("packyapi.com") {
Some("https://www.packyapi.com/api/usage/token/".to_string())
} else if base_url.contains("88code.ai") || base_url.contains("rainapp.top") {
// 新域名:88code.ai 和国内线路 rainapp.top
Some("https://www.88code.ai/api/usage".to_string())
} else if base_url.contains("88code.org") {
// 旧域名兼容
Some("https://www.88code.org/api/usage".to_string())
} else {
None
Expand Down
2 changes: 1 addition & 1 deletion src/core/segments/byebyecode_subscription.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ pub fn collect(config: &Config, input: &InputData) -> Option<SegmentData> {
.map(|s| s.to_string())
})
.or_else(crate::api::get_usage_url_from_claude_settings)
.unwrap_or_else(|| "https://www.88code.org/api/usage".to_string());
.unwrap_or_else(|| "https://www.88code.ai/api/usage".to_string());

if usage_url.contains("packyapi.com") {
return None;
Expand Down
4 changes: 2 additions & 2 deletions src/core/segments/byebyecode_usage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ pub fn collect(config: &Config, input: &InputData) -> Option<SegmentData> {
.filter(|s| !s.is_empty())
.map(|s| s.to_string())
.or_else(crate::api::get_usage_url_from_claude_settings)
.unwrap_or_else(|| "https://www.88code.org/api/usage".to_string());
.unwrap_or_else(|| "https://www.88code.ai/api/usage".to_string());

// 根据 usage_url 判断是哪个服务,并设置动态图标
let service_name = if usage_url.contains("packyapi.com") {
Expand Down Expand Up @@ -58,7 +58,7 @@ pub fn collect(config: &Config, input: &InputData) -> Option<SegmentData> {
.get("subscription_url")
.and_then(|v| v.as_str())
.map(|s| s.to_string())
.unwrap_or_else(|| "https://www.88code.org/api/subscription".to_string());
.unwrap_or_else(|| "https://www.88code.ai/api/subscription".to_string());

// 从输入数据获取当前使用的模型
let model_id = &input.model.id;
Expand Down