Skip to content

About

Claude Code project todo.md progress in the PowerToys Command Palette Dock (unofficial)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Task Dock for Claude Code

A PowerToys Command Palette extension that puts the progress of your local Claude Code projects in the Dock, read from each project's tasks/todo.md.

Unofficial community project. Not affiliated with or endorsed by Anthropic or Microsoft. Claude and Claude Code are trademarks of Anthropic, PBC; they are used here only to say which tool this extension works with.

  • In the Dock: overall progress across all projects, e.g. 📋 78% 9 projects · 48 open (✅ when nothing is open).
  • Click it: a table of every project (progress bar, %, done/total, last update) and the open tasks of the project you're working on right now, grouped by section.
  • Browse all tasks: a full Command Palette list of projects; open one to see its tasks grouped by ## section, ☐ open / ✓ done. Open the todo.md or the project folder with one click.

The extension is read-only: it never writes to your files and makes no network calls.

How projects are found

Source What it gives
~/.claude.json → projects Every folder you've started Claude Code in
Extra scan roots setting (default %USERPROFILE%) Immediate subfolders that contain tasks/todo.md, for projects you worked on from a parent folder
Newest transcript in ~/.claude/projects Which project is "active" (falls back to the most recently edited todo.md)

Only folders that have a tasks/todo.md are shown. The root scan can also pick up a non-Claude folder that happens to have tasks/todo.md; remove the root or narrow it in the settings if that's unwanted. CLAUDE_CONFIG_DIR is honoured.

todo.md format

Standard Markdown task lists:

# Project title

## Phase 1
- [x] done task
- [ ] open task
### Sub-heading (stays inside "Phase 1")
1. [ ] numbered tasks work too
  • [x] / [X] is done; any other single character ( , -, ~, /) counts as open.
  • ## headings are sections; ### and deeper are labels inside the section. Tasks before the first ## go under General.
  • Checkboxes inside code fences or blockquotes are ignored. Nested tasks each count once.
  • Percentages round down, so 100% means every task is done.

Requirements

  • Windows 10 19041+ / Windows 11, PowerToys with Command Palette 0.9 or later (Dock support)
  • Claude Code projects that keep a tasks/todo.md (see todo.md format)

Installation

1. Turn on the Dock

  1. Install or update PowerToys and make sure Command Palette is enabled in PowerToys Settings.
  2. Open Command Palette (default Win+Alt+Space) → Settings → Dock (Preview) → turn on Enable Dock.

2. Download

From the latest release download:

  • TaskDockDev.cer
  • the package for your CPU: TaskDock_<version>_x64.msix (Intel/AMD) or TaskDock_<version>_arm64.msix (Arm, e.g. Snapdragon). Not sure? Run $env:PROCESSOR_ARCHITECTURE in PowerShell: AMD64 → x64, ARM64 → arm64.

3. Trust the certificate (once per machine)

The package is signed with a self-signed certificate, so Windows has to be told to trust it. In PowerShell as Administrator, in the download folder:

Import-Certificate .\TaskDockDev.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople

4. Install

In a normal PowerShell window (or double-click the .msix and choose Install):

Add-AppxPackage .\TaskDock_<version>_x64.msix

5. Show it in the Dock

  1. Open Command Palette and run Reload so it picks up the new extension.
  2. The Task Dock band usually appears in the Dock by itself. If it doesn't, search for Task Dock in Command Palette, open its context menu and run Pin to Dock (choose the side you like, e.g. Right).
  3. Click the band for the summary; Browse all tasks opens the full list. Settings: search Task Dock → Settings.

Update

Download the newer .msix and run Add-AppxPackage again; the certificate step isn't needed again. Then Reload Command Palette.

Uninstall

Get-AppxPackage TaskDock | Remove-AppxPackage
# optional, as Administrator: remove the trusted certificate
Get-ChildItem Cert:\LocalMachine\TrustedPeople | Where-Object Subject -eq 'CN=TaskDockDev' | Remove-Item

Upgrading from 0.1.x ("Claude Tasks")

Version 0.2 renamed the extension and changed its package identity, so Windows treats it as a new app. Remove the old one first; its settings are not carried over, and the Dock band has to be pinned again if it does not appear by itself:

Get-AppxPackage ClaudeTasks | Remove-AppxPackage

Troubleshooting

Symptom Fix
0x800B0109 / "the root certificate … is not trusted" on install Step 3 was skipped or not run as Administrator.
0x80073CFB / "a package with the same identity is already installed" A development build is registered: Get-AppxPackage TaskDock | Remove-AppxPackage, then install again.
Band doesn't appear Check Enable Dock is on, run Reload, then use Pin to Dock as in step 5.
Band shows — / No tasks found No project with tasks/todo.md was found. Projects come from ~/.claude.json and the Extra scan roots setting; add the parent folder of your projects there.
A project is missing It was never opened in Claude Code from its own folder. Add its parent folder to Extra scan roots.
An unrelated folder shows up It has a tasks/todo.md under a scan root. Narrow Extra scan roots.
Clicking the band opens the palette instead of the flyout, or it stops updating Command Palette host issues, see Known host issues. Reload fixes both.

Settings

Command Palette → Task Dock → Settings:

  • Refresh interval: 30 sec, 1, 2, 5 min (default 1 min). Only changed todo.md files are re-read.
  • Extra scan roots: ;-separated folders, environment variables allowed.
  • Show completed: show finished projects and tasks (default on).

Build from source

Needs the .NET 10 SDK. A full Windows SDK / Visual Studio is not required.

dotnet test tests\ClaudeTasks.Tests -p:Platform=x64      # unit tests
.\scripts\dev-deploy.ps1                                 # build + register (Developer Mode on)
.\scripts\dev-deploy.ps1 -Remove                         # unregister

After deploying, run Reload in Command Palette. If the band does not appear by itself, use Pin to Dock (see Installation).

MSIX package

.\scripts\pack.ps1 -Sign        # dist\...\TaskDock_<ver>_x64.msix + dist\TaskDockDev.cer

-Platform ARM64 builds the Arm package. The first -Sign run creates a self-signed CN=TaskDockDev code-signing certificate in Cert:\CurrentUser\My and reuses it afterwards. Install the result as described in Installation.

Back up that certificate (with its private key) so a rebuilt machine can keep signing updates that existing installs accept; otherwise every user has to trust a new .cer:

.\scripts\backup-signing-cert.ps1 -Destination <backup folder>   # prompts for a password, writes TaskDock-signing.pfx

Layout

src/ClaudeTasks/        Command Palette extension (Dock band, flyout, list pages, settings, TaskStore)
src/ClaudeTasks.Core/   Plain .NET library: todo.md parser, project discovery, active-project detection
tests/ClaudeTasks.Tests xUnit tests for Core
scripts/                dev-deploy.ps1, pack.ps1, backup-signing-cert.ps1, make-icons.py

Known host issues

These are Command Palette bugs, not bugs in this extension:

  • #50367: after the host releases an idle extension, clicking a band opens the palette instead of the flyout.
  • #49688: bands stop repainting after roughly 41 hours of uptime.

Running Reload in Command Palette works around both.

See also

Session Dock for Claude Code: your live Claude Code sessions in the Dock.

License

MIT. Parts derived from the PowerToys extension template are © Microsoft, MIT; see NOTICE.

About

Claude Code project todo.md progress in the PowerToys Command Palette Dock (unofficial)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages