Tools & Capabilities

dsh-sticky-notes

flyhigao/dsh-sticky-notes · ★ 2

flyhigaoCurated

Workspace sticky notes for DSH, saved as multiple Markdown files under the current workspace.

License
MIT
Added
2026-08-17
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:flyhigao/dsh-sticky-notes

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Features
  2. Compatibility
  3. Why multiple notes?
  4. Install
  5. From GitHub
  6. Local development install
  7. Usage
  8. Data format
  9. HTTP API
  10. Save body
  11. Delete body
  12. Development
  13. License

中文

Workspace sticky notes for DSH (DeepSeek Harness). It adds a compact note entry to the current conversation header, letting you create, edit, and delete multiple notes for the current workspace.

Notes are stored as Markdown files in the dsh-notes/ directory of the current workspace. No hidden database, no extra index — just plain Markdown files.

Features

  • Quick entry in the current conversation header, no sidebar clutter.
  • Multiple notes per workspace: list, preview, edit, create, save, and delete.
  • A workspace selector in the dialog, defaulting to the current conversation workspace and allowing other registered local workspaces.
  • The note UI follows DSH's active language setting, with Chinese and English copy.
  • Unsaved edits are automatically saved before switching notes, changing workspaces, or closing the dialog.
  • Data is stored in the current workspace: <workspace>/dsh-notes/*.md.
  • One Markdown file per note, easy to inspect and manage with any editor or Git.
  • The server resolves workspace paths through workspaceRegistry; it does not trust arbitrary paths from the browser.
  • Mutating endpoints only accept same-origin POST requests.

Compatibility

  • Supports DSH 0.1.0-rc.6, 0.1.0-rc.8, 0.1.1-rc.2, 0.1.2-alpha.2, and later versions.
  • Zero external runtime dependencies; does not depend on the deprecated dsh-client-runtime.
  • This plugin uses DSH's additive conversation.session.header.actions slot. It does not replace the whole conversation header or own the position exclusively.
  • Uses a unique ID sticky-notes to avoid conflicts with other plugins.
  • Uses order: 30 so it coexists with other header actions in a predictable order.
  • HTTP API is namespaced under /dsh-sticky-notes/*.
  • Dialog styles are scoped with the dsh-sticky-notes-modal class and do not pollute global styles.
  • Registers through ctx.slots.inject(...), so it does not depend on plugin load order.

Why multiple notes?

A workspace accumulates many kinds of loose thoughts: todos, ideas, meeting notes, and temporary code snippets. A single note would quickly become a dumping ground.

Multiple notes are closer to the sticky-note metaphor:

  • Each note has its own topic.
  • The list shows the title, preview, and last updated time at a glance.
  • Each note is an independent file, easy to track with Git.

Install

From GitHub

dsh plugin --profile web add github:flyhigao/dsh-sticky-notes

Restart dsh web, open any conversation, and you will see the note icon on the right side of the conversation header.

Local development install

  1. Clone the repository:

    git clone git@github.com:flyhigao/dsh-sticky-notes.git
    
  2. Install into the Web profile and restart:

    dsh plugin --profile web add file:/path/to/dsh-sticky-notes
    # restart dsh web
    

Usage

  1. Open a conversation.
  2. Click the note icon in the conversation header.
  3. Select a workspace at the top of the dialog. The current conversation workspace is selected by default, and other registered local workspaces are available.
  4. In the dialog:
    • Left side: notes from the selected workspace.
    • Right side: title input and content editor.
    • Bottom: new, delete, and save actions.
  5. Unsaved edits are automatically saved before switching notes, changing workspaces, or closing the dialog.
  6. The note is written immediately to dsh-notes/ in the selected workspace.

Data format

Each note is a Markdown file:

<working-directory>/dsh-notes/<note-id>.md

File content:

# Note title

Note body…
  • note-id is generated by the plugin, for example note-msw19zz2-7gbiyg.
  • Deleting a note deletes the corresponding .md file. There is no extra index.
  • You can manually edit or add .md files; reopen the note panel to see the changes.

HTTP API

The plugin provides a small HTTP API for the browser half:

Method Path Description
GET /dsh-sticky-notes/list?workspaceId=<id> List all notes in a workspace
POST /dsh-sticky-notes/save Create or update a note
POST /dsh-sticky-notes/delete Delete a note

Save body

{
  "workspaceId": "workspace-id",
  "note": {
    "id": "optional-note-id",
    "title": "Note title",
    "content": "Note body"
  }
}

Delete body

{
  "workspaceId": "workspace-id",
  "id": "note-id"
}

Development

  • Server entry: lib/index.js
  • Browser entry: client/client.js
  • Plugin manifest: cordis.patch.yml

This is a lightweight hand-maintained implementation and does not require a build step. client/client.js is a CJS bundle that DSH's client module loader can load directly.

License

MIT