收口桌面网络探测诊断日志
桌面网络可达性探测失败只输出固定标签 桌面壳门禁拒绝输出网络探测详细原因 同步宿主壳方案和共享决策记录
This commit is contained in:
@@ -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;宿主未声明或刷新失败时再回退浏览器刷新,避免在移动壳内绕过受控容器刷新入口。
|
||||
|
||||
Reference in New Issue
Block a user