背景
Issue #153 给前端加了独立于 Rust 内存态的系统 DNS 真值来源(probe_system_dns IPC),并在 dnsEnabledAtom 与 OS 实际状态分歧时显示不一致横幅。
PR #231 review 指出一个体验缺口(reviewer 明确标注为「观察,不算缺陷」):横幅只在 Settings 页。
问题
stuck_at_loopback(显示 Stopped,但系统 DNS 仍指向 127.0.0.1)意味着用户的网络解析已经坏了 —— 所有域名解析直接失败。而用户此时最可能做的事是:
- 回到浏览器看网页打不开 → 以为是网络坏了
- 去终端 ping / curl → 看到 DNS 解析失败
- 在 mHost 里到处点别的页面(Profiles / AdBlock / Snapshot)
他不太可能想到「哦我应该去 Settings 页看一个横幅」。 横幅做得再好,放在一个用户想不到要去的页面上,等于没有。
目标
给 stuck_at_loopback 提供一个不需要用户主动去 Settings 就能看到的轻量警示入口。
候选方案(未排序,需讨论)
| 方案 |
说明 |
取舍 |
| 托盘图标/tooltip 警示 |
tray_logic::build_tooltip_text 已存在(tray.rs::build_tooltip),加一个「⚠」前缀或副标题 |
托盘常驻可见;但 tooltip 只有悬停才看得到,且 build_tooltip_text 目前只吃一个 Option<&str> profile 名,要改签名 |
| 侧边栏 StatusBar 状态点变红 |
状态条常驻侧栏底部,DNS 那一栏已经订阅了 dnsEnabledAtom |
加一个派发 atom 即可;但 #90 perf 报告点过名「sidebar atom 订阅」,需要评估 |
| 主页面顶部横幅 |
横跨所有路由 |
可见性最高;但会挡住内容、影响各页面布局,review 时容易被挑 |
| 发一条 Tauri notification |
tauri-plugin-notification |
系统级,最不容易被忽略;但需要新依赖 + 新权限 capability,且「不打扰」是产品原则之一(readme.md),要谨慎 |
不在范围内
关联
背景
Issue #153 给前端加了独立于 Rust 内存态的系统 DNS 真值来源(
probe_system_dnsIPC),并在dnsEnabledAtom与 OS 实际状态分歧时显示不一致横幅。PR #231 review 指出一个体验缺口(reviewer 明确标注为「观察,不算缺陷」):横幅只在 Settings 页。
问题
stuck_at_loopback(显示 Stopped,但系统 DNS 仍指向 127.0.0.1)意味着用户的网络解析已经坏了 —— 所有域名解析直接失败。而用户此时最可能做的事是:他不太可能想到「哦我应该去 Settings 页看一个横幅」。 横幅做得再好,放在一个用户想不到要去的页面上,等于没有。
目标
给
stuck_at_loopback提供一个不需要用户主动去 Settings 就能看到的轻量警示入口。候选方案(未排序,需讨论)
tray_logic::build_tooltip_text已存在(tray.rs::build_tooltip),加一个「⚠」前缀或副标题build_tooltip_text目前只吃一个Option<&str>profile 名,要改签名dnsEnabledAtomtauri-plugin-notification不在范围内
probe_system_dns本身,见 [Enhancement] Add OS-probing IPC so UI can independently verify system DNS state #153)stuck_at_loopback已有一键 Restore,在 Settings 页;这里只解决「看不到」)not_pointing方向 —— 那个方向 DNS 还能用,不值得打断用户关联
src/pages/Settings.tsx—— 现有横幅(data-testid="dns-discrepancy-banner")src/stores/profiles/state.ts——dnsDiscrepancyAtom派生源,任何入口都应复用它而不是各自重新判定