dsh-coding-sidebar 1.0.2 → 1.0.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 +27 -42
- package/lib/client-editor.js +449 -4278
- package/lib/client-registry.js +641 -1343
- package/lib/client-terminal.js +172 -262
- package/lib/client.js +645 -1347
- package/lib/index.js +24 -122
- package/lib/types/bundle-route.d.ts +1 -1
- package/lib/types/client/SideCardSection.d.ts +3 -3
- package/lib/types/client/TextEditor.d.ts +20 -10
- package/lib/types/client/add-plugin-modal.d.ts +0 -4
- package/lib/types/client/api.d.ts +8 -11
- package/lib/types/client/builtins/index.d.ts +10 -10
- package/lib/types/client/chunk-loader.d.ts +7 -8
- package/lib/types/client/locales.d.ts +0 -26
- package/lib/types/client/native-avoid.d.ts +2 -0
- package/lib/types/client/plugins-shared.d.ts +6 -6
- package/lib/types/client/service.d.ts +13 -83
- package/lib/types/context-types.d.ts +19 -10
- package/lib/types/index.d.ts +1 -1
- package/lib/types/prefs-shared.d.ts +1 -24
- package/package.json +26 -30
- package/src/bundle-route.ts +1 -1
- package/src/client/EditorHost.tsx +52 -122
- package/src/client/SandboxStatusBar.tsx +12 -9
- package/src/client/SideCardSection.module.css +2 -2
- package/src/client/SideCardSection.tsx +28 -81
- package/src/client/SideChatView.module.css +12 -12
- package/src/client/TextEditor.tsx +89 -266
- package/src/client/add-plugin-modal.tsx +16 -24
- package/src/client/api.ts +1 -25
- package/src/client/builtins/index.ts +10 -14
- package/src/client/chunk-loader.ts +7 -8
- package/src/client/index.tsx +12 -3
- package/src/client/locales-ar.ts +0 -6
- package/src/client/locales-de.ts +0 -6
- package/src/client/locales-fr.ts +0 -6
- package/src/client/locales-hi.ts +0 -6
- package/src/client/locales-id.ts +0 -6
- package/src/client/locales-it.ts +0 -6
- package/src/client/locales-ja.ts +0 -6
- package/src/client/locales-ko.ts +0 -6
- package/src/client/locales-nl.ts +0 -6
- package/src/client/locales-pl.ts +0 -6
- package/src/client/locales-pt.ts +0 -6
- package/src/client/locales-ru.ts +0 -6
- package/src/client/locales-sv.ts +0 -6
- package/src/client/locales-th.ts +0 -6
- package/src/client/locales-tr.ts +0 -6
- package/src/client/locales-vi.ts +0 -6
- package/src/client/locales-zh-HK.ts +0 -6
- package/src/client/locales-zh-MO.ts +0 -6
- package/src/client/locales-zh-TW.ts +0 -6
- package/src/client/locales.ts +0 -52
- package/src/client/native-avoid.ts +155 -0
- package/src/client/plugins-shared.ts +6 -6
- package/src/client/prefs.ts +0 -7
- package/src/client/service.ts +13 -150
- package/src/client/sidebar.module.css +1 -425
- package/src/config.ts +1 -4
- package/src/context-types.ts +12 -7
- package/src/index.ts +12 -78
- package/src/jobs-routes.ts +3 -2
- package/src/prefs-shared.ts +1 -27
- package/src/sidechat-routes.ts +13 -8
- package/src/subagent-live-route.ts +2 -1
- package/lib/client-mermaid.js +0 -200753
- package/lib/types/client/MarkdownHtml.d.ts +0 -32
- package/lib/types/client/PdfView.d.ts +0 -6
- package/lib/types/client/builtins/viewers.d.ts +0 -3
- package/lib/types/client/chunks/mermaid.d.ts +0 -10
- package/lib/types/client/editor-load.d.ts +0 -66
- package/lib/types/client/image-types.d.ts +0 -3
- package/lib/types/client/markdown-html.d.ts +0 -96
- package/lib/types/client/markdown-images.d.ts +0 -45
- package/lib/types/client/md-toc.d.ts +0 -4
- package/lib/types/client/mermaid-blocks.d.ts +0 -47
- package/lib/types/client/mermaid-sanitize.d.ts +0 -2
- package/lib/types/client/mermaid.d.ts +0 -12
- package/lib/types/client/pdf-types.d.ts +0 -2
- package/lib/types/client/plugins-viewers.d.ts +0 -3
- package/lib/types/html-route.d.ts +0 -59
- package/src/client/MarkdownHtml.tsx +0 -296
- package/src/client/PdfView.tsx +0 -110
- package/src/client/builtins/viewers.tsx +0 -125
- package/src/client/chunks/mermaid.tsx +0 -10
- package/src/client/editor-load.ts +0 -92
- package/src/client/image-types.ts +0 -8
- package/src/client/markdown-html.ts +0 -331
- package/src/client/markdown-images.ts +0 -137
- package/src/client/md-toc.tsx +0 -127
- package/src/client/mermaid-blocks.ts +0 -110
- package/src/client/mermaid-sanitize.ts +0 -93
- package/src/client/mermaid.tsx +0 -406
- package/src/client/pdf-types.ts +0 -4
- package/src/client/plugins-viewers.ts +0 -30
- package/src/html-route.ts +0 -106
package/README.md
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
<a href="https://www.npmjs.com/package/dsh-coding-sidebar"><img alt="npm downloads" src="https://img.shields.io/npm/dm/dsh-coding-sidebar" /></a>
|
|
8
8
|
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" /></a>
|
|
9
9
|
<br /><br />
|
|
10
|
-
<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.
|
|
10
|
+
<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.5-rc.2" src="https://img.shields.io/badge/DSH-0.1.5--rc.2-4d6bfe" /></a>
|
|
11
11
|
<a href="https://github.com/topics/dsh-coding-sidebar"><img alt="插件生态:GitHub topic dsh-coding-sidebar" src="https://img.shields.io/badge/%E6%8F%92%E4%BB%B6%E7%94%9F%E6%80%81-topic%20dsh--coding--sidebar-4d6bfe" /></a><br /><br />
|
|
12
|
-
<img alt="文件管理" src="https://img.shields.io/badge/-文件管理-4d6bfe" /> <img alt="
|
|
12
|
+
<img alt="文件管理" src="https://img.shields.io/badge/-文件管理-4d6bfe" /> <img alt="代码编辑" src="https://img.shields.io/badge/-代码编辑-4d6bfe" /> <img alt="内嵌浏览器" src="https://img.shields.io/badge/-内嵌浏览器-4d6bfe" /> <img alt="真实终端" src="https://img.shields.io/badge/-真实终端-4d6bfe" /> <img alt="Git 面板" src="https://img.shields.io/badge/-Git%20面板-4d6bfe" /> <img alt="后台任务" src="https://img.shields.io/badge/-后台任务-4d6bfe" /> <img alt="侧边对话" src="https://img.shields.io/badge/-侧边对话-4d6bfe" /> <img alt="插件接入" src="https://img.shields.io/badge/-插件接入-4d6bfe" /><br /><br />
|
|
13
13
|
<b>右侧栏工作台</b>,并把 <code>ctx.betterSidebar</code> 服务开放给所有插件——<br />
|
|
14
|
-
通过 <code>registerTab</code>
|
|
14
|
+
通过 <code>registerTab</code> 注册新的侧边栏页面;文件预览由 DSH 内置能力承担。
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
17
|
<div align="center">
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
## ✨ 功能一览
|
|
38
38
|
|
|
39
|
-
- **🗂️ 文件工作台**:资源管理器(懒加载目录树;软链接按目标类型展示——目录软链接可展开、失效链接标红)+ CodeMirror
|
|
39
|
+
- **🗂️ 文件工作台**:资源管理器(懒加载目录树;软链接按目标类型展示——目录软链接可展开、失效链接标红)+ CodeMirror 编辑器(纯编辑:行号 / 自动换行 / 语法高亮 / Ctrl+S 保存);文件预览由 DSH 内置能力承担
|
|
40
40
|
- **🌐 内嵌浏览器**:多开网页 tab,后退 / 前进 / 刷新;内容运行在沙箱 iframe;外链默认按协议分流——HTTP 在侧边栏打开、HTTPS 走系统浏览器(设置页可分别调整)
|
|
41
41
|
- **💻 真实终端**:xterm.js + node-pty 真实 shell,断线重连回放;可选为模型注入 `terminal_*` 工具
|
|
42
42
|
- **📂 模型侧边栏打开(可选)**:全局设置开启后注入 `sidebar_open` 工具——模型可主动在侧边栏打开文件 / 文件夹(树以该目录为根)/ HTTP(S) 网页
|
|
@@ -46,19 +46,20 @@
|
|
|
46
46
|
- **🪟 分栏与自由窗口**:侧边栏内拖 Tab 拆分 / 合并分栏;把 tab 拖到主会话区域变为可移动 / 缩放 / 置顶的自由窗口,移动端自动合并全宽抽屉
|
|
47
47
|
- **🪟 自由窗口**:把标签栏的任一 tab 拖到主会话区域——成为可移动 / 缩放 / 置顶的悬浮窗口(默认 390×780),拖回侧边栏 pane 即停靠,随会话持久化;`features` 含 `'floatWindows'`,插件 tab 无差别支持
|
|
48
48
|
- **📌 固定终端**:右键终端 Tab 可「固定到工作区 / 固定到全局」——固定后切换会话不消失,在 TabBar 内联呈现(跨会话虚拟 Tab,点击就地激活,PTY 按 home 会话 id+tab 直连宿主 PTY,无需切回宿主会话);Agent 终端被 reconcile 移除时豁免保留
|
|
49
|
+
- **🤝 原生侧边栏避让**:DSH 原生侧边栏展开时,展开中的侧边栏面板自动收起让出空间(避免页面被切成多栏);原生侧边栏关闭后自动恢复展开。用户手动开关始终优先,面板归属即时移交
|
|
49
50
|
- **🔁 会话隔离**:布局 / Tab / 面板按会话持久化,陈旧状态自动净化
|
|
50
51
|
- **⚙️ 声明式设置**:设置页「侧边卡片」逐项独立开关,二级设置经齿轮弹窗
|
|
51
|
-
- **⚡ 按需加载**:启动只拉 ~325KB 核心,终端 /
|
|
52
|
+
- **⚡ 按需加载**:启动只拉 ~325KB 核心,终端 / 编辑器等重依赖用到才按需拉取([设计文档](docs/plans/2026-08-12-lazy-chunks-design.md))
|
|
52
53
|
- **🌏 多语言**:界面文案跟随 DSH 语言(zh / en)实时切换;安装 `@huanlin/dsh-plugin-better-locale` 后支持日语(ja)等第三语言覆盖(见下方「🌏 第三语言覆盖」)
|
|
53
54
|
|
|
54
|
-
> 🔌 **核心理念**:服务优先——内置的 7 tab
|
|
55
|
+
> 🔌 **核心理念**:服务优先——内置的 7 tab 与第三方插件通过同一套 `ctx.betterSidebar` API 注册,能力完全对等;官方不再内置、可由生态提供的功能,交由生态插件实现(已有 **28+ 生态插件**,见下方「🌐 插件生态」);文件预览自 v1.0.4 起由 DSH 内置能力承担。接入文档见「🔌 服务化扩展」。
|
|
55
56
|
|
|
56
57
|
## 🚀 安装
|
|
57
58
|
|
|
58
59
|
**前置**:已装好 DSH(`dsh web` 能正常运行),Node.js ≥ 20、pnpm ≥ 10。
|
|
59
60
|
|
|
60
61
|
**支持的 DSH 版本**:
|
|
61
|
-
<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.
|
|
62
|
+
<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.5-rc.2" src="https://img.shields.io/badge/DSH-0.1.5--rc.2-4d6bfe" /></a>
|
|
62
63
|
|
|
63
64
|
```sh
|
|
64
65
|
dsh plugin --profile web add dsh-coding-sidebar@latest # 首次会因 pnpm 11 拦截 node-pty 构建脚本而失败(依赖已写入)
|
|
@@ -154,16 +155,15 @@ dsh registry enable dsh-external/dsh-coding-sidebar
|
|
|
154
155
|
|
|
155
156
|
| | |
|
|
156
157
|
|---|---|
|
|
157
|
-
| **🗂️
|
|
158
|
-
| **🖥️ CodeMirror 代码编辑器**<br/><div align="center"><img width="420" alt="CodeMirror 代码编辑器" src="https://github.com/user-attachments/assets/b44b488e-568c-4ee0-b96c-e9c906598a77" /></div> | **🖼️ 图片内联预览**<br/><div align="center"><img width="420" alt="图片内联预览" src="https://github.com/user-attachments/assets/f9a58c30-5b7a-48b5-9e22-37d7e071f593" /></div> |
|
|
158
|
+
| **🗂️ 文件工作台:资源管理器 + 编辑器**<br/><sub>支持两种格式的资源管理器:内嵌在编辑器中 / 独立显示文件树。懒加载目录树、软链接按目标类型展示(目录软链接可展开、失效链接标红)、全局文件名搜索、上传文件/文件夹与拖放上传、右键菜单(在新 Tab 打开 / 在侧边打开 / 复制路径)、悬浮 `@文件` 一键引用进输入框。</sub><br/><div align="center"><img width="420" alt="文件资源管理器" src="https://github.com/user-attachments/assets/a410bfd2-a8ba-43e6-873e-22417756e94d" /></div> | **🖥️ CodeMirror 代码编辑器**<br/><sub>纯编辑:行号 / 自动换行 / 语法高亮 / Ctrl+S 保存;文件预览由 DSH 内置能力承担(v1.0.4 起侧边栏预览线退役)。</sub><br/><div align="center"><img width="420" alt="CodeMirror 代码编辑器" src="https://github.com/user-attachments/assets/b44b488e-568c-4ee0-b96c-e9c906598a77" /></div> |
|
|
159
159
|
| **💻 真实终端**<br/><sub>xterm.js + node-pty 真实 shell(不是模拟器):断线重连 transcript 回放、shell / shellArgs 可配置(设置页或 `cordis.patch.yml`)、可选为模型注入 `terminal_*` 工具(agent 可直接开终端跑命令)。</sub><br/><div align="center"><img width="420" alt="真实终端" src="https://github.com/user-attachments/assets/0dad6ad3-ff3f-4b5a-86d2-f832ce65323e" /></div> | **🌿 Git 面板**<br/><sub>暂存 / 取消暂存 / 提交(`Ctrl+Enter`)/ 还原,历史列表;点击改动文件打开 **VSCode 式 diff tab**(红绿行级对比)。</sub><br/><div align="center"><img width="420" alt="Git 面板" src="https://github.com/user-attachments/assets/e7fc1220-305f-4bca-8583-e77ab4f4fa78" /></div> |
|
|
160
160
|
| **🌐 内嵌浏览器**<br/><sub>多开网页 tab:后退 / 前进 / 刷新 / 地址栏;内容运行在**不透明源沙箱 iframe**(界面实时显示沙箱状态,可按页面临时解锁);聊天里的外链点击可被接管到侧边栏打开(按协议分流,可配)。</sub><br/><div align="center"><img width="420" alt="内嵌浏览器" src="https://github.com/user-attachments/assets/9bc6b65a-64fc-4942-a685-76e391e55606" /></div> | **🧩 任务页:子代理拓扑 + 后台任务**<br/><sub>子代理树实时拓扑(运行状态、批量实时预览)+ 后台任务清单(退出码 / 实时输出 / 强制终止);新子代理 / 新任务可自动展开侧边栏(可关)。条目过多时默认只展开最新 5 条子代理 / 3 条后台任务,历史一键折叠展开。</sub><br/><div align="center"><img width="420" alt="任务页:子代理拓扑" src="https://github.com/user-attachments/assets/dcd8ed2f-59fa-405b-937b-2d250f5034dd" /></div> |
|
|
161
161
|
| **💬 侧边对话(beta)**<br/><sub>Codex 风格侧边线程:**每个对话一个独立 Tab**;线程继承主会话完整上下文(含进行中回合,以 interrupted 诚实冻结)独立运行,不污染主会话;可持续追问、重启冷恢复;一键「保存为新会话」提升为顶层会话。</sub><br/><div align="center"><img width="420" alt="侧边对话(beta)" src="https://github.com/user-attachments/assets/3a338c36-f5de-4000-95f3-4b1cd04f60fc" /></div> | **🪟 分栏与自由窗口**<br/><sub>侧边栏内拖 Tab 到分栏边缘**拆分**、拖到中间**合并**;把 tab 拖到主会话区域可变为**自由窗口**(悬浮 / 缩放 / 置顶,拖回 pane 停靠)。</sub> |
|
|
162
|
-
| **⚙️ 声明式设置**<br/><sub>设置页「侧边卡片」分区:每个 tab
|
|
162
|
+
| **⚙️ 声明式设置**<br/><sub>设置页「侧边卡片」分区:每个 tab 一张小卡片,独立开关(高亮启用态 + 品牌开关滑块);二级设置经卡片底部「功能设置」条弹窗(开关 / 文本 / 数字 / 下拉);插件自有设置持久化在 `pluginSettings`。</sub><br/><div align="center"><img width="420" alt="声明式设置:侧边卡片" src="https://github.com/user-attachments/assets/0800ca64-621e-48da-b7df-aecfddc3ec29" /></div> | **📱 移动端**<br/><sub>窄屏(<768px)自动切换为全宽抽屉:底栏 tab 一次性并入右侧栏,触屏拖拽可调。</sub><br/><div align="center"><img width="360" alt="移动端全宽抽屉" src="https://github.com/user-attachments/assets/a82ba78a-f4cf-4d85-80e8-050a05beb144" /></div> |
|
|
163
163
|
|
|
164
164
|
## 🌐 插件生态
|
|
165
165
|
|
|
166
|
-
`ctx.betterSidebar`
|
|
166
|
+
`ctx.betterSidebar` 服务向所有插件开放扩展点:**`registerTab`(注册侧边栏页面)**。内置 7 tab 与第三方插件走同一套 API,能力完全对等。(v1.0.4 起 `registerFileViewer` 预览器扩展点退役——文件预览由 DSH 内置能力承担。)
|
|
167
167
|
|
|
168
168
|
```ts
|
|
169
169
|
import type {} from 'dsh-coding-sidebar' // 触发 ctx.betterSidebar 类型合并
|
|
@@ -172,11 +172,6 @@ export function apply(ctx: Context) {
|
|
|
172
172
|
ctx.effect(() => ctx.betterSidebar.registerTab({
|
|
173
173
|
id: 'my-plugin:db', title: 'Database', component: ({ scope }) => <DbView sessionId={scope.sessionId} />,
|
|
174
174
|
}))
|
|
175
|
-
ctx.effect(() => ctx.betterSidebar.registerFileViewer({
|
|
176
|
-
id: 'my-plugin:csv', exts: ['csv'], fetchStrategy: 'custom',
|
|
177
|
-
load: async (path, scope) => parseCsv(await fetchText(scope, path)),
|
|
178
|
-
component: ({ customData }) => <CsvGrid rows={customData} />,
|
|
179
|
-
}))
|
|
180
175
|
}
|
|
181
176
|
```
|
|
182
177
|
|
|
@@ -221,18 +216,9 @@ GitHub topic [`dsh-coding-sidebar`](https://github.com/topics/dsh-coding-sidebar
|
|
|
221
216
|
|
|
222
217
|
</details>
|
|
223
218
|
|
|
224
|
-
### 🖼️
|
|
225
|
-
|
|
226
|
-
<details>
|
|
227
|
-
<summary><b>3 个插件(点击展开)</b></summary>
|
|
219
|
+
### 🖼️ 文件预览插件(随预览线退役)
|
|
228
220
|
|
|
229
|
-
|
|
230
|
-
|---|---|---|
|
|
231
|
-
| [HuanLinOTO/dsh-plugin-better-sidebar-plugin-office](https://github.com/HuanLinOTO/dsh-plugin-better-sidebar-plugin-office) | <img alt="stars" src="https://img.shields.io/github/stars/HuanLinOTO/dsh-plugin-better-sidebar-plugin-office?style=flat&color=4d6bfe" /> | Office 三件套预览(.docx / .xlsx / .pptx),独立 bundle 瘦身主体(官方推荐目录收录) |
|
|
232
|
-
| [zemul/dsh-video-preview](https://github.com/zemul/dsh-video-preview) | <img alt="stars" src="https://img.shields.io/github/stars/zemul/dsh-video-preview?style=flat&color=4d6bfe" /> | 视频内联预览:.mp4 / .webm / .mov / .mkv / .avi,自带 /video 路由支持 HTTP Range 拖进度条 |
|
|
233
|
-
| [dong-victor/dsh-coding-sidebar-jupyter](https://github.com/dong-victor/dsh-coding-sidebar-jupyter) | <img alt="stars" src="https://img.shields.io/github/stars/dong-victor/dsh-coding-sidebar-jupyter?style=flat&color=4d6bfe" /> | `.ipynb` 可运行 Notebook 视图:懒启动 Python kernel、流式输出、保存回写 |
|
|
234
|
-
|
|
235
|
-
</details>
|
|
221
|
+
v1.0.4 起侧边栏不再承载文件预览(DSH 0.1.5-rc.2 内置预览已完善),`registerFileViewer` 扩展点同步退役:此前的 Office 预览 / 视频预览 / Jupyter 等预览类插件不再受支持,请改用 DSH 内置预览;文本文件仍可在侧边栏编辑器中编辑,其他二进制走下载兜底。
|
|
236
222
|
|
|
237
223
|
### 🧰 增强与工具
|
|
238
224
|
|
|
@@ -246,11 +232,11 @@ GitHub topic [`dsh-coding-sidebar`](https://github.com/topics/dsh-coding-sidebar
|
|
|
246
232
|
|
|
247
233
|
</details>
|
|
248
234
|
|
|
249
|
-
> 📣 **上架你的插件**:给仓库打上 `dsh-coding-sidebar` topic 即出现在 [topic 页](https://github.com/topics/dsh-coding-sidebar);再向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts)
|
|
235
|
+
> 📣 **上架你的插件**:给仓库打上 `dsh-coding-sidebar` topic 即出现在 [topic 页](https://github.com/topics/dsh-coding-sidebar);再向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts) 提一条 `PluginEntry` PR,即可进入设置页内置推荐目录。
|
|
250
236
|
|
|
251
237
|
## 🆕 最近更新
|
|
252
238
|
|
|
253
|
-
**支持的 DSH 版本**:<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.
|
|
239
|
+
**支持的 DSH 版本**:<a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.5-rc.2" src="https://img.shields.io/badge/DSH-0.1.5--rc.2-4d6bfe" /></a> · 完整发布历史见 [Releases](https://github.com/kkutysllb/dsh-coding-sidebar/releases)
|
|
254
240
|
|
|
255
241
|
### v0.17.1
|
|
256
242
|
|
|
@@ -443,7 +429,7 @@ GitHub topic [`dsh-coding-sidebar`](https://github.com/topics/dsh-coding-sidebar
|
|
|
443
429
|
|
|
444
430
|
## 🔌 服务化扩展
|
|
445
431
|
|
|
446
|
-
从 v0.4.0 起暴露 `ctx.betterSidebar`
|
|
432
|
+
从 v0.4.0 起暴露 `ctx.betterSidebar` 服务,其他插件可注册侧边栏页面(内置 7 tab 亦通过同一服务注册;v1.0.4 起文件预览器扩展点退役,预览由 DSH 内置能力承担)。v0.12.1 补齐基座能力(完整类型导出、能力探测、状态订阅、tab 角标、生命周期回调、定向打开、插件自有设置等)。
|
|
447
433
|
|
|
448
434
|
完整接入文档:
|
|
449
435
|
- **[`AGENTS.md`](./AGENTS.md)**——仓库内维护的接入文档(全字段、匹配算法、HMR 陷阱、声明式设置、版本探测);
|
|
@@ -451,35 +437,34 @@ GitHub topic [`dsh-coding-sidebar`](https://github.com/topics/dsh-coding-sidebar
|
|
|
451
437
|
|
|
452
438
|
### ➕ 添加插件(推荐插件目录)
|
|
453
439
|
|
|
454
|
-
|
|
440
|
+
设置页「侧边卡片」「侧边栏内容」网格末尾的**虚线卡片**打开 Tab 插件弹窗:声明扩展点、「**在 GitHub 上浏览更多插件**」按钮([GitHub topic `dsh-coding-sidebar`](https://github.com/topics/dsh-coding-sidebar))、推荐插件目录(名字 / 仓库 / 简介 / 安装脚本),每个条目「**跳转**」直达仓库、「**复制**」把安装命令写入剪贴板。
|
|
455
441
|
|
|
456
|
-
**收录新插件**:向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts)
|
|
442
|
+
**收录新插件**:向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts) 追加一条 `PluginEntry`,并把仓库打上 `dsh-coding-sidebar` topic。
|
|
457
443
|
|
|
458
444
|
## 🛠️ 开发与构建
|
|
459
445
|
|
|
460
446
|
```sh
|
|
461
|
-
pnpm install # @deepseek-ai/* devDependencies 已发布 0.1.
|
|
447
|
+
pnpm install # @deepseek-ai/* devDependencies 已发布 0.1.5-rc.2,直接解析、无需令牌
|
|
462
448
|
pnpm typecheck # tsc --noEmit
|
|
463
|
-
pnpm build # → lib/index.js + lib/invariant.js + lib/client.js + lib/client-registry.js + lib/types
|
|
449
|
+
pnpm build # → lib/index.js + lib/invariant.js + lib/client.js + lib/client-registry.js + lib/client-terminal.js + lib/client-editor.js + lib/types
|
|
464
450
|
pnpm test # vitest(含 manifest 一致性守卫,需先 build)
|
|
465
451
|
pnpm watch # tsdown --watch
|
|
466
452
|
```
|
|
467
453
|
|
|
468
|
-
**架构**:单 npm 包、host/client 双半结构——host(`src/index.ts`):`/sidebar/api/*` JSON API、`/sidebar/file`
|
|
454
|
+
**架构**:单 npm 包、host/client 双半结构——host(`src/index.ts`):`/sidebar/api/*` JSON API、`/sidebar/file` 文件字节路由、`/sidebar/ws/terminal` WebSocket(fs / git / pty,全部会话级 + 信任围栏);client(`src/client/index.tsx`):portal 侧边栏 + 各视图 + 拦截;状态按会话持久化 localStorage。插件按 DSH 官方规范组织(无 default 导出、双 client bundle),运行期不依赖 npm / checkout(`@deepseek-ai/*` 由 web profile 提供)。
|
|
469
455
|
|
|
470
456
|
## 🔐 安全
|
|
471
457
|
|
|
472
|
-
- 路由受 Host 头信任围栏保护(与 `/api` 一致);`fs.write`
|
|
473
|
-
-
|
|
474
|
-
-
|
|
458
|
+
- 路由受 Host 头信任围栏保护(与 `/api` 一致);`fs.write` 原子写入;文件字节路由仅限会话 cwd 内文件;git 只调 CLI、绝不设置身份
|
|
459
|
+
- 浏览器 tab 的内容在**不透明源沙箱 iframe** 中渲染(无 `allow-same-origin`/`allow-top-navigation`、`no-referrer`、权限策略全禁);地址栏拒绝 `javascript:`/`data:`/`file:` 与 localhost 等本机地址
|
|
460
|
+
- 界面实时显示沙箱状态(关闭时红色警示),可临时解锁当前页面;设置页可关闭浏览器沙箱(默认关闭该设置,带警告文案)——关闭后内容与界面同源,仅建议对完全可信站点使用
|
|
475
461
|
|
|
476
462
|
## ⚠️ 已知限制
|
|
477
463
|
|
|
478
|
-
- Git 无 push/pull/fetch
|
|
464
|
+
- Git 无 push/pull/fetch;无文件 watcher/自动轮询;工具行内文件打开按钮不可拦截
|
|
479
465
|
- 终端 Tab 拖到另一分栏会重挂载(shell 重开)
|
|
480
|
-
-
|
|
466
|
+
- **文件预览自 v1.0.4 起退役**:图片 / Markdown / HTML / PDF / Office 等预览由 DSH 内置能力承担,侧边栏保留文本编辑与非文本文件下载兜底;依赖侧边栏预览的生态插件(如预览划选增强)随之失效
|
|
481
467
|
- 浏览器沙箱无登录态/第三方 Cookie 受限,部分站点登录需走弹窗;被 `X-Frame-Options`/`frame-ancestors` 拒绝嵌入的站点(如 arxiv.org)显示原因面板(含「在浏览器中打开」);iframe 内部跳转不进后退栈
|
|
482
|
-
- HTML 预览渲染的是已保存文件(不反映未保存草稿)
|
|
483
468
|
- 移动端(<768px)自动合并为全宽抽屉:窄屏进入时全部标签页并入右侧栏,回桌面仍保留在右侧栏;未选中会话时点按开关会显示选择会话提示。
|
|
484
469
|
|
|
485
470
|
## 🖥️ 平台支持
|
|
@@ -489,7 +474,7 @@ Windows / Linux / macOS 三平台适配(macOS 日常验证;其余经单元
|
|
|
489
474
|
## 🤝 参与贡献
|
|
490
475
|
|
|
491
476
|
- **代码改动走 PR**:`feat/*` / `fix/*` 分支开发 → `gh pr create`;纯文档改动可直接推 main
|
|
492
|
-
- **收录生态插件**:给仓库打 `dsh-coding-sidebar` topic + 向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts)
|
|
477
|
+
- **收录生态插件**:给仓库打 `dsh-coding-sidebar` topic + 向 [`src/client/plugins-tabs.ts`](./src/client/plugins-tabs.ts) 提 PR
|
|
493
478
|
- **提交前自检**:`pnpm typecheck && pnpm build && pnpm test`(CI 另有 npm 打包 → 真实挂载 → 无头渲染门禁 `pnpm test:mount`)
|
|
494
479
|
- 仓库工作规范见 [`AGENTS.md`](./AGENTS.md)(含仓库硬约束与 CI 说明)
|
|
495
480
|
|