DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-plugin-terminal-upgrades

j

dsh-plugin-terminal-upgrades

Manifest valid

Terminal upgrades for DeepSeek Harness: option-click a link in the terminal to open it in your browser.

UI (client)hasBundlePatch

Terminal upgrades for DeepSeek Harness

Terminal upgrades for DeepSeek Harness. The first one: hold Option over a URL in a terminal and it underlines; click it and it opens in your browser. The trigger key is configurable.

The terminal upgrades plugin icon: a terminal prompt with a chain link

Features

  • The link underlines while you hold the trigger key. The underline is drawn over the URL's cells in the URL's own color, and the pointer becomes a hand, so you can see what is clickable before you click.
  • Click opens the browser. Clicking http://localhost:3000 from next dev opens it in a new tab; the desktop app hands the URL to your default browser.
  • Configurable trigger key. Option by default; Command or Control from the plugin config.
  • Plain clicks are untouched. Text selection, double-click word selection, and keystrokes reach the terminal exactly as before. Only the trigger key on a link is intercepted.
  • No terminal changes. The plugin reads the rows the terminal already renders and adds its own overlay; it never rewrites terminal text, so output, colors, and the shell are unaffected.
  • Works with every terminal tab, including ones opened after installing, and disposes cleanly when the plugin is removed.

Install

In the desktop app, open Plugins in the sidebar, choose Add plugin, and enter this directory. The desktop profile is managed by the Electron app, which is why this is the preferred path there.

For another profile, use the CLI:

git clone https://github.com/jeremytenjo/dsh-plugin-terminal-upgrades.git
dsh plugin --profile <profile> add ./dsh-plugin-terminal-upgrades

Replace <profile> with the name shown by dsh --profile <name> --dump-config (for example web). Restart the Host or reload the page after installing.

The package ships its browser bundle (client.js), so no build step is required to install it.

Usage

  1. Run something that prints a URL, for example pnpm dev in a Next.js project.
  2. Hold the trigger key — Option (⌥) by default — and move the pointer over the URL. The URL underlines and the terminal cursor becomes a hand. Pressing the key while already resting on a link underlines it without moving the pointer.
  3. Click. The URL opens in a new browser tab. In the desktop app it opens in the system browser.

Without the trigger key, clicking the same URL does what it always did: it places the terminal cursor and starts a text selection.

Configuration

The trigger key defaults to Option (Alt). Change it in the plugin's profile entry config:

# ~/.dsh/profiles/desktop/cordis.patch.yml
- id: dsh-plugin-terminal-upgrades
  name: "dsh-plugin-terminal-upgrades"
  config:
    triggerKey: meta
triggerKeyKey
alt (default)Option on macOS, Alt on Windows and Linux
metaCommand
ctrlControl

Restart DeepSeek Harness after changing it: the profile applies plugin config at startup. The Host validates the value while it starts, so an unknown key stops the plugin with an explicit error instead of silently falling back. The browser reads the setting once as the page loads and keeps Option until the answer arrives.

Only the configured key triggers the underline and the click; the other modifiers stay inert, so nothing changes for people who use them for other terminal gestures.

How it works

DeepSeek Harness renders terminals with xterm's DOM renderer, so the visible rows exist as text in the page. The plugin listens on document, maps a pointer position to the terminal row and character offset, and runs the same URL rules for any row under the pointer:

  • http:// and https:// only.
  • Sentence punctuation after a URL and an unbalanced closing bracket are left out, so see https://example.test/docs. links the URL without the period.
  • A balanced closer stays part of the link, so https://example.test/a_(b) keeps its ).

Client plugins do not receive profile entry config, so the Host half validates triggerKey and publishes it on one loopback route, /__dsh/terminal-upgrades; the browser reads it once at startup. The underline itself is an overlay element the plugin owns, positioned from the URL's text runs, so the terminal's own DOM is never modified.

The plugin adds no slot, no terminal state, and no per-terminal setup, so it has nothing to clean up beyond removing its listeners and its overlay.

Limitations

  • One row at a time. A URL that wraps onto the next terminal row is not detected; short links such as http://localhost:3000 are unaffected.
  • Underline is an overlay. It tracks the text runs the terminal rendered. Scrolling hides it until the pointer moves again, and a very unusual font fallback could shift it by a pixel.
  • Programs that capture the mouse. In a terminal program that reports mouse clicks itself, such as Vim or less, a trigger-keyed click on a link is consumed by the plugin; a trigger-keyed click elsewhere still reaches the program.
  • DOM renderer only. The detection reads the rendered rows. If the terminal switches to a canvas or WebGL renderer, nothing is detected and the plugin does nothing.
  • Not a general link opener. File paths, line numbers, and bare host names are not links.

Development

pnpm install
pnpm run build   # regenerates client.js from src/client.js
pnpm test        # URL, offset, host-route and terminal-screen tests

src/client.js is the browser source, index.js is the Host half, and scripts/build-client.mjs bundles the browser half into client.js wrapped in the Harness module-loader shape. Edit src/, run pnpm run build, and reload the page.

Comments

Loading…

Similar plugins

dsh-cool-terminal

by CoolTea001

Terminal plugin for DeepSeek Harness: stays in sync with the Workspace in real time, with isolated terminals that each keep their own command history.

Tools & CapabilitiesTerminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 21, 2026

dsh plugin --profile web add dsh-cool-terminal

by Liu-fu-gui

DeepSeek Harness (DSH) Desktop plugin: adds the missing 「升级 DSH」 entry — tray command + dsh_upgrade model tool, driving the official version service and installer channel via desktopRuntime.updates. 不

Manifest valid

★ 0

MIT

JavaScript

Sep 19, 2026

dsh plugin --profile web add dsh-desktop-upgrade

by ystyle

A terminal_search tool plugin for DeepSeek Harness (dsh)

Manifest valid

★ 0

MIT

TypeScript

Sep 3, 2026

dsh plugin --profile web add dsh-tool-terminal-search

by archyciao

DeepSeek Harness (dsh) 插件:设置页「关于」- 版本显示/检查更新/一键重启

Manifest valid

★ 0

JavaScript

Sep 9, 2026

dsh plugin --profile web add dsh-about-updater

by TheYoungChen

DeepSeek Harness plugin market - browse, search & install dsh-plugin topic plugins (dsh 插件市场:浏览/搜索/安装插件)

Terminal & ClientsManifest valid

★ 4

↓ 400/wk

MIT

JavaScript

Oct 25, 2026

dsh plugin --profile web add dsh-plugin-market

by 1010n111

Adds an "About" settings page to the DeepSeek Harness web interface, showing the running DSH version and recent release notes.

UI & ExperienceTerminal & ClientsManifest valid

★ 3

MIT

JavaScript

Sep 4, 2026

dsh plugin --profile web add dsh-about