feat(web): 记住密码/自动登录与版本更新放开到网页形态

- 登录页与首页移除 isDesktopRuntime 门控,网页浏览器同样显示记住密码/自动登录与更新版本入口
- 记住密码由 base64 明文改为 XOR+位移可逆加密存储(v1. 前缀),兼容解密历史值
- 网页形态进入登录页即回填凭据并尝试自动登录(登出/切号导航仍豁免)
- 版本更新在无桌面桥时降级为 OSS 直链下载安装包,桌面端维持自动安装
This commit is contained in:
2026-09-09 00:13:13 +08:00
parent 45fdd8a294
commit ffd8c718dd
3 changed files with 60 additions and 46 deletions
@@ -109,17 +109,27 @@ export function useVersionUpdate() {
async function doUpdate() {
if (updating.value || !fileUrl.value) return
if (!window.confirm('有更新,是否现在更新?\n更新将下载安装包并重启程序。')) return
const bridge = getPywebviewApi()
const doUpdateApp = bridge?.do_update_app
const desktopUpdate = Boolean(doUpdateApp)
const tip = desktopUpdate
? '有更新,是否现在更新?\n更新将下载安装包并重启程序。'
: '发现新版本,是否下载最新安装包?'
if (!window.confirm(tip)) return
updating.value = true
if (!desktopUpdate) {
// 网页/无桌面桥形态:OSS 公开直链直接下载安装包(区别于桌面端自动下载安装)
hint.value = '开始下载安装包,若浏览器未响应请再次点击...'
window.location.href = fileUrl.value
updating.value = false
return
}
hint.value = '正在下载并准备更新,程序将自动退出...'
try {
const bridge = getPywebviewApi()
const result = bridge?.do_update_app
? await bridge.do_update_app(fileUrl.value)
: undefined
const result = await doUpdateApp!(fileUrl.value)
hint.value = result?.success
? '更新已启动,程序即将退出...'
: (result?.error || '当前环境不支持自动更新')
: (result?.error || '更新启动失败,请重试')
} catch {
hint.value = '请求更新失败,请重试'
} finally {