antnesswcm/dsh-shell-card-plus

antnesswcm/dsh-shell-card-plus

用自定义 Shell 命令卡片替换 DSH Web 原版 bash/pwsh 工具行:长命令自动换行带行号不再截断,并提供独立的复制命令/复制输出按钮。

UI Enhancementscordisdeepseek-harness

中文 | English

dsh-shell-card-plus

Enhanced command cards for bash / pwsh in the DSH web UI. Works out of the box; never touches how commands execute.

What it fixes

The stock bash/pwsh card in DSH Web has two daily annoyances:

ProblemStockThis plugin
Long commands unreadableCommand is a single line, truncated with an ellipsis — anything past it is simply invisibleCommand soft-wraps with line numbers, fully visible
No way to copy the commandOnly a copy-output button exists; copying the command means manual text selectionSeparate copy command and copy output buttons

Status display follows the official convention: quiet when normal (just a status dot), a red exit N / Signal X pill only on failure.

Stock expanded card This plugin's expanded card
Left: stock expanded card · Right: this plugin's expanded card

Features

  • Fully replaces the official bash/pwsh tool row: the collapsed row keeps the official style; the expanded card is custom
    • head: status dot + cwd (subdirectory name) + copy-command / copy-output buttons
    • command area: full command, soft-wrapped with line numbers
    • output area: horizontal scroll, same reading habit as the original
  • Only takes over bash/pwsh; other tools (read/write/search etc.) are untouched

Install

# From npm (recommended — no allowBuilds setup needed)
dsh plugin --profile web add dsh-shell-card-plus

# From GitHub
dsh plugin --profile web add github:antnesswcm/dsh-shell-card-plus

# Or from a local directory
dsh plugin --profile web add ./dsh-shell-card-plus

Restart dsh web (or hard-refresh the browser, Ctrl+F5) after installing. Requires dsh ≥ 0.1.0-rc.5.

How it works

Registers the bash/pwsh keys on the official tool.call.toolview slot to replace the official rendering of those tool rows. Command, cwd, output and exit status all come from the existing official ToolCallBlock data — the plugin is a pure presentation layer with no new events and no host changes. Implementation details: CLAUDE.md.

Development

npm install
npm run build   # production build (lib/ is committed; users don't build)
npm run dev     # watch + hot reload

See CLAUDE.md for development and handover docs.

License

MIT