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

@smoose/pi-footer

v0.1.2

Published

A compact footer/status bar extension for pi coding agent

Readme

pi-footer

A compact footer/status bar extension for pi coding agent.

This plugin is a simplified take on nicobailon/pi-powerline-footer, with a smaller configuration model plus a few extra features such as custom segment ordering, custom extension-status items, rainbow coloring, and a prompted input editor.

Features

  • Powerline-style footer segments
  • Presets for different levels of detail
  • Fully custom segment order via footer.segments
  • Custom items sourced from extension statuses
  • rainbow color support for custom items
  • Responsive overflow: segments that do not fit on the first footer line move to the next line
  • Input editor polish:
    • left/right outer margin
    • single > prompt marker
    • multiline input alignment

Installation

pi install npm:@smoose/pi-footer

Basic configuration

Configure the plugin under the footer key in ~/.pi/agent/settings.json or project-local .pi/settings.json.

Minimal example:

{
  "footer": "default"
}

Object form:

{
  "footer": {
    "preset": "default"
  }
}

Presets

Available presets:

default
minimal
compact
full
nerd
ascii
custom

You can switch presets inside pi with:

/footer default
/footer minimal
/footer compact
/footer full
/footer nerd
/footer ascii
/footer custom

Running /footer with no arguments toggles the footer on/off for the current session.

Segment order

Use footer.segments to control the exact segment order.

{
  "footer": {
    "preset": "default",
    "segments": [
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost"
    ]
  }
}

The footer renders segments in the array order. If the line is too narrow, later visible segments overflow onto a second footer line.

If segments is omitted, the selected preset's default order is used and custom items are appended after preset segments.

Built-in segments

Supported built-in segment ids:

| Segment | Description | | --- | --- | | model | Current model name | | thinking | Current thinking level, e.g. think:med | | shell_mode | Shell mode status, when available | | path | Current working directory | | git | Git branch and dirty state | | subagents | Reserved segment; currently hidden | | token_in | Input tokens | | token_out | Output tokens | | token_total | Input + output + cache tokens | | cost | Session cost or (sub) for subscription usage | | context_pct | Context usage percentage and window size | | context_total | Context window size | | time_spent | Session elapsed time | | time | Current time | | session | Session id prefix | | hostname | Hostname | | cache_read | Cache read tokens | | cache_write | Cache write tokens | | extension_statuses | Remaining extension statuses not lifted into custom items |

Custom items

Custom items display values from pi extension statuses.

If another extension calls:

ctx.ui.setStatus("soul-mood", "👻 Susan·厌恶");

then you can show it in the footer with:

{
  "footer": {
    "preset": "default",
    "segments": [
      "custom:soul",
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost"
    ],
    "customItems": [
      {
        "id": "soul",
        "statusKey": "soul-mood",
        "color": "rainbow"
      }
    ]
  }
}

Custom segment ids are referenced as:

custom:<id>

For example:

custom:soul

Custom item fields

| Field | Description | | --- | --- | | id | Custom item id; used by custom:<id> | | statusKey | Key from ctx.ui.setStatus(key, value); defaults to id | | color | Optional color name, hex color, or rainbow | | prefix | Optional prefix shown before the status value | | hideWhenMissing | Hide the item when no status exists; default true | | excludeFromExtensionStatuses | Exclude this status from extension_statuses; default true |

Colors

Custom item colors can be:

Hex colors

{
  "color": "#00afaf"
}

pi theme color names

Examples:

accent
success
warning
error
muted
dim
text
thinkingHigh
thinkingMedium
borderMuted

Rainbow

{
  "color": "rainbow"
}

rainbow applies the plugin's built-in per-character rainbow coloring.

Example configuration

{
  "footer": {
    "preset": "default",
    "segments": [
      "custom:soul",
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost",
      "extension_statuses"
    ],
    "customItems": [
      {
        "id": "soul",
        "statusKey": "soul-mood",
        "color": "rainbow"
      }
    ]
  }
}