1) 未配置的用量卡不再显示
OpenCode/CommandCode 用量卡与 Token 热力图卡此前是无条件加入首页列表的,
即使对应服务未配置凭据也会占位显示。现改为按 cards 里是否包含该服务来判断,
热力图卡跟随 OCGO。
2) 面板管理入口位置:卡片底部右下角,与「刚刚更新」同一行右对齐
(此前放在余额右侧,用户反馈位置不对)
底部 Row:左 footerText(weight(1f, fill=false)) + 中间弹性 Spacer + 右按钮。
3) 网页登录后自动获取凭据
- WebViewLoginScreen 注入 JS 桥(@JavascriptInterface LoginProbeBridge),
页面加载完成后读取 localStorage.auth_token / auth_user / favicon / origin 回传。
- WebViewSessionSaver.saveSub2ApiPanelSession 落库面板凭据,保留已有 email/password/apiKey。
- 安全:每次会话随机 nonce(回传必须匹配)+ origin host 白名单(trustedHosts
来自用户配置的面板基址),防止登录过程中跳转的第三方页面伪造 payload 投毒凭据。
- 自托管实例的 baseUrl 由 ViewModel 自行从凭据仓库读取,避免每个导航调用点漏传。
4) 修复(独立审查发现)
- saveSub2ApiPanelSession 去 runBlocking 改 suspend,在 viewModelScope 中调用,
避免 JS 桥线程同步等待 Keystore 加解密 + DataStore 写盘。
- 删除「用 origin 查 Cookie」的旁路:origin 无 path,CookieManager 查不到会误报
「登录完成了吗」,Cookie 抓取统一交回 onPageFinished 的真实 URL。
- normalizeBaseUrl 改用 okhttp3 HttpUrl 解析,垃圾串不再通过校验后落库。
- 撤销给 DeepSeek 加 loginUrl 的改动:其凭据类型是 ApiKeyCredential,
走 Cookie 路径会写成 SessionCredential 并导致 API Key 静默丢失。
真机验证(V2172A / Android 15):
首页只剩 Sub2API 一张卡;面板管理与「刚刚更新」同一行(均 y1492-1555,按钮右对齐 x783-980);
点按钮正常打开弹窗;网页登录容器正常加载面板首页(证明 baseUrl 兜底生效)。
compileDebugKotlin 与 lintDebug 均通过。
|
||
|---|---|---|
| .. | ||
| src | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||