dsh-vscode-mode 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/lib/client.js +729 -44
- package/lib/client.js.map +1 -1
- package/lib/index.js +261 -33
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/diffDock.ts +12 -0
- package/src/client/events.ts +11 -0
- package/src/client/sidebar/panels/FileExplorer.ts +47 -0
- package/src/client/ui/DiffBox.ts +5 -3
- package/src/client/ui/EditorView.ts +317 -41
- package/src/client/ui/useFileWatch.ts +214 -0
- package/src/client/watchDecision.ts +274 -0
- package/src/compat.ts +1 -1
- package/src/dshVersion.ts +42 -10
- package/src/fileOpenSettings.ts +26 -2
- package/src/fileVersions.ts +167 -0
- package/src/index.ts +6 -1
- package/src/revert.ts +4 -2
- package/src/rpc.ts +62 -12
- package/src/shared/rpc.ts +25 -3
package/README.md
CHANGED
|
@@ -91,6 +91,10 @@
|
|
|
91
91
|
编辑器未打开时显示紧凑「差异 N 个文件 · 查看下一个」按钮(点击自动打开侧栏编辑器并聚焦差异);编辑器打开后 dock 切换为
|
|
92
92
|
完整操作条(Keep / Undo / 跳转 / 回滚 / 归档对比),不会再出现第二个差异栏。header 差异角标 +
|
|
93
93
|
DiffLauncher 全局总览 + 归档/批次回滚;状态持久化到工作区旁车(`.dsh-edit-review.json`,重启不丢)。
|
|
94
|
+
⚠️ v0.4.3 修复「冲突差异可看不可点」:pending hunk 的 `newText` 已被后续修改覆盖(定位失败)时,host 会标记
|
|
95
|
+
`conflict` 并保留在待处理列表供复核,但单文件 Keep/Undo 原先只认「可定位」差异 → 这类文件恒留在差异栏且按钮置灰,
|
|
96
|
+
而全局 Keep All / Undo All 却是亮的。现在单文件 Keep/Undo 覆盖冲突差异:Keep 记账后归档;Undo 对已不在文件中的
|
|
97
|
+
差异不改动文件、直接按不采纳归档(状态栏提示「其中 N 处已不存在于文件,未改动」)。
|
|
94
98
|
- **Monaco 离线分发**:`assets/vendor/monaco` AMD 构建随包发布,经 `/edrv/vendor/*` 前缀路由提供,全离线可用。
|
|
95
99
|
版本锁定 `monaco-editor@0.42.0-dev-20230906`(commit `e7d7a5b0`),由 `node scripts/vendor-monaco.mjs [--force]`
|
|
96
100
|
从 npm registry 复现铺入(内含版本+commit 双重断言,防静默换错构建)。
|
|
@@ -137,6 +141,20 @@
|
|
|
137
141
|
`compaction-basic`/`tool-result-pruner` 阈值写入 profile `cordis.patch.yml`(带备份与撤销,重启生效);
|
|
138
142
|
④ 侧车摘要接口指引。对话 header 另有**会话体积指示器**(`edrv-perf-size`,≥1MB 显示、超 2MB 琥珀、超 8MB 红),
|
|
139
143
|
引导"一次任务一个短会话"。
|
|
144
|
+
- **外部改动自动同步**(未发布,待随下个版本发布):编辑器不再是「只信自己的缓冲」——磁盘文件被外部改动
|
|
145
|
+
(其他编辑器 / Unity / 脚本 / agent 工具 / 同步盘)后自动跟进,不必再手点 ⟳。
|
|
146
|
+
**观测**:客户端每 **1.5s** 把已打开页签路径批量交给 host `edrv.versions`(一次请求多条 `fs.stat`,
|
|
147
|
+
标签页隐藏时整轮跳过),与本地的磁盘版本基线比对;文件树对应目录同时在 host 侧失效、
|
|
148
|
+
客户端按 `edrv:file-changed` 事件去抖强制重列(外部新增/删除/改名都能看到)。
|
|
149
|
+
**判定**:版本变化后**必须再比一次内容**——host 版本令牌含 `ctime`,格式化工具/同步盘的
|
|
150
|
+
「同字节重写」也会让它变化,只看版本会把没变的内容反复重载(打断光标与滚动)。
|
|
151
|
+
内容一致 → 只推进基线(不重载);内容不同且缓冲**干净** → 自动刷入并提示「已同步外部修改」;
|
|
152
|
+
内容不同且缓冲**有未保存编辑** → 绝不覆盖,编辑区上方出现提示条(重新加载 / 覆盖磁盘 / 保留本地),
|
|
153
|
+
状态栏同时出现「⚠ 外部已修改」;文件被外部删除 → 提示「已被外部删除」,缓冲保留。
|
|
154
|
+
**保存护栏**:保存带回上次读取的版本令牌,host 用 `replaceIfVersion` 守卫写入——
|
|
155
|
+
磁盘被外部改过时**拒绝保存**并提示「文件已被外部修改」,由用户显式选择重新加载或用编辑器内容覆盖;
|
|
156
|
+
冲突未处理期间自动保存被抑制(避免用陈旧缓冲反复盖掉外部改动)。
|
|
157
|
+
老 host(无该 RPC)自动降级为无同步、无护栏,不报错。
|
|
140
158
|
- **系统集成**(v0.1.53,设置 → VSCodeMode → 通用「系统集成」卡片):
|
|
141
159
|
① **文件管理器右键菜单**——一键把「在 DSH 文件编辑中打开」注册进系统(Windows 资源管理器三类入口 / Linux
|
|
142
160
|
Nautilus+Dolphin / macOS Automator 配方),插件卸载自动清理、更新自动恢复;点击经 launcher 打开默认浏览器深链
|
|
@@ -232,6 +250,7 @@ src/
|
|
|
232
250
|
├── tree.ts Host 目录树纯函数(normalizeRel/toTreeEntries,edrv.listDir 用,可单测)
|
|
233
251
|
├── rules.ts Host 规则管理:.mdc 解析/开关改写/注入渲染(纯函数可单测)+ IO + systemPrompt section 装配
|
|
234
252
|
├── skills.ts Host 插件技能组:随包 skills/ 的 SKILL.md 解析/扫描 + skill provider 注册(可单测)
|
|
253
|
+
├── fileVersions.ts Host 文件新鲜度观察:批查 ctx.fs 版本令牌(edrv.versions)+ 变化时失效目录树索引(可单测)
|
|
235
254
|
├── rpc.ts Host RPC 分发表(类型化 handler 表替代巨型 switch,含 compat)
|
|
236
255
|
├── routes.ts Host webServer 路由(/edrv/rpc、/edrv/assets/*、/edrv/vendor/*,带冲突护栏)
|
|
237
256
|
└── client/
|
|
@@ -241,7 +260,8 @@ src/
|
|
|
241
260
|
├── officialSidebar.ts ★ 官方右侧 Sidebar 桥(DSH 0.1.5+,唯一维护面):探测 sidebarRightTabs/sidebarRight、
|
|
242
261
|
│ 两段式注册(类型定义 + keyed slot 正文)、openTab 路由(纯函数可单测)
|
|
243
262
|
├── rpc.ts Client 类型化 fetch 包装 + 诊断日志
|
|
244
|
-
├── events.ts 窗口事件助手(edrv:refresh/open-editor/show-launcher;侧栏路由优先、旧页签回退)
|
|
263
|
+
├── events.ts 窗口事件助手(edrv:refresh/open-editor/show-launcher/file-changed;侧栏路由优先、旧页签回退)
|
|
264
|
+
├── watchDecision.ts 外部改动同步纯逻辑(基线/已读版本台账/判定表,可单测)
|
|
245
265
|
├── state/ records.ts(摘要/计数/空差异)+ regions.ts(差异区域/行裁剪)纯函数
|
|
246
266
|
├── monaco/ loader.ts(AMD 加载/语言映射)+ diffRender.ts(差异自绘渲染器)
|
|
247
267
|
├── pdf/ pdfLoader.ts(pdf.js vendor 产物 module-script 加载)+ pdfPanel.ts(PDF 面板控制器:
|
|
@@ -254,6 +274,7 @@ src/
|
|
|
254
274
|
│ + panels/SearchPanel.ts(搜索面板)+ panels/RulesPanel.ts(规则面板:用户/项目规则 + 开关)
|
|
255
275
|
├── styles/editor.css 编辑区样式(tsdown CSS-inline 注入;含侧栏形态/引导条)
|
|
256
276
|
└── ui/ EditorView(编排,tab/side 双形态)/ OfficialSideTab(官方 Sidebar Tab 包装)
|
|
277
|
+
/ useFileWatch(外部改动轮询:批量版本比对 → 同步动作回调)
|
|
257
278
|
/ SideEditorTab(betterSidebar Tab 包装,归档)/ QuickOpen
|
|
258
279
|
/ DiffBox(chat/editor 双模式)/ ConversationDiffDock / DiffBarEmpty / DiffLauncher
|
|
259
280
|
/ DiffBadge / McpSettings(含「兼容性」子 Tab)
|