Introduction

DSH can extend the Web UI via plugins. If you are using DSH Web and want to quickly view the current session workspace, and open files using the operating system’s default applications without reading the file content into the browser, brickmaker/dsh-workspace-files provides a lightweight entry point: to display the current workspace file tree in the details sidebar of DSH Web.

The following sections introduce this plugin from the perspectives of functionality, installation, usage, and boundaries.

What is this

dsh-workspace-files is a DSH Web plugin maintained by brickmaker with an MIT license. The package.json version is 0.1.2.

  • Plugin name: dsh-workspace-files
  • Repository: brickmaker/dsh-workspace-files
  • Positioning: Provides a right sidebar for the current workspace file tree in DSH Web
  • License: MIT
  • dshhub compatibility: dsh >=0.1.0-rc.5 <0.2.0, node ^22.19.0 || >=24.0.0
  • dshhub categories: Web UI, Workspace, Desktop
  • Interface: DSH Web
  • DSH Compatibility Description: 0.1.0-rc.5 to 0.1.x

DSH is still in developer preview, and Web slot interfaces may undergo incompatible changes.

Core Features

dsh-workspace-files mainly does the following things:

  • Displays the current workspace in the details sidebar of DSH Web.
  • Provides a sidebar toggle icon in the top-right corner of the session; by default, it does not occupy the right-side space.
  • The file tree is read layer-by-layer on demand; it does not recursively scan the entire project at startup.
  • Returns a maximum of 1000 entries per layer to avoid unbounded responses from very large directories.
  • Directories come before files, and items of the same type are sorted by name.
  • Files are opened via DSH’s host interface; file content is not read or previewed in the browser.
  • Directory reading is rooted at the workspace recorded by the current session and validates the real path; .. and out-of-bounds symlinks cannot access directories outside the workspace.
  • After plugin uninstallation, routes, styles, and the right sidebar registration are automatically cleaned up by the Cordis lifecycle.

The interface side’s behavior is also restrained: it only returns the name, absolute path, and file/directory type; it does not read file content.

Installation and Enablement

First, confirm that the local DSH and Node.js meet the version requirements. The following command adds the plugin from GitHub:

dsh plugin --profile web add github:brickmaker/dsh-workspace-files

The repository includes pre-built lib/ artifacts. Git installation does not execute build scripts at install time, and configuring pnpm allowBuilds is not required. It is still recommended to pin the GitHub installation address to a version tag or commit SHA for production use.

After installation, open or create a session with a workspace, and you can use the sidebar entry.

Typical Usage

  1. After opening or creating a session with a workspace, the sidebar remains closed by default.

  2. Click the panel icon in the top-right corner of the session to open the sidebar; clicking again closes it.

  3. Click or the directory name: load and expand that directory.

  4. Click the file name: open it using the operating system’s default application.

  5. Click in the top-right corner of the sidebar: close the right sidebar; the panel icon in the session’s top-right corner can still be used to reopen it.

It should be noted that the plugin becomes the default content for the DSH details single slot; therefore, during the period it is enabled, it obscures the original tool details panel. After uninstallation, routes, styles, and right sidebar registration are automatically cleaned up by the Cordis lifecycle.

Permissions and Security Boundaries

Before installation, it is recommended to review the source code, permissions declaration, and MIT license to ensure it fits your use case.

Verified permissions and boundaries include:

  • dshhub permission declaration: filesystem is current session workspace (read-only directory listing).
  • dshhub permission declaration: installScripts is false.
  • The interface only returns the name, absolute path, and file/directory type; it does not read file content.
  • Files are opened via DSH’s host interface; content is not read or previewed in the browser.
  • Directory reading is rooted at the workspace recorded by the current session and validates the real path; .. and out-of-bounds symlinks cannot access directories outside the workspace.
  • The plugin runs as a DSH host-side capability and invokes the host interface with the permissions of the current dsh process.
  • If DSH Web binds to 0.0.0.0, all host capabilities are exposed to anyone who can access that port; please follow DSH’s own network trust settings and do not expose the development server directly to untrusted networks.

Use Cases

This plugin is suitable for:

  • Using DSH Web and wanting to view the current workspace directory structure within a session.
  • Wanting files to be opened by the operating system’s default application rather than previewing content in the browser.
  • Wanting the sidebar to be closed by default and expanded on demand, without permanently occupying the right-side space.
  • Only accepting read-only directory listing permissions and wanting to ensure the installation process does not execute install-time build scripts.

If you are exposing the DSH Web port on an untrusted network or need finer file permission control, first confirm DSH’s network trust settings and the plugin’s source code boundaries.

Conclusion

The value of dsh-workspace-files is quite specific: it adds a right sidebar for the current workspace file tree to DSH Web, reading on demand, limiting the number of entries, not reading file content, and opening files via the DSH host interface.

GitHub Repository:

https://github.com/brickmaker/dsh-workspace-files

Directory page provided by the plugin entry:

https://www.skillhub.cn/plugins/brickmaker/dsh-workspace-files

The directory page URL comes from the plugin entry; please refer to the repository and installation channel information before installation.