Commit Graph

13 Commits

Author SHA1 Message Date
WaterRain
6ac4d06e9f
i18n 修复:消除英文环境下 5 处中文泄漏(最终审查 P1)
最终独立审查发现英文环境用户可见中文,全部修复:

- 激活成功弹窗:三个 parse 函数(OCGO/Codex/Ollama)改为返回结构化 TriggerSummary,
  中文摘要拼接移出 Repository;UI 层 buildTriggerSummaryText() 用资源组装本地化文本
- Codex 窗口标签:formatCodexPrimaryLabel / normalizeWindowLabel 增加「每周/每月」字面量分支,
  Dashboard 与 Widget 英文环境下正确显示 Weekly/Monthly
- Dashboard footer:DashboardCardUi.lastFetchError 改 UiText?,errorToUiText() 按类型映射资源
- 凭据编辑页:ParseError→error_parse_failed(RepositoryError.ParseError 新增公开 detail),
  「未知」「JSON格式错误」中文 fallback 改资源
- 服务详情页:triggerUsage else 分支复用 errorMessage() 全类型映射;
  TriggerError「token刷新失败」前缀资源化;「无响应体」不再展示
- 新增 TriggerSummary 数据类与 12 组中英资源(trigger_*/error_token_refresh_failed/等)
- 测试:CodexRepositoryTest 6 用例改为结构化断言,FormatUtilsTest 更新 monthly 映射;
  113 个用例全绿,lint 0 Error,资源 426/426 对齐
2026-08-01 08:19:51 +00:00
WaterRain
2732b138ae
fix: 凭据变更后刷新状态并防止旧请求回写 (#2)
## 修复内容

### Issue #2: 凭据保存/删除后返回设置页配置状态不刷新

**核心修复:**
- Dashboard 并发竞态:reloadLocalState() 改为只更新 credentialState,不再通过 loadFromCache() 重建卡片,避免覆盖 refresh() 写入的最新余额/错误状态
- ServiceDetail 凭据刷新:reloadCredentialState() 增加凭据指纹检测(credentialFingerprint),区分凭据替换/新增/删除三种场景,正确清除旧缓存
- refresh() 加 generation 标记,防止旧请求响应覆盖新数据
- 宽屏布局刷新:Expanded 模式下 ServiceDetail 面板切换时正确触发凭据状态刷新

**安全修复:**
- 移除公开提交的 debug.keystore,恢复 AGP 默认签名行为
- 凭据指纹架构:SHA-256 不可逆指纹 + cacheIdentityFingerprint + sameRefreshLineage,支持 Codex token 轮换不误清缓存
- RefreshWriteSession + CredentialSnapshot 原子提交架构

**测试:**
- 新增 16+ 个单元测试覆盖凭据指纹、分类逻辑、四个场景
- 总计 78+ 个用例全部通过

Refs #2
2026-07-27 11:40:47 +08:00
WaterRain
29877c00ce
feat: OCGO & Ollama 一键激活用量 + 设置页 API Key 输入
- OpenCodeGoRepository: 新增 fetchModels() + triggerUsage(),调 opencode.ai/zen/v1/chat/completions
- OllamaRepository: 新增 fetchModels() + triggerUsage(),调 ollama.com/v1/chat/completions
- SessionCredential: 新增 apiKey 字段,用于一键激活用量
- RefreshBalanceUseCase: 新增 fetchOpenCodeGoModels/triggerOpenCodeGoUsage/fetchOllamaModels/triggerOllamaUsage
- ServiceDetailViewModel: 通用化 triggerUsage(),支持 Codex/OCGO/Ollama 三服务,各服务独立 SharedPreferences 持久化
- ServiceDetailScreen: 三服务均显示模型选择器 + 激活按钮 + 响应弹窗
- CredentialEditScreen/ViewModel: OCGO & Ollama 凭据表单新增 API Key 输入区域
- AGENTS.md & README.md: 同步新功能描述
2026-07-20 09:46:39 +00:00
WaterRain
b4c3402d22
feat: Codex 一键激活用量功能 — 模型列表从 models.dev 动态获取,SSE 响应解析弹窗展示
Some checks failed
Release / build (push) Has been cancelled
2026-07-17 01:50:50 +00:00
WaterRain
75a5c8f81e
fix: 对抗审查修复5项问题
1. BalanceCache.put() 并发写丢失 — read-modify-write 搬进 dataStore.edit{} 互斥锁
2. Widget VectorDrawable → PNG — 生成 ic_opencode_go_logo_widget.png 和 ic_codex_logo_widget.png
3. SimpleDateFormat 线程安全 — 共享实例改为每次调用创建局部实例
4. 增量同步按 workspace 过滤 — 新增 getIdsByWorkspace() 避免跨 workspace ID 碰撞
5. Codex amount 语义统一为 usedPct — balance_cache 版本 v2→v3 旧缓存失效

Doc: AGENTS.md/README.md 同步更新(›→>、RemoteViews PNG文件名、增量同步描述)
2026-07-07 05:40:16 +00:00
WaterRain
220a74492a
feat: add retry with exponential backoff to all repositories
- New: RetryHelper.kt — retryOnTransientError(maxRetries=2, baseDelay=1s)
- Wraps in RefreshBalanceUseCase — single dispatch point for all 5 services
- Retries on Network and 5xx ServerError
- 401/403 (InvalidCredential), 429 (RateLimited), ParseError — no retry
2026-07-06 23:57:58 +00:00
WaterRain
fb2e60d4a0
feat: add Ollama Pro Cloud usage service
- New ServiceType.OLLAMA enum + ServiceConfig
- OllamaRepository: OkHttp + Cookie auth, scrape ollama.com/settings HTML
  parse plan/session/weekly usage via regex (aria-label + data-time + data-model)
- SessionCredential: add ollamaCookie field
- NetworkModule: @Provides OllamaRepository
- RefreshBalanceUseCase: dispatch OLLAMA
- CredentialEditViewModel: load/save/test Ollama cookie
- CredentialEditScreen: OllamaCookieForm composable
- DashboardScreen: OllamaMainBalance + OllamaUsageWindows cards
- ServiceIcon: Ollama emoji placeholder
- Widget: shortName/logo/populateServiceRows + DISPLAY_SERVICES}
2026-07-06 21:59:18 +00:00
WaterRain
4cbf593983
feat: add Codex/ChatGPT Plus service with auth.json import and auto token refresh
- New ServiceType.CODEX with CodexCredential (access_token + refresh_token + expiresAt)
- CodexRepository: query chatgpt.com/backend-api/wham/usage, auto refresh token 60min before expiry
- Import full auth.json in settings, supports automatic OAuth token refresh
- ChatGPT favicon SVG icon (ic_codex_logo.xml)
- Dashboard card shows 5h/Weekly usage windows with reset times
- Update AGENTS.md and README.md with Codex service info
2026-07-01 04:59:52 +00:00
WaterRain
cc7aecc331
feat: CCGO 用量功能 + 首页布局修复 + 文档同步
- 新增 CommandCode Go (CCGO) 用量抓取与展示
- CCGO 输入 token 语义修正(inputTokens = tokensIn - cacheRead)
- 清除数据按钮迁移至 CCGO 详情页顶栏(带倒计时二次确认)
- 移除三个 ViewModel 的 init 自动加载,改为 LaunchedEffect 显式触发
- 修复 hiltViewModel key 碰撞导致 CCGO 详情页无限加载
- 首页 LazyColumn 改为 Column + verticalScroll + PullToRefreshBox
- OCGO/CCGO 页面 autoLoad 参数隔离重复 load
- AGENTS.md / README.md 文档同步更新
2026-06-26 20:37:07 +00:00
WaterRain
bb51efde09
feat: add CommandCode Go usage history API (cursor-based pagination)
- CommandCodeUsageRepository: GET /internal/usage?limit=100&cursor=<base64>
  parses JSON response, converts creditsTotal → cost (COST_DENOM)
- SyncCommandCodeUsageUseCase: fullSync + incrementalSync
  reuses existing UsageCache with workspaceId="commandcode"
- NetworkModule: DI for CommandCodeUsageRepository
- PAGE_SIZE=100 for fewer page requests
2026-06-26 08:18:10 +00:00
WaterRain
0f26269b7e
feat: add CommandCode Go support (JSON API via API Key)
- New CommandCodeGoRepository: calls api.commandcode.ai/alpha/billing/credits + /alpha/billing/subscriptions
- ServiceType: COMMANDCODE_GO added (reordered: OCGO → CCGO → DEEPSEEK)
- ServiceConfigProvider: REST_API config with $ unit
- NetworkModule: DI for CommandCodeGoRepository
- RefreshBalanceUseCase: COMMANDCODE_GO branch
- CredentialEditViewModel: inject CommandCodeGoRepository, allow testAndSave
- ServiceIcon: ⚡ emoji for CommandCode Go
- DashboardScreen: CCGO card with 3 windows (5h/weekly/monthly) like OCGO
- ServiceDetailScreen: CommandCodeGoUsageCard with 5h→weekly→monthly order
- Fixed resetAt: epoch millis → remaining seconds conversion
2026-06-26 08:04:16 +00:00
WaterRain
5190194230
调整主页布局:压缩用量间距 + DeepSeek挪至最下 2026-06-16 02:46:27 +00:00
WaterRain
3aca009290
🎉 RainyToken — AI 余额查询 APP
- Jetpack Compose + Material 3 仪表盘
- DeepSeek REST API 余额查询
- OpenCode Go WebView 抓取用量
- 3 张 Canvas 图表(消耗/请求/Token)
- 原始记录分页浏览
- DataStore + 内存缓存
- 桌面小组件
2026-06-16 01:46:03 +00:00