feat(adapt): 适配 DSH 0.1.1-rc.1(@next)——devDeps/lockfile/CI 基线平移,peer 下限保持 rc.8 (#297)

调研结论:0.1.1-rc.1 为常规 rc 递进(依赖图零增删、纯版本平移),
所有 sidebar 消费的公开契约(DOM 槽位 / CSS 令牌 / boot 协议 /
MarkdownText codeLabels / webServer 路由 / agents-session API)
逐包比对无破坏,无需代码逻辑改动。

- package.json: devDependencies 14 个升至 0.1.1-rc.1;peer 下限保持
  ^0.1.0-rc.8(rc.8 与 0.1.1-rc.1 双向兼容,rc.8 用户无需升级 DSH);
  version 0.14.1 -> 0.14.2(cordis ^4.0.0-rc.8 不变)
- dsh.plugin.json / src/client/service.ts: 版本锁步同步
- pnpm-lock.yaml: 全量重解析,零 rc.8 残留(干净解析验证)
- CI 挂载冒烟钉版 @deepseek-ai/dsh@0.1.1-rc.1(验证基线)
- README(EN) 横幅/changelog/安装注释、ISSUE_TEMPLATE、AGENTS.md 同步
This commit is contained in:
Atlas Zeng
2026-08-21 18:15:25 +08:00
committed by GitHub
parent 0da2812dd3
commit a9d3451415
9 changed files with 1036 additions and 1009 deletions
+3 -3
View File
@@ -37,9 +37,9 @@ body:
attributes:
label: DSH Web 版本 + 浏览器 / DSH Web version + Browser
description: |
例:DSH 0.1.0-rc.8 + Chrome 151(macOS)。
Example: DSH 0.1.0-rc.8 + Chrome 151 (macOS).
placeholder: "DSH 版本 / version + 浏览器 / browser(如 0.1.0-rc.8 + Chrome 151)"
例:DSH 0.1.1-rc.1 + Chrome 151(macOS)。
Example: DSH 0.1.1-rc.1 + Chrome 151 (macOS).
placeholder: "DSH 版本 / version + 浏览器 / browser(如 0.1.1-rc.1 + Chrome 151)"
validations:
required: false
+1 -1
View File
@@ -82,7 +82,7 @@ jobs:
# (dsh-base / dsh-web-app) resolves from this installation. Keep in
# step with the plugin's @deepseek-ai/* peer range when bumping.
- name: Install dsh CLI (pinned)
run: npm install -g @deepseek-ai/dsh@0.1.0-rc.8
run: npm install -g @deepseek-ai/dsh@0.1.1-rc.1
# lib/ is gitignored; the tarball is produced from this build.
- name: Build and pack the npm tarball
+1 -1
View File
@@ -21,7 +21,7 @@ better-sidebar 从 v0.4.0 起暴露 `ctx.betterSidebar` 服务(Cordis context
2. `scripts/e2e-mount.sh` 用官方 CLI 把它装进一个**全新 scratch profile**(`dsh plugin --profile web add file:<tarball>`,触发 `dsh.profile.bundles` 协调),然后启动真实 `dsh web`(keyless,`--port 0`)。
3. `tests/e2e/mount.e2e.ts`(Playwright Chromium)加载页面,断言外壳与 `[data-dsh-better-sidebar]` 挂载、无 `dsh-better-sidebar:` 错误条、无 pageerror/插件 console 错误,显式展开面板(`openByDefault` 默认关)后通过「+ 菜单」逐个打开内置 tab(含终端懒加载 chunk)深扫,再经 Files 文件窗口的树打开 seed 文件强制加载 editor 懒加载 chunk(`client-editor.js`,独立模式:每个文件新开 tab,seed 的 home tab 保持资源管理器)——缺失的内置 tab 或 chunk 都会使门禁变红。
本地跑:`pnpm build && pnpm pack && pnpm exec playwright install chromium && pnpm test:mount`(需 PATH 上有 `dsh` 或可经 npx 拉取)。DSH CLI 版本在 CI 钉住 `@deepseek-ai/dsh@0.1.0-rc.8`(与插件 peer 范围同步)。`tests/e2e` 的 spec 命名 `*.e2e.ts` + vitest `exclude` 双保险与 vitest 隔离;**改动 vitest `exclude` 时必须保留默认排除项**(`exclude` 会整体替换默认值)。
本地跑:`pnpm build && pnpm pack && pnpm exec playwright install chromium && pnpm test:mount`(需 PATH 上有 `dsh` 或可经 npx 拉取)。DSH CLI 版本在 CI 钉住 `@deepseek-ai/dsh@0.1.1-rc.1`(插件 devDependencies 验证基线;peer 下限保持 `^0.1.0-rc.8`,rc.8 与 0.1.1-rc.1 双向兼容)。`tests/e2e` 的 spec 命名 `*.e2e.ts` + vitest `exclude` 双保险与 vitest 隔离;**改动 vitest `exclude` 时必须保留默认排除项**(`exclude` 会整体替换默认值)。
### npm 发版(GitHub Release → npm publish)
+3 -2
View File
@@ -57,10 +57,11 @@
**🐛 修复**
- 🔧 **适配 DSH 0.1.1-rc.1(@next)**:devDependencies / lockfile / CI 验证基线升至 `0.1.1-rc.1`(14 个包,lockfile 零 rc.8 残留);**peer 下限保持 `^0.1.0-rc.8`**(rc.8 与 0.1.1-rc.1 双向兼容,rc.8 环境无需升级 DSH)。0.1.1-rc.1 为常规 rc 递进(依赖图零增删、纯版本平移),已逐包比对确认所有既有契约——DOM 槽位(`data-slot="conversation"`)、CSS 令牌、`__DSH_BOOT__`/`__ModuleLoader__` boot 协议、MarkdownText `codeLabels`、`webServer` 路由注册——均无破坏,**无代码逻辑改动**
- 🔒 **上传链路的代码规范整改**([#239](https://github.com/omdsh-dev/DSH-better-sidebar/pull/239)):`relativePath` 空段 / 绝对路径显式拒绝;临时文件唯一命名(并发上传互不干扰、崩溃不阻塞);写流错误监听(磁盘失败不崩溃进程);客户端错误码与服务端统一、413 本地化
> ⚠️ **本版适配 DSH 0.1.0-rc.8**:全部 `@deepseek-ai/*` peer / devDependencies 升至 `^0.1.0-rc.8`(含传递依赖,lockfile 零 rc.7 残留),`cordis` 同步 `^4.0.0-rc.8`,CI 挂载冒烟钉版 `@deepseek-ai/dsh@0.1.0-rc.8`。**rc.7 及更早的 DSH 环境将无法解析本版依赖,请先升级 DSH**。自 v0.13.1 以来的全部更改:
> ⚠️ **本版适配 DSH 0.1.1-rc.1(@next)**:devDependencies / lockfile / CI 验证基线升至 `0.1.1-rc.1`(lockfile 零 rc.8 残留);**peer 下限保持 `^0.1.0-rc.8`**——0.1.1-rc.1 为常规 rc 递进,与 rc.8 双向兼容,**rc.8 用户无需升级 DSH**。`cordis` 保持 `^4.0.0-rc.8`(cordis 版本线未变)。自 v0.13.1 以来的全部更改:
**✨ 新功能**
@@ -235,7 +236,7 @@ v0.12.1 补齐基座能力(完整类型导出、能力探测、状态订阅、
## 🛠️ 开发与构建
```sh
pnpm install # @deepseek-ai/* 已发布到 npm(^0.1.0-rc.8),直接解析、无需令牌
pnpm install # @deepseek-ai/* devDependencies 已发布 0.1.1-rc.1,直接解析、无需令牌
pnpm typecheck # tsc --noEmit
pnpm build # → lib/index.js + lib/invariant.js + lib/client.js + lib/client-registry.js + lib/types
pnpm test # vitest(含 manifest 一致性守卫,需先 build)
+3 -2
View File
@@ -56,10 +56,11 @@
**🐛 Fixes**
- 🔧 **Adapted to DSH 0.1.1-rc.1 (@next)**: devDependencies / lockfile / CI verification baseline raised to `0.1.1-rc.1` (14 packages — zero rc.8 leftovers in the lockfile); **peer floor stays at `^0.1.0-rc.8`** (rc.8 and 0.1.1-rc.1 are mutually compatible, rc.8 environments don't need to upgrade). 0.1.1-rc.1 is a routine rc progression (dependency graph unchanged, pure version shift); every consumed contract — DOM slot (`data-slot="conversation"`), CSS tokens, `__DSH_BOOT__`/`__ModuleLoader__` boot protocol, MarkdownText `codeLabels`, `webServer` route registration — was compared package by package and is intact, so **no code changes were needed**
- 🔒 **Upload-chain hardening** ([#239](https://github.com/omdsh-dev/DSH-better-sidebar/pull/239)): empty and absolute `relativePath` segments are refused outright; uniquely named temp files (concurrent uploads stay independent, crashed processes never block later uploads); write-stream error listeners (a failing disk can no longer crash the host); client error codes unified with the wire (`too-large`), 413s localized
> ⚠️ **This release adapts to DSH 0.1.0-rc.8**: every `@deepseek-ai/*` peer/devDependency is raised to `^0.1.0-rc.8` (transitives included — zero rc.7 leftovers in the lockfile), `cordis` to `^4.0.0-rc.8`, and the CI mount lane pins `@deepseek-ai/dsh@0.1.0-rc.8`. **DSH environments on rc.7 or earlier can no longer resolve this release's dependencies — upgrade DSH first.** All changes since v0.13.1:
> ⚠️ **This release adapts to DSH 0.1.1-rc.1 (@next)**: devDependencies / lockfile / CI verification baseline is raised to `0.1.1-rc.1` (zero rc.8 leftovers in the lockfile); **the peer floor stays at `^0.1.0-rc.8`** — 0.1.1-rc.1 is a routine rc progression, mutually compatible with rc.8, so **rc.8 users don't need to upgrade DSH**. `cordis` stays at `^4.0.0-rc.8` (its own version line did not move). All changes since v0.13.1:
**✨ New features**
@@ -266,7 +267,7 @@ The dashed cards at the end of the "Sidebar content" / "File viewers" grids in t
## 🛠️ Development & Build
```sh
pnpm install # @deepseek-ai/* resolved from npm (^0.1.0-rc.8, published) — no token needed
pnpm install # @deepseek-ai/* devDependencies resolve to 0.1.1-rc.1 (published) — no token needed
pnpm typecheck # tsc --noEmit
pnpm build # → lib/index.js + lib/invariant.js + lib/client.js + lib/client-registry.js + lib/types
pnpm test # vitest (includes manifest consistency guard; build first)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"id": "dsh-external/dsh-better-sidebar",
"version": "0.14.1",
"version": "0.14.2",
"main": "./lib/index.js",
"description": "VSCode 风格右侧侧边栏:文件资源管理器 / 编辑器 / 终端 / Git / 浏览器,按会话隔离。暴露服务供其他插件注册侧边栏页面和文件预览器",
"engines": {
+15 -15
View File
@@ -1,6 +1,6 @@
{
"name": "dsh-better-sidebar",
"version": "0.14.1",
"version": "0.14.2",
"description": "DSH web plugin: a VSCode-like right sidebar (explorer / editor / terminal / git / browser), isolated per conversation session. Exposes a service for other plugins to register sidebar tabs and file viewers.",
"type": "module",
"repository": {
@@ -139,20 +139,20 @@
},
"devDependencies": {
"@cordisjs/plugin-loader": "^1.0.0-rc.5",
"@deepseek-ai/dsh-agent": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-locale": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-runtime": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-ui-primitives": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-ui-settings": "0.1.0-rc.8",
"@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.8",
"@deepseek-ai/dsh-host-webserver": "0.1.0-rc.8",
"@deepseek-ai/dsh-invariants": "0.1.0-rc.8",
"@deepseek-ai/dsh-llm": "0.1.0-rc.8",
"@deepseek-ai/dsh-session": "0.1.0-rc.8",
"@deepseek-ai/dsh-settings": "0.1.0-rc.8",
"@deepseek-ai/dsh-subagent": "0.1.0-rc.8",
"@deepseek-ai/dsh-tools": "0.1.0-rc.8",
"@deepseek-ai/dsh-agent": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-locale": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-runtime": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-ui-conversation": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-ui-primitives": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.1",
"@deepseek-ai/dsh-client-ui-slots": "0.1.1-rc.1",
"@deepseek-ai/dsh-host-webserver": "0.1.1-rc.1",
"@deepseek-ai/dsh-invariants": "0.1.1-rc.1",
"@deepseek-ai/dsh-llm": "0.1.1-rc.1",
"@deepseek-ai/dsh-session": "0.1.1-rc.1",
"@deepseek-ai/dsh-settings": "0.1.1-rc.1",
"@deepseek-ai/dsh-subagent": "0.1.1-rc.1",
"@deepseek-ai/dsh-tools": "0.1.1-rc.1",
"@playwright/test": "^1.62.1",
"@types/node": "^24.0.0",
"@types/react": "~18.3.1",
+1008 -983
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -470,7 +470,7 @@ export function matchUrlTarget(tabs: readonly TabDescriptor[], url: URL): TabDes
* The plugin version this service instance reports. Keep in lockstep with
* `package.json`'s version — `tests/service.spec.ts` asserts the pair.
*/
export const SIDEBAR_SERVICE_VERSION = '0.14.1'
export const SIDEBAR_SERVICE_VERSION = '0.14.2'
/**
* Monotonic capability list consumers use to gate new API usage (features