Repository navigation
v1.0.1
修复
-
展开面板始终显示「未选中会话」,当前会话的用量明细因此不可用。
根因不是取值逻辑写错,而是客户端读取了一个未在
inject中声明的服务
(uiSession)。Cordis 对未声明服务的属性访问会直接抛错
(cannot get property "uiSession" without inject),而这段读取被try/catch
吞掉,于是当前会话 id 恒为空字符串。inject补上sessions与uiSession- 不再自行复刻「谁是当前会话」的规则,直接读取宿主自己的主视图绑定
uiSession.adapter.current - 同时订阅
sessions.list:侧边栏比对话界面先渲染,挂载那一刻宿主还在发布
空绑定,必须等会话就绪后重新解析。这是独立于上面那个原因的时序问题,一并处理
-
测试脚手架两处会造成假通过的缺陷(因此之前的绿灯不可信):
问题 后果 check()未等待异步断言失败会变成未处理的 rejection,而计数照报「通过」、进程还退出 0 textOf()从不渲染嵌套函数组件展开面板的内容其实从未被断言过,读到的永远是空字符串 修正后,原先那条「点击展开面板」的绿灯立刻变成了失败——真问题被暴露出来。
-
新增回归用例:会话在挂载后才出现时必须被重新解析。
-
测试用的假
ctx现在像 Cordis 一样对未声明的服务抛错,这类 bug 以后会在测试里就死掉。 -
用变异测试确认新断言确实会失败(改坏面板标题、去掉
inject中的服务),随后逐字节还原(sha256 一致)。
验证
- 全套 20 项测试通过(宿主 11 + 客户端 9),并在下载到的发布产物上复跑通过。
- 发布产物与源码逐字节一致。
安装
dsh plugin --profile desktop add "https://github.com/ZeroOT-Liu/dsh-usage-widget/releases/latest/download/dsh-usage-widget.tgz"装好后刷新页面(Ctrl+R)。
完整变更:v1.0.0...v1.0.1