真机现象:点「检查更新」后,启动/停止/重启等**所有**按钮一起转圈, 持续两分半,看起来像「点什么都卡死」。 ## 根因(两个缺陷叠加) 1. **`busy` 是全页共享的**:`LocalServiceView` 里每个按钮都是 `:loading="busy"`。 2. **`check_update` 是网络操作且超时很长**:出网 120s / RPC 150s。 而这两个值**不能缩短** —— `sidecar.rs` 的注释与编译期不变式记录了真机实测: 跟随两次重定向的耗时出现过 2.0 / 10.0 / 39.7 / 68.6 / >109s, 回落到 60s 会让 68.6s 那次变成「假失败」。 故超时保持不动,**只修隔离**。 于是任何一次「检查更新」都会把全页按钮锁死 —— 更新检查本是 **只读、可等待、与启停无关**的操作,不该拖累其他按钮。 ## 修法 - 新增 `updateBusy`,只服务「检查更新 / 更新被控端」 - 全局 `busy` 只留给毫秒级的启停与设置 - `applyUpdate` 同步迁移(下载 RPC 超时 330s,占用全局 busy 更糟) - 视图里检查更新按钮与更新按钮改绑 `updateBusy` ## 刻意不改的 - `UPDATE_CHECK_TIMEOUT_MS` 保持 120s、RPC 150s —— 见上述实测,缩短会退回「假失败」 - `busy` 仍保留全局语义(启停确实应互斥) 验证:`vue-tsc --noEmit` 通过;`pnpm --filter nodeagent-console build` 通过。
Tauri + Vue + TypeScript
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.