npmx-dev/npmx.dev v0.8.0 → v0.9.0

v0.9.0 is a feature-heavy release for the npmx.dev UI, with the compare page getting the biggest upgrade. It also adds a few quality-of-life improvements around package commands, badges, localization, and code display.

What's new

  • The compare page now uses a scatter plot instead of the older quadrant chart. You can choose any two facets for the X and Y axes, including using the same facet on both axes for diagonal sorting, and the chart keeps the usual actions like export, alt copy, and annotation tools (#2472).

  • The compare page also adds more package metadata to compare: GitHub stars, open issues, and package created date. GitHub data is fetched only for packages whose repository points at GitHub, while created date comes from existing package metadata (#2479).

  • Package install commands now support Vite+ with vp commands, and the selected package manager can also be prefilled from a query parameter. That makes it easier to share links that open with the right install command already selected (#2451, #2520).

  • The package command palette now includes a socket.dev link, so external package inspection links are available there as well as in the page itself (#2481).

  • Badge support now includes a likes variant backed by the package likes API. This gives you an official way to embed like counts without calling the social likes endpoint directly (#2478).

  • A new setting lets users turn off code ligatures in code blocks. The setting is applied through a root data attribute so the global styles can switch rendering accordingly (#2476).

  • Localization coverage expanded with new Dutch (nl-NL) support and broader Chinese translations, alongside many smaller translation completeness updates across other locales (#2118, #2485).

Fixes

  • Fixed compare page OG images on Vercel so query parameters are passed through and package comparison images no longer render the empty state in production (#2432).

  • Fixed package:init so web auth works for claim-package flows, which unblocks users using passkeys-only 2FA on npm accounts (#2415).

  • Fixed the package code sidebar so expanding one directory no longer re-expands a sibling directory the user had collapsed (#2393).

  • Fixed replacement suggestions on the compare page so transient fetch failures do not get cached as permanent “no replacement” results for the rest of the session (#2469).

  • Fixed README heading rendering for packages that already include their own header anchors, avoiding hydration errors and broken heading links (#2486).

  • Fixed command palette and other inputs to better ignore password managers, reducing unwanted autofill UI on pages that do not collect credentials (#2466).

  • Fixed the compare page’s “copy as markdown” action so it only appears when package data is fully loaded, instead of allowing partial tables to be copied (#2506).

  • Fixed several scatter chart usability issues, including focused axis highlighting, clearer legend placement, and overlapping scale labels on first load (#2484, #2493, #2512).

  • Fixed Gravatar avatar requests to encode usernames safely when building the API route path (#2488).

  • Fixed user profile package filtering to use the owners.name facet (#2513).

  • Fixed README rendering rules to define allowed styles more explicitly (#2522).

Other notable changes

  • README fallback probing on jsDelivr now runs in small parallel batches and prioritizes the registry’s declared README filename, which reduces long-tail latency when packages use missing or unusual README names (#2384).

  • API docs rendering now does more work concurrently while keeping output order stable, including symbol rendering, markdown rendering, and syntax highlighting (#2382).

  • Various Storybook page stories were added for Brand, Recharging, and PDS pages to support mock pages, accessibility checks, and visual regression coverage (#2468, #2496, #2514).

Contributors

@serhalp, @alexdln, @43081j, @cylewaitforit, @ZHYxulei, @jonchurch, @graphieros, @t128n, @Kiwow, @WilcoSp, @ihardlight, @romansp, @WishMelz, @trivikr, @tomaioo, @ghostdevv, @C1ANCYSz, @duowb, @DamengRandom, @ehs5, @bonsak, @Adebesin-Cell, @juliendargelos, @fengmk2, @dragomano, @btea, @VentyCZ

Only a subset of merged work was shown here because the input included the top 50 merged PRs by review and comment activity.

Only the most active 50 of 58 merged PRs were included. See the full compare view.