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.
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 ofask_user_questioncards.
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/namemust match the package name. Reusing upstream'ssmooth-cursor/dsh-smooth-cursorcollides 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
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 7971
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 7971
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 3733
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 3169
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 3035
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1515
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.