DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

xuanyang905 /

xuanyang905/dsh-plugin-settings-float

Verified

DeepSeek Harness plugin: draggable, edge-resizable floating settings window that keeps the chat visible

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@7f54361e

dsh-plugin-settings-float

DeepSeek Harness plugin that turns the settings dialog into a draggable, edge-resizable floating window, so you can keep the chat visible (and usable) while changing settings.

The native settings surface is a centered modal with a full-screen scrim: it covers the conversation and cannot be moved. This plugin keeps the same React tree but lifts the panel out of the modal — no scrim, a floating panel you can drag by its header and resize from any edge or corner.

⚠️ This is a DOM-level enhancement built against the current DSH settings shell. The upstream bundle is never modified, and if a DSH upgrade changes the settings markup the plugin simply stops applying (the settings page keeps working as the native modal). Treat it as a convenience layer, not a fork.

Features

  • Draggable — grab the nav title or content header and move the window anywhere.
  • Eight resize handles — drag any edge (↑↓←→) or corner (⤡ ⤢); opposite edges stay anchored.
  • Chat stays alive — the dark scrim is removed and the overlay stops swallowing pointer events, so the conversation is visible and clickable behind the window.
  • Remembers geometry — position and size persist in localStorage per browser profile.
  • Reset shortcuts — double-click a header to snap back to the default spot; double-click a resize handle to restore the default size.
  • Configurable — defaults, minimum size, enable switch and optional click-outside-to-close are exposed as a DSH plugin config card.

Install

dsh plugin --profile <your-profile> add dsh-plugin-settings-float

Then make sure the bundle is listed in the profile's package.json (the Plugins page does this for you when installed from the GUI):

"dsh": {
  "profile": {
    "bundles": [ "...", "dsh-plugin-settings-float" ]
  }
}

Restart the DSH host — client bundles are composed at boot, so a page refresh is not enough.

Usage

Action Result
Drag nav title / content header Move the window
Drag any edge or corner Resize (min size applies, viewport-clamped)
Double-click a header Reset position to the default spot (right side, vertically centered)
Double-click a resize handle Reset size to the configured default
Esc / ✕ Close settings (unchanged)

Configuration

Open Settings → Plugins → Settings Float (the card is generated from the plugin schema), or set the row config in the profile patch:

- id: settings-float
  name: dsh-plugin-settings-float
  config:
    enabled: true
    defaultWidth: 760
    defaultHeight: 720
    minWidth: 480
    minHeight: 320
    closeOnOutsideClick: false
Key Default Meaning
enabled true false keeps the native centered modal
defaultWidth / defaultHeight 760 / 720 Initial size, used until the user resizes once
minWidth / minHeight 480 / 320 Smallest size the window can be dragged to
closeOnOutsideClick false Sends Escape when the chat behind the window is clicked

Compatibility

  • Verified against DSH 0.2.1-rc.3 (desktop and web profile share the same settings shell).
  • The panel is found by role="dialog" + settings-only children, with the release's hashed class only as a fast path — so a rename usually degrades gracefully instead of breaking.
  • Requires a web-capable DSH surface (dsh.client platform web).

Privacy

  • No network requests, no host-side changes, no telemetry.
  • Only two localStorage keys are written: dsh.settings-float.pos.v1 and dsh.settings-float.size.v1.

Development

npm install
npm test        # jsdom smoke tests: mount, 8-direction resize, drag, reset, config

Layout:

lib/index.js     host row: plugin entry + Config schema (the settings card)
lib/client.js    browser half: DOM enhancement, drag & resize
test/            jsdom smoke tests driving real pointer events

The client bundle uses DSH's client-module ABI (window.__ModuleLoader__.load({ id, factory })); id must match the package name.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 7f54361efce5

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout