Bundle
dsh-todo-panel
A persistent to-do panel for DeepSeek Harness: a header toggle opens a floating task panel fed by the todos projection, alongside the stock composer strip
- Source
- 1479650473
- License
- Apache-2.0
- Updated
- Updated 17 hours ago
Readme
# dsh-todo-panel A persistent, toggleable to-do panel for [DeepSeek Harness](https://github.com/deepseek-ai/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. - **Bilingual** — `zh` / `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 ```sh 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 ```sh 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.ts` — `zh` / `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](LICENSE).
Install
dsh plugin --profile web add github:1479650473/dsh-todo-panel
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 dsh-todo-panel from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.