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

reporewind

v0.2.0

Published

A cinematic visual history engine for Git repositories.

Readme

RepoRewind

Turn a local Git history into a private, evidence-backed documentary.

MIT License Node.js 22.13 or 24 No telemetry Latest release

Explore a fictional rebuild → · Run it on your repository · Inspect the privacy boundary

A real RepoRewind export from the deterministic fictional archive. Control the same history or open the static frame.

RepoRewind reconstructs how a repository became what it is. Files become buildings, folders become districts, releases become landmarks, contributors become travelers, refactors rebuild neighborhoods, and deleted paths remain visible as ruins. Search any trace, compare two real eras, inspect bounded archaeology findings, then export a privacy-reviewed story.

Public release: [email protected] is distributed through npm with a provenance statement linked to this repository. The first npx run downloads RepoRewind from npm; repository analysis and viewing then stay on your machine.

See the difference in 60 seconds

The live demo opens a guided case over a fictional 25-commit history:

  1. pin the v2.0.0 city;
  2. find the commit that moved the timeline engine into a streaming core;
  3. jump to v3.0.0 and compare the eras;
  4. inspect the rename, deleted import layer, and supporting Git evidence.

No setup, account, upload, or analytics is involved. The hosted demo cannot read a local repository.

Run it on your repository

Requirements: Git and Node.js 24 (recommended) or Node.js 22.13+.

cd /path/to/your/repository
npx reporewind .

Expected result:

1,248 commits · 18 travelers · 9 releases
Local viewer: http://127.0.0.1:<random-port>/<private-session>/
Repository data stays on this machine. Press Ctrl+C to stop the viewer.

The command analyzes the checked-out first-parent history, starts a read-only server on a random 127.0.0.1 port, and opens a tokenized local session. It reads Git metadata, paths, refs, and numeric diffs—not source contents. It does not fetch refs, LFS data, or submodules, and it sends no repository data.

Use --no-open to print the local URL without launching a browser:

npx reporewind . --no-open

Three reasons to come back

| Historical onboarding | Repository archaeology | Retrospectives and releases | | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Walk a teammate through the eras, releases, migrations, handoffs, and deleted paths behind the current codebase. | Search a path or commit, inspect bounded evidence views, pin an earlier era, and follow rename-aware change into the present. | Direct a 12–24 second history film and package reviewed posters, copy, privacy details, and checksums for sharing. |

A 3D city is the hook. The evidence trail is the product.

RepoRewind is not a Git client, a source-code explainer, or a quality score. It keeps one read-only history connected across four jobs:

  • Replay: reconstruct real states on a selected first-parent line with stable path-based geography.
  • Investigate: search commits, paths, people, releases, and reachable branch tips; inspect eight deterministic archaeology views with visible limits.
  • Compare: pin any two eras and follow construction, demolition, line deltas, and rename chains.
  • Present: choose evidence-backed chapters, review every disclosed field, and export a public-safe story pack.

Every finding links back to commit or path evidence. RepoRewind never labels code as good, bad, risky, or low quality.

Product tour

| Replay the living city | Find any trace | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | RepoRewind city timeline at the fictional v2.0.0 release | Archive search finding a film-export commit and file history |

| Compare two eras | Export a reviewed history film | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | Temporal diff comparing fictional v2.0.0 and v3.0.0 eras | Film export with story direction and privacy controls |

Git evidence becomes a city grammar

| Git evidence | RepoRewind representation | | ------------------ | ----------------------------------------------- | | File | Building; height follows its current line count | | Top-level folder | Stable district separated by avenues | | Contributor | Traveler at the latest work site | | Commit | Construction, demolition, or rebuilding signal | | Tag or release | Landmark in the city and timeline | | Rename or refactor | Neighborhood rebuilding event | | Deleted file | Permanent selectable ruin |

The checked-out branch is canonical by default. Side branches remain reachable refs and merge events instead of being flattened into invented repository states. Use an explicit ref or a bounded history when needed:

npx reporewind /path/to/repository --branch release/3.x
npx reporewind /path/to/repository --max-commits 5000

Portable archives

The automatic loopback viewer is the fastest local path. Generate JSON only when you need a portable archive for the hosted viewer or another tool:

npx reporewind analyze /path/to/repository \
  --output ./reporewind-history.json

Then choose Open archive in the hosted viewer. The file is processed in that tab, never uploaded, and cleared on refresh.

Useful variants:

# Pipe clean JSON
npx reporewind analyze /path/to/repository --stdout > reporewind-history.json

# Explicitly replace an existing archive
npx reporewind analyze /path/to/repository \
  --output ./reporewind-history.json --force

Privacy is enforced at each boundary

  • The CLI reads Git structure and numeric diffs, not file contents.
  • Contributor email addresses are omitted unless --include-emails is explicit.
  • Automatic sessions stay in process memory behind a tokenized loopback URL and write no temporary archive.
  • Hosted imports remain in the current browser tab; refresh clears them.
  • Public export defaults hide repository names, people, messages, hashes, paths, refs, remotes, emails, and exact dates.
  • Story packs include a machine-readable privacy report and SHA-256 manifest, never the raw history archive.

Archives can still contain sensitive names, paths, messages, dates, refs, and remotes. Review before sharing. Read the complete privacy inventory, security policy, story-pack contract, and Story Director scoring.

Architecture

flowchart LR
  Git[Local Git repository] --> CLI[Streaming analyzer]
  CLI --> Session[Tokenized loopback session]
  CLI --> JSON[Optional schema v1 archive]
  Session --> Validate[Bounded validation]
  JSON --> Validate
  Validate --> Worker[Checkpoints and indexes]
  Worker --> Explore[Search, replay, compare]
  Explore --> City[Lazy WebGL city]
  Explore --> Evidence[Text-first evidence mode]
  Explore --> Story[Privacy-reviewed story pack]

See architecture, performance methodology, non-WebGL behavior, and troubleshooting.

Develop and verify

npm ci
npm run dev
npm run verify

npm run verify checks formatting, lint, documentation, community and gallery contracts, licenses, benchmark baselines, 82 application/CLI tests, TypeScript, browser and CLI builds, the Pages bundle, package contents, and high-severity dependency advisories. Repository Actions remain disabled for ordinary pushes; the same full gate stays available locally and is re-enabled only for an explicit release run.

The browser build is emitted to dist/, the CLI to dist-cli/, and the combined Pages artifact to .pages-site/. Development and preview servers bind to localhost by default.

Release status

  • v0.2.0 is the current source release and [email protected] is the matching public package.
  • The release includes automatic local sessions, the guided case, Share Safety, story packs, Story Director, archaeology views, performance tiers, and the non-WebGL evidence workspace.
  • The tag, package, provenance statement, public install path, live playground, and displayed version are verified as one release gate.

See the roadmap, changelog, and release checklist.

Contribute a useful trace

Start with a maintained good first issue or help wanted task. Valuable non-code contributions include permissioned gallery histories, keyboard/reduced-motion QA, browser export checks, bounded benchmark captures, and documentation corrections.

Read CONTRIBUTING.md and the community contract before a broad change.

License

MIT © Othmane Blial. Browser runtime notices are listed in THIRD_PARTY_NOTICES.md.