Bundle
@etony668/dsh-task-board
DSH 项目任务看板(CodexFF 移植):会话「任务看板」视图 + 父子任务树工具与技能 + 本地 JSON 存储
- Source
- etony668
- stars
- 3 stars
- License
- MIT
- Updated
- Updated 10 hours ago
Readme
English | [中文](README.zh.md)
# DSH Task Board plugin (dsh-task-board)
A port of the CodexFF project task board for **DeepSeek Harness (DSH)**: a new
`Chat → Trajectory → Task Board` tab in the conversation view, canvas-style
draggable panels, agent tools and a sync skill, with local JSON storage and no
external services.
## Features
- **Conversation view tab**: `Chat → Trajectory → Task Board` (`conversation.view`, order 20).
- **Canvas board**: one child panel per main task; panels are draggable with
snap alignment (25px base gap, top-row alignment, auto horizontal centering
for vertical stacks), collapsible; temporary tasks are color-marked.
- **Task model**: parent/child task tree, task boundaries
(goal / scope / out of scope / acceptance), checkbox completion;
a parent task auto-closes when all its subtasks are complete, and adding an
incomplete child reopens all of its ancestors.
- **Agent tools** (same semantics as the CodexFF MCP server):
- `board_get` / `board_revision` — read the board and its revision
- `board_sync` — batch create/update tasks (supports `key` references in one call)
- `task_create` / `task_update` / `task_delete` — single task operations
- **Skill**: `dsh-task-board` (task splitting and sync discipline), auto-loaded by the agent.
- **Storage**: `$DSH_HOME/taskboards/<sha256(project path)>.json`, CodexFF-compatible
format; one atomically written JSON file per project.


## Installation
### Option 1: One command (recommended)
```sh
dsh plugin --profile web add @etony668/dsh-task-board
```
Then open or refresh the DSH web UI — the `Task Board` tab appears after
`Trajectory`. The plugin is also listed in the plugin market (workflow category).
### Option 2: Clone from GitHub (backup)
**macOS / Linux (bash)**
```bash
git clone https://github.com/etony668/dsh-task-board.git
cd dsh-task-board
./install.sh
```
**Windows (PowerShell)**
```powershell
git clone https://github.com/etony668/dsh-task-board.git
cd dsh-task-board
.\install.ps1
```
> Windows users can also run `./install.sh` from Git Bash (same result).
Then **refresh the DSH page** (or restart DSH) to see the `Task Board` tab.
If the tab does not appear after a refresh, restart DSH once — the patch always
applies at startup.
### Option 1b: One-click install from the plugin market
This plugin has been submitted for listing on
[awesome-dsh-plugin](https://awesome-dsh-plugin.com) (category `workflow`; takes
effect once merged). With the
[dsh-market](https://github.com/dsh-market/dsh-market) plugin installed, open
DSH **Settings → Plugin Market**, search for `task-board` and install with one
click — no manual clone needed.
### Option 2: Manual install
1. Put this repository's contents into `~/.dsh/plugins/dsh-task-board/` (or any directory).
2. Run `./reinstall.sh` — it copies the package into the current runtime's
`node_modules/@etony668/dsh-task-board/` and creates the profile fallback symlink.
3. Make sure `~/.dsh/cordis.patch.yml` contains (create it if missing):
```yaml
- insert:
- id: task-board
name: '@etony668/dsh-task-board'
```
> `reinstall.sh` / `reinstall.ps1` auto-detect common DSH runtime directories on
> macOS / Windows / Linux. If detection fails, specify the path explicitly:
> - bash: `DSH_TASK_BOARD_RUNTIME="/path/to/runtime" ./reinstall.sh`
> - PowerShell: `.\reinstall.ps1 -RuntimeRoot "C:\path\to\runtime"`
## Usage
- Switch to the board via the top tab; there is **no back button** inside the
board — go back with the top `Chat` tab, or via keyboard `Tab` / `Esc`
(not hijacked while focus is in an input).
- The bottom message composer is hidden on the board view to avoid overlap.
- After task changes, the agent appends a clickable “view task board” link that
switches to the board tab without a page refresh.
## Upgrade
A DSH upgrade creates a new runtime version directory; the `node_modules` copy
and the profile symlink must be rebuilt:
```bash
cd ~/.dsh/plugins/dsh-task-board && ./reinstall.sh
```
Windows:
```powershell
cd $env:USERPROFILE\.dsh\plugins\dsh-task-board
.\reinstall.ps1
```
`cordis.patch.yml` lives in `~/.dsh` and is unaffected by upgrades.
## Uninstall
```bash
# 1) Remove the plugin row from the patch (edit ~/.dsh/cordis.patch.yml, drop the - insert: part)
# 2) Delete the source and runtime copies
rm -rf ~/.dsh/plugins/dsh-task-board
rm -rf <runtime>/versions/*/node_modules/@etony668/dsh-task-board
rm -f ~/.dsh/profiles/node_modules/@etony668/dsh-task-board
# 3) Data (optional): ~/.dsh/taskboards/*.json
```
## Repository layout
```
index.js package root entry (loader resolves <pkg>/index.js; re-exports lib/index.js)
lib/index.js host plugin (node ESM): storage + tools + skill + /api/task-board route
lib/client.js web plugin bundle (hand-built __ModuleLoader__, react only)
package.json dsh.client: { platform: web }, exports ./client; dsh.bundle patch
install.sh one-click install (copy + install + patch write; macOS/Linux bash)
install.ps1 one-click install (Windows PowerShell)
reinstall.sh reinstall into runtime node_modules + profile fallback symlink (bash)
reinstall.ps1 reinstall (Windows PowerShell)
```
## Development
The plugin follows the DSH dual-end structure: the host side (Node ESM) provides
storage/tools/skill/route, and the client side (browser bundle) registers the
`conversation.view` tab and renders the board. After changes, run `./install.sh`
and refresh the page; host-side changes need a DSH restart.
## License
[MIT](./LICENSE)
Install
dsh plugin --profile web add github:etony668/dsh-task-board#4e7f97cdbbc765d0e351e0e6d066f6a40ef14a0e
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install etony668-dsh-task-board from the hub