我为所有主题(Horizon 主题)启用了嵌套回复,并复现了一个状态错误,该错误在移动端和桌面端均可重现。
当我打开一个主题,阅读后通过“建议/相关主题”区块跳转到另一个主题(即客户端导航,无页面刷新)时,我刚离开的那个主题的回复有时会残留在屏幕上——被渲染为嵌套在新主题的第一个分支下。它们甚至可能附着在新主题中已被删除的帖子下。继续跳转到更多主题也无法清除该问题,只有完全刷新页面才能解决。
一个重要细节:该问题具有间歇性。首次通过相关区块跳转通常正常,我可以多次点击该区块而不出问题。似乎只有在连续通过“相关主题”区块跳转两次或更多次后,问题才会出现。
复现步骤:
- 打开一个包含嵌套回复的主题。
- 通过“建议/相关主题”区块打开另一个主题(无页面刷新),并连续重复此操作几次。
- 在通过该区块连续跳转两次或更多次后,之前主题的回复会嵌套出现在当前主题的第一个分支下,有时甚至附着在该主题中已被删除的帖子下。
- 这些残留回复会在后续的站内导航中持续存在,直到进行硬刷新。
控制台没有 JavaScript 错误,因此我查看了网络(Network)标签页,发现之前的主题似乎从未被正确清理:
- 检查的页面是主题 724(/n/vibriruet-pri-troganii…/724?sort=old)。
- 当我处于主题 724 时,网络日志中仍显示对之前主题数据的请求:509.json?sort=old&track_visit=true。
- 实时消息总线(message-bus)轮询的 Referer 仍为 …/n/pinki-tolchki-…-na-nissane-kube/509,即主题 509 的消息总线订阅从未被重新指向主题 724。
因此,问题似乎在于:在客户端导航时,嵌套路由未能重置来源主题的帖子流(post stream)或消息总线订阅。该问题最初在移动端发现,但在桌面端表现一致。
Discourse 版本:2026.6.0-latest (27f76aa897)
如果需要,我很乐意提供屏幕录制或进一步排查。