v0.5.3 — 原生右侧栏座位等待服务(v0.5.2 的回落只修了一半)
v0.5.3 — 2026-09-18
类型:fix(原生座位的时序竞态:apply 早于服务就绪时静默漏注册)
- 现象(用户实测,桌面客户端 + 干净实例):没有 better-sidebar 的宿主上,原生右侧栏「开始」页看不到 Git 卡片,控制台零错误——插件看起来装好了、启用了,就是没有入口。
- 根因:
hostNatively()用ctx.get('sidebarRightTabs')同步探测服务;本插件的 apply 可能早于 ui-sidebar-right 提供该注册表(桌面客户端与干净实例都命中),探测得到 undefined 后直接 return,而且没有任何重试路径——原生座位永不注册。对照:better-sidebar 通道用ctx.inject(['betterSidebar'])等待服务,所以同一份代码在有底座的宿主上从不出问题。v0.5.2 的运行时回落之所以能通过,是因为回落发生在服务全部就绪之后,恰好绕开了这个竞态。 - 修法:原生通道也改为
ctx.inject(['sidebarRightTabs', 'slots'], …)等待两个服务就位再注册,注册体放进nativeCtx.effect;fiber 句柄取代旧的disposeNative闭包(better-sidebar 接管时takeNativeDown()撤下原生座位,语义不变)。 - 自检补盲:SSR 自检的 fake ctx 过去用「同步 get + inject 永不回调」模拟无底座宿主,恰好把这个竞态模拟没了;现在它同时建模两种等待——better-sidebar 永不到达、原生两服务到达并触发回调。复现与验证:干净实例(只挂本插件)复现「无 Git 卡片、零报错」→ 修复后同一实例原生右侧栏出现 Git 卡片。
- 相关:不变量 6(两通道互斥)不变;这条是「等待服务」纪律从底座通道补齐到原生通道。