收口桌面网络探测诊断日志

桌面网络可达性探测失败只输出固定标签

桌面壳门禁拒绝输出网络探测详细原因

同步宿主壳方案和共享决策记录
This commit is contained in:
2026-06-21 16:15:02 +08:00
parent 520aa049d3
commit a6f160b03b
4 changed files with 15 additions and 3 deletions
@@ -2666,6 +2666,7 @@ const requiredRustHostSnippets = [
'log_desktop_network_probe_failure',
'desktop network reachability probe failed',
'desktop_network_reachability_reports_missing_probe_target',
'desktop_network_probe_failure_logs_stable_label_only',
'register_desktop_navigation_events',
'desktop_navigation_state_script',
'navigation.canGoBack',
@@ -2794,6 +2795,10 @@ if (
throw new Error('desktop HostBridge replay diagnostics must not log Rust error details');
}
if (desktopShellNetworkSource.includes('desktop network reachability probe failed: {reason}')) {
throw new Error('desktop network probe diagnostics must not log resolver or connection details');
}
assertSameList(
allowedTauriCommands,
['host_bridge_request'],
@@ -64,8 +64,8 @@ fn resolve_desktop_network_reachability(
))
}
fn log_desktop_network_probe_failure(reason: &str) {
eprintln!("desktop network reachability probe failed: {reason}");
fn log_desktop_network_probe_failure(_reason: &str) {
eprintln!("desktop network reachability probe failed");
}
pub(crate) fn resolve_desktop_network_status() -> Value {
@@ -131,4 +131,9 @@ mod tests {
Err("network probe target unavailable".to_string())
);
}
#[test]
fn desktop_network_probe_failure_logs_stable_label_only() {
log_desktop_network_probe_failure("private network detail");
}
}
@@ -2997,7 +2997,7 @@
## 2026-06-20 桌面壳网络探测失败不可静默
- 背景:Tauri 桌面壳 `network.status` 会把主站 TCP 可达性作为当前宿主网络状态;如果探测目标解析、DNS 或 TCP 连接失败后只折叠为 offline,H5 可以收到离线状态,但开发侧无法判断是配置、解析还是连接问题。
- 决策:`resolve_desktop_network_status()` 必须通过 `resolve_desktop_network_reachability(...)` 得到可达性或失败原因;失败时记录 `desktop network reachability probe failed: ...`,再继续按离线 payload 返回。配置检查拒绝网络探测重新用 `.to_socket_addrs().ok()``connect_timeout(...).map(...).unwrap_or(false)` 静默吞错。
- 决策:`resolve_desktop_network_status()` 必须通过 `resolve_desktop_network_reachability(...)` 得到可达性或失败原因;失败时记录 `desktop network reachability probe failed` 固定标签,再继续按离线 payload 返回,不把解析目标、DNS 或 TCP 错误详情写入可分发桌面壳 stderr。配置检查拒绝网络探测重新用 `.to_socket_addrs().ok()``connect_timeout(...).map(...).unwrap_or(false)` 静默吞错,也拒绝重新拼接 `: {reason}`
- 影响范围:`apps/desktop-shell/src-tauri/src/shell/network.rs``apps/desktop-shell/scripts/check-config.mjs`
- 验证方式:`cargo test --manifest-path apps/desktop-shell/src-tauri/Cargo.toml shell::network``npm run desktop-shell:typecheck``npm run check:native-shells``npm run check:encoding``git diff --check`
@@ -361,6 +361,8 @@ GameBridge 禁止:
2026-06-20 追加:桌面壳网络状态查询系统异常必须可观测。Tauri 桌面壳后台解析网络状态任务失败时必须记录 `desktop network failed for status.resolve` 日志;HostBridge 回包仍只暴露稳定 `network status unavailable` 语义,不透传 resolver、线程或系统错误细节。2026-06-21 调整:该日志只记录固定标签,不把后台任务 join 错误或 resolver 异常写入 stderr。
2026-06-21 追加:桌面壳主站可达性探测失败诊断只允许记录 `desktop network reachability probe failed` 固定标签,不把探测 host / port、DNS 解析错误或 TCP 连接错误写入可分发桌面壳 stderr;`network.status` 回包继续只表达在线 / 离线稳定状态。
2026-06-20 追加:桌面壳分享缓存内部异常必须可观测。Tauri 桌面壳读写 `share.setTarget` 缓存失败时必须记录 `desktop share failed for ...` 日志;HostBridge 回包仍只暴露稳定 `share unavailable` 语义,不透传锁状态、内部缓存状态或 Rust 同步原语细节。2026-06-21 调整:该日志只记录 `desktop share failed for target.lock` / `desktop share failed for target.store` 固定标签,不把锁异常说明写入 stderr。
2026-06-18 追加:H5 账号状态刷新开始消费 `app.reloadWebView`。用户登录成功、退出登录、其它身份边界变化或登录状态异常页点击重新尝试时,`AuthGate` 会优先请求 Expo 壳刷新当前 WebView;宿主未声明或刷新失败时再回退浏览器刷新,避免在移动壳内绕过受控容器刷新入口。