Draggable sticky notes with 9 skins, image notes, and agent-readable to-do lists for DeepSeek Harness.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:charrywhite/dsh-sticky-notes
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
Highlights
📝 Type to record
Each note is a todo list — press Enter or click Add to jot something down.
🤖 AI integration
The DeepSeek model can directly read your notes and write for you (see §3).
☑️ Check off
Tick the checkbox to strike through and dim an item; click again to undo.
📌 Multiple notes
Hit the "+ New Note" button in the top-right corner to add as many as you like — each one fully independent.
🖐 Draggable
Notes, collapsed chips, and the New Note button can be dragged anywhere; positions are remembered.
🎨 9 skins
Classic Yellow, Mint Green, Sakura Pink, Sky Blue, Twilight Violet, Sunset Orange, Graphite Dark, Neon Glow, Minimal Paper — set per note.
🖼 Image notes
Upload or drop an image into a note; click it to replace it.
✏️ Custom titles
Rename with the ✏️ pencil icon; clear it for a blank title.
🛡 Reliable storage
Every change is saved instantly — notes survive refresh and page reloads.
Skins
Changelog
- 8/28 Added double-click to edit existing note items
- 8/18 Added the 👀 eye button to hide/show all notes
- 8/17 Added the 📝 notes button: click to create a note, drag to reposition it
- 8/17 Added: click a note title to collapse/expand it
- 8/16 Released v0.1.0: multiple notes, 9 skins, image notes, AI read & write
1. Installation
Prerequisite:
dsh(DeepSeek Harness CLI) available on your machine. Ifpnpmis not on PATH, runnpm i -g pnpm(orcorepack enable pnpm) first.
Option A: One-command install (recommended)
# Install from GitHub
dsh plugin --profile web add github:charrywhite/dsh-sticky-notes
# Or install from a local directory during development (link resolves automatically)
dsh plugin --profile web add link:C:/path/to/dsh-plugin-sticky-notes
After installing:
- Restart dsh web (Ctrl+C in the terminal that runs it, then run
dsh webagain) - Hard-refresh the browser page (Ctrl+F5) — the notes will appear on the right
To uninstall: dsh plugin --profile web remove dsh-sticky-notes
Option B: Manual install (alternative)
Put the plugin folder anywhere (example below uses C:\path\to\dsh-plugin-sticky-notes), then edit your web profile config:
① Register the dependency and bundle
Edit %USERPROFILE%\.dsh\profiles\web\package.json:
{
"dependencies": {
"dsh-sticky-notes": "link:C:/path/to/dsh-plugin-sticky-notes"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-sticky-notes"
]
}
}
}
link:points to the absolute path of the plugin folder; both/and\work (use/in JSON).
② Run pnpm install in the profile directory
cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm install
③ Restart dsh web and hard-refresh the browser page (Ctrl+F5).
Option C: Manual install from GitHub
Write the dependency as a GitHub reference in package.json, then run pnpm install + restart + refresh:
{
"dependencies": {
"dsh-sticky-notes": "github:charrywhite/dsh-sticky-notes#commit-hash-or-branch"
},
"dsh": {
"profile": {
"bundles": ["dsh-sticky-notes"]
}
}
}
2. Usage
Two function buttons
- 📝 Notes button: click it to open the menu and create a text or image note; drag it to move it around
- 👀 Eye button: click it to hide all notes at once (the icon turns into 🙈); click again to bring them all back
Creating notes
Click the 📝 notes button in the top-right corner and pick:
| Option | Description |
|---|---|
| 📝 Text note | type in the input box; press Enter or click "Add" to turn it into a todo item |
| 🖼 Image note | click the upload area to pick an image, or drop one into the note |
New notes stack from the top-right corner by default; each has a title bar, a count badge, and action buttons.
Note operations
| Action | How |
|---|---|
| Drag | hold the title bar (or the collapsed chip / 📝 button) and drag; the position is remembered |
| Hide/show all | tap the 👀 button below the 📝 button: all notes hide at once (icon becomes 🙈); tap again to restore (state is remembered) |
| Check off | click the checkbox left of an item → strikethrough + dim; click again to undo |
| Delete an item | hover the item, click the × on the right |
| Clear done | "Clear done" button at the bottom of the note clears all checked items at once |
| Change skin | click 🎨 in the title bar, pick from 9 color swatches (per note) |
| Rename | click ✏️ in the title bar, type a new name, Enter/blur to save; clear it for no title |
| Collapse/expand | click — in the title bar or simply click the title to collapse into a chip; click the chip to expand |
| Delete the note | click 🗑 in the title bar (with a confirmation dialog) |
Image notes
- The uploaded image is shown inside the note; click it to replace it
- Image notes support dragging, skins, renaming, collapsing and deletion too
3. AI model read & write
The plugin registers two model tools that the DeepSeek model can call directly in the conversation:
Read: sticky_notes_read
Lists all notes: title, each item's text, completion status (☐/☑), skin, and whether collapsed. Image notes show metadata only (title / whether an image exists).
Usage: tell the model "take a look at my notes", "help me organize my notes", or "work from my notes".
Write: sticky_notes_add
- Create a note: omit
noteId, passtext(required) + optionaltitle - Append an item: pass
noteId(get it viasticky_notes_readfirst) +text
Design constraint: append/create only — existing content can never be modified or deleted, so the model can't clobber what you wrote by hand; image notes reject text items.
Usage: tell the model "add a note: meeting at 3 pm tomorrow" or "put this requirement on my work note".
4. Uninstall
- Installed via Option A:
dsh plugin --profile web remove dsh-sticky-notes - Installed via Option B/C: remove the dependency and the bundles entry from
package.json, then runpnpm install - (Optional) delete the data file:
Remove-Item "$env:USERPROFILE\.dsh\sticky-notes.json" - Restart dsh web
Requirements
- DeepSeek Harness web mode (
dsh web) - Browser: modern Chromium / Firefox / Safari
- No third-party runtime dependencies
Credits
Thanks to @scraed for the interaction designs proposed in PR #1: the home key (tap to hide/show all notes, long-press to create) and tap-the-title-to-collapse.
FAQ
Q: What is dsh-sticky-notes?
A: A sticky-notes plugin for DeepSeek Harness (DSH) that adds draggable note cards to the dsh web UI: text to-dos, image notes, 9 skins, and AI agents can read and write your notes directly.
Q: How do I install it? A: One command, then restart dsh web and hard-refresh the page (Ctrl+F5):
dsh plugin --profile web add github:charrywhite/dsh-sticky-notes
Q: Does it support image notes? A: Yes. Choose "Image note" when creating a note, then click or drag in an image; images are auto-compressed to save storage.
Q: Can the AI model read and write my notes?
A: Yes. The plugin registers two model tools — sticky_notes_read (list all notes) and sticky_notes_add (create a note / append an item). Tell the model "take a look at my notes" or "add a note for me". The AI can only append/create — it cannot modify or delete what you wrote by hand.
Q: Where is my note data stored? Will it survive a refresh?
A: Yes. The authoritative copy lives at ~/.dsh/sticky-notes.json on the harness host; the browser uploads after every change, and refreshes, restarts, and agent writes all stay in sync.
Q: How do I edit an existing item? A: Double-click the item text to enter edit mode; press Enter or click elsewhere to save, Esc to cancel.
Q: What makes it different from other sticky-note plugins? A: It is a floating board of draggable notes rendered in the dsh web UI, with AI agents able to read and write notes (agent tools), plus 9 skins, image notes, and double-click editing. Data is stored authoritatively on the harness host, and agent writes sync back to the browser within seconds.
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8639
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★ 8639
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.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4515
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.
ccch1mneyyy/dsh-TUI★ 4296
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4116
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1449
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.