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

pi-statusbar-control

v0.5.0

Published

Show or hide status-bar elements injected by any pi extension via ctx.ui.setStatus, with a toggle list that persists across restarts.

Readme

pi-statusbar-control

npm License: MIT

Show, hide, and reorder every element pi's footer can display — its own built-in segments (path, git branch, token stats, cost, context usage, model/thinking) as well as anything an extension injects via ctx.ui.setStatus(key, text) (plan mode, powerline stash indicators, custom status demos, etc.).

Pi's default footer always renders all of these with no way to filter or reorder. This extension takes over the footer, reproduces the built-in segments exactly, discovers every extension key it observes, and gives you one toggle list to show/hide each element plus a reorder UI for extension-injected ones — all persisted across restarts.

Install

pi install npm:pi-statusbar-control

Or drop index.ts into ~/.pi/agent/extensions/ / .pi/extensions/.

Usage

| Command | Effect | |---|---| | /statusbar | Open interactive toggle list (shown/hidden per element) | | /statusbar list | Print all known elements and current visibility | | /statusbar order | Interactively reorder extension-injected statuses | | /statusbar move <key> <up\|down\|top\|bottom> | Reorder one key non-interactively | | /statusbar off | Restore pi's untouched default footer | | /statusbar on | Re-enable the filtered footer (default) |

All subcommands and move arguments (extension keys, then directions) autocomplete as you type — press Tab / start typing after /statusbar to see suggestions with descriptions.

Toggleable elements

Built-in (always listed, fixed order, independent of any extension):

  • path — cwd (abbreviated to ~), git branch, session name
  • tokens — ↑input ↓output cache read/write, cache-hit %
  • cost — $x.xxx, plus (sub) label when billed via subscription/OAuth
  • context — context-window usage percentage / window size
  • model — model id, thinking level, provider (when relevant)

Extension-injected — discovered automatically the first time the source extension calls ctx.ui.setStatus(key, ...). If a key isn't in the list yet, trigger that extension once and run /statusbar again. Their relative display order is fully customizable via /statusbar order (↑/↓ to move the cursor, shift+↑/shift+↓ or K/J to move the selected item, enter/esc to close) or /statusbar move <key> <direction>.

Own-line / wrapping

A single lengthy status can crowd out everything else sharing its line. In /statusbar, cycle an extension key's value to own line to always render it on its own footer line, independent of the others. Any remaining inline group that still doesn't fit the terminal width wraps onto additional lines automatically instead of getting truncated.

Visibility, known extension keys, their order, and own-line placement persist to ~/.pi/agent/settings.json under statusbarControl.

License

MIT