Skip to content

v0.1.7 — 遮蔽失效修复(按钮在、行却还在)

Choose a tag to compare

@kyle123740 kyle123740 released this 27 Sep 04:01
· 12 commits to main since this release

症状

悬浮按钮正常,但被墓碑删掉的行依然可见 —— 就是「删除没生效」的观感。

根因(v0.1.4 修「按钮消失」时引入)

为了让一个晚到的服务不至于让插件完全不激活,我把 sessions 从 inject 里去掉,改成乐观读取:

const inject = ["slots", "locale"];
sessions: ctx.get?.("sessions") ?? ctx.sessions

未声明的服务无法通过 context 取到,于是会话事件窗口变成 undefined:

  • 行装饰不需要它 → 按钮一直正常;
  • 读墓碑需要它 → 删除从此静默地不再隐藏任何行;
  • v0.1.6 又去掉了占位行,连一点提示都不剩。

症状组合正好是「按钮在 + 墓碑被忽略」。

修复

  • sessions 重新写回 inject(这才是让 ctx.sessions 真正可用的原因),乐观读取只作兜底;
  • 事件窗口缺失时打一次性 console.warn,这类故障不会再无声无息;
  • 新增测试断言 inject 必须包含 sessions —— 把遮蔽依赖的这条声明钉住,避免以后因别的理由再被摘掉。

只涉及客户端半边:刷新页面即可生效。

顺带补的诊断工具

  • scripts/explain-session.mjs <日志> --rows:加载真实的 lib/client.js,用插件自己的 shadowRanges 算出「这条会话现在应该保留哪些行、隐藏哪些行」,不再靠人肉推断;
  • scripts/list-sessions.mjs <会话根>:列出最近会话的标题、事件数、失败轮次数、墓碑数 —— 用来把截图和日志对上号。