Two-step inline archive on workspace sidebar rows — one click arms a red confirm, the second click archives; the archive entry is removed from the ⋮ menu.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-easy-archive
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:bainianlaoyao/easy-archive
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A DSH (DeepSeek Harness) web plugin that moves session archiving out of the kebab (⋮) menu and onto the workspace sidebar row itself, as a two-step inline button:
- Hover a session row — an archive icon appears right before the ⋮ button.
- Click once — the button switches to a red 「确认归档 / Confirm archive」 pill.
- Click again — the session is archived.
The archive item is removed from the ⋮ menu — archiving lives only on the row, never buried in a submenu.
Features
- Hover-revealed inline archive button on every session row (next to the ⋮ menu); one click arms the red confirm, the second commits.
- Archive entry automatically hidden from the ⋮ menu whenever it opens (rename / fork stay where they are).
- No slot takeover: the stock workspace browser keeps rendering; rename, fork, search, drag-reorder and everything else stay intact.
- Archive runs through the same wire call the built-in menu used
(
ctx.workspaces.archiveSession), so behavior and permissions are identical. - Safety nets: the armed confirm auto-disarms after 4s, on mouse-leave, or on any click elsewhere; rows with ambiguous identities never get a button rather than risk archiving the wrong session.
- Locale-aware (zh / en), no build step, no React dependency.
Install
From the DSH plugin market (recommended):
dsh plugin --profile web add github:bainianlaoyao/easy-archive # GitHub distribution
dsh plugin --profile web add dsh-easy-archive # npm distribution (prebuilt; skips allowBuilds)
…or add it manually to the web profile's package.json:
{
"dependencies": { "dsh-easy-archive": "github:bainianlaoyao/easy-archive" },
"dsh": { "profile": { "bundles": [ "...", "dsh-easy-archive" ] } }
}
then pnpm install in the profile directory and restart dsh web
(new plugins enter the window.__DSH_BOOT__ graph at boot; later edits to
lib/client.js hot-apply on refresh).
How it works
The host half (lib/index.js) is an inert plugin row that carries the
dsh.client declaration into the profile's loader graph; the browser half
(lib/client.js) observes the sidebar DOM and, for every rendered session
row:
- resolves the session id exactly from the
ctx.sessions.listsnapshot by display title (disambiguated by the rendered relative-time bucket when titles repeat), - stamps the row with the id and inserts a 16px archive button into the row's action cell, before the kebab,
- removes the archive item from any ⋮ menu it sees open.
Clicking the button never bubbles to the row's "open session" handler.
Development
node scripts/smoke.mjs # validate the browser bundle shape
node scripts/check.mjs # (alias) syntax + smoke
Notes
- Blank "New Session" rows and search-result rows never get the button.
- Sessions whose display title and time bucket collide are skipped (conservative: no wrong-session archives).
- Uninstall: remove the dependency and bundles entry,
pnpm install, restartdsh web.
Related plugins
Other dsh plugins by the same author, all listed in the dsh plugin market:
dsh-codex-mode— a Codex-shaped coding mode for GPT-family models:exec_command/write_stdin/apply_patch/view_image, both OpenAI routes (Chat Completions and Responses), and graphical subagent types.dsh-llm-api-pool— pool several OpenAI-compatible API keys and hot-switch by remaining balance.dsh-session-robustness— keep long sessions recoverable.dsh-bash-on-windows— make Git Bash the only, honestly named terminal tool on Windows.
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8262
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8262
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 3943
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 3913
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 3793
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1414
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.