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

@kilnai/gui

v2.1.0

Published

Rich web operator surface for the Kiln control plane

Readme

@kilnai/gui

Rich web operator surface for the Kiln control plane.

Distribution

@kilnai/gui publishes the built static GUI assets consumed by @kilnai/runtime. Install @kilnai/cli for normal operator use:

bun add -g @kilnai/cli
kiln gui

The package includes dist/ for runtime serving. Development dependencies are only needed when working on the GUI source in this repository.

Development

bun run dev          # Vite dev server on http://localhost:5183
bun run build        # Production bundle → dist/
bun run typecheck    # TypeScript check
bun run lint         # ESLint
bun run test:run     # Vitest unit/component tests (single run)

Design system

The GUI uses shadcn with Base UI primitives. Project configuration lives in components.json, generated UI components live in src/components/ui/, and shared class merging lives in src/lib/utils.ts.

Use semantic shadcn/Kiln tokens (bg-card, text-muted-foreground, border-border, ring-ring) rather than raw colors. The global token bridge is src/styles.css; update it instead of creating a second palette.

The current product direction is a dense operator surface, not a generic dashboard: compact rows, hairline dividers, provider glyphs, clear active continuation state, and visible telemetry where it helps supervision.

The visual direction follows Kiln's restrained biocybernetic cyberpunk identity: Obsidian dark surfaces, graphite layering, precise signal color, and controlled ember accents. It should read as a serious control plane, not a decorative sci-fi skin or a borrowed code-editor theme.

Layout ownership

The shell is split into a left operator rail, an optional mode panel, and the main chat column. Keep ownership boundaries explicit:

  • the left rail owns operator mode navigation and collapse state
  • the mode panel owns mode-specific navigation, currently canonical sessions plus the event-backed changed-files review panel
  • the main chat column owns conversation, active document surfaces, and turn composition
  • operator modes own diagnostics such as activity, changed files, approvals, memory, setup, and workspace navigation
  • the composer owns draft input, slash commands, file affordances, plan mode, provider/model route, reasoning effort, and send behavior

Do not repeat the same summary telemetry in multiple headers. If a value helps diagnose why a turn behaved a certain way, it belongs in the relevant event-backed operator mode instead of persistent chrome.

Inspector data should come from canonical timeline projections, not separate GUI-maintained caches for files, approvals, or continuity.

The changed-files mode is intentionally honest about current runtime evidence: it can show canonical file-change records and line deltas, but full diff hunks must stay gated until the runtime emits structured diff payloads.

Commands

Ctrl+K or Cmd+K opens the global command palette. Typing / into an empty composer opens the composer-attached command surface. Both surfaces should use the same command model, but their placement is intentional: global commands are navigation/action commands, while slash commands are message-composition commands.

E2E tests (Playwright)

Install the browser once:

bun run playwright:install

Then run the e2e suite:

bun run test:e2e

Or from the repo root:

bun run test:e2e

The e2e suite starts a Vite dev server automatically (reuses an existing one if already running outside CI). A lightweight mock gateway boots on port 4810 for each test worker so the Vite proxy resolves /gui-api/* correctly.

To run with the Playwright UI:

bun run test:e2e:ui