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-status-anim

v1.0.1

Published

Animated working status row for the pi coding agent: phased verbs, glyph animation, token counter, stall feedback, easter eggs.

Downloads

77

Readme

pi-status-anim

An animated working row for the pi coding agent. While the agent streams, the default status line is replaced with a richer, animated status: a stable verb per phase, an animated glyph, live token counts, stall feedback, and a few easter eggs. The whole row — verbs, glyph, tokens, timer, easter eggs, stall feedback — lives here.

Screenshots

Animated row in action — click to watch (placeholders until real captures are added):

Features

  • Phased verbs — the verb changes only when the agent-loop moves between phases (requesting → thinking → responding); tool calls never change it.
  • Per-phase glyph animation — a travelling dot while requesting, a soft star set while thinking/responding, braille while tools run.
  • Robot avatar (robotAvatar) — instead of abstract glyphs, a 5-cell animated robot face across every state: it blinks while waiting, rolls its eyes up with a slow brain pulse while thinking, works with a fast brain pulse while tools run, smiles while responding, reacts to tool results (happy / sad for 2s, sad in red), falls asleep when stalled, and is pleased when done. Off by default.
  • Token counter — the full content snapshot is recomputed on every update (no accumulation), shown as ↓ 1.2k with an optional · 42/s rate and a smooth odometer.
  • Stall feedback — no fresh tokens and no active tool for 3s: the glyph fades to red, the glimmer goes dark, and a tier word appears (worried → desperate → existential). Active tools never produce a false stall.
  • Liveliness — animation speed and presence follow the real token flow.
  • Width gating — suffix parts are dropped from the lowest priority up so the row never wraps, no matter how narrow the terminal.
  • Interrupt hint — restored on the row when nothing else is shown.
  • Easter eggs — git status, model name, time of day, fun facts after 60s of thinking, anxiety gradient after 60s.
  • Wave / breath — with animChance, the glimmer is replaced for the agent-loop by a travelling light wave or a calm breathing pulse.
  • reducedMotion — static glyph and plain text, single stall timer.

Install

pi install npm:pi-status-anim                          # from the npm registry
pi install git:github.com/oglenyaboss/pi-status-anim   # or directly from GitHub

No runtime dependencies: the only import from the pi package is import type (erased at runtime). /reload recreates the extension and re-reads the config; there is no hot reload.

Configuration

All options live in ~/.pi/agent/settings.json under the statusAnim key. Defaults are shown.

You can also configure from the TUI: /statusanim opens an interactive menu of every option, and /statusanim <key> <value> sets one option directly (e.g. /statusanim robotAvatar on). Tab completes option keys and on|off. Changes are written to settings.json; run /reload to apply them.

{
  "statusAnim": {
    "enabled": true,
    "words": [],              // extra verbs appended to the defaults
    "intervalMs": 50,         // text-animation clock
    "showTimer": true,
    "timerAfterMs": 1000,
    "tokenCounter": true,
    "tokenAfterMs": 3000,     // when tokens appear (flicker guard)
    "tokenRate": true,        // show tok/s
    "effortSuffix": "",        // empty = auto from thinking level
    "stallAfterMs": 3000,
    "stallTiers": true,
    "modelEggs": true,
    "timeEggs": true,
    "gitStatus": true,
    "funFacts": true,
    "anxietyGradient": true,
    "reducedMotion": false,
    "toolDetail": true,       // "(grep · 247 files)" when args carry a count
    "queueHint": true,        // "(+ queued)"
    "phaseGlyphs": true,      // per-phase glyph sets
    "robotAvatar": false,     // robot face across all phases (off by default)
    "animChance": 0.25,       // probability of wave/breath per agent-loop
    "animAfterMs": 1500,
    "labelActive": "∴ Thinking…",
    "labelDone": "∴ Thinking"
  }
}

Development

npm install          # devDependency only (types for typecheck)
npm test             # typecheck + selfcheck + log-smoke + runtime-sim
npm run typecheck    # tsc --noEmit
npm run selfcheck    # pure-module checks (width gating, FSM, stall math)
npm run runtime-sim  # end-to-end sim against a fake pi API
npm run log-smoke    # debug-logger smoke test

CI runs the same suite on every push (.github/workflows/ci.yml).

Notes

  • The interrupt hint text is fixed (escape): pi's keybinding registry is not exposed to the extension API, so the hint cannot follow custom keybindings.
  • The queue hint shows (+ queued) — the extension API exposes only whether messages are pending, not the count.
  • Colors are always derived from the active theme tokens (never hardcoded), including the stall fade, glimmer, wave/breath, and anxiety gradient.

License

MIT