macOS + Windows latest release

Your year
of done, plotted.

A GitHub-style activity graph for the tasks you finish in Todoist. Lives quietly on your desktop. Refreshes itself. Paints from cache before you've blinked.

Download latest View source
Fetching the latest release...
Todoist activity
Updated just now
frameless · 720×300 default · drag to resize Todoist Light
01 · features

A widget you'll forget is running.

Cache-first

Paints in under a frame.

On launch, the graph renders from local cache instantly. The fresh fetch happens in the background — no spinner, no flash, no waiting.

Quiet refresh

Updates itself.

Auto-syncs on window focus, every 15 minutes, or on demand. Rate-limit aware with 429 backoff. You don't think about it.

Token isolated

Your key never leaves the main process.

Your Todoist token stays local and out of the graph view.

Reflow

Drag the edge. Weeks fit the width.

Cells stay a fixed 11px. Resize the window and the column count adapts to whatever space you give it — a true desktop widget.

Tooltips

Hover for the full picture.

Each cell shows the date, the completion count, and the first few task names — so the graph is a memory aid, not just a number.

Persistent

Bounds, theme, zoom — all saved.

Close it, move it, resize it, zoom it. Open it back up and find it where you left it.

02 · changelog

What's new.

Fetching releases from GitHub...
view all releases on GitHub →
03 · install

Three minutes to first cell.

1
Choose your build

macOS users pick Apple Silicon or Intel. Windows users get the setup file.

2
Install it

On macOS, open the .dmg and drag Todoist Graph into Applications. On Windows, run the setup file. The macOS build is unsigned, so first launch may need right-click → Open.

3
Paste your API token

Settings opens automatically on first run. Tap Get token → to open Todoist's developer page, copy your personal token, paste, save.

4
Resize. Theme. Forget.

Drag the corner to whatever shape you want. Pick a theme. Park it on a second monitor. It'll keep itself in sync.