Repository navigation
v0.1.7 — 遮蔽失效修复(按钮在、行却还在)
症状
悬浮按钮正常,但被墓碑删掉的行依然可见 —— 就是「删除没生效」的观感。
根因(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 <会话根>:列出最近会话的标题、事件数、失败轮次数、墓碑数 —— 用来把截图和日志对上号。