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

@saburto/pi-colorful-footer

v0.2.0

Published

Replaces the default pi footer with a vibrant, icon-rich status bar using emoji icons and theme-colored backgrounds. No Nerd Fonts required.

Readme

Colorful Footer

Replaces the default pi footer with a vibrant, icon-rich status bar using emoji icons and theme-colored backgrounds. No Nerd Fonts required.

🤖 claude-sonnet-4 │ 📁 extensions │ 🌱 main │ ↑1.2k↓3k │ 💾500 45% │ 📊 8.5k/200k (4%) │ 💰$0.042 │ 🧠 ● xhigh

Features

  • Emoji icons — works in any modern terminal without Nerd Fonts
  • Theme-aware — each section uses a themed background color from your pi theme
  • Responsive pruning — sections drop progressively as the terminal narrows
  • Working indicator — replaces the default spinner and "Working..." message with themed variants
  • Thinking level display — shows current thinking level with a colored circle indicator
  • Current folder — shows repo root name (if in a git repo) or the working directory without $HOME
  • Configurable — customize icons, colors, hide sections, and set per-model style rules via JSON config files

Footer Sections

| Section | Icon | Description | |---------|------|-------------| | Model | 🤖 | Current model ID | | Folder | 📁 | Git repo root folder name, or cwd without $HOME | | Git branch | 🌱 | Active git branch (hidden if not in a repo) | | Tokens | ↑↓ | Input and output token counts | | Cache | 💾 | Cache read count and hit rate (hidden when empty) | | Context | 📊 | Context window usage fraction and percentage (hidden when unavailable) | | Cost | 💰 | Total session cost in USD | | Thinking | 🧠 | Current thinking level with circle indicator | | Extensions | 🔌 | Status messages from other extensions (via setStatus) |

Installation

From npm

pi install npm:@saburto/pi-colorful-footer

Quick test (no install)

pi -e npm:@saburto/pi-colorful-footer

Usage

Once installed, the colorful footer replaces the default status bar automatically. No configuration needed.

Commands

  • /colorful — Toggle the colorful footer on/off. Use /reload to re-enable it after disabling.
  • /colorful-configChat-based configuration. Feeds the full config guide into the conversation so the LLM can read your current config, ask you questions, and edit the JSON file for you. Follow it up with /reload to apply.

Configuration

Place a JSON file in one of these locations:

| Path | Scope | |------|-------| | ~/.pi/agent/colorful-footer.json | Global (all projects) | | .pi/colorful-footer.json | Project-local (overrides global) |

Configs are deep-merged: project-local values override global values, which override built-in defaults.

Quick Example

{
  "icons": {
    "model": "🧠",
    "git": "🔀"
  },
  "sections": {
    "cost": {
      "hidden": true
    },
    "model": {
      "bgColor": "toolSuccessBg",
      "fgColor": "text"
    }
  },
  "separator": " ║ ",
  "separatorColor": "accent"
}

Full Schema

interface ColorfulFooterConfig {
  /** Override any section icon (standard emoji). */
  icons?: {
    model?: string;
    folder?: string;
    git?: string;
    tokensIn?: string;
    tokensOut?: string;
    cache?: string;
    context?: string;
    cost?: string;
    thinking?: string;
    statuses?: string;
  };
  sections?: {
    model?: SectionConfig;
    folder?: SectionConfig;
    git?: SectionConfig;
    tokens?: SectionConfig;
    cache?: SectionConfig;
    context?: SectionConfig;
    cost?: SectionConfig;
    thinking?: SectionConfig;
    statuses?: SectionConfig;
  };
  thinking?: {
    off?:     { icon?: string; color?: string };
    minimal?: { icon?: string; color?: string };
    low?:     { icon?: string; color?: string };
    medium?:  { icon?: string; color?: string };
    high?:    { icon?: string; color?: string };
    xhigh?:   { icon?: string; color?: string };
  };

  /** Separator between sections. */
  separator?: string;

  /** Foreground color of the separator — theme name or hex RGB. */
  separatorColor?: string;

  /** Conditional style rules — applied when a model ID matches. */
  rules?: ConditionalRule[];
}

interface SectionConfig {
  hidden?: boolean;        // Hide this section entirely
  bgColor?: string;        // ThemeBg name or hex RGB (#rrggbb)
  fgColor?: string;        // ThemeColor name or hex RGB
  labelColor?: string;     // ThemeColor name or hex RGB
  order?: number;          // Sort position (lower = further left)
}

interface ConditionalRule {
  models?: string[];    // Model IDs or glob patterns (e.g. "claude-opus*", "deepseek*")
  priority?: number;    // Higher wins when multiple rules match
  icons?: IconOverrides;
  sections?: Partial<Record<string, SectionConfig>>;
  thinking?: Record<string, ThinkingLevelConfig>;
  separator?: string;
  separatorColor?: ThemeColor;
}

Available Colors

Foreground (ThemeColor): accent, border, borderAccent, borderMuted, success, error, warning, muted, dim, text, thinkingText, userMessageText, customMessageText, customMessageLabel, toolTitle, toolOutput, mdHeading, mdLink, mdLinkUrl, mdCode, mdCodeBlock, mdCodeBlockBorder, mdQuote, mdQuoteBorder, mdHr, mdListBullet, toolDiffAdded, toolDiffRemoved, toolDiffContext, syntaxComment, syntaxKeyword, syntaxFunction, syntaxVariable, syntaxString, syntaxNumber, syntaxType, syntaxOperator, syntaxPunctuation, thinkingOff, thinkingMinimal, thinkingLow, thinkingMedium, thinkingHigh, thinkingXhigh, bashMode

Background (ThemeBg): selectedBg, userMessageBg, customMessageBg, toolPendingBg, toolSuccessBg, toolErrorBg

Hex RGB colors are also accepted anywhere a theme color name is expected. Use #rrggbb format (e.g. "#ff4444", "#2e7d32"). Short #rgb works too.

Hex Color Example

{
  "sections": {
    "model": {
      "bgColor": "#1a1a2e",
      "fgColor": "#e94560"
    },
    "cost": {
      "bgColor": "#0f3460",
      "fgColor": "#16c79a"
    }
  },
  "separatorColor": "#555555"
}

Conditional Rules Example

Different colors per model — red for Opus, green for DeepSeek:

{
  "rules": [
    {
      "models": ["claude-opus-4*", "claude-opus-4-5*"],
      "priority": 10,
      "sections": {
        "model": {
          "bgColor": "toolErrorBg",
          "fgColor": "error"
        }
      }
    },
    {
      "models": ["deepseek*"],
      "priority": 10,
      "sections": {
        "model": {
          "bgColor": "toolSuccessBg",
          "fgColor": "success"
        }
      }
    },
    {
      "models": ["*sonnet*"],
      "priority": 5,
      "sections": {
        "model": {
          "bgColor": "toolPendingBg",
          "fgColor": "warning"
        }
      }
    }
  ]
}

Hide Sections Example

Hide the cost and cache sections to save space:

{
  "sections": {
    "cost": { "hidden": true },
    "cache": { "hidden": true }
  }
}

To hide extension status messages (from other extensions using setStatus):

{
  "sections": {
    "statuses": { "hidden": true }
  }
}

Custom Icons Example

Replace emoji icons with Nerd Font characters (if your terminal supports them):

{
  "icons": {
    "model": "",
    "folder": "",
    "git": "",
    "tokensIn": "",
    "tokensOut": "",
    "cache": "",
    "context": "",
    "cost": "",
    "thinking": "�11"
  }
}