dsh-code-ui 1.1.4 → 1.2.0

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.
Files changed (5) hide show
  1. package/README.md +120 -94
  2. package/lib/client.js +1780 -1319
  3. package/lib/index.js +746 -618
  4. package/package.json +81 -77
  5. package/README.en.md +0 -38
package/README.md CHANGED
@@ -1,94 +1,120 @@
1
- # dsh-code-ui
2
-
3
- 在 DeepSeek Harness(DSH)里的 **Cursor 风格 AI 代码编辑器**插件:文件树、多标签页编辑、语法高亮、引用/翻译给 AI。
4
-
5
- 它把 Cursor 那种「边看代码、边跟 AI 对话」的体验搬进 DSH:一个带活动栏、文件树、多标签页编辑器的代码工作区,底部直接内嵌 AI 输入框。
6
-
7
- ## 功能
8
-
9
- - **Cursor 风格工作区**:活动栏 + 文件树侧边栏 + 多标签页编辑器 + 状态栏
10
- - **语法高亮**:内联轻量 tokenizer,覆盖 JS/TS/Python/HTML/CSS 等
11
- - **文件浏览与编辑**:展开目录、打开文件、直接编辑、`Ctrl+S` 保存写回磁盘
12
- - **选中代码右键**:
13
- - 📋 复制
14
- - 📥 粘贴到备注
15
- - 📝 添加备注
16
- - 🌐 翻译(创建翻译引用,交给 AI 翻译)
17
- - 🔗 引用给 AI
18
- - **引用 chip**:引用后输入框上方显示 `文件名(起行-止行)` + ✕,删除引用
19
- - **内嵌 AI 输入框**:直接输入、`Ctrl+Enter` 发送,发送时自动附带已引用的完整代码
20
- - **主题跟随**:使用 DSH 的 `--dsw-alias-*` 语义变量,浅色/深色自动切换
21
- - **窗口化/全屏**:可拖拽、可缩放、可全屏/还原
22
- - **以此文件夹为根**:文件浏览器里可选任意目录作为工作区根
23
- - **检查更新 / 一键更新**:设置 → 插件 → 插件配置 中的 dsh-code-ui 卡片,支持在线检查 npm 新版本并一键更新;未发布/开发期可填本地 `.tgz` 路径安装(pnpm 流式进度展示,失败自动归类给出建议,完成后提示重启 DSH 生效)
24
-
25
- ## 安装
26
-
27
- 通过 `dsh plugin` 一键安装(已声明 `dsh.bundle`):
28
-
29
- ```bash
30
- dsh plugin --profile web add dsh-code-ui
31
- ```
32
-
33
- 安装完成后重启 DSH,页面顶部出现 `Code UI` / `原始风格-ui` 切换浮条,点 `Code UI` 进入编辑器。
34
-
35
- 或手动安装:
36
-
37
- ```bash
38
- cd $DSH_HOME/profiles # Windows: %USERPROFILE%\.dsh\profiles
39
- npm install dsh-code-ui
40
- ```
41
-
42
- 然后在 `cordis.patch.yml` 追加:
43
-
44
- ```yaml
45
- - insert:
46
- - id: dsh-code-ui
47
- name: 'dsh-code-ui'
48
- ```
49
-
50
- ## 使用
51
-
52
- 1. 点顶部 `Code UI` 进入编辑器
53
- 2. 在文件树/浏览器里打开文件
54
- 3. 选中代码右键 → 引用 / 翻译 / 备注 / 复制
55
- 4. 底部输入框直接发消息(`Ctrl+Enter` 发送),已引用的代码会自动附带
56
- 5. 也可对 AI 说「读取我引用的代码」,AI 会调用 `get_referenced_snippets` 工具
57
-
58
- ## 目录结构
59
-
60
- ```
61
- dsh-code-ui/
62
- ├── package.json # 包声明(含 dsh.bundle.patch / dsh.client)
63
- ├── lib/
64
- │ ├── index.js # Host 端:connection.rpc 文件/引用/备注 RPC + get_referenced_snippets 工具
65
- │ └── client.js # Client 端:__ModuleLoader__ + 编辑器 UI
66
- └── cordis.patch.yml # bundle 插接层
67
- ```
68
-
69
- 纯 JavaScript 手写实现,无需构建,可直接 `npm publish`。
70
-
71
- ## 实现说明
72
-
73
- - **Host↔Client RPC**:Host 通过 `connection.rpc.handle("/dsh-code-ui", handler)` 注册文件系统/引用/备注端点;Client 通过 `connection.rpc.call("/dsh-code-ui", endpoint, payload)` 调用。RPC 返回值遵循 DSH 的 `RpcResult` 协议(`{ ok: true, value }` / `{ ok: false, error }`)。
74
- - **模型工具**:注册 `get_referenced_snippets`,让 AI 读取用户标记的代码片段。
75
- - **Client UI**:`window.__ModuleLoader__.load({ id, factory })` 注册,React 通过 `require("react")` 获取,slot 通过 `ctx.get("slots")` 注册(`shell.overlay`),样式用 `--dsw-alias-*` 主题变量。
76
-
77
- ## 二次开发
78
-
79
- - `lib/index.js`:改文件读写、引用/备注存储、或新增 RPC 端点(在 `connection.rpc.handle` 的 handler 里加 `if (endpoint === ...)`)
80
- - `lib/client.js`:改编辑器 UI 布局、配色(`styles` 模板串里的 CSS)、或新增右键菜单项
81
- - 引用/备注数据存模块内存(运行期有效,重启清空)
82
-
83
- ## 发布
84
-
85
- ```bash
86
- npm publish --dry-run
87
- npm publish
88
- ```
89
-
90
- 发布前确认 `name` 未被占用,必要时改为 scope 如 `@yourname/dsh-code-ui`。
91
-
92
- ## License
93
-
94
- MIT
1
+ # dsh-code-ui
2
+
3
+ 在 DeepSeek Harness(DSH)里的 **Cursor 风格 AI 代码编辑器**插件:文件树、多标签页编辑、语法高亮、引用/翻译给 AI。
4
+
5
+ 它把 Cursor 那种「边看代码、边跟 AI 对话」的体验搬进 DSH:一个带活动栏、文件树、多标签页编辑器的代码工作区。**v1.2.0 起支持两种布局**:右侧停靠(code UI 固定占屏幕右侧、与聊天并排,默认)或悬浮窗口(可拖拽浮动窗口,内嵌 AI 输入框),插件卡片里可随时切换。
6
+
7
+ ## 功能
8
+
9
+ - **双布局可选**:右侧停靠(默认,与聊天并排) / 悬浮窗口(可拖拽缩放),插件卡片切换、即时生效
10
+ - **切换按钮可选**:会话头 `⌨ code UI` 按钮(默认) / 悬浮模式条,与布局任意组合
11
+ - **界面模式可持久化**:code UI / dsh UI(隐藏编辑器回归原生界面),所有入口切换均同步记忆
12
+ - **Cursor 风格工作区**:活动栏 + 文件树侧边栏 + 多标签页编辑器 + 状态栏
13
+ - **侧栏收起与调宽**:« 按钮 / 📁 三态 / 拖到最窄自动收起,» 把手展开,右缘拖拽调宽
14
+ - **停靠面板拖宽**:左缘手柄实时调整面板宽度,DSH 界面自动跟随
15
+ - **语法高亮**:内联轻量 tokenizer,覆盖 JS/TS/Python/HTML/CSS 等,token 色随主题两套配色
16
+ - **文件浏览与编辑**:展开目录、打开文件、直接编辑、`Ctrl+S` 保存写回磁盘;外部修改自动同步
17
+ - **选中代码右键**:
18
+ - 📋 复制
19
+ - 📥 粘贴到备注
20
+ - 📝 添加备注
21
+ - 🌐 翻译(创建翻译引用,交给 AI 翻译)
22
+ - 🔗 引用给 AI
23
+ - **引用 chip**:引用后输入框上方显示 `文件名(起行-止行)` + ✕,删除引用
24
+ - **内嵌 AI 输入框**(悬浮布局):直接输入、`Ctrl+Enter` 发送;发送时不粘贴引用正文,只附一行引用指针,内容由 AI 调用 `get_referenced_snippets` 工具读取
25
+ - **主题四态**:跟随 DSH(默认)/ 跟随系统 / 浅色 / 深色,插件卡片切换
26
+ - **以此文件夹为根**:文件浏览器里可选任意目录作为工作区根
27
+ - **检查更新 / 一键更新**:设置 → 插件 → 插件配置 中的 dsh-code-ui 卡片,支持在线检查 npm 新版本并一键更新;未发布/开发期可填本地 `.tgz` 路径安装(pnpm 流式进度展示,失败自动归类给出建议,完成后提示重启 DSH 生效)
28
+
29
+ ## 安装
30
+
31
+ 通过 `dsh plugin` 一键安装(已声明 `dsh.bundle`):
32
+
33
+ ```bash
34
+ dsh plugin --profile web add dsh-code-ui
35
+ ```
36
+
37
+ 安装完成后重启 DSH,会话标题栏出现 `⌨ code UI` 按钮,点击即可打开右侧停靠的编辑器(默认);也可在插件卡片改为悬浮窗口布局与悬浮模式条切换。
38
+
39
+ 或手动安装:
40
+
41
+ ```bash
42
+ cd $DSH_HOME/profiles # Windows: %USERPROFILE%\.dsh\profiles
43
+ npm install dsh-code-ui
44
+ ```
45
+
46
+ 然后在 `cordis.patch.yml` 追加:
47
+
48
+ ```yaml
49
+ - insert:
50
+ - id: dsh-code-ui
51
+ name: 'dsh-code-ui'
52
+ ```
53
+
54
+ ## 使用
55
+
56
+ 1. 点会话标题栏 `⌨ code UI` 按钮打开编辑器(默认右侧停靠;悬浮布局则用顶部悬浮模式条)
57
+ 2. 在文件树/浏览器里打开文件
58
+ 3. 选中代码右键 → 引用 / 翻译 / 备注 / 复制
59
+ 4. 悬浮布局底部输入框直接发消息(`Ctrl+Enter` 发送);停靠布局用 DSH 原生输入条,引用只以标签显示,正文由 AI 工具读取
60
+ 5. 也可对 AI 说「读取我引用的代码」,AI 会调用 `get_referenced_snippets` 工具
61
+
62
+ ## 目录结构
63
+
64
+ ```
65
+ dsh-code-ui/
66
+ ├── package.json # 包声明(含 dsh.bundle.patch / dsh.client)
67
+ ├── lib/
68
+ │ ├── index.js # Host 端:connection.rpc 文件/引用/备注 RPC + get_referenced_snippets 工具
69
+ │ └── client.js # Client 端:__ModuleLoader__ + 编辑器 UI
70
+ └── cordis.patch.yml # bundle 插接层
71
+ ```
72
+
73
+ 纯 JavaScript 手写实现,无需构建,可直接 `npm publish`。
74
+
75
+ ## 实现说明
76
+
77
+ - **Host↔Client RPC**:Host 通过 `connection.rpc.handle("/dsh-code-ui", handler)` 注册文件系统/引用/备注端点;Client 通过 `connection.rpc.call("/dsh-code-ui", endpoint, payload)` 调用。RPC 返回值遵循 DSH 的 `RpcResult` 协议(`{ ok: true, value }` / `{ ok: false, error }`)。
78
+ - **模型工具**:注册 `get_referenced_snippets`,让 AI 读取用户标记的代码片段。
79
+ - **Client UI**:`window.__ModuleLoader__.load({ id, factory })` 注册,React 通过 `require("react")` 获取,slot 通过 `ctx.get("slots")` 注册(`shell.overlay`),样式用 `--dsw-alias-*` 主题变量。
80
+
81
+ ## 二次开发
82
+
83
+ - `lib/index.js`:改文件读写、引用/备注存储、或新增 RPC 端点(在 `connection.rpc.handle` 的 handler 里加 `if (endpoint === ...)`)
84
+ - `lib/client.js`:改编辑器 UI 布局、配色(`styles` 模板串里的 CSS)、或新增右键菜单项
85
+ - 引用/备注数据存模块内存(运行期有效,重启清空)
86
+
87
+ ## 发布
88
+
89
+ ```bash
90
+ npm publish --dry-run
91
+ npm publish
92
+ ```
93
+
94
+ 发布前确认 `name` 未被占用,必要时改为 scope 如 `@yourname/dsh-code-ui`。
95
+
96
+ ## 更新日志
97
+
98
+ > 约定:每次版本升级在本节顶部追加一行(时间 | 版本 | 修复/新增内容)。
99
+
100
+ | 时间 | 版本 | 修复 / 新增 |
101
+ | --- | --- | --- |
102
+ | 2026-09-02 | v1.2.0 | 里程碑:双布局与全面可配置。新增右侧停靠布局(code UI 固定占右侧、DSH 界面推到左侧并排,Cursor 式;左缘拖拽实时调宽,壳层帧用 [data-slot=root] 语义属性定位 + 内联 margin-right 推挤);插件卡片新增「布局模式」(右侧停靠=默认 / 悬浮窗口)、「界面模式」(code UI / dsh UI,状态持久化、所有入口同步记忆)、「切换按钮」(会话头 ⌨ 按钮=默认 / 悬浮模式条,与布局任意组合),全部即时生效 + 持久化;文件树侧栏可收起(« / 📁 三态 / 拖窄收起)+ » 展开把手 + 右缘拖宽;侧栏标题不折行;停靠面板去投影;界面文案更名(Code UI→code UI、原始风格-ui→dsh UI);悬浮布局也获得侧栏收起/调宽能力 |
103
+ | 2026-09-02 | v1.2.0-beta.1 | 里程碑:右侧停靠模式(feature/native-layout 分支)--会话头「⌨ Code UI」开关按钮,Code UI 固定占右侧、DSH 界面推到左侧并排(Cursor 式布局);左缘拖拽实时调宽;文件树侧栏可收起(« 按钮 / 📁 三态 / 拖到最窄松手收起)+ » 展开把手 + 右缘拖拽调宽;侧栏标题不折行;移除停靠面板投影。推挤采用 [data-slot=root] 语义属性 + 内联 margin-right,不依赖哈希类名 |
104
+ | 2026-09-01 | v1.1.10 | 调整:底部状态栏不再用反色按钮样式,改用输入框同款背景(bg-overlay)+ 次要文字色 + 顶部分隔线,深浅色模式下均与编辑器融为一体 |
105
+ | 2026-09-01 | v1.1.9 | 修复:反色按钮文字色随主题反转(浅色=黑底白字 / 深色=白底黑字)——选中模式标签、发送按钮、状态栏等此前文字硬编码白色,DSH 深色下 brand-primary 为近白导致白底白字不可见;语法高亮 token 色改为随主题两套配色(浅色背景不再看不清代码);「跟随 DSH」模式下实时监听宿主外观切换 token 色 |
106
+ | 2026-09-01 | v1.1.8 | 修复:主题默认值改为「跟随 DSH」(恢复随宿主外观的原行为,避免系统浅色+DSH 深色时编辑器意外变浅色);补上文件树/标签栏遗漏的 --dsw-specific-sidebar-fill 变量(修复"只有目录是深色"的混色);主题选项变四态:跟随 DSH / 跟随系统 / 浅色 / 深色 |
107
+ | 2026-09-01 | v1.1.7 | 新增:编辑器主题三模式(浅色/深色/跟随系统)--卡片内切换、即时生效、局部换肤不影响 DSH 其他界面、跟随系统实时响应 OS 外观;仓库公开化清理并重建 git 历史(.git 曾被意外重置,代码无损) |
108
+ | 2026-08-31 | v1.1.6 | 新增:外部修改自动同步--host 端 fs.watch 监听已打开文件,编辑器 1 秒内自动刷新;有未保存修改时标 ⚡ 徽标手动加载;自写保存回声抑制 |
109
+ | 2026-08-31 | v1.1.5 | 新增:无会话时输入框给出明确提示(常驻警告行 + 置灰按钮点击弹原因 + Ctrl+Enter 兜底提示) |
110
+ | 2026-08-28 | v1.1.4 | 新增:卡片内编辑器启用/禁用开关,切换即时挂载/卸载(无需重启/刷新),状态持久化 |
111
+ | 2026-08-28 | v1.1.3 | 改进:引用/翻译统一标签制--翻译引用加 🌐 标签,引用不再把代码正文粘贴进消息,AI 经工具读取 |
112
+ | 2026-08-28 | v1.1.2 | 改进:插件配置卡片样式与宿主卡片(PluginCard/fields)逐条统一 |
113
+ | 2026-08-28 | v1.1.1 | 修复:插件配置卡片不显示--补 host 端 settings 命名空间注册 + client inject 边 |
114
+ | 2026-08-27 | v1.1.0 | 新增:检查更新 / 一键更新 / 本地包安装(pnpm 流式进度、失败诊断、防降级) |
115
+ | 2026-08-27 | v1.0.1 | 改进:标准化 npm 插件包结构(dsh.bundle 声明、可 `dsh plugin add` 安装) |
116
+ | 2026-08-26 | v1.0.0 | 初版:Cursor 风格工作区(文件树、多标签、语法高亮、引用/备注/翻译、内嵌 AI 输入框) |
117
+
118
+ ## License
119
+
120
+ MIT