@stagefright5/pi-obsidian-ui

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

Packages

Package details

extensiontheme

Install @stagefright5/pi-obsidian-ui from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@stagefright5/pi-obsidian-ui
Package
@stagefright5/pi-obsidian-ui
Version
0.2.1
Published
Oct 17, 2026
Downloads
213/mo · 8/wk
Author
stagefright5
License
Unlicense
Types
extension, theme
Size
24.8 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "themes": [
    "./themes/obsidian-ice.json"
  ],
  "extensions": [
    "./index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

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.