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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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",
|
||||
|
||||
Generated
+1008
-983
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user