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

gitpace

v0.3.1

Published

Two-track git workflow for batching and timing client commits

Downloads

500

Readme

gitpace

Two-track git workflow for batching and timing client commits.

Batch your work session on a private branch backed up to your own remote. Ship commits to the client branch with hand-picked timestamps, one chunk at a time.

Install

npm install -g gitpace          # or: npx gitpace

Then in any repo:

gitpace

The TUI walks you through first-time setup (detects your origin, prompts for the URL of your private "gitpace" remote, installs a pre-push safety hook).

Prerequisites

  • Node 20+
  • git

Usage

gitpace                       # Open the TUI (default)
gitpace start-feature <name>  # Create <name> + gitpace-<name> from origin/main
gitpace attach                # Adopt the current origin branch as a gitpace feature
gitpace switch                # Switch between gitpace-managed features
gitpace ship                  # Cherry-pick commits with custom timestamps
gitpace resync                # Pull origin and rebase working branches
gitpace setup                 # Re-run first-time setup
gitpace help                  # Show help

Flags: -v / --verbose to surface raw git output.

The workflow

  • gitpace-<name> — your working branch. Pushed only to your private gitpace remote. Never reaches the client.
  • <name> — the client-facing branch on origin. Commits arrive here one ship at a time via the TUI, each with a custom timestamp.

You batch many small commits on gitpace-<name> during one session; later you run gitpace ship, pick the commit cutoff, set a session window (default 10:00 – now), and the chunk lands on <name> with timestamps.

Demo mode

To play with the TUI on fake data without touching any real repo:

npm run demo            # pick a scenario, then drop into the TUI
npm run demo -- active  # jump straight to a seeded scenario
npm run demo:reset      # wipe the demo sandbox

Scenarios: fresh (run setup wizard), ready, active (commits ready to ship), multi (multiple features for switch), teammate (origin moved ahead for resync), attachable (existing origin branch for attach).

The sandbox lives at $TMPDIR/gitpace-demo/ — entirely outside your repo.

What gitpace writes to your clone (local only)

  • Adds a gitpace remote (your private repo for the gitpace-* work branches)
  • Installs a pre-push hook in .git/hooks/pre-push (or your core.hooksPath if set) — blocks gitpace-* branches from ever reaching origin. An existing pre-push hook is backed up to pre-push.pre-gitpace.
  • Sets a few configs in gitpace.* namespace (origin, remote, branch)

That's it. core.hooksPath, remote.pushDefault, and aliases are never touched — you can use the repo normally outside gitpace. Branches created by gitpace have proper per-branch upstreams (<feature> → origin, gitpace-<feature> → gitpace), so git push from any branch goes where you'd expect.

None of this touches origin or anyone else who pulls from it.

Gotchas

  • The hook is per-clone. Re-run setup after cloning on a new machine (the TUI detects this automatically).
  • Don't rebase the origin branch after the client has reviewed it. Use git merge main instead.
  • The pre-push hook is your safety net — blocks gitpace-* branches from reaching origin.
  • Cherry-pick conflicts are caught and the script stops with recovery instructions instead of silently failing.

License

MIT