DeepSeek Harness Plugin

ThinkofRain1213/dsh-smooth-cursor-patched

Stars ★ 0 Category UI Enhancements Added 2026-09-24 npm dsh-smooth-cursor-patched

Comet-mode animated caret for the DSH Web composer: a glowing trail glides to the text position, with configurable accent color, thickness, trail, and a 500 ms idle blink. Extends the surface to ask-question card inputs, and fixes the caret vanishing on an empty composer or first focus, forward drag-selection not following the pointer, soft line breaks measuring against the previous line, and the caret painting outside the composer when long input scrolls. Maintained fork of Lacquervii/smooth-cursor.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-smooth-cursor-patched

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:ThinkofRain1213/dsh-smooth-cursor-patched

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

中文 | English

A smooth, comet-mode animated caret for the DSH chat composer textarea — a standalone installable DSH plugin. Replaces the native text caret with a glowing comet that glides across the input as you type, with a configurable trail, accent color, and thickness.

Validate

About this repository This is a personal patched fork of Lacquervii/smooth-cursor. Upstream has not been updated since 2026-09-09, so a working copy is maintained here.

  • Limited spare time: this repository is not guaranteed to be watched promptly, and may stop receiving updates at any time
  • Issues are welcome, but replies may be slow
  • If upstream resumes maintenance, I will prefer returning to it

Preview

Changes from upstream

Upstream dsh-smooth-cursor has reproducible defects in the situations below; this branch fixes each of them:

  • Empty input and first focus survive — upstream measures a zero-height rect on an empty composer or a first click, so the caret is not drawn. This branch adds layered measurement and an empty-line fallback for the rich-text composer.
  • Bidirectional drag tracking — upstream always takes rect 0 of the selection, so a forward drag (left to right) leaves the caret behind the pointer. This branch selects the first or last rect by selectionDirection, and includes the selection end and direction in the re-measure signature.
  • Soft-break line positioning — upstream relies on range.getBoundingClientRect(), which returns Chromium's snap-back rect on an empty line and parks the caret at the end of the previous line. This branch measures that line's own <br> first for soft breaks and empty paragraphs.
  • Vertical viewport clipping — upstream does not clip, so with long input the out-of-range caret floats over the chat area or toolbar. This branch culls and clips against the composer's scrollport.
  • Question-card inputs — upstream only covers textarea[data-phase]. This branch also covers the answer fields of ask_user_question cards.

Also added: a caret breath (blink) aligned to the VS Code / native 500 ms cadence (0.5 s idle before breathing, solid while typing), with its own settings toggle.

Features

  • Smooth caret — a smooth eased caret that glides to the text position.
  • Comet trail — a tapered, fading trail follows the caret while you move it.
  • Breath toggle — a 500 ms cadence that can be switched off independently.
  • Configurable — enable/disable, trail on/off, accent color (preset swatches or custom picker), thickness (thin / medium / thick).
  • Local persistence — settings are stored in localStorage; no host restart or round-trip needed.

Install

From npm (recommended)

dsh plugin --profile web add dsh-smooth-cursor-patched

From GitHub

dsh plugin --profile web add github:ThinkofRain1213/dsh-smooth-cursor-patched

Then restart dsh web and find the Input caret row under Settings → General.

Manual (local development)

Clone this repo and add it as a plugin bundle:

git clone https://github.com/ThinkofRain1213/dsh-smooth-cursor-patched.git
cd dsh-smooth-cursor-patched
pnpm install --ignore-scripts
pnpm build

Then register it in your profile's cordis.patch.yml:

- insert:
    - id: smooth-cursor-patched
      name: dsh-smooth-cursor-patched

Note: the id / name must match the package name. Reusing upstream's smooth-cursor / dsh-smooth-cursor collides with the official entry and makes DSH fail with a duplicate loader id (Failed to load plugins).

Usage

The effect activates whenever the composer textarea has focus. Open Settings → General → Input caret to:

  • Toggle the whole effect or just the comet trail.
  • Pick an accent color from the swatches, or use the custom color picker.
  • Choose the caret thickness.

Development

pnpm install --ignore-scripts
pnpm run typecheck          # tsc type check
pnpm run build              # tsdown bundles (node half + client half)
pnpm run check:register-id  # asserts the bundle's registration id matches the patch name
pnpm run watch              # incremental rebuild

lib/ is committed so the plugin works straight from a git install even when a package manager blocks the prepare build step. Before committing, make sure pnpm run build leaves lib/ clean — CI verifies that the committed artifact is still in sync with src/.

Tests

This repository currently has no automated tests. CI covers only the type check, the build, the registration-id contract, and artifact freshness; it cannot prove how the caret behaves in a given browser — that part is verified by hand.

Acknowledgements

The smooth caret effect of this plugin is inspired by the VSCode smooth cursor concept and references the Obsidian community animated-cursor plugin (Copyright (c) 2025 Kotaindah55 (Sheva Ihza), released under the MIT License). The rendering and integration in this project are independently rewritten for DSH Web, but the effect is inspired by the projects above — many thanks to their authors.

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.