Repository navigation
v1.2.6
v1.2.6 · 内联差异插件(2026-11-07)
发布日期:2026-11-07(Asia/Shanghai)
上一个公开版本:v1.0.0(2026-11-05)
DSH Inline Diff 为 DeepSeek Harness 的对话流提供逐次文件修改的内联差异卡片:每一次 edit / write 都会就地显示修改前后对照,并提供左右对照、行内字符级高亮、移动块与被动行号说明、Read 行范围,以及可独立配置的「展开风格」工具行。
本版本是一个修复版本:没有破坏性变更、没有设置项迁移。重点是修复「切回官方原版主题后卡片外壳与设置弹窗仍是蓝色」「设置弹窗在官方深色主题下发白」「第三方主题下放大按钮与折叠冲突」等主题/外观问题,并修正命令失败卡片底部多余外壳、行号图例错位、语言徽章「隐藏」语义等细节。
相对 1.2.5 的主要修复
主题与外观
- 外壳颜色不跟随官方原版主题:官方 DSH 主题把
--dsw-alias-*token 定义在body上,第三方皮肤把同样的 token 定义在:root上;插件此前把派生颜色变量声明在:root,var()在根元素处解析时看不到 body 上的主题 token,只能一直使用硬编码兜底值(按第三方蓝色皮肤调的蓝)。切回「原版皮肤」后,文件卡片外壳、命令 / 工具行外壳、设置弹窗、分段控件仍是蓝色,正是这个原因。现在派生变量与浅色外观覆盖都声明在body(与主题 token 同一层解析),官方主题、皮肤主题、第三方主题以及浅色 / 深色外观都能正确跟随;兜底色也改为中性灰,不再携带皮肤专属的蓝色调。 - 明暗外观切换:外观镜像属性同时写到
html与body,并监听body的data-ds-dark-theme、主题属性变化与系统外观媒体查询;官方主题下切换浅色 / 深色会立即重算外壳与语法配色。 - 设置弹窗在官方深色主题下发白:官方深色主题里
--dsw-alias-bg-overlay是遮罩用的中间灰(约#61666b),设置弹窗此前用它做弹层底色,深色外观下整块面板发白、文字对比度差。现在弹层改用主题分层表面bg-layer-2(官方深色下约#2c2c2e),与宿主设置弹窗一致;浅色外观仍为浅色。
与第三方主题 / 插件的兼容
- 「放大」按钮与折叠冲突:claude-style 等主题会在
document捕获阶段拦截[aria-expanded]行内的真实点击,播放折叠动画后再重放一次合成点击;文件卡片头部本身是折叠按钮,点「放大」会被替换成一次头部点击,表现为先折叠、再点才打开。现在卡片头部通过aria-haspopup="false"豁免主题的点击拦截,并且只响应真实用户手势(忽略合成.click()重放);无差异时「放大」使用aria-disabled而非原生disabled,点击不会再穿透到折叠头部。 - slot 优先级冲突:主题插件也可能注册 keyed
tool.call.toolview(如 claude-style 使用-1),与插件原来的-1冲突会抛重复 key 错误、导致工具视图整组不注册。插件改用-100,两者可共存,卡片正常显示。
行号「旧 / 新」图例
- 图例与行号列错位:图例条原本用 9px 字号声明
2.2em列宽,而行号行用 12px 字号,em基准不同导致两列宽度不一致,「旧 / 新」字样落在行号列左上方。现在图例条与行号行共用同一字号基准(只有图例文字本身缩小),两列右边缘与行号列完全对齐。 - 单侧行号智能适配:新建文件(
write新文件)没有旧行号、纯删除没有新行号;图例现在按修改点实际存在的行号只显示对应一侧(新建文件只显示「新」,整份文件被清空的纯删除只显示「旧」),不再强行显示不存在的行号列标签。判定抽成纯函数gutterSides()并补 3 项回归测试(纯删除 / 纯新增 / 含上下文 / 无行号)。
命令 / 工具行
- 失败命令卡片底部多出一段外壳:失败的命令卡片曾在 IN/OUT 面板下方再渲染一条重复的错误文本,把卡片底部多撑出一块外壳底色。现在错误只保留在对应的 IN / OUT 段内(红字),卡片在 IO 面板处结束,与其它工具行一致。
- 顺带清理了不再使用的
EnhancedToolCallTree/ToolBranch/NativeCompactTool组件与.enhanced-native*/.enhanced-call-row/.enhanced-subcalls样式。
语言徽章与工具卡片文案
- 语言徽章「隐藏」语义:选择「隐藏」时现在隐藏全部语言徽章(包括纯文本标记与未知语言徽章);「未知语言」选项只在徽章可见时生效。
str_replace_editor卡片措辞:该工具本身不产生 Host 执行快照,实时卡片不再显示「这是历史回放」的说明,改为「该工具调用不保存执行快照」的专用说明,放大弹窗的「全文对照」置灰原因同步更新。真正的历史回放(edit/write快照丢失)仍保留原有「历史回放」文案。- 行内卡片未展开行数少计:折叠预算耗尽后,「另有 N 行未展开」现在按整份 diff 的总行数计算,不再只统计预算耗尽前遍历到的修改点。
syntax-styles.js顶部注释的色相窗口修正为与实际测试一致的 180°–285°。
截图与文档
- 12 张文档截图全部重拍:当前显示环境使用 DSH 官方原版外观(深色为主,另附浅色外观),旧截图是第三方蓝色皮肤下生成的,外壳色调与现在的默认外观不一致;设置面板两张截图又按「弹窗表面色」修复重新拍摄。
- README、插件 README、CHANGELOG、显示行为说明(
docs/display-behavior.md)同步更新:主题 token 解析层级、设置弹窗表面色、第三方主题点击拦截适配、行号图例对齐与单侧适配、命令失败无额外外壳、语言徽章隐藏语义、str_replace_editor无快照文案等。
兼容性
- DSH 版本范围(
engines.dsh):>=0.2.2-rc.1 <0.3.0 - 实测版本:
0.2.2-rc.1 - 不在范围内时 DSH 加载器会拒绝加载本插件,避免在未验证的宿主版本上静默运行
- DSH 桌面端与 Web UI 若使用不同 profile,需要分别在对应 profile 安装
- 颜色取自宿主主题 token 与插件自带受限调色板,跟随 DSH 原生主题、第三方主题与明暗模式
- 设置存储键保持
dsh-inline-diff.settings.v4,从 1.2.5 升级无需迁移
安装
方式一:DSH 插件管理器(推荐)
- 下载
dsh-inline-diff-1.2.6-plugin.zip并解压; - 打开 DSH 设置 → 插件管理;
- 选择“从本地目录安装”,指向解压后的
plugin/目录; - 刷新或重启 DSH;已安装 1.2.5 的 profile 直接覆盖安装即可。
方式二:手动 link 安装
cd ~/.dsh/profiles/<profile>
pnpm add link:/absolute/path/to/dsh-inline-diff/plugin并把 @local/dsh-inline-diff 加入该 profile 的 dsh.profile.bundles。
发行包
| 文件 | 用途 |
|---|---|
dsh-inline-diff-1.2.6-plugin.zip |
可安装插件包(推荐下载) |
dsh-inline-diff-1.2.6.zip |
完整项目源码、文档、截图与插件包 |
SHA256SUMS.txt |
本次发行包的 SHA-256 校验和 |
只安装插件的话下载插件 zip 即可;完整 zip 便于一次性拿到文档、截图与源码。历史版本请见 GitHub Releases。
SHA-256
49e98b3fbb3e66b3c2bd2dce58bb6a781d12eadb3d7493e69424809945139a48 dsh-inline-diff-1.2.6-plugin.zip
899451d4fbb92ad62bc721f123b98f97ea5769332427ec394c9fcb1e4e6588f5 dsh-inline-diff-1.2.6.zip
文档
- 使用说明、功能列表与全部截图:README
- 完整变更记录:CHANGELOG
- 显示行为说明(快照语义、弹窗层级、渲染预算):docs/display-behavior.md
- 问题反馈:Issues
已知限制
- 「全文对照」依赖 Host 内存中的修改前后快照;应用重启后的历史回放只能恢复修改块与行号,全文页签会置灰并在放大弹窗说明原因。
- 大文件按各项预算分别降级:任一侧 > 4000 行或 LCS 矩阵超预算时退回差异块模式并关闭移动识别;高亮预算(任一侧 > 200k 字符 / 4000 行 / 单行 > 2000 字符)超限时仅关闭语法高亮,不影响差异展示;快照缺失或只有工具元数据差异块时「全文对照」不可用,其余情况全文对照可用并在超过 4000 行时截断提示。
- 移动识别只识别完全相同的连续行块;移动同时伴随内容修改的块按普通增删显示。
- 语法高亮为词法级(highlight.js grammar),不依赖语言服务;TOML / JSONC / Vue / Svelte / Astro 使用最接近的基础语法做近似高亮。
- 文件修改卡片仅支持 DSH 原生
edit/write/str_replace_editor;str_replace_editor走工具元数据差异块路径,无法使用全文对照。 - 插件按 profile 安装,不自动跨 profile 同步;DSH 升级到
0.3.0或更高版本前,请等待本插件发布新的兼容版本。
作者:Him666233 · https://github.com/Him666233
License:MIT