Releases: KannaKuron/dsh-ide-git
Releases · KannaKuron/dsh-ide-git
Release list
v0.6.0
新特性
子模块作为独立仓库出现在仓库选择器里(PR #3,by @sitns)
桌面 Git 客户端式行为:git 把每个子模块记成独立工作树(自己的 HEAD / 索引 / 分支),现在它们会被发现出来——点一下子模块,面板就切进那个子仓库,暂存、提交、历史、分支全部作用于它。
- 发现通道:工作区自身 + 目录扫描 + 每个已发现仓库的子模块(容器工作区同样受益);未初始化的子模块(有登记、无工作树)不出现。
- 去重按归一化路径(Windows 大小写不敏感),子模块行优先;分支查询并发;扫描结果按 cwd 缓存 60 秒(新仓库/新子模块最多 1 分钟后出现)。
- 客户端零改动;
kind仍为 nested,渲染为「子仓库」。
同时包含 v0.5.6:exports 修复(npm 安装 + DSH Desktop 用户必升,issue #1)。
v0.5.6
修复
npm 安装后在打包宿主上插件完全不出现(issue #1,PR #2 by @sitns)
package.json 的 exports 补上 "./package.json": "./package.json"。
DSH Desktop 等打包宿主(loader 无内部 resolveSync)上,dsh-client-modules 组合器走 createRequire 回退分支解析 <pkg>/package.json,缺该导出会抛 ERR_PACKAGE_PATH_NOT_EXPORTED 后静默跳过客户端半区——插件不出现、零报错,而宿主半区照常工作。开发环境(loader 有内部 resolver)不受影响。
升级建议:npm 通道 + DSH Desktop 用户务必升级。
v0.5.5
v0.5.4
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(两通道互斥)不变;这条是「等待服务」纪律从底座通道补齐到原生通道。
v0.5.2 — 运行时禁用底座后回落原生右侧栏
v0.5.2 — 2026-09-18
类型:fix(运行时禁用底座后,面板从两侧栏一起消失)
- 现象(用户实测):同时装着 dsh-better-sidebar 与 dsh-ide-git 时,在插件面板里禁用 dsh-better-sidebar,Git 面板在 DSH 原生右侧栏里也不出现了——两条通道同时失效,除非刷新页面。
- 根因:v0.4.0 的两通道选择是一次性的。better-sidebar 在场时走 Tab 通道(
hostedByBetterSidebar = true),原生座位从未挂载;而ctx.inject(['betterSidebar'])的回调只在「服务可用」时执行,基础被禁用后 cordis 卸载该回调创建的 effect(Tab 注册随之撤销),但没有任何代码路径把原生座位补回来——if (!hostedByBetterSidebar) hostNatively()只在外层 apply 时跑过一次,而 apply 的 fiber 不依赖 betterSidebar,不会重载。 - 修法:把 Tab 注册改成显式 effect(
registerTab→ 返回清理函数),在清理函数里撤 Tab、复位hostedByBetterSidebar、调hostNatively()回落原生座位。cordis 的依赖语义保证这条清理恰好在基础的服务消失时运行,基础回归时同一 inject 重新触发、回调里的disposeNative()分支再把原生座位撤下(两通道互斥不变)。 - 回归守卫(冒烟测试):断言清理函数存在、复位
hostedByBetterSidebar = false、清理路径调用hostNatively();SSR 自检三条(native seat / Tab / workspace-less)全绿。 - 相关:不变量 6(两条通道互斥、自动选)语义不变,只是把「自动选」从一次性快照升级为随服务生命周期变化。
v0.5.1 — 语言切换实时生效
v0.5.1 — 2026-09-15
类型:fix
- 语言切换现在实时生效(用户提问暴露的缺陷):v0.5.0 把词典选在了
apply()里一次性算好,于是用户在 DSH 设置里换语言之后必须刷新页面才生效 —— 而 DSH 的 locale 偏好本来就是实时推送的。现在:translatorOf(ctx)每次查表重新解析语言(按 tag 缓存,一次字符串比较),那个const dict = dictionaryOf(ctx)的一次性捕获已删除;- 新增
LocaleLive包装组件订阅ctx.locale.subscribe,DSH 的 snapshot 一变就重渲染面板 —— 这是 DSH 官方组件的做法,面板不是 DSH 的组件,所以自己订阅; - 两条通道(better-sidebar 的 Tab 与 DSH 原生右侧栏座位)都走这层包装。
- 冒烟测试相应加强:断言
t是实时查表(translatorOf(ctx))、dictionaryFor存在、面板订阅了locale.subscribe,并显式禁止const dict = dictionaryOf(ctx)这种一次性捕获再回来。 - 兼容性:未覆盖的语言(包括 DSH 将来新增、而我们没有词典的)一律回退英文 —— 英文始终是键完整的那本,不会露出键名,也不会串到中文。
- 只改客户端半:硬刷新页面即可,不需要重启。
v0.5.0 — 21 种界面语言
v0.5.0 — 2026-09-15
类型:feat
- 界面支持 21 种语言(按 DSH 官方
ctx.locale规范 + dsh-better-sidebar 的词典规范实现):简繁中文(含zh-HK/zh-MO/zh-TW)、英语、日语、韩语、德语、法语、意大利语、葡萄牙语、俄语、荷兰语、波兰语、瑞典语、土耳其语、印尼语、越南语、泰语、印地语、阿拉伯语。- 语言跟随
ctx.locale的 active(宿主侧偏好优先,浏览器语言兜底)并实时切换;解析顺序是「精确 tag → 主语言子标签 → 英文」,zh-Hant-*归到港式繁体。 - 词典同时注册进 DSH 的 locale 注册表(
ctx.locale.register('dsh-ide-git', …)),宿主侧消费者读到的与面板完全一致。 - 英文始终是键完整的那本:任何未覆盖的语言都回退英文,不会露出键名。
- 语言跟随
- 结构:中文与英文是文件内的
ZH/EN,其余语言在LOCALES表里一门一条,每条前面有一行/* locale: <tag> */标记;查找从「中文就 ZH、否则 EN」改成表驱动的dictionaryFor()。加一门语言现在是追加一个条目,不改任何逻辑。 - 新增守护测试:冒烟测试强制每本词典的键集与中文完全相等——缺键会静默回退英文,面板就成了半翻译状态,这正是它要挡住的(上游 dsh-better-sidebar 用同一条规则,
tests/locales.spec.ts)。 - 代价是客户端半从约 90 KB 涨到 316 KB(gzip 后 70 KB):DSH 的客户端半是无构建单文件,词典只能内嵌,不能像上游那样切懒加载 chunk。
- 语言文案为机器辅助翻译,欢迎在 issue / PR 里修正——每门语言只改一处,互不影响。
- 只改客户端半:硬刷新页面即可,不需要重启。
v0.4.2
npm 正式通道的第二个版本,也是第一个由 Release 自动发布(OIDC Trusted Publishing)的版本。
发布通道
- 新增 .github/workflows/npm-publish.yml(node 24 + id-token: write,零令牌);npm 侧已登记 Trusted Publisher(repo=KannaKuron/dsh-ide-git,file=npm-publish.yml)。
- v0.4.1 为手动 bootstrap 首版(令牌建包,无 Release);本版起 GitHub Release published 自动触发 npm publish。
修复
- 测试夹具跨平台修复(Windows):api 集成测试的临时仓库显式固定 core.autocrlf=false + core.eol=lf——Windows 上 Git for Windows 系统级 autocrlf=true 会让 discard/undo 检回的文件 LF→CRLF,字节级断言全挂(macOS/Linux/CI 不受影响)。43/43 全绿。
安装 / 更新
- DSH 内安装:dsh plugin --profile add dsh-ide-git(需要 dsh >= 0.1.2)
- 可选 peer:dsh-better-sidebar >= 0.12.0——未安装时自动挂载 DSH 原生右侧栏,功能一致