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

@sentry/junior-dashboard

v0.181.1

Published

The dashboard is an authenticated reporting surface over Junior conversation read models. It does not participate in agent execution or mutate conversation state. Signed-in users may update their own profile fields, such as display name, through dashboard

Readme

@sentry/junior-dashboard

The dashboard is an authenticated reporting surface over Junior conversation read models. It does not participate in agent execution or mutate conversation state. Signed-in users may update their own profile fields, such as display name, through dashboard settings.

Boundaries

  • createDashboardApp mounts the dashboard routes and receives host configuration through JuniorDashboardOptions.
  • Better Auth owns authentication; dashboard routes fail closed when identity or required configuration is missing.
  • The installable shell is static only: a public web app manifest, theme color, and install icon. There is no service worker and no offline app shell cache.
  • API schemas under src/api/ define the client/server boundary.
  • Plugin user pages use the core /api/user-pages contract and render under /plugins/:plugin/:page/*. Plugins choose primary dashboard navigation or the signed-in user menu. Core-rendered lists own metrics, search query state, cursor pagination, record inspection, destructive confirmation, and authenticated plugin REST actions.
  • Conversation detail is a bounded TanStack Query resource that polls while active. Earlier event pages use a separate infinite query loaded on demand. The client derives one ordered transcript from those immutable responses; paginated reads never write into another resource's cache.
  • The server adapts canonical runtime events into normalized reporting events. The dashboard reduces tool and subagent observations by stable identity into one row without interpreting Pi messages or host-only lifecycle shapes.
  • Private conversation access requires authenticated authorization at the server boundary. Client-side route hiding is not authorization.
  • The package remains stateless apart from normal auth/session infrastructure and signed-in profile settings. Junior conversation storage is the reporting authority; canonical user rows own profile fields such as display name.

Mock reporting data exists for local UI development only and must not be reachable as a production fallback.

Browser journeys live in e2e/, with one Playwright spec per user-facing page. Keep these journeys small. Use them for behavior that needs a real browser: navigation, interaction, accessibility state, request contracts, and realistic failure recovery. Use visual QA for layout, responsive rendering, styling, and copy-only changes. Do not add pixel geometry, element size, computed style, fixed-delay checks, or broad console and page error assertions to browser E2E. Assert the user-visible outcome or external contract named by the journey.

Shared server and API setup belongs in e2e/harness.ts; page behavior does not belong in a cross-page aggregate spec. Tests under tests/ cover modules and component integration without standing in for browser E2E.

Run JUNIOR_DASHBOARD_COMPONENT_GALLERY=true pnpm dev from the repository root and open /dev to inspect the typed component fixtures.

PR visual evidence lives in visual/. Capture runs in the standalone Dashboard Visual workflow; commenting runs from the default branch via Dashboard Visual Comment. Add the trigger-visual label to force every registered scenario. See visual/README.md.

Type scale

Font sizes come from the named scale in src/tailwind.css (text-2xs through text-4xl). Reserve text-2xs (12px) for compact badges and chart annotations; use text-xs (13px) or larger for body copy, controls, subtext, and standalone metadata. Prefer those steps over arbitrary text-[Nrem] values.

User-facing setup lives in packages/docs/src/content/docs/operate/dashboard.md. Follow ../../policies/data-redaction.md and ../../policies/frontend-components.md.