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

@sherif-fanous/pi-notification-center

v0.3.0

Published

Pi extension that shows notifications as toasts and keeps a browsable session history

Readme

pi-notification-center

A Pi extension that shows notifications as toasts and keeps a browsable session history.

Extension notifications normally become permanent rows in Pi's chat transcript, where they crowd out the conversation. Notification Center shows them as toasts in the top-right corner instead, then keeps them in a browsable history for the rest of the session.

Requirements

  • Tested only against the latest stable release of Pi

Install

pi install npm:@sherif-fanous/pi-notification-center

Or try it without installing:

pi -e npm:@sherif-fanous/pi-notification-center

To uninstall:

pi remove npm:@sherif-fanous/pi-notification-center

Old history entries stay in your session files after you uninstall Notification Center, but nothing reads them any more.

Usage

When an extension sends a notification, a small card appears at the top-right instead of a transcript row. Cards stack downward, oldest at the top, and each one disappears a few seconds after it arrives. Every notification gets its own card.

Toasts never take keyboard focus. You can keep typing, and a card that arrives while a dialog or picker is open will not disturb it.

Long messages are shortened to fit the card, and a card that runs out of room ends with …. /notifications always has the full text. On a terminal too small to show a card safely, nothing appears, but the notification is still recorded.

Only interactive sessions show toasts. In print (-p), JSON, and RPC mode, notifications behave exactly as they did before you installed Notification Center.

Everything stays inside Pi's terminal UI. Notification Center never sends operating-system notifications.

Commands

| Command | What it does | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------ | | /notifications | Opens the history of this session's notifications. | | /notifications status | Shows whether toasts are on, how many notifications this session has captured, the toast settings, and your configuration file. |

The history browser

/notifications opens the history of what this session has captured. The left pane lists notifications newest first, showing the time, the severity, and the first line. The right pane shows the selected one in full, with its date, time, severity, and complete message.

Severities are colored to match your theme: ERROR red, WARN amber, INFO accent.

Moving past the last notification wraps around to the first. Picking a different notification scrolls the detail pane back to the top. The footer shows the keys that work, and offers PgUp / PgDn only when the selected message is too long to fit.

| Key | Action | | :-------------- | :--------------------- | | ↑ / ↓ | Move the selection | | PgUp / PgDn | Scroll the detail pane | | Esc | Close |

If you have remapped Pi's keys, the browser follows your bindings.

Configuration

Notification Center reads one config.json, in the User scope only:

| Scope | Path | | :---- | :-------------------------------------------- | | User | ~/.pi/agent/notification-center/config.json |

PI_CODING_AGENT_DIR replaces ~/.pi/agent. Each setting comes from the file, then the default, and an invalid value is skipped with a warning so the default applies. There is no Project file, so the settings are the same in every project, trusted or not. Nothing creates the file for you; make it yourself if you want to change something.

{
  "version": 2,
  "toast": {
    "maxVisible": 5,
    "timeoutMs": 3000,
    "maxLines": 5,
    "width": 64
  }
}

| Key | Default | Description | | :----------------- | :------ | :------------------------------------------------------------------------------------------------------------------ | | version | 2 | Layout of the file. A file without it is read as version 2; a file with any other version is ignored with a warning | | toast.maxVisible | 5 | How many cards show at once, from 1 to 10 | | toast.timeoutMs | 3000 | How long a card stays, in milliseconds, from 250 to 60000 | | toast.maxLines | 5 | How many lines of the message a card shows, from 1 to 20 | | toast.width | 64 | How wide, in columns, a card can grow, from 20 to 80 |

Every value is a whole number, and every key is optional. Cards are only as wide as the longest message on show, so toast.width sets the limit rather than the size. Short notifications stay small, and a narrow terminal shrinks them further.

Pi reads this file at session start. Run /reload after editing it. /notifications status shows the settings in use and the file with its state: loaded, not found, invalid with the reason, or skipped (untrusted).

Migrating from 0.2 and earlier

Notification Center 0.2 called two settings maxToastsVisible and toast.timeout, and its file had no version. At session start, Notification Center renames maxToastsVisible to toast.maxVisible and toast.timeout to toast.timeoutMs, adds version, and saves the file. It shows one message naming the file. A setting you already wrote under its new name wins, and the old one is dropped.

If the file can't be saved, Notification Center warns, leaves the file as it is, and still uses your settings for the session. Fix the problem, for example the file's permissions, and run /reload to migrate it, or rename the keys yourself.

Limitations

Not every message in that corner of the screen is a notification. Pi draws its own status, warning, and error rows directly, and some extensions write to the transcript instead of sending a notification. Those messages keep appearing as they always have.

Notifications sent before Notification Center loads also go to the transcript.

Troubleshooting

Run /notifications status when toasts don't show up or look wrong. It shows whether toasts are on, the toast settings in use, and the state of your configuration file with any warnings.

License

MIT