Releases
v0.5.2
Compare
Sorry, something went wrong.
No results found
修复
内嵌 Web GUI 白屏 + 所有窗口无法关闭(需任务管理器强杀)——主线程死锁 :
根因:create_web_gui_window 命令在 async 运行时线程执行同步 fn,内部
run_on_main_thread(建窗) + std::sync::mpsc::recv() 阻塞等待主线程建窗结果 。
当主线程正被 WebView2 的同步窗口消息占用(内嵌 dsh UI 页面加载/交互时常见,
Windows 窗口消息模型下主线程处理 WebView 消息期间不会让出给 run_on_main_thread
排队的闭包)→ 主线程与等待它的命令线程交叉死锁 → 内嵌窗口停在白屏、主窗口
及所有窗口事件循环卡死、无法关闭。
修复:命令改为 async fn,把建窗调度到主线程后立即返回(fire-and-forget),
不跨线程阻塞等待 ;窗口创建仍在主线程完成(Tauri 要求),创建失败由内部日志
记录。前端不再依赖返回的窗口 label(图标在创建时已同步设置)。
移除 create_web_gui_window 返回 label 的契约(前端 lib/tauri.ts createWebGuiWindow
签名不变,仅不再消费返回值)。
内嵌窗口偶发创建失败("the underlying handle is not available") :apply_window_icon
在 build() 后立即取 hwnd 的竞态失败不再阻断窗口创建 (恢复 0.4.14 语义:失败仅记警告,
窗口照常打开)。此前 ? 传播会把已建成的窗口整体判失败 → 不开窗。
日志全域化(不允许丢失任何日志) :
新增全局 panic hook :任何线程 panic 落盘 logs/crash.log + 经 Logger 记录
(release 无控制台时 panic 此前完全不可见 → 静默崩溃无痕)。
关键路径 eprintln!(主窗口图标失败、外链打开失败、Tauri 启动失败)改经 Logger
落盘,release 下不再丢失。
dsh stdout/stderr 已实时落盘 dsh-web-stdout/stderr.log 并逐行进日志流;崩溃
尾部不完整行有 flush 兜底,保证 dsh 侧日志不丢。
You can’t perform that action at this time.