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

@bobbyy16/cherrypick-terminal

v0.2.1

Published

Interactive terminal UI for git cherry-pick with PR creation

Downloads

63

Readme

🍒 CherryPick Terminal

An interactive terminal UI for git cherry-pick — browse commits, select what you want, preview diffs, squash, undo, and optionally create a GitHub PR. No gh CLI required.


Installation

npm install -g @bobbyy16/cherrypick-terminal

Usage

Navigate to any Git repository and run:

cherrypick

You'll first be prompted to select the source branch (the branch you want to cherry-pick FROM). The app then shows only commits unique to that branch relative to your current branch.


Features

Navigation

| Key | Action | |-----|--------| | ↑ / k ↓ / j | Move cursor up / down | | g | Jump to first commit | | G | Jump to last commit | | Tab | Switch focus to diff panel (scroll it) | | Esc / Tab | Return focus to commit list |

Selection

| Key | Action | |-----|--------| | Space | Toggle commit selection | | a | Select all visible / deselect all | | r | Reverse the current selection order |

Commits are cherry-picked in the order you selected them — shown as [1], [2]… on each row. Select oldest commits first to avoid conflicts.

Actions

| Key | Action | |-----|--------| | Enter | Cherry-pick selected commits (in selection order) | | u | Undo last cherry-pick (git reset --hard HEAD~N) | | s | Toggle squash mode — combines all selected commits into one | | d | Toggle diff view: file stat ↔ full unified diff | | b | Change source branch | | p | Create a GitHub Pull Request | | t | Set / update your GitHub token | | / | Search commits by message, author, or hash | | Esc | Clear search | | ? / h | Open help overlay | | q / Ctrl+C | Quit |

Squash Mode

Press s to enable squash mode (shown in the header). When you cherry-pick, after all commits are applied you'll be prompted for a single commit message — all selected commits are squashed into one.

Undo

After a cherry-pick completes, press u to undo it. A confirmation dialog shows which commits will be reset. Uses git reset --hard HEAD~N locally — does not affect the remote.


Branch Selector

The branch selector supports live filtering — type to narrow the list. Branches are labeled (local) or (remote). Press Tab to switch between the filter box and the branch list.


Diff Preview

The right panel shows a colorized git show --stat by default. Press d to toggle to the full unified diff. Press Tab to focus the panel and scroll through it.


Conflict Handling

If a cherry-pick conflicts, the app pauses and shows the conflicted files.

  1. Resolve conflicts in your editor
  2. Press c in the app → runs git cherry-pick --continue
  3. Press a → runs git cherry-pick --abort

Switching branches (b) is blocked while a conflict is active.


GitHub Token (for PR creation)

On first launch the app prompts for a GitHub Personal Access Token with repo scope. It is stored securely in your OS config directory via conf — never hardcoded or committed.

GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → repo scope.

Press t at any time to update your token.


Dependencies


Changelog

0.2.1

  • Fix: removed accidental self-dependency from package.json

0.2.0

  • Selection order tracking — commits cherry-picked in the order you select them ([1], [2]…)
  • New: a select all / deselect all
  • New: r reverse selection order
  • New: s squash mode (combine selected commits into one)
  • New: u undo last cherry-pick with confirmation
  • New: d toggle between stat and full diff view
  • New: g/G jump to first/last commit
  • New: Tab focus diff panel for scrolling
  • New: ?/h help overlay
  • Branch selector with live filter and local/remote labels
  • Colorized diff output (added/removed lines, file stats)
  • Fixed: race condition in diff panel when navigating quickly
  • Fixed: branch switching blocked during active conflicts
  • Fixed: token validated before GitHub API call
  • Fixed: push failure no longer clears selection prematurely
  • Fixed: error handling on all git operations (no more uncaught crashes)

0.1.9

  • Initial stable release

Author

Abhishek k