feat: 新增内置 tab「文件追踪」——会话文件操作记录与逐行 diff(移植 dsh-file-trace) - #471
Merged
Conversation
- 数据层:直接折叠会话事件日志(tool/call + tool/result 对)提取文件操作,
与仓库「读事件日志而非动注册表」的取向一致;含错误文本捕获与
running 态实时更新(ctx.on('session/event'),不可见时暂停、恢复时追平)
- 视图:操作列表 + 底部可拖拽 diff 面板;行级 diff(删红/增绿/改蓝)+
行内字符级高亮;读取视图带真实行号;失败操作统一展示真实错误文本
- 语法着色:轻量分词器(关键字/字符串/数字/类型/函数/注释/预处理),
色相经 color-mix 落在 diff 三色之间的空档;跨行块注释状态按行序推导
- 单实例 tab,+ 菜单 order 55,角标显示操作数;设置页可整体关闭
(与独立维护的 dsh-file-trace 插件共存)
- i18n:10 个新 key 同步全部 21 个词典;builtins 测试 7→8;
README/指南内置清单同步
Contributor
Author
|
补充说明:本 tab 移植自我的独立插件 dsh-file-trace,仓库在这里:https://github.com/lhh010/dsh-file-trace (会持续独立维护,欢迎 star / 提 issue)。better-sidebar 内置版与独立版可共存,内置 tab 可在设置页整体关闭。 |
…uide version line (keep 8-tab count, adopt v0.18.0-alpha.0 alpha-track wording)
Menghuan1918
added a commit
that referenced
this pull request
Aug 31, 2026
feat!: 文件变动统一 tab——Git 面板 + 文件追踪(PR #471)二为一,统一 diff 渲染栈
pull Bot
pushed a commit
to LDGAGI/DSH-better-sidebar
that referenced
this pull request
Aug 31, 2026
在 PR omdsh-dev#471(file-trace)基础上的演进: - 合并 tab:git tab(id 保留,兼容持久化布局)升级为「文件变动」双视角 tab——Git 视角(原 GitView 全部能力:staged/unstaged/提交/历史/worktree· 子仓库选择/右键菜单/确认弹窗)+ 本轮文件视角(原 file-trace:会话事件 日志实时折叠的模型读写编辑记录,按文件分组、新增类型筛选 chips、相对 时间);file-trace tab 移除(未随任何版本发布)。 - 统一 diff 组件:新 src/client/diff/ 模块(rows.ts 引擎 + DiffRows/ DiffFiles 渲染器 + highlight.ts 语法着色)——git diff 与会话操作 diff 共用一套渲染:mod 改写配对(del-run/add-run 对半标蓝)、行内字符级 高亮(修复了旧实现旧侧失配不高亮的问题,改为行对象身份键)、上下文 hunk 折叠、git hunk 间未输出区间按行号范围生成不可展开折叠、语法着色 色相落位 diff 三色空档、+n −m 统计 chips、行底色 tint;DiffTab 改用 该栈(git diff tab 从此也有高亮)。 - 交互:两视角共用底部可拖拽预览面板(点击文件/提交/操作即预览,不再 直接开 diff tab;面板可刷新、可键盘/拖拽调高、git 目标可一键展开为 独立 diff tab);视角选择与面板高度持久化在 tab.meta;git 行 XY 徽章 按状态字母着色;选中行高亮。 - i18n:fileTrace* 十键重命名为 changes* 前缀,git 键值更新为「文件 变动」,新增 7 键(视角/筛选/面板操作),全部 21 个词典同步。 - 结构:src/client/changes/(ChangesTab/GitLens/SessionLens/DiffPane/ ops)+ src/client/diff/;GitView/DiffView/filetrace/ 删除;git 样式 从 sidebar.module.css 迁至 changes.module.css。 - 测试:builtins 8→7(git tab 承接 badge pin)、diff-rows(unified 转换/mod 配对/间隙折叠/统计)、changes-tab(壳交互 jsdom)、 diff-files-collapse(原 DiffView 折叠行为钉住)、changes-ops(原 filetrace 数据层)、git-view-worktree 迁移至 GitLens;全量 1122 通过。 - 文档:README ×2 功能矩阵合并、external-plugin-guide §4.4 与内置清单 7 tab、mount e2e 菜单标题同步。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
摘要
新增第 8 个内置 tab「文件追踪」(file-trace):记录模型在本会话读 / 写 / 编辑过的每一个文件,点开任意操作查看行级 diff 或带行号的内容视图。移植自独立维护的 dsh-file-trace 插件(该插件仍继续独立维护,与本内置 tab 可共存——内置 tab 在设置页可整体关闭)。
实现要点
src/client/filetrace/ops.ts):直接折叠会话事件日志(tool/call+tool/result对)提取文件操作,符合仓库「读事件日志而非动注册表」的取向;错误结果捕获真实错误文本;ctx.on('session/event')实时追加(visible === false时暂停、恢复时追平,事件量有上限)。FileTraceTab.tsx):操作列表(按文件分组、最新在前)+ 底部可拖拽 diff 面板;行级 diff(删红 / 增绿 / 改蓝)+ mod 行行内字符级高亮;读取视图剥掉读工具信封显示真实行号;失败操作统一展示真实错误文本(不渲染伪造 diff);长行折叠与 hunk 上下文折叠。highlight.ts,轻量正则分词器):关键字 / 字符串 / 数字 / 类型 / 函数 / 注释 / 预处理各配色,色相经 color-mix 全部落在 diff 三色(红绿蓝)之间的空档(紫 / 青 / 品红 / 暖金),只消费--dsw-alias-*令牌(皮肤契约);跨行块注释状态按行序推导(读取视图沿行序、diff 旧 / 新侧各沿行号序)。遵循仓库约束
--dsw-alias-*/--ds-*令牌,无硬编码颜色(theme.spec.ts通过)。locales.spec.tskey-set 测试通过)。tests/filetrace.spec.ts(事件折叠 / 读取解析 / diff·highlight 冒烟,9 例);builtins.spec.ts7→8。验证
pnpm typecheck✅;pnpm build✅agent-pty/git*/install-powershell/smoke/fs-operations存在预存的环境相关失败(已在干净 main 上复现同样失败,与本次改动无关)