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

@stagefright5/pi-obsidian-ui

v0.2.1

Published

A copy-friendly graphite and ice theme with compact tool presentation for pi

Readme

Obsidian UI

A dark pi theme with off-white text, cyan focus indicators, violet syntax colors, and compact tool rows. It does not require font patches or add animation or user-message prefixes.

Back to the extension workspace

Theme

Select obsidian-ice in /settings. The package exposes themes/obsidian-ice.json as a pi theme. Selecting another theme changes the palette without disabling compact tool presentation.

The terminal still controls its overall background, font, and native selection behavior. This palette is designed for a dark terminal; it does not modify Ghostty or other terminal settings. The contrast tests cover normal text, syntax, secondary metadata, and selection/search text at 4.5:1, plus meaningful borders, mode indicators, selection markers, and the scrollbar thumb at 3:1. Tests measure pi's emitted colors in both truecolor and 256-color modes rather than assuming RGB values survive palette approximation.

User messages and the companion composer share a dark, cool-charcoal surface (#2e3337); normal tool calls use near-black blue-charcoal (#191e22). The two backgrounds map to separate dark grayscale entries in 256-color mode. Regression checks require 1.25:1 contrast between user and tool backgrounds and 1.1:1 between normal tool rows and the reference terminal background. They also limit background brightness. These are design thresholds, not WCAG requirements for adjacent backgrounds. Tool errors retain their rose-tinted surface and status indicators.

Selection/search and scrollbar-track surfaces also use a narrow cool tint so 256-color conversion does not turn them into unexpectedly bright blue-gray backgrounds. Secondary text uses silver; decorative separators can remain subtle. The matching composer has no horizontal rules or side rails; shortcut/shell/overflow labels remain readable within its filled surface.

These checks use the theme's panel backgrounds, the export-page background, and the configured Arizona Monsoon terminal background (#0a0f14) as opaque references. Window transparency, wallpaper, terminal palette overrides, and third-party hardcoded styles can affect actual contrast. This is not a claim of complete WCAG conformance. No terminal opacity or configuration is changed.

User/assistant messages retain pi's native layout and Markdown. This extension does not insert labels or rails into user content or rewrite transcripts. Native Markdown rendering and terminal selection can still differ from the raw stored text.

Tool presentation

  • Native read, write, grep, find, and ls calls get compact, width-aware headers with path/query, actual result counts, state, and recorded duration when available.
  • Collapsed reads show a three-visual-row preview; expanded reads keep native syntax highlighting and complete stored output.
  • Expanded writes retain their native code preview. Errors and native search-limit notices remain visible.
  • Truncated reads keep continuation instructions and full-output locations visible even while collapsed. This includes user-limited reads with more lines available and oversized-line recovery instructions.
  • Native shell rendering remains intact, including its five-row preview and timing. Edit keeps its live diff preview and self-managed shell. Both inherit the palette.
  • Codemode, interactive tools, and custom/MCP tools with specialized renderers retain those renderers. Unknown tools without renderers receive a compact fallback with full stored text and arguments on expansion.
  • Native expansion controls, click handling, and inline images are owned by pi. No executable tools, schemas, results, or model-facing content are replaced.

Renderer state is scoped to each call; there are no timers or background processes. Delegated native output is bounded to the available width, including zero- and one-column viewports with wide characters. Switching themes, streaming, parallel calls, and resumed sessions are supported.

Matching composer, footer, and browser

Companion packages provide the composer, footer, and output browser:

  • Prompt Truly Mine: matching user-message surface and text colors, without horizontal rules, leading glyphs, side rails, or added content indentation.
  • Compact Status Bar: context and extension-status priority on narrow terminals.
  • Tool Output Browser: open-sided, lightly framed output panels.

Obsidian UI does not replace their editor or footer factories. Each companion also works with other pi themes.

Compatibility

Tool presentation is tested against pi 1.2.0. Older runtimes without registerToolRenderer receive a TUI warning instead of replacement tool registrations. The theme can be selected separately if the runtime supports its schema. We do not claim full compatibility with older pi versions.

Tests use Node 24's experimental TypeScript transform because the existing editor/browser implementations use constructor parameter properties. No compiler or additional runtime dependency is required when pi loads these sources.

Installation

Install the standalone package:

pi install npm:@stagefright5/pi-obsidian-ui

For source development and tests, see the source README and workspace development guide.

Uninstall

Select your previous theme (for example dark) in /settings, disable this extension through pi config, and reload. For a linked development installation, remove only the theme-file symlink you created if it is no longer needed. Companion chrome changes are independent; revert their presentation changes separately to restore their old appearance. No session migration is needed.