Back to home

1479650473

dsh-todo-panel

Persistent to-do panel for DeepSeek Harness: header toggle opens a floating task panel fed by the todos projection

Stars
0
Language
TypeScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-todo-panel

A persistent, toggleable to-do panel for DeepSeek Harness: a conversation-header toggle opens a floating task panel fed by the todos projection, alongside the stock composer strip.

The stock conversation.input.dock to-do strip (mounted by @deepseek-ai/dsh-client-ui-conversation) is left untouched — this plugin only adds the persistent floating view, so both surfaces stay in sync off the same projection.

Features

  • Header toggle — a checklist button in the conversation header (conversation.session.header.actions) flips the panel; its pressed state mirrors the panel.
  • Floating panel — a fixed-position card over the frame-wide shell.overlay slot, with the to-do list, status glyphs, and an open-item count.
  • Same data, no duplication — the panel reads the todos projection from the current session summary; hidden while closed or while the session carries no to-dos.
  • Bilingualzh / en dictionaries on its own todo-panel locale namespace.

Requirements

  • DeepSeek Harness >= 0.1.0-rc.6, with the to-do capability mounted (@deepseek-ai/dsh-tool-todo registers the todos projection). To-dos are cleared at the start of each turn, per the stock projection semantics.

Installation

dsh plugin add dsh-todo-panel

The dsh.bundle manifest (cordis.patch.yml) mounts the server-side plugin entry and the dsh.client declaration injects the browser half immediately (platform: web), so a profile restart is enough to enable it.

Screenshots

(TBD — added after the first tagged release.)

Development

npm install        # or pnpm install
npm run typecheck  # tsc --noEmit
npm run test       # vitest (jsdom per-file, __ModuleLoader__ harness)
npm run build      # tsc declarations + esbuild browser bundle → lib/

Architecture

  • src/client/index.ts — client plugin body: registers the todo-panel dictionaries and injects the toggle and the floating panel into their slots.
  • src/client/TodoToggle.tsx — the header toggle (conversation.session.header.actions).
  • src/client/TodoFloatingPanel.tsx — the floating panel (shell.overlay); reads the current session's projectionValues.todos because root-scoped entries receive no session framework hooks.
  • src/client/TodoGlyphs.tsx — status glyphs for the three todo states.
  • src/client/panel-store.ts — the cross-slot visibility store shared by toggle and panel.
  • src/client/locales.tszh / en dictionaries.
  • scripts/build.mjs — esbuild bundle with the harness's window.__ModuleLoader__.load wrapper and CSS Modules compiled to an injected <style> tag.

License

Apache-2.0 — see LICENSE.