Magpie v0.4.5
[0.4.5] - 2026-05-31
主题:玻璃主题拖动卡顿真正解决 + 跨平台兜底 + 体验细节修正。
0.4.4 通过原生
data-tauri-drag-region修复了扁平主题(ink/paper)的拖动卡顿,
但玻璃主题(mist/dusk)实测仍卡——根因不在拖动层而在玻璃成像方式:
0.4.2 起 mist/dusk 走 DWMapply_acrylic,DWM 每帧实时高斯模糊「窗口背后的桌面 +
其他窗口」,高速拖动时 GPU 与桌面合成器持续高负载。本次改用apply_mica
(DWM 仅在窗口显示时采样桌面壁纸一次,拖动期间零重采样),与 0.4.1 mica 主题
同等的流畅手感由此恢复。
修复
- 玻璃主题(mist/dusk)拖动卡顿真正解决:将 Win11 玻璃主题的 DWM vibrancy 从
apply_acrylic切换为apply_mica。技术差异——- acrylic:DWM 实时高斯模糊「当前窗口背后的桌面 + 其他窗口」,每帧重采样,开销
随显卡驱动浮动,是 0.4.2~0.4.4 玻璃主题拖动卡顿的根因。 - mica:DWM 仅在窗口显示时采样桌面壁纸一次,窗口拖动期间不重新采样。代价是
mica 不接受 tint,颜色调由前端 CSS 半透明表面层(mist 雾绿 / dusk 黄铜紫)提供。 set_theme与window_manager重新应用 vibrancy 的两条路径都走 mica。
- acrylic:DWM 实时高斯模糊「当前窗口背后的桌面 + 其他窗口」,每帧重采样,开销
- Win10 玻璃主题降级兜底:mica 仅 Windows 11(build ≥ 22000)支持。Win10 上玻璃
主题(mist/dusk)改为不透明实色背景;前端通过get_vibrancy_capability查询并
挂no-vibrancyclass,触发mist.css/dusk.css中的实色 fallback 规则。
能力查询走模块级缓存 + localStorage 兜底,首帧前同步可得,避免 Win10 用户
切换玻璃主题时出现「透明窗口直透桌面」的闪烁。 is_dark在 set_theme 与 re-apply 路径口径一致:原window_manager重新
应用 vibrancy 时仅读系统主题,与set_theme优先读app.color_mode不一致。
用户在设置里强制覆盖系统色模式(如 light + 系统暗色)时,隐藏-再显示窗口会
出现 mica 浅暗变体闪烁;现统一为set_theme的优先级。- 表情面板 fallback 同步:
EmojiPanel.tsx的FALLBACK_GROUPS(fetch /emoji-data.json失败时的兜底)此前仍含 0.4.4 已替换的 ZWJ 组合 emoji 与
「键盘」中文字面量,与正式 JSON 不一致。现完全同步,并加注释要求未来同步修改。
改进
is_win11 = build >= 22000阈值收敛:抽supports_mica()函数到ui_cmd.rs
作为唯一权威定义点,set_theme/window_managerre-apply /get_vibrancy_capability
三处共用,避免阈值散落与未来漏改。- 代码精简:删除
glass_tint死函数(acrylic 路径已弃用,mica 不接受 tint,无
消费者);window_managerre-apply 的lock().unwrap()改为if let Ok兜底,
与全仓持锁风格一致,消除锁中毒时二次 panic 风险。 backdrop-filter上限统一:file-transfer.css的.wt-fullscreen-editor
(30px → 16px)与.wt-context-menu(20px → 16px)模糊半径下调到 ≤ 16px,与
玻璃主题表面约束保持一致,对低端 GPU 更友好。- CHANGELOG 链接补全:底部 reference link 区段补齐 v0.4.1~v0.4.4,确保历史
版本的标题链接均可点击跳转 GitHub Release。
兼容性
- Windows 11(build ≥ 22000):玻璃主题(mist/dusk)使用 mica,拖动跟手零延迟。
- Windows 10:玻璃主题降级为不透明实色背景(CSS fallback token 已就绪),
仍可读、仍流畅;如需 acrylic 的实时桌面透出效果需停留在 Win11 平台。该取舍
换来的是 0.4.1 同等流畅的拖动手感。 - 无数据变更,从 v0.4.4 升级不影响任何用户数据与设置。
已知限制
- mica 不接受 tint,mist 的雾绿与 dusk 的黄铜紫色调完全由前端 CSS 半透明表面层
提供。在某些壁纸下两个主题的 DWM 底层可能视觉接近,但 CSS 表面色仍可清晰区分。