UI Enhancements

dsh-workspace-search

tsonglew/dsh-workspace-search · ★ 5

tsonglewCurated

VS Code-style workspace keyword search tab for dsh-better-sidebar: matches file names and content, grouped by file with line numbers, opens in the sidebar editor.

License
MIT
Added
2026-08-14
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:tsonglew/dsh-workspace-search

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Install
  2. Configuration
  3. How it works
  4. License

VS Code-style workspace keyword search for the DeepSeek Harness (dsh) web GUI, registered as a Search tab inside dsh-better-sidebar.

  • Keyword search across the session workspace: file names and file contents, grouped per file with line numbers
  • VS Code-style search rules: files to include / files to exclude glob patterns (comma-separated, supports **, *, ?, {a,b}), regular expression queries (.* toggle), and case toggle (Aa)
  • Click a match to open the file in better-sidebar's built-in editor
  • VS Code default excludes: hidden files, .git, node_modules, dist, build, .next, target etc. are skipped; caps on files, matches, and line length are reported honestly as truncation

Install

dsh plugin --profile web add ./plugins/dsh-workspace-search

(Requires dsh-better-sidebar ≥ 0.4.0, which exposes ctx.betterSidebar.)

Configuration

All fields optional (profile patch layer):

- id: workspace-search
  config:
    maxFiles: 5000       # hard cap on files scanned per search
    maxMatches: 300      # hard cap on total content matches
    maxLineLength: 300   # hard cap on one reported line
    maxFileBytes: 1048576  # files above this skip the content scan

How it works

Dual-face bundle. The host half registers a Connection RPC channel /workspace-search (loopback trust fence, same as the built-in /api). The browser half registers a tab through ctx.betterSidebar.registerTab. Search results open in the sidebar editor via openTab({type: 'editor'}).

License

MIT