面板管理按钮(用户反馈「没有放到最右边」): - 根因:底部 Row 里同时给左侧文案 weight(1f, fill=false) 和中间 Spacer weight(1f), 两个 weight 平分剩余空间,按钮只被推到一半。改为只让文案 weight(1f) 吃掉全部剩余宽度。 - 同时清零 TextButton 的 contentPadding,并去掉无效的 defaultMinSize(0) (Material3 的最小尺寸挂在按钮内层节点,外层 modifier 压不下去,实测为 no-op)。 - 去掉箭头 Icon 的 offset 微调:offset 只改放置不改测量,右移的像素会落在按钮命中区之外造成误触。 独立复审发现并修复: - 【安全】线上真正使用的面板登录弹窗 PanelLoginDialog 轮询 localStorage.auth_token 时 完全没有来源校验——登录容器会跳转到第三方页(OAuth/CDN),它们可伪造 token 覆盖用户凭据。 现要求 token 必须来自配置的面板域名(比较 hostname),并回传 host 一并校验。 - 【阻塞】saveFromCookieManager 仍在主线程 runBlocking 做 Keystore 加解密 + DataStore 写盘, 改 suspend 并在 viewModelScope 中调用。 - 【死代码】移除已无调用点的 balanceTrailing 插槽(余额行入口已改到底部)。 说明:WebViewLoginScreen 那套 JS 桥(LoginProbeBridge/nonce/trustedHosts)经查其路由 Routes.WEBVIEW_LOGIN 没有任何 UI 入口(onStartWebViewLogin 只声明未调用),实际不可达, 故本次把安全校验补到了真正在跑的 PanelLoginDialog 上,避免两套并行实现语义分叉。 验证:compileDebugKotlin 与 lintDebug 通过;真机实测按钮与「刚刚更新」同行(y1492-1555) 且可点击区域右边缘到达卡片内容区右缘,点按正常打开弹窗。 |
||
|---|---|---|
| .. | ||
| src | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||