蜂鸟Pro v2.0.1 - 基础框架版本 (待完善)
## 当前状态 - 插件界面已完成重命名 (cursorpro → hummingbird) - 双账号池 UI 已实现 (Auto/Pro 卡片) - 后端已切换到 MySQL 数据库 - 添加了 Cursor 官方用量 API 文档 ## 已知问题 (待修复) 1. 激活时检查账号导致无账号时激活失败 2. 未启用无感换号时不应获取账号 3. 账号用量模块不显示 (seamless 未启用时应隐藏) 4. 积分显示为 0 (后端未正确返回) 5. Auto/Pro 双密钥逻辑混乱,状态不同步 6. 账号添加后无自动分析功能 ## 下一版本计划 - 重构数据模型,优化账号状态管理 - 实现 Cursor API 自动分析账号 - 修复激活流程,不依赖账号 - 启用无感时才分配账号 - 完善账号用量实时显示 ## 文件说明 - docs/系统设计文档.md - 完整架构设计 - cursor 官方用量接口.md - Cursor API 文档 - 参考计费/ - Vibeviewer 开源项目参考 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import SwiftUI
|
||||
import VibeviewerAPI
|
||||
|
||||
private struct CursorServiceKey: EnvironmentKey {
|
||||
static let defaultValue: CursorService = DefaultCursorService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var cursorService: CursorService {
|
||||
get { self[CursorServiceKey.self] }
|
||||
set { self[CursorServiceKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import SwiftUI
|
||||
import VibeviewerStorage
|
||||
|
||||
private struct CursorStorageKey: EnvironmentKey {
|
||||
static let defaultValue: any CursorStorageService = DefaultCursorStorageService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var cursorStorage: any CursorStorageService {
|
||||
get { self[CursorStorageKey.self] }
|
||||
set { self[CursorStorageKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import SwiftUI
|
||||
|
||||
private struct DashboardRefreshServiceKey: EnvironmentKey {
|
||||
static let defaultValue: any DashboardRefreshService = NoopDashboardRefreshService()
|
||||
}
|
||||
|
||||
private struct ScreenPowerStateServiceKey: EnvironmentKey {
|
||||
static let defaultValue: any ScreenPowerStateService = NoopScreenPowerStateService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var dashboardRefreshService: any DashboardRefreshService {
|
||||
get { self[DashboardRefreshServiceKey.self] }
|
||||
set { self[DashboardRefreshServiceKey.self] = newValue }
|
||||
}
|
||||
|
||||
var screenPowerStateService: any ScreenPowerStateService {
|
||||
get { self[ScreenPowerStateServiceKey.self] }
|
||||
set { self[ScreenPowerStateServiceKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import SwiftUI
|
||||
import VibeviewerCore
|
||||
|
||||
private struct LaunchAtLoginServiceKey: EnvironmentKey {
|
||||
static let defaultValue: any LaunchAtLoginService = DefaultLaunchAtLoginService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var launchAtLoginService: any LaunchAtLoginService {
|
||||
get { self[LaunchAtLoginServiceKey.self] }
|
||||
set { self[LaunchAtLoginServiceKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import SwiftUI
|
||||
|
||||
private struct LoginServiceKey: EnvironmentKey {
|
||||
static let defaultValue: any LoginService = NoopLoginService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var loginService: any LoginService {
|
||||
get { self[LoginServiceKey.self] }
|
||||
set { self[LoginServiceKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import SwiftUI
|
||||
|
||||
private struct UpdateServiceKey: EnvironmentKey {
|
||||
static let defaultValue: any UpdateService = NoopUpdateService()
|
||||
}
|
||||
|
||||
public extension EnvironmentValues {
|
||||
var updateService: any UpdateService {
|
||||
get { self[UpdateServiceKey.self] }
|
||||
set { self[UpdateServiceKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user