Introduction¶
When developing with DSH daily, you often need a place to record “what to do today and how far I’ve got”. Common practices involve switching to an independent kanban tool or opening a text file, which causes the context to be lost.
The idea behind dsh-tryboard-plugin is to put this kanban directly into the DSH Web GUI: an additional “Kanban” entry above the sidebar “Settings”; upon clicking, the kanban page fills the main content area of the current session, while the sidebar remains visible and usable. Data persistence is handled in DSH settings, so it won’t be lost on restart.
What is this¶
dsh-tryboard-plugin is a standard DSH Cordis plugin maintained by nexsjournal, licensed under MIT. It provides a Trello-style working kanban within the DSH Web GUI, supporting multiple boards, drag-and-drop, and custom columns. All data is stored in the tryboard namespace within DSH settings.
Core Features¶
Multiple Boards and Default Four Columns¶
- You can create any number of boards; click the title to rename; the header switcher supports switching, creating, and deleting boards.
- Each board comes with four default columns:
待办/进行中/完成/待确认(English environment: To Do / In Progress / Done / Pending), with status color dots on the column headers.
Drag and Drop and Status¶
- Cards support Trello-style drag-and-drop: moving across columns, sorting within the same column, with an insertion guide line displayed during drag.
- When a card is dragged to a column, its status becomes that column’s status, and the small color dot on the card reflects the status in real-time.
- Shortcut actions:
Escto close the kanban page or cancel editing; when the sidebar is collapsed, the entry point becomes an icon-only button.
Custom Columns and Card Management¶
- After the last column there is “Add Column”, allowing you to freely add and remove custom columns (status is custom/gray).
- Click on a card or column title to rename; the column menu supports renaming and deleting (deletion requires confirmation); there is “Add Card” at the end of the column for quick card creation.
Native Style and Sidebar Integration¶
- The interface uses DSH design tokens (
--dsw-*/--ds-*) for all rendering, automatically following light/dark themes without introducing any external styles. - The sidebar entry button aligns pixel-perfectly with “Settings” (42px line height / 16-18px icon). Under shell v2.0.1+, the plugin will revert the footer slot container to vertical stacking and replace the “Settings” gear icon with the brand icon—this only affects the sidebar, implemented using CSS mask, and does not modify the application itself.
Installation and Setup¶
Three installation methods, choose one.
Method 1: One-click script (local directory, symlink installation, changes take effect immediately):
./scripts/install.sh # Install to web profile
./scripts/install.sh --profile xxx # Specify profile
Method 2: Local installation via dsh CLI:
dsh plugin --profile web add -w /path/to/dsh-tryboard-plugin
Method 3: Installation from GitHub:
dsh plugin --profile web add git+https://github.com/<your_username>/dsh-tryboard-plugin.git
Where <your_username> is a placeholder in the README; replace it with the actual repository URL.
After installation, DSH needs to be restarted once (the server-side half and api-proxy whitelist patch will take effect on the next startup), then click the sidebar “Kanban” to use it.
A note on behavior differences during development: client code (kanban page) supports hot updates; modifications to lib/client.js take effect automatically while the host is running; changes to lib/index.js (server-side half) require restarting DSH.
Data Storage and Migration¶
All kanban data is a single JSON document, stored in the tryboard.data field (JSON string) of ~/.dsh/settings.yaml, stored with the DSH profile, so it won’t be lost on restart.
The data structure is as follows:
{
"v": 1,
"activeBoardId": "…",
"boards": [
{
"id": "…",
"name": "每日工作",
"createdAt": 1712345678901,
"columns": [
{
"id": "…",
"title": "待办",
"status": "todo",
"builtin": true,
"cards": [{ "id": "…", "title": "写周报", "createdAt": 1712345678901 }]
}
]
}
]
}
status values are todo doing done review (four default status columns) or custom (custom columns).
Migration and backup are simple: just backup ~/.dsh/settings.yaml directly.
Uninstall command:
dsh plugin --profile web remove dsh-tryboard-plugin
Restart DSH after uninstalling. Note that the kanban data will still remain in the tryboard field of settings.yaml; if not needed, it can be manually deleted.
How It Works (for Developers)¶
The plugin is divided into a host side and a browser side:
| File | Role |
|---|---|
lib/index.js |
Host side: registers the tryboard settings namespace (schemastery schema), and idempotently adds tryboard to the host api-proxy Web settings whitelist (takes effect on next startup) |
lib/client.js |
Browser side: injects the sidebar entry and kanban page, holding all interaction logic and state |
cordis.patch.yml |
Inserts the plugin ID into the host’s Cordis bundle layer |
package.json |
dsh.bundle.patch points to the patch file; dsh.client declares the Web client bundle and its dependency modules |
Host slots used by the browser side:
sidebar.footer.action(list, root scope): the sidebar footer action slot above the settings row, used for the kanban entry;shell.overlay(list, root scope): the application framework-level overlay slot, where the kanban page is rendered. However, by measuring the sidebar column width (parent’s first child of[data-shell-overlay]+ResizeObserver), the page is only laid out in the main content area (left: sidebar width), keeping the sidebar visible and usable.
Regarding state and persistence, the client uses a module-level store (useSyncExternalStore) holding { open, persistence, data }; all changes update the store immediately and are debounced by 400ms via ctx.settingsScope.bind({ namespace: "tryboard" }).set("data", JSON) to write back to host settings. Host document changes (writes from other clients, external modifications) are automatically read back and merged via setting invalidation subscriptions.
Use Cases and Notes¶
Suitable for: People who mainly work in the DSH Web GUI and want task planning to stay within the current environment. If you are already using a standalone kanban tool and need multi-person collaboration, this plugin does not solve that type of need; its positioning is a standalone personal working kanban.
Runtime Requirements and Compatibility:
- Node ≥ 20 (host side);
- DSH Desktop / dsh web (Cordis slot system version,
rc.6series); - After installation, be sure to restart DSH once; otherwise, the server-side half and api-proxy whitelist patch will not take effect.
Security Reminder: The plugin runs with the permissions of the current dsh process; it is recommended to check the source code and license before installing. The license for this project is MIT.
Summary¶
dsh-tryboard-plugin fits a Trello-style kanban into the DSH Web GUI: multiple boards, default four columns, drag-and-drop status change, custom columns, data stored in ~/.dsh/settings.yaml, and the interface fully follows DSH’s native theme. One command to install, one restart to use.
- Plugin Directory Page: https://www.skillhub.cn/plugins/nexsjournal/dsh-tryboard-plugin
- GitHub Repository: https://github.com/nexsjournal/dsh-tryboard-plugin