返回秀秀每日修改日志

秀秀 3.226 - 电脑端消息与会话列表增量渲染

记录日期:中国时间 2026-08-22;不可覆盖快照 ID:fccf43eb24a0b287dfce2f2c71bee5a4d02fd919fcdc291cf0a8a28d988ec3d5

记录完整性:九项详细记录完整

## 秀秀 3.226 - 电脑端消息与会话列表增量渲染

- 建立时间:2026-08-22 CST。
- 详细记录标准:v1。
- 父版本:秀秀 3.226(同一功能版本内的电脑端稳定性修复,不提高对外功能版本号);固定严重故障回滚基准仍为秀秀 3.2。
- 修改目的:消除电脑端后台同步到新消息、已读状态或会话摘要时,消息区和左侧会话列表整段重建造成的可见闪动、滚动位置偏移和阅读中断;保留现有实时消息速度与所有业务链路。
- 原因判断:电脑端已经采用每2秒轻量消息状态检查和每15秒精简Bootstrap,不再周期性整页拉取;但状态变化后,`loadMessages()`与`loadNewMessages()`仍通过`innerHTML`重建当前消息窗口,Bootstrap发现活动变化也会重建整个会话列表。已读数变化同样进入完整消息渲染键;用户向上查看历史消息时,新增消息路径还会裁掉窗口顶部旧消息。这些前端DOM行为会造成页面跳动,与服务器CPU或数据库不足无直接关系。
- 修改逻辑:消息列表以`message_id`为稳定键,正文未变时保留原节点;已读/未读变化只更新回执文字,正文、折叠状态和相邻消息节点不重建;正文确实编辑或撤回时只替换对应消息节点;新增消息只追加新增节点,删除消息只移除对应节点。用户位于底部时继续自动跟随最新消息;用户正在查看历史时保留全部已加载消息并按消息锚点恢复位置。会话列表按`conversation_id`就地更新摘要、未读数和时间,排序变化前后保存首个可见会话锚点与偏移。
- 采用方法:抽出会话列表生成与渲染键函数;为消息内容和回执分别建立稳定哈希;新增`reconcileMessageList()`与`reconcileDesktopSessions()`执行节点级差异更新;使用双`requestAnimationFrame`恢复消息锚点,并在会话排序后恢复左栏可见锚点。保留输入法组合、最近输入、发送中暂停Bootstrap以及浏览器Leader轮询机制。
- 数据/调用链路:电脑端每2秒请求当前会话`/api/im/messages/status`;无变化不操作DOM,有新rowid时只拉新增消息并执行节点级追加,编辑/撤回/已读签名变化时拉当前消息并只更新变化节点。每15秒Compact Bootstrap只在会话结构或活动摘要变化时执行会话节点级更新;刻秀圈仍仅在电脑端刻秀圈可见时每10秒刷新。
- 兼容保护:未修改后端接口、数据库结构、消息内容、账号、群组、好友、BOT人设/技能/记忆、权限、4.5、Loop、001/002、Q/X军团、206跨服协议、OpenClaw、安装包技术版本或手机端逻辑。消息状态检查周期、Bootstrap周期、已读回执、置顶排序、新消息自动到底部和手动刷新入口保持原标准。守一替身继续使用包含X军团显示差异的独立前端候选。
- 改动文件:五节点`/opt/xiuxiu3-open-source/web/web.js`与`web/index.html`;专项浏览器测试`ui-preview-moments-search.spec.js`;`VERSION_RECORDS.md`、每日修改日志、不可覆盖迭代快照和长期功能总台账。
- 验证结果:通用与守一替身专用JavaScript语法通过。守一U3真实HTTPS浏览器4项回归全部通过,覆盖回执更新保留消息节点、正文修改只替换目标节点、新消息追加不重建相邻节点、会话摘要更新保留节点及滚动位置,同时覆盖案例库、刻秀圈、普通生成链接和历史分享关闭返回原位置。立志教育U2独立回归3项通过、1项守一历史页条件跳过。五节点公网均加载`20260822-desktop-incremental-render-3226-6`,Web服务均为active;立志教育、影团AI、守一、秀秀替身共享前端哈希一致,守一替身专用哈希与候选一致;五台主数据库`quick_check=ok`。
- 同步与回滚:五节点修改前均建立本机`/var/lib/xiuxiu3/backups/20260822-desktop-incremental-render/web/`,只备份并替换电脑端两个文件。回滚时仅恢复故障节点自己的`web.js`与`index.html`并重启`xiuxiu3-web`;不重启Bridge、OpenClaw、Q或X服务,禁止跨节点恢复数据库、密钥、身份或工作区。
"nn"# 秀秀 3.226 - 工程交付链接移动端关闭双保险

- 建立时间:2026-08-22 CST。
- 详细记录标准:v1。
- 父版本:秀秀 3.226(同一功能版本内兼容修复);严重故障回滚基准仍为秀秀 3.2。
- 修改目的:修复Q工程直接使用网址在手机安装版中裸页打开后无关闭入口的问题,关闭后恢复原会话、案例库或刻秀圈。
- 原因判断:同页预览与`/open-artifact`已有关闭栏,但工程产物自身无关闭代码;旧驻留JavaScript、WebView直接导航或未命中点击拦截时会进入无退路的原始HTML。
- 修改逻辑:主路径继续使用秀秀同页预览;工程HTML增加来源感知兜底,只在秀秀内嵌、同源`/app/`或`/web/`来源、内部预览标记时显示关闭,普通外部访问保持隐藏。同源且当前预览可见的嵌套关闭事件才会被接受。
- 采用方法:发布网页工程时以幂等标记注入兜底;五节点已有`engineering-previews`页面使用同一函数校准;资源标记更新为`20260822-artifact-close-fallback-3226-7`;只重启Web。
- 数据/调用链路:最新版点击 -> 同页预览 -> 外层关闭 -> 恢复来源;旧直开 -> 页面兜底关闭 -> 浏览器历史回原位置;外部直开 -> 无秀秀来源 -> 不显示控件。
- 兼容保护:不改工程业务内容、ZIP、数据库、账号、群组、消息、BOT、4.5、Loop、Q/X、206、跨服授权或安装包技术版本;下载类文件继续直接下载。
- 改动文件:`xiuxiu3_core/standalone.py`、`app/mobile.js`、`app/index.html`、`web/web.js`、`web/index.html`、已有工程预览HTML、浏览器专项、修改日志和长期总台账。
- 验证结果:守一U3原有桌面、案例库、刻秀圈、预览和历史分享回归通过;立志教育U2对真实`qtask_4393c56b74874bc3aed441c41eb15a40`完成最新版、旧直开和外部浏览器三路径测试;五节点Web与SQLite正常。
- 同步与回滚:五节点本机回滚点均为`/var/lib/xiuxiu3/backups/20260822-artifact-close-fallback/`;只恢复本节点文件和工程预览并重启Web。