极简、实用模式的接收隔离¶
历史记录 / Historical record:本文保留当时的计划、研究或验收证据,不代表 0.11 当前能力全集。现行说明见 文档入口;英文入口见 English overview。
用户反馈:切到极简模式后收到好友请求,页面报错。要求极简和实用模式不接收这类请求。完整模式的数据必须保留,恢复模式后继续使用。
已确认的问题¶
TabHost 为保留完整模式的工作现场,只用 display: none 隐藏已经挂载的标签页。卸载顶栏的 FriendInboxMonitor 并不会停掉隐藏通讯录里的好友消息轮询,也不会关闭通过 Portal 挂到页面外部的名片弹窗。组织页面同样存在隐藏后继续同步的问题。
原来的好友邀请、好友消息和扫码/NFC/口令导入状态层只验证账号,没有验证模式。开始请求之后再切换模式,迟到的结果仍可能写入本地数据或者更新隐藏页面。
聊天转述没有包含错误堆栈,因此上述是已确认的隔离缺口,不能据此断言具体的崩溃异常类型。
修复边界¶
- 极简和实用模式不启动好友邀请检查、好友消息拉取或组织自动同步,不显示好友通知和名片弹窗。
- 每次模式变化增加运行代号。异步接收保存开始时的代号,返回后逐层校验;完整 → 极简/实用 → 完整也不会让旧请求重新有效。
- 隐藏通讯录停止轮询;好友邀请状态立即清空并使旧检查失效。清空的是临时收件状态,不是好友、留言或云盘内容。
- 扫码、NFC、粘贴口令的入口和实际写入点都检查模式。切换前打开的系统选择器或 NFC 请求即使晚到,也不能导入暂存箱、名片或组织,不能弹成功提示。
- 回到完整模式重新检查待处理邀请,继续好友留言和组织同步;已有完整模式存档保留。
- 模式切换关闭名片、组织邀请和组织文件预览等临时弹窗,避免返回完整模式时旧 Portal 遮住仍打开的设置。浏览器验收实际抓到并修复了这处遮挡。
- OH、自填 API、微信/飞书连接扫码以及普通校园服务保持可用。已发往云端的请求不能撤回;切换后的结果不继续写入本地或触发后续接收步骤。
验收¶
通过:好友邀请状态 30 项、好友消息状态 25 项、扫码/NFC/组织接收隔离 18 项、i18n 安全边界 15 项、组织协作协议 38 项。覆盖简洁模式冷启动、强制调用接收、账号查询中切模式、清单下载中切模式、接入验证中切模式、快速往返模式、恢复完整模式后接收,以及已有好友数据保留。
浏览器验收 72 项通过,使用两个隔离的测试账号和云盘权限夹具,阻断真实学校网络,在桌面 1280 和手机触摸 390 宽度验证真实邀请/留言按钮、模式选择、隐藏标签页与轮询。推进真实注册的定时器并触发前台事件后,简洁模式的接收请求数保持不变;无 React/页面错误。具体结果保存于 /Volumes/OneTHUBuild/artifacts/friend-mode-isolation。这不等同于真实学校双账号或安卓真机测试。
桌面 TypeScript 检查、Hook 顺序护栏、diff 空白检查通过。新增模式切换提示已纳入中英文词典、seed 和翻译批次;总计 7375 键。