Back to home@etony668

dsh-task-board

DSH 项目任务看板插件:会话「任务看板」视图 + 父子任务树工具与技能 + 本地 JSON 存储(CodexFF 移植)

Stars
1
Language
JavaScript
Created
Aug 23, 2026
Updated
Aug 23, 2026
GitHub repo

Introduction

English | 中文

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.

Conversation view: Chat → Trajectory → Task Board tab

Canvas board: main task and subtask panels

Installation

Option 1: Clone from GitHub (recommended)

macOS / Linux (bash)

git clone https://github.com/etony668/dsh-task-board.git
cd dsh-task-board
./install.sh

Windows (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 (category workflow; takes effect once merged). With the 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/@deepseek-ai/dsh-task-board/ and creates the profile fallback symlink.

  3. Make sure ~/.dsh/cordis.patch.yml contains (create it if missing):

    - insert:
        - id: task-board
          name: '@deepseek-ai/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:

cd ~/.dsh/plugins/dsh-task-board && ./reinstall.sh

Windows:

cd $env:USERPROFILE\.dsh\plugins\dsh-task-board
.\reinstall.ps1

cordis.patch.yml lives in ~/.dsh and is unaffected by upgrades.

Uninstall

# 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/@deepseek-ai/dsh-task-board
rm -f  ~/.dsh/profiles/node_modules/@deepseek-ai/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