Skip to main content

dsh-web-ui/packages/dsh-task-board

5.1kStars311Forks50Issues5Watchers

DSH Web GUI with multi-column task board, Host authoritative ledger for task management, real DSH session execution, 5-field cron scheduling, and optional cross-platform idle sleep protection.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki

ⓘ This plugin is a sub-package of the zhu1090093659/dsh-web-ui monorepo — stars and activity count the whole repository.

Language
TypeScript
License
Apache-2.0
Branch
dev
deepseek-harnessdshdsh-pluginweb-ui

Install

cmdweb profile
$ dsh plugin --profile web add @linxin666/dsh-client-ui-task-board

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin zhu1090093659/dsh-web-ui/packages/dsh-task-board for me: review the repository at https://github.com/zhu1090093659/dsh-web first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

A multi-column task board plugin for DSH Web GUI that托管任务、计划与执行记录 in the authoritative ledger on the Host side, allowing you to run tasks on a schedule using real DSH sessions and preventing the computer from entering system sleep during long-running tasks.

Core Features

  • Provides five-column kanban, search, task details, archive/restore, execution history, and execution session jump in the DSH Web sidebar
  • Uses Host-side $DSH_HOME/task-board/ledger-v2.json as the single source of truth; browser actions only become UI state after Host confirmation
  • Each execution creates an independent DSH session, pinning workspace, agent preset, and /permission <id> before sending the task prompt; closes if pins are missing
  • Supports 5-segment cron in local timezone (*, */n, range, comma list, Sunday 0/7, date/weekday OR semantics); can deterministically observe or cancel running executions after restart
  • Pushes revision, scheduler, and power changes via SSE; change interfaces always return complete revisioned snapshots, consistent across tabs and after reconnection
  • Optional cross-platform idle sleep protection: caffeinate on macOS, SetThreadExecutionState on Windows, systemd-inhibit on Linux, all using fixed executable paths and shell: false

Technical Implementation

  • Language: TypeScript (ES Module, type: "module")
  • Key Dependencies: schemastery (config schema validation), @deepseek-ai/dsh-host-apiproxy and @deepseek-ai/dsh-host-webserver (Host half-route mounting), @deepseek-ai/dsh-agent + @deepseek-ai/dsh-commands (real session execution), react ^18.2 (browser-side UI)
  • Architecture Pattern: Typical cordis dual-sided plugin (host + client half separation), mounted via profile bundle layer through cordis.patch.yml; does not modify DSH source code; host process handles ledger/cron/runner/power state machine, browser process handles async display and action submission
  • Entry Files: src/index.ts (host loader), src/client/index.ts (client apply), src/host-service.ts (orchestration core), src/host-ledger.ts (ledger persistence), src/power-inhibitor.ts (cross-platform power protection)

Use Cases

For people who need to extract a set of repetitive or long-running tasks from manual sessions and delegate them to DSH agents on a schedule, such as nightly report summaries, scheduled data scraping, or scheduled analysis runs. The board makes task lists visualizable, scheduling rules readable, and execution results traceable; optional power protection ensures long-running tasks won't be interrupted by idle sleep. If you just want one-off sessions with the agent's built-in todo planning, this plugin is overkill.

Prerequisites & Compatibility

DependencyMin VersionDescription
DSH (@deepseek-ai/dsh-agent / dsh-commands)>=0.1.0-rc.8From peerDependencies, injected by host at runtime
Node^22.19 or >=24From monorepo packages/AGENTS.md convention; this package does not declare engines
React>=18.2.0peerDependency, required for browser half build
PlatformmacOS / Windows / LinuxCross-platform power protection uses native fixed helpers; other platforms report unsupported for power protection, but task body remains fully usable
Native ModulesNoneOnly uses built-in modules like node:child_process, node:crypto, node:fs, node:path

Installation

dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-task-board

Configuration Options

ConfigTypeDescriptionDefault
enabledbooleanMaster switch: disabling also stops Host service, browser kanban, and agent announcementtrue
announceToAgentbooleanWhether to append task board description to agent system prompt (does not affect board usage itself)true
preventIdleSleepbooleanPrevent system from entering idle sleep when any DSH session is running, any schedule is enabled, or session status is unknown (allows display sleep and lock screen)false
trustedProxyHostsstring[]List of host[:port] allowed through authenticated reverse proxy; empty array = only DSH loopback origin direct connection[]
proxyTokenEnvstringEnvironment variable name storing reverse proxy token; token itself won't be written to plugin configDSH_TASK_BOARD_PROXY_TOKEN

FAQ

Q: Will tasks continue executing after closing the browser page?

A: Yes. Tasks truly run in the Host process; the browser is just an async view. Closing the page, switching tabs, or network disconnection won't interrupt already-running sessions or miss cron triggers.

Q: Where are task and session data stored? Is it synced to the cloud?

A: Data lands in the Host-side local file $DSH_HOME/task-board/ledger-v2.json, with POSIX permissions 0600, Windows inheriting user directory ACL; never uploaded to any remote. V1 data in old browser localStorage will be imported once after first upgrade by source/request id and kept as read-only rollback copies.

Q: If I miss a cron trigger point (e.g., computer slept overnight), will it catch up the next day?

A: No. All missed triggers after Host startup or long pause are skipped, and nextRunAt rolls forward from current Host time. The plugin deliberately does no catch-up to avoid catch-up storms.

Q: Can this plugin prevent the computer from sleeping? Can it wake a sleeping computer?

A: It can only prevent "system entering idle sleep" (macOS caffeinate / Windows ES_CONTINUOUS+ES_SYSTEM_REQUIRED / Linux systemd-inhibit idle lock), and does not touch display sleep or lock screen. Lid close, manual sleep, hibernation, low battery forced sleep, and enterprise power policies are not covered; the plugin does not create wake-up timers and cannot wake an already sleeping computer.

Q: Does task execution require additional payment? Does it consume API quota?

A: Each execution creates a brand new DSH agent session, consuming the same API quota as regular sessions; the plugin itself is free.

Q: Why does Linux show unsupported?

A: Power protection depends on systemd-logind's idle block lock and requires the current user to be allowed to acquire it; containers, WSL, non-system bus, or non-systemd systems will show unsupported without desktop alternatives. Task body (kanban/cron/execution) is unaffected; only power protection is unavailable.

Q: How to configure for reverse proxy exposure?

A: Bind DSH Web to loopback, fill trustedProxyHosts with allowed proxy host[:port], put the high-entropy token in the environment variable pointed to by proxyTokenEnv, let the reverse proxy complete authentication and replace the request header X-Dsh-Task-Board-Proxy-Token with the server-injected token (do not pass through client-provided), restart Host after modification to take effect.

Q: How to completely uninstall?

A: dsh plugin --profile web remove @linxin666/dsh-client-ui-task-board, then restart dsh web. The plugin won't automatically delete the ledger file; manually delete $DSH_HOME/task-board/ if needed.

Difficulty Level

Advanced — requires understanding DSH's workspace / agent preset / permission concepts and cron expressions; creating a few manual tasks is quick, but using schedules, long tasks, and power protection well requires first reading the Host ledger and power helper security constraints.

Known Issues & Limitations

  • All missed cron triggers during Host downtime, system sleep, or long pause are skipped and never catch up; this is intentional behavior, not a bug
  • If a task is already running,到期触发点会被跳过并滚动到下一匹配点; tasks never run concurrently or queue
  • DST uses Host local wall clock semantics: non-existent minutes during spring forward are skipped, duplicate minutes during fall back don't run a second time
  • Power protection only intercepts idle system sleep; display sleep and lock screen are explicitly allowed; lid close, manual sleep, hibernation, shutdown, low battery forced sleep, and enterprise power policies are not covered
  • Plugin does not create wake-up timers and cannot wake a sleeping computer
  • Enabled schedules start holding locks before future trigger points, keeping them long-term drains more battery
  • Reverse proxy config changes (trustedProxyHosts / proxyTokenEnv) require Host restart to take effect
  • Corrupted v2 ledger is renamed to ledger-v2.json.corrupt-* and isolated; Host starts with empty ledger plus visible scheduler error; corrupted bytes are not overwritten

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/zhu1090093659/dsh-web-ui/packages/dsh-task-board)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory