Better Workspace File Manager: Adding daily file operations to the DSH Files tab

Introduction

The DSH Web Files tab can browse files in the session workspace, but it lacks many daily operations: uploading a file, creating a new directory, packing and downloading multiple files, and dragging to organize all require going to the host or changing configuration. Better Workspace File Manager is here to fill these gaps. It adds upload, multi-select, ZIP download, new directory, delete, and other operations to the Files tab and file preview panel, and additionally provides drag-to-move and drag-into-chat.

DSH’s philosophy is “everything is a plugin.” This plugin is a client-side plugin maintained by community author Arrosam, published in the community plugin directory SkillHub, under the “Client” category, currently with 3 GitHub stars. Below is its positioning, features, installation methods, and usage notes.

What is it

One-sentence positioning: Better Workspace File Manager is an enhanced file manager for the DSH Web Files tab and file preview panel, by Arrosam, MIT licensed, current version 1.3.0, package name dsh-better-workspace-file-manager.

It solves daily operations that the default installed Files tab lacks. The plugin does not modify the DOM of the existing Files tab; instead, it reads its stable data-files-* attributes and renders its own interface in an independent slot, so it is not easily overwritten after upgrading the client.

Core Features

New capabilities for the Files tab:

  • Upload: via button, drag from computer, or directly drag into a folder (reconstructed recursively by directory structure, keeping both copies if names are the same).
  • Multi-select: click, Cmd/Ctrl-click, Shift-click, or box-select in the empty tree area.
  • Download: single file, multiple selected items, or entire directory packaged as ZIP. ZIP is generated via streaming, so large directories don’t occupy memory entirely.
  • New directory: created via right-click menu; if the name already exists when the plugin creates it, both copies are retained.
  • Delete: delete file or directory after confirmation dialog; the directory is removed along with its contents.
  • Drag to move: drag the row to the target directory to move; if a file with the same name already exists in the target, save it as name (1).ext instead of overwriting.
  • Drag into chat: drag a workspace row to the input box to generate a @path reference; PNG/JPEG/WebP/GIF images are attached.

File Preview Panel:

  • Adds “Download” to the preview’s open menu, alongside the built-in “Open” and “Show location”.
  • Text, code, and Markdown previews support inline editing. The editor preserves file line breaks (LF/CRLF) and BOM; saving includes version checking; if changed by the agent or another editor in the meantime, a conflict is reported instead of overwriting.
  • Manually click Save (or Cmd/Ctrl-S), or enable auto-save every 5 seconds in settings.

Settings:

  • The plugin adds a line “Text editing → Auto-save” in the Plugins settings page, choosing to be saved by the DSH Settings service instead of browser storage.

Installation and Enablement

Method 1, install from DSH’s Plugins page:

Open Plugins in the sidebar, find Better Workspace File Manager, and install or enable it. The page will add the package to the current profile and enable its bundle.

Method 2, install from profile manifest:

cd ~/.dsh/profiles/web
pnpm add dsh-better-workspace-file-manager

Then add it to the ordered bundle list in the profile:

{
  "dependencies": {
    "dsh-better-workspace-file-manager": "^1.3.0"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-better-workspace-file-manager"
      ]
    }
  }
}

Restart DSH (or let the live profile recombine) after modifying the profile.

Typical Usage

Interaction table for selecting and operating on rows:

Gesture Result
Click row Select the row, then open or expand as usual
Cmd/Ctrl-click Add or remove the row from selection
Shift-click Select from the last anchor point to the current row
Drag from empty tree area or Alt-drag anywhere Draw selection box
Right-click row or empty tree area Open file menu
Drag row to directory Move to that directory
Drag row to input box Add file/directory reference or image attachment
Escape Clear selection, or cancel current box select/drag

Right-click menu changes based on target: files get Download, Delete; directories get Download as ZIP, New folder, Delete; multi-selection gets Download N items as ZIP, Delete N items; empty tree area gets “New directory under cursor directory”.

Editing text files:

  1. Open a text, code, or Markdown file in the preview panel.
  2. Click “Edit” in the preview header to enter editing mode.
  3. After changes, press Save in manual mode, or wait 5 seconds in auto-save mode.
  4. Press Done to exit the editor; it will ask first if there are unsaved manual changes.

Editing is limited to the Session workspace; previews outside the workspace remain read-only.

Use Cases and Notes

Suitable for developers who need to frequently organize session workspace files on DSH Web: uploading artifacts, packing and downloading, editing text or Markdown in-place, and dragging images into chats.

Prerequisites:

  • DSH Web profile, version 0.2.1-rc.3 or newer (verified on 0.2.1-rc.3, 0.2.1-rc.5, 0.2.2-rc.1).
  • Host local file system backend (fs-local / fs-sandbox), which is what the Web profile mounts.
  • Node.js 20.15+ on the Host (the plugin uses a built-in Web Streams bridge; DSH itself may require a newer Node).

Regarding compatibility, DSH 0.2.2 introduced a shared context menu @deepseek-ai/dsh-client-ui-context-menu. The plugin detects this service at runtime: for 0.2.2 and above, it uses the shared menu, contributing “Download as ZIP”, “Download N items”, “New folder”, “Delete” to it; the Download for single files is still provided by the official file action plugin to avoid duplicate entry points. 0.2.1 does not have a shared menu, so the plugin retains its full context menu. Integration is via contextMenus service discovery. The plugin does not declare a hard dependency on 0.2.2-only client packages, so the same build can load on both 0.2.1 and 0.2.2.

Implementation-wise, the host’s index.js registers an authenticated Connection Fetch route under /api/better-workspace-files. All paths are resolved via ctx.fs.resolve + ctx.fs.contains, so symbolic links outside the workspace are rejected; move and delete operations apply to the entry itself, not the target of the link. Text saving uses the replaceIfVersion mode of ctx.fs.writeText to maintain atomicity, returning stale instead of overwriting concurrent changes on failure.

Note on security: the plugin runs with the permissions of the current DSH process, and delete/move operations apply to workspace entries. Before installation, you should review the source code and license (MIT) and ensure it only exposes files to trusted workspaces.

Conclusion

The value of Better Workspace File Manager lies in filling in the daily operations missing from the Files tab, while not modifying the native DOM, not introducing build steps, and being compatible across 0.2.1 / 0.2.2. If you manage session workspace files on DSH Web, it is worth installing and trying.

Directory Page: https://www.skillhub.cn/plugins/Arrosam/dsh-better-workspace-file-manager

GitHub: https://github.com/Arrosam/dsh-better-workspace-file-manager

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye