npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

opensec-pi-todo

v2.13.1

Published

OpenSec Todo for Pi: a todo list for the model, shown as a live panel that survives /reload and compaction. Bun build, for Pi-Bolt.

Readme

opensec-pi-todo is OpenSec's build of @juicesharp/rpiv-todo for Pi-Bolt, Pi compiled ahead of time on Bun.

  • It ships as a prebuilt bundle with no runtime dependencies, and is localized without extra packages.
  • It caches its configuration and reports problems once, in Pi's UI.

Install

pi-bolt install npm:opensec-pi-todo
  • The Pi-Bolt installer offers to install it for you.
  • After installing, restart Pi-Bolt or run /reload.
  • Update it with pi-bolt update --extensions, and remove it with pi-bolt remove npm:opensec-pi-todo.

Requirements

  • Pi-Bolt 0.6 or later (Pi 1.0), or Pi run by Bun 1.3 or later.
  • This build runs on Bun only. For Pi on Node, use @juicesharp/rpiv-todo.
  • Install one of the two, not both: they register the same todo tool.
  • The panel and /todos need an interactive session. Headless runs still get the todo tool.

Features

  • The plan stays on screen. A panel above the editor shows every task with a status glyph, the label of the task in progress, and a Todos (done/total) heading.
  • Tasks survive /reload and compaction. Each tool call carries the full list after the change, and the list is replayed from the session. Nothing is written to disk.
  • Finished work gets out of the way. When every task is done, the panel closes as soon as the model stops. A list with work left keeps its completed rows until your next prompt, then drops them. Compaction, /reload and resuming a session do not bring finished tasks back.
  • Forgotten tasks get noticed. If the model leaves a task in progress, or stops updating the list for a few turns, its next request carries a short reminder of the open tasks. The reminder is not saved in the session.
  • The panel never takes over the terminal. Past its row budget it hides completed tasks first, and says what it hid: +3 more (2 completed, 1 pending).
  • The model can sequence work. blockedBy dependencies are validated before anything is written: dangling ids, deleted dependencies, self-blocks and cycles are rejected.
  • Parallel sessions stay separate. Task state is kept per session, so a child session cannot read or overwrite the foreground list.
  • Localized. Nine locales ship with the package. The locale comes from ~/.config/rpiv-i18n/locale.json, then LANG / LC_ALL, then English.

Usage

| Tool / command | What it does | |---|---| | todo | The model's tool for adding and updating tasks. | | /todos | Prints the full list, grouped by status. | | ctrl+shift+t | Collapses the panel to its heading and a one-line hint, and expands it again (configurable). |

Run /todos to check that the extension is loaded. A new session prints No todos yet. Ask the agent to add some!.

Then ask for something with several steps, for example "add a repository layer with tests, and track it as todos". The model calls todo, and the panel appears above the input box and updates as the work moves on.

Configuration

Optional. Create ~/.config/rpiv-todo/config.json, or $XDG_CONFIG_HOME/rpiv-todo/config.json if that variable is set:

{
  "maxWidgetLines": 8,
  "collapseKey": "alt+t",
  "staleReminder": false
}

| Setting | Default | Meaning | |---|---|---| | maxWidgetLines | 12 | Rows the panel may use, heading included. Minimum 3. | | collapseKey | "ctrl+shift+t" | The key that collapses and expands the panel, in Pi's keybinding form. "off" registers none. Needs /reload. | | staleReminder | true | Reminds the model of open tasks it has stopped updating. false turns the reminder off. | | guidance | built in | Replaces the instructions the extension gives the model about using the todo list. Needs /reload. |

A missing or malformed file falls back to these defaults. The extension only reads this file.

More detail: the todo tool, configuration, and the panel and /todos.

How this build is packaged

The package holds two files and the locales/ directory:

  • dist-bun/index.js is a small ESM entry that Pi loads.
  • dist-bun/core.cjs is the extension itself, as readable CommonJS that Bun loads natively, fresh on every load.

Pi never has to transpile the extension, and /reload or an upgrade re-evaluates it.

Changes from upstream

Based on @juicesharp/rpiv-todo 2.12.0. The tool name and schema, /todos, the panel, the config file and the session format are unchanged.

  • Ships as a prebuilt bundle instead of TypeScript sources. @juicesharp/rpiv-config and @juicesharp/rpiv-i18n are bundled in, so it has no runtime dependencies.
  • Localization works without installing @juicesharp/rpiv-i18n separately. An installed rpiv-i18n extension (/languages, --locale) still controls it.
  • The panel no longer reads and parses the config file on every render; it is cached until the file changes.
  • Config and panel warnings are shown once, through Pi's notifications, instead of being printed on every frame.
  • The panel closes reliably once the work is done (2.13.1). Upstream hides a completed task only if the panel drew it and the next prompt starts, so a finished list stayed open after the run, a collapsed panel never dropped its completed tasks, and compaction or /reload brought them back. Hiding is now decided from the task list at run boundaries, and the model is reminded of tasks it left open.

License

Copyright 2026 OpenSec. Licensed under the Apache License, Version 2.0.

Based on @juicesharp/rpiv-todo by juicesharp (MIT). The bundle includes @juicesharp/rpiv-config and @juicesharp/rpiv-i18n (MIT). Their notices are in NOTICE.