DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Dock Host — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@tecfancy/dsh-dock-host

Dock Host

Generic dock-button host for a dsh (DeepSeek Harness) web client: renders one row of buttons above the composer and owns the dockButtons registry, overflow menu, i18n, and motion. Built as a Feature-Sliced Design static Cordis plugin.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @tecfancy/dsh-dock-host@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Dock Host is published as @tecfancy/dsh-dock-host and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
9/20/2026

Versions

0.2.1stable
8/28/2026
0.2.0stable
8/27/2026
0.1.3stable
8/27/2026
Show 2 more versionsCollapse versions
0.1.2stable
8/27/2026
0.1.1stable
8/27/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Declares sideEffects: false
Unpacked size
57.7 kB
Files
28
Surface
web
License
MIT
Source
npm
GitHub
★ 0
Weekly downloads
44
Last push
8/29/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Pet@linxin666/dsh-petMulti-pet companion plugin for the dsh web GUI: a registry-driven floating pet that reacts to model activity, with per-pet naming, petting/feeding interactions and an affinity score

README

dsh-dock-host

A generic dock-button host for the dsh web client, built as a Feature-Sliced Design static Cordis plugin. It renders one row of buttons above the composer/input box and owns everything about placement: the dockButtons registry, theme tokens, i18n (dockHost namespace, zh/en), overflow "更多" menu, and motion.

It is intentionally feature-agnostic — it knows nothing about what a specific button does. A concrete feature (terminal, files, ...) registers its own buttons into the registry; the host only places them.

Install

npm install @tecfancy/dsh-dock-host

Then mount it into a dsh profile (the CLI reconciles dsh.profile.bundles):

dsh plugin --profile web add @tecfancy/dsh-dock-host

Requires @deepseek-ai/cordis ^4.0.1 as a peer dependency.

Layering (client-only)

dsh-dock-host is a client-only plugin: the host half (src/index.ts) registers no tools and no RPC. The client half under src/client/ follows the framework's FSD layering:

src/
  index.ts                     host root: name only (no host capabilities)
  client/
    index.tsx                  client assembly root: provide registry, mount the
                               conversation.input.dock row slot, register i18n
    shared/
      config/context.ts        structural type contracts (slots, locale, logger)
      dock/registry.ts         the dockButtons registry (register/list/subscribe)
    features/
      dock-host/
        DockButtonsRow.tsx     the row + overflow menu (placement, tokens, i18n)
        DockButtonsRow.module.css  reduced-motion kill switch (build-time inline)

Host and client are physically isolated: host never uses JSX/React, client never touches window/document directly. There are no cross-boundary code imports. Because there is no host Remote RPC in this plugin, no Typert artifacts are generated and no harness.handle/host.call/styles.insert builtins are used (those are dynamic plugin evaluator builtins, not the static surface).

The DockButton contract

A feature registers a button with the shape:

{
  id: string,                        // unique, namespaced e.g. 'terminal:open'
  order?: number,                    // ascending placement, default 0
  label: string | (() => string),    // thunk for i18n
  icon?: string,                     // optional glyph prefix
  enabled?: boolean | ((ctx) => boolean),  // optional visibility predicate
  primary?: boolean,                 // always visible before the overflow
  run(ctx: { input, inputActions, sessionId }): void | Promise<void>,
}

The host fills the row up to DEFAULT_MAX_VISIBLE (4) primary-then-ordered buttons, and puts the rest in the overflow menu; primary buttons always stay visible.

Adding a feature (later)

A provider (terminal, files, ...) is added as another client/features/<name>/ slice. The client assembly root creates the registry once and hands it to each feature so they can registry.register(...). Because this is a single plugin, no cross-plugin service composition is required.

Commands

TaskCommand
Installnpm install
Type-checknpm run type-check
Lintnpm run lint / npm run lint:no-emdash
Formatnpm run format:check (fix with npm run format)
Testnpm run test / npm run test:coverage
Aliases driftnpm run aliases:check
Buildnpm run build (host tsc + tsdown client bundle)
Bundle verifynpm run bundle:check
Full gatenpm run verify (must stay green)
Smoke installnode scripts/install-to-profile.mjs --profile web [--copy]

Requirements

  • Node >= 22.19.0, npm 10.9+
  • A dsh web profile for smoke testing (optional for development)

License

MIT (c) 2026 TecFancy

This plugin is scaffolded from the dsh-plugin-framework template (feature-sliced design + host/client isolation + engineering gates).