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.overlayslot, with the to-do list, status glyphs, and an open-item count. - Same data, no duplication — the panel reads the
todosprojection from the current session summary; hidden while closed or while the session carries no to-dos. - Bilingual —
zh/endictionaries on its owntodo-panellocale namespace.
Requirements
- DeepSeek Harness
>= 0.1.0-rc.6, with the to-do capability mounted (@deepseek-ai/dsh-tool-todoregisters thetodosprojection). 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 thetodo-paneldictionaries 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'sprojectionValues.todosbecause 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.ts—zh/endictionaries.scripts/build.mjs— esbuild bundle with the harness'swindow.__ModuleLoader__.loadwrapper and CSS Modules compiled to an injected<style>tag.
License
Apache-2.0 — see LICENSE.