dsh-web-ui

by zunyan

UI 增强github 检测到 manifest dsh.plugin.json收录于 08-16

DSH Web UI 插件 — 专注界面:针对 harness web 配置文件的 Codex 风格右侧停靠文件面板。左侧文件树,右侧只读预览,从…打开

DSH Web UI plugin — one focused surface: a Codex-style right-docked file panel for the harness web profile. File tree on the left, read-only preview on the right, opened from a…

安装

dsh plugin --profile web add github:zunyan/dsh-web-ui

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

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

DSH Web UI plugin — one focused surface: a Codex-style right-docked file panel for the harness web profile. File tree on the left, read-only preview on the right, opened from a sidebar footer icon.

Surface

  • Toggle — sidebar footer icon button (visible when the sidebar is open). Active state mirrors the panel's open/close.
  • Panel — right-docked drawer, 420px wide. Slides in from the right edge.
    • Header: file name + close button.
    • Left: lazy file tree (workspace root → directories → files; directories collapse by default, click to expand).
    • Right: read-only preview pane with file size + path footer.
  • Hotkey — Ctrl/Cmd + Shift + R toggles the panel.

Default state is closed; the user opens it via the toggle.

Install

dsh plugin --profile web add dsh-web-ui

The plugin resolves through the profile's node_modules; the cordis.patch.yml inserts the plugin row into the profile's loader stack.

Wire contract

All host endpoints live under /api/dsh-web-ui/ and respond with the envelope:

{ "ok": true, "value": ... }
{ "ok": false, "error": { "code": 403, "message": "..." } }
Path Method Purpose
/api/dsh-web-ui/fs/tree?path=<abs> GET one-level listing (files + dirs, dirs first)
/api/dsh-web-ui/fs/file?path=<abs> GET file content (utf8 or binary flag), max 1 MB

Both routes realpath-validate path against the active workspace root and reject anything outside as 403. The plugin does not read arbitrary paths.

Build

pnpm install
pnpm build       # tsc -p tsconfig.build.json && tsdown
pnpm typecheck

Why one client bundle

DSH plugins with a scoped npm name (@scope/pkg) ship two CJS bundles: one registering as the package name (@scope/pkg, the official channel) and one as the manifest id (scope/pkg/registry, the registry channel). For a non-scoped plugin like this one, the two channels collapse to one id — dsh-web-ui — so lib/client-registry.js is the single artifact and dsh.plugin.json's client.main points at it.

License

MIT

原始 README: https://github.com/zunyan/dsh-web-ui/blob/main/README.md ↗