Manage files, review Git changes and commit history, track background tasks and use side chats in DSH’s sidebar and bottom workbench.
dsh-better-sidebar
Requires Node.js 20 or later and the DSH 0.2.1-rc.2 support line. Operation on DSH RC3 has not been verified. Directory downloads may fail when the installed ZIP utility is MiKTeX ZIP.
✨ Features
|
|
| 🗂️ File ManagementLazy-loading tree, git status colors, live directory watch, global search, drag-and-drop upload, multi-select batch actions, dual-source "Open with" menu. |
🌿 GitSource Control (Merge / Staged / Changes groups, message box with Generate, branch + sync footer) plus a this-session AI-changes lens, with a read-only commit graph (lanes, ref badges, branch filter, commit details) in one tab. |
📝 Editable Editor & PreviewsAn editable CodeMirror (the stock preview is read-only), Markdown + Mermaid + floating outline, sandboxed HTML preview, .jsonl record cards, paged preview for huge files, streaming transfers with no size caps. |
🧩 TasksLive subagent topology (workflow graph / tree modes) + background task list: exit codes, live output, force-kill. |
| 💬 Side Chat (beta)Codex-style side threads: inherit the full parent context and run independently, realtime push, visible & revocable queue, per-thread model selection, one-click promotion to a top-level session. |
🖥️ Bottom WorkbenchA self-drawn bottom panel that coexists with the native right sidebar: drag-to-split panes, multiple terminal tabs, per-session persisted layout. |
Also: 📂 the sidebar_open tool lets the model open the sidebar itself · ⚡ ~325KB core at startup, heavy chunks load on demand · 🌏 i18n follows DSH · 📱 narrow screens switch to a full-width drawer
🌿 Git Graph (read-only commit graph)
Switch to Git Graph at the top of the Git panel for commit nodes, forks and merge edges across local branches, remote-tracking branches and HEAD. The branch selector only filters history — it never checks out or fetches; each commit is one line (lane edges + ref pills + subject), hover shows the author and short hash, and selecting one opens its full message and diff in the bottom pane. History loads in pages; reference changes during pagination prompt a refresh; reads are bounded (200 commits per page, offset 10,000, 1,000 branches) and report an explicit error past a limit. This first version shows no tags and offers no history-changing actions.
🧭 dsh-context diagnostics (optional)
With the dsh-context plugin installed, three places offer a one-click jump into that conversation's Context view: an agent node's detail card on the Tasks page, a background job's output window (the job's real owner session — never merely the session its row was watched under), and the session header. The entries appear only while dsh-context's Context page is actually registered: a deployment without it (or with that page hidden) shows no control at all, and while one jump is in flight every entry point is disabled. A failed jump is reported once, in a dismissible alert at the frame's bottom edge; nothing is polled while idle.
Installation and use
Install this archive through the NanoAI plugin manager, enable it as prompted, and hard-refresh the browser (Cmd/Ctrl+Shift+R). Node.js 20 or later and the DSH 0.2.1-rc.2 support line are required. Older hosts need a compatible older plugin; a floating npm latest is not a substitute for this archive.
The terminal is provided by the DSH host; if unavailable, check the host terminal controller. On Windows, directory downloads may be limited by the local ZIP tool.
🔌 Plugin Ecosystem
ctx.betterSidebar offers two extension points to every plugin — registerTab / registerFileViewer; the built-in 6 tabs + 4 viewers use the very same API. The GitHub topic dsh-better-sidebar already lists 30+ ecosystem plugins; the full integration guide is at [docs/external-plugin-guide.md]([repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/docs/external-plugin-guide.md).
import type {} from 'dsh-better-sidebar' // triggers the ctx.betterSidebar type merge
export const inject = ['betterSidebar']
export function apply(ctx: Context) {
ctx.effect(() => ctx.betterSidebar.registerTab({
id: 'my-plugin:db', title: 'Database', component: ({ scope }) => <DbView sessionId={scope.sessionId} />,
}))
}
📑 Tab plugins (sidebar pages)
| Plugin |
⭐ |
Description |
| ChenRuoT/dsh-sidebar-qa |
|
Select-to-ask side page: Codex-style side questions / Claude Code /btw |
| fuhefei/dsh-sentinel |
|
Condition-driven wake-up system: file / command / HTTP / process / webhook watchers that wake an agent; dock + sidebar branch + global dashboard |
| Fisfzy/ego-browser |
|
Agent browser: i18n-aware local browser tab (auto-registers a sidebar page when better-sidebar is present, falls back to a floating observer) |
| jiuge2467/dsh-studio |
|
Full-stack workbench: multi-source MCP visual debugging hub, visual thinking engine |
| Iwctwbh/dsh-flowglass |
|
Flowglass: realtime session flow visualization (messages / tool groups / subagent branches) |
| FeatherHunter/dsh-mattpocock-skills-deck |
|
Gamified mattpocock/skills task system: fog-of-war map, task bar progression |
| GULI-lab/DSH-element-source |
|
Click any UI element to jump to its Vue / React / Svelte / Angular source and feed it into the session |
| Lzh3070/dsh-file-review-tab |
|
File review page: line-level red/green diff + undo + deep links into chat lines |
| yq04/dsh-git-remotes |
|
Git remotes page: branches / upstreams / ahead-behind, fetch with prune, ff-only pull, confirmed push |
| ztyhehe/dsh-better-sidebar-svn |
|
SVN source-control page: status / diff / log / commit / update / revert / conflict resolution, symmetric to the built-in Git panel |
| Melody-max114/dsh-excel-panel |
|
Excel editing page: xlsx preview / edit, live formula evaluation, merged cells, save back to the original file |
| v587d/dsh-anysearch-refs |
|
AnySearch result reference cards: query, source digest, keyword highlights |
| Lukeknow0/dsh-markdown-link-preview |
|
Markdown artifact link preview: click same-origin .md outputs in chat to read them in the sidebar |
| mlosun/dsh-docs-panel |
|
Global docs panel: portable Markdown notes readable from any workspace |
| tylina/dsh-tylina |
|
Typst document tool: WYSIWYG typesetting for papers, reports, exams, resumes, charts, posters, sheet music, and PPTX-exported slides |
| lnyuqian/dsh-skill-sidebar |
|
Skills panel: scans local skill directories, short action phrases + one-click copy + pinning |
| g-yixuan/dsh-sidenote |
|
Codex-style side chat + selection-anchored annotations (lightweight consumer plugin) |
| OMSociety/dsh-ssh-tunnel |
|
Multi-host SSH tunnels + SSH manager page |
| OMSociety/dsh-git-forge |
|
GitHub / Gitea accounts, project authorization and push policies |
| YesSanSan/dsh-conversation-outline |
|
Conversation outline page: turn-structured view, one-click jump, LLM one-line titles |
| Wulabalabo/dsh-sidebar-Explorer-Plus |
|
File manager page: upload / move / delete / rename / new folder (write operations) |
| yq04/dsh-turn-review |
|
Turn review: review agent changes turn by turn |
| Ghz114514/dsh-refpics |
|
Pinterest-style reference-image search: masonry flow, sidebar board, download & Eagle favorites |
| yzlin499/dsh-yzlin499-easy-plugins |
|
Handy utility bundle (friendly to bare-bones DSH) |
| dong-victor/dsh-better-sidebar-starter |
|
Run-configuration page: IDEA-style Run/Debug configs — one-click start, history, WebSocket live logs, parallel instances |
| baosfeng/my-dsh-plugins |
|
Personal plugin collection (dsh-file-activity): sidebar file-activity page — read / create / modify history and stats |
| Hoemr/dsh-better-overleaf |
|
Overleaf tab: CDP browser login, project switching, local git mirror with two-way sync |
| Andor-Z/dsh-turn-outline |
|
Turn-trace page: folds the session by user turns, click any step to jump back to its chat position; zero LLM, read-only |
🖼️ Viewer plugins (file viewers)
🧰 Enhancements & tools
📣 List your plugin: tag your repo with the dsh-better-sidebar topic to appear on the topic page; then PR a PluginEntry into [src/client/plugins-tabs.ts][r2] / [plugins-viewers.ts][r3] to join the in-app recommended catalog.
| Action |
Keys |
| Save editor |
Ctrl/Cmd + S |
| Find / replace in file |
Ctrl/Cmd + F |
| Find next / previous |
Ctrl/Cmd + G / Shift + Ctrl/Cmd + G |
| Select next occurrence |
Ctrl/Cmd + D |
| Git commit |
Ctrl + Enter |
| Close tab |
Middle-click |
| Split / merge panes |
Drag a tab to a pane edge / center |
| Reference a file in the input box |
Hover a row → @file button |
- Routes sit behind a Host-header trust fence (same as
/api); fs.write is atomic; git is only invoked via CLI and never sets identity
- ⚠️ Since v0.23.0 the fs routes do no workspace-containment check: they can read/write any path the host user can reach (OS permissions only) — callers must not treat these routes as fenced
- HTML previews render in an opaque-origin sandboxed iframe; the sandbox can be disabled per feature in settings (off by default, with warnings)
- No git push/pull/fetch; the file tree only watches expanded directories; Markdown preview renders the saved file
- Read-only formats (spreadsheets / PDF / images / Office) are rendered by DSH's own document preview and follow the host version; the browser view only exists in the desktop profile
- Unsaved drafts are confirmed before closing a tab / deleting a file / refreshing; saving after external modification is rejected, never silently overwritten
- On mobile (<768px) there is no bottom panel — its tabs merge into the right sidebar's full-width drawer
💬 Community
QQ group: 577011007
🤝 Contributing
- Code changes go through PRs: develop on a
feat/* / fix/* branch → gh pr create; run pnpm typecheck && pnpm build && pnpm test (or make check) before submitting
- List an ecosystem plugin: tag your repo with
dsh-better-sidebar + PR an entry into [src/client/plugins-tabs.ts][r2] / [plugins-viewers.ts][r3]
- Repository rules: [
AGENTS.md][r4]
👥 Contributors
🔗 Friends
- dsh-tianshu-tui: interactive terminal UI plugin for DeepSeek Harness with TDD and evidence-gate workflows
- dsh-TUI: Claude Code-style fullscreen terminal plugin — pixel-whale header, streaming thoughts, context progress bar + TPS gauge
- dshfind plugin store: third-party plugin market — public repos under the
dsh-plugin topic, synced daily
- DeepSeek Harness Desktop Tauri: Tauri desktop build — 5MB installer, zero setup, plugins preinstalled
- DeepSeek Harness Desktop: a modern desktop app — start and manage local Harness services without configuring Node.js; website
[r1]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/CHANGELOG_EN.md
[r2]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/src/client/plugins-tabs.ts
[r3]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/src/client/plugins-viewers.ts
[r4]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/AGENTS.md