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

@mrclrchtr/supi-settings

v7.3.0

Published

One project/global settings UI for SuPi packages

Readme

@mrclrchtr/supi-settings

GitHub stars npm downloads

SuPi Settings is a Pi extension and a small public UI library. It adds one interactive screen for the project and global settings that loaded SuPi extensions contribute.

This package is part of the SuPi release stack.

Install

Install the Pi extension:

pi install npm:@mrclrchtr/supi-settings

If Pi is open, run /reload after installation.

For local development:

pi install ./packages/supi-settings

What it adds

The extension registers one slash command:

  • /supi-settings — open a searchable settings screen

The package does not register a tool, a shortcut, or its own setting. The screen contains settings from other loaded SuPi extensions. If no extension contributes settings, Pi shows No settings registered by SuPi extensions.

The screen is available in Pi interactive TUI mode. Print, JSON, and RPC modes do not provide this custom screen.

Use the settings screen

The screen starts in project scope.

| Input | Action | |---|---| | Type text | Filter by section, setting, key, or displayed value | | Up or Down | Move through the settings | | Enter | Open the actions for the selected setting | | Space | Cycle a boolean, enum, or fixed numeric choice | | Tab | Switch between project and global scope | | Escape | Close the current menu or the settings screen |

Each value can have a (project), (global), or (default) source badge.

In project scope, a project value overrides a global value or the package default. Inherit from global and Use default delete the project value. In global scope, Reset to default deletes the global value.

Free-text, list, model, and custom settings open a matching editor or picker when the contributing module provides one.

Storage and boundaries

Each contributing settings module owns its reads, writes, validation, refresh behavior, and notices. The screen waits for a write to finish and then reads a new snapshot. A failure in one module does not hide settings from modules that loaded successfully.

Modules that use the standard @mrclrchtr/supi-core config adapter store values in:

  • global: ~/.pi/agent/supi/config.json
  • project: <cwd>/.pi/supi/config.json

A custom module can use a different store. SuPi Settings does not call a model or a remote service itself, but a contributed module controls its own operations. Pi extensions run with the permissions of the Pi process.

Public API

Add the package as a dependency when another extension needs the reusable UI helpers:

pnpm add @mrclrchtr/supi-settings

Import only from the explicit API subpath:

import {
  createInputSubmenu,
  createModelPickerSubmenu,
  openSettingsOverlay,
} from "@mrclrchtr/supi-settings/api";

The API exports:

  • openSettingsOverlay(pi, ctx) — collect the current settings modules and open the screen.
  • createInputSubmenu(currentValue, label, done) — create a free-text submenu with confirm and cancel handling.
  • createModelPickerSubmenu(currentValue, done, ctx?, options?) — create a picker from static choices and models that match Pi's configured enabledModels patterns. The picker includes disabled by default.

The @mrclrchtr/supi-settings/extension subpath exports the Pi extension factory that registers /supi-settings.

Settings modules use registerSettings() and the SettingsModule types from @mrclrchtr/supi-core/settings. Their read() and apply() methods are asynchronous. The screen collects the modules when the command opens.

Source layout

  • src/extension.ts — Pi extension entrypoint
  • src/api.ts — public UI exports
  • src/ui/ — settings screen, scoped list, action menu, and submenus