中文EN

dsh-sidebar-sections

ui已测通过npmMIT

把 DSH 侧栏工作区列表分为「活跃 / 会话任务 / 不活跃」三段,支持手动钉住与活跃阈值,保留官方搜索、归档筛选、行菜单与拖拽,并可一键切回官方列表。「会话任务」段固定用 Windows 路径 D:\files\history-tasks,其他平台需自行预建该目录。

下载量 / Downloads
853
依赖体积 / node_modules
0.68 MB
测试时间 / Tested
2026-11-07
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-sidebar-sections

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-sidebar-sections

Unofficial community plugin. This package is not published by, reviewed by
or endorsed by DeepSeek. It reuses the MIT-licensed official
@deepseek-ai/dsh-client-ui-workspace 0.2.1-rc.3 browser bundle and
patch-builds its own copy of it. Where this documentation says "official", it
refers to that upstream DeepSeek code (the shipped sidebar browser / its
shipped view), never to this plugin.

Fork of the shipped DSH sidebar workspace browser. The official

@deepseek-ai/dsh-client-ui-workspace 0.2.1-rc.3 client bundle is vendored

byte-for-byte, and an ordered patch pipeline derives lib/client.js that adds a

three-section layout on top of it:

Active -> Session tasks -> Inactive, with the official search, archive

filters, row menus, hover buttons/cards, workspace management, drag & drop,

watermark rows, status dots and shortcuts kept intact because they are still the

official code.

Status (0.2.8, tested on DSH Desktop 0.2.1-rc.3, Windows). The sectioned
sidebar renders in the running app (活跃 header + count over the official
project rows), the official child-slot registrations stay live (session menu
rows, row hover actions, directory flow, hero picker, toast factory), and the
native render path was exercised in the running app. Pointer interaction
(opening menus, dragging, threshold buttons) is the remaining human
walk-through; see [docs/official-parity.md](docs/official-parity.md).

Compatibility

  • DSH: >=0.2.1-rc.3 <0.3.0 (declared as dsh.engines.dsh). The browser half

is generated from the 0.2.1-rc.3 official bundle; a newer DSH release needs the

baseline re-extracted and the patch anchors re-checked

([docs/upgrade-checklist.md](docs/upgrade-checklist.md)).

  • The fixed middle segment is a real workspace at the Windows path

D:\files\history-tasks (title 会话任务). The plugin is therefore

Windows-oriented today: on another platform that literal path is not a normal

directory. Everything else is platform-neutral.

  • While enabled, this bundle disables the shipped ui-workspace loader row and

runs the official browser code itself; disabling or uninstalling the bundle

restores the shipped row unchanged. The official package files are never

modified.

Why the plugin replaces the shipped plugin row

The official browser owns sidebar.workspaces **and declares that region's child

slots** (session "..." menu rows, row hover actions, directory flow, row

leading/hover cells). The slot ledger allows only one registration to declare a

given child slot, and the renderer only authorises a registration to render the

children it declared itself. A second, lower-priority occupant therefore cannot

reuse those slots - it would have to redraw the menus and dialogs, which is

exactly what this rewrite is meant to avoid.

So this bundle is a replacement: its cordis.patch.yml disables the shipped

ui-workspace loader row while the bundle is enabled, and the bundle runs the

official client code itself with the section patches. The official package in

app.asar is never modified. Disabling or uninstalling the bundle removes its

patch layer and the shipped row returns unchanged.

"Switch back to the official list" is a rendering mode of the same patched

component tree (sections.mode === "native" -> the official derivation and

render path), not a second registration; the full-screen list looks and behaves

exactly like the shipped one, keeps the official view state, and survives a page

refresh.

Layout

~~~

dsh-sidebar-sections/

- package.json plugin manifest (dsh.bundle.patch + dsh.client)

- cordis.patch.yml disables the shipped ui-workspace row, inserts this bundle's row

- icon.svg / locale/*.json plugin manifest icon + strings

- lib/index.js host half: mkdir -p D:/files/history-tasks

- lib/client.js GENERATED by scripts/build-client.mjs (never hand-edit)

- vendor/ byte copy of the official 0.2.1-rc.3 client.js

- patches/manifest.json baseline sha256/bytes + ordered patch list

- patches/01..04,06-*.mjs pure apply(source) -> source patch modules (05 retired)

- scripts/build-client.mjs verify -> apply -> node --check -> write lib/client.js

- scripts/smoke-load.mjs materialise the bundle against the frozen seed table

- scripts/derive-selftest.mjs unit tests for the section derivation rules

- scripts/install.ps1 dry-run/install/uninstall runbook (no profile writes by default)

- docs/ parity, upgrade checklist, patch reference

~~~

Build and test

Requirements: Node.js 24 (this machine: C:\Program Files\nodejs\node.exe).

Run from the plugin directory (or pass the absolute path).

~~~powershell

Full build: verifies the vendored baseline sha256, applies all patches in order,

runs node --check, then writes lib/client.js.

node scripts/build-client.mjs

Apply + node --check only; lib/client.js is not written.

node scripts/build-client.mjs --check-only

Verification suite.

node scripts/smoke-load.mjs # frozen platform module table / bundle shape

node scripts/derive-selftest.mjs # SPEC 2.1 derivation rules (22 assertions)

~~~

The build:

1. reads patches/manifest.json;

2. verifies the vendored baseline bytes and SHA256 (first 16 hex chars must be

BAFD2D6EEA2F8267); on mismatch it fails and prints the re-extract commands;

3. imports each patch module in manifest order and calls apply(source);

every patch asserts its anchors and throws if an anchor is not unique;

4. writes the result to a temporary file and runs node --check;

5. writes lib/client.js (unless --check-only) and prints per-patch byte

deltas, final bytes and the output SHA256.

lib/client.js is a generated artifact - never hand-edit it. Every change

lands in vendor/ (baseline refresh) or patches/*.mjs.

Install / enable / disable / uninstall

Installing is a profile operati

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:3,最后更新 2026-10-27

链接

GitHub · Homepage · npm

同类插件