Skip to content
Desktop · Backlog reader

roadkeep-gui

roadkeep keeps one backlog honest; this reads all of them at once. It finds every governed checkout on the machine, shows what each one has shipped and still owes, and files or ships a line without leaving the window, always through the roadkeep command rather than around it. Hand a task to Claude Code and the session is started, claimed and shown as it works.

Public numbers

GitHub stars
0
Latest release
v0.1.0
released 2026-09-12
Release downloads
5
v0.1.0

Public numbers from GitHub and PyPI, as of 2026-10-20. The site is rebuilt daily.

Install

What comes next

From the product's own docs/ROADMAP.md at 09496d1.

Block F

The agent surface (handing one task to Claude Code)

  • Designedclosing the window kills the session it was running, and reopening offers no way back to it
  • Designeda line the quit left claimed reads as another worker's, so the window will not hand it back
Block G

The shell (an executable now, a service later)

  • Partialthe executable is unsigned, so Windows tells a person the app is untrusted before it opens

Recently shipped

All 301 entries →
  1. Enter in a session's reply box never sends it, so every answer takes a trip to the button

    Enter sends a session's reply through the button's own send, Shift+Enter breaks the line, and a composing or held Enter starts no second turn (design recorded in packages/ui/src/Session.tsx).

    RG304 · b8ed6aa
  2. the app has no public page, so a release is reachable only by somebody who already knows the repository

    A prerendered site in site/ with a Markdown twin per route, every count read from the source at build time, and a Pages deploy that runs only when started.

    RG307 · 4287670
  3. a reply typed into a session is never drawn in its stream, so what was asked of it is gone once sent

    A reply typed into a session is kept as a line of its stream, drawn as the person's own words wherever that session is read (design recorded in packages/core/src/session.ts).

    RG303 · 3598701
  4. show refuses every shipped entry: its reader holds the pointer to a string, and a ledger line carries none

    show reads a shipped entry, whose pointer comes back null because shipping deleted the design it named.

    RG302 · 11a45d8
  5. a walkthrough is asked through askGloss, so the module that runs every read-only question is named after one of them

    The read-only query is named for what it is, so no name on the path a walkthrough takes says gloss (design recorded in packages/shell/src/question.ts).

    RG301 · 5d69741
  6. no shot fixture keeps an answer, so a kept gloss's notices and the walkthrough dialog are drawn by no picture

    The shots run keeps an answer first, so both dialogs are photographed on one: a gloss old two ways, a walkthrough and its verdicts (design recorded in packages/shell/src/shots-kept.ts).

    RG300 · 3255482
  7. an explanation nests a paragraph inside a paragraph, which React reports as invalid HTML on every answer

    The explanation wraps prose in a block wherever it draws it, so no paragraph holds one and React reports no invalid nesting.

    RG299 · 0a12d07
  8. npm run dev:inspect opens its first window without the debugging port, so Playwright MCP reaches it only after a restart

    The first window a development run opens carries the debugging port, so Playwright MCP reaches it with nothing touched.

    RG298 · a19627f