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

@seanmozeik/claudewatch

v0.3.0

Published

claudewatch (cw) - A zero-argument CLI that continuously polls for Git file changes and renders syntax-highlighted unified diffs in the terminal

Readme

claudewatch

claudewatch is a zero-argument CLI that watches a Git worktree and renders syntax-highlighted unified diffs in the terminal.

Install

bun install

Run

bun run dev

Inside a Git repository:

claudewatch

Modes

  • Default watch mode (claudewatch):
    • Interactive, Vim-style scrolling in an alternate screen.
    • Clean exit (q) restores your previous terminal contents.
    • Tracks latest changed files at the bottom (recently changed files move down).
  • Stream mode (--stream):
    • Appends snapshots to stdout with separators.
    • No in-app viewport controls (uses normal terminal scrollback).
  • Once mode (--once):
    • Renders one snapshot and exits.
    • Uses less when output exceeds terminal height (unless --no-pager).
  • Demo mode (--demo):
    • Uses a built-in fake diff snapshot (no real repo changes required).
    • Works with --once or watch mode.

Watch keybindings (non-stream)

  • j / k: scroll down / up by one line
  • Ctrl-d / Ctrl-u: half-page down / up
  • g / G: jump to top / bottom
  • q: quit cleanly

Common commands

claudewatch --once
claudewatch --interval 500
claudewatch --max-files 30 --max-lines 1500
claudewatch --theme nord --lang auto
claudewatch --color never
claudewatch --truecolor true
claudewatch --stream
claudewatch --live      # alias for non-stream watch mode
claudewatch --demo --once
claudewatch --ignore "**/*.snap" --ignore "dist/**"

Options

--help
--version
--list-themes
--interval MS
--stream
--live, --refresh
--once
--demo
--ignore PATTERN                (repeatable, comma-separated accepted)
--max-files N
--max-lines N
--max-width N
--padding auto|false
--color auto|always|never
--no-color
--truecolor auto|true|false
--nerd-fonts auto|true|false
--theme NAME
--lang auto|LANG
--no-pager

Ignore behavior

  • Ignored paths are excluded from:
    • status counts/lists
    • rendered diff files
  • Matching uses Bun glob matching.
  • Built-in default ignore globs:
    • **/bun.lock
    • **/bun.lockb
    • **/package-lock.json
    • **/pnpm-lock.yaml
    • **/yarn.lock
    • **/pnpm-workspace.yaml
    • **/Cargo.lock
    • **/Gemfile.lock
    • **/poetry.lock
    • **/uv.lock
  • Binary files are ignored in rendered output.

Diff behavior

  • Uses git unified diffs (--patch) and parses them via vendored Pierre parser code.
  • Adaptive context and hunk merging:
    • fewer changed files => larger context
    • more changed files => tighter context
    • nearby hunks are merged via --inter-hunk-context
  • Syntax highlighting uses Shiki (with chunked highlighting to avoid large-file fallback whitening).

Example config.toml

Create ~/.config/claudewatch/config.toml:

interval = 700
theme = "nord"
stream = false
max_files = 40
max_lines = 2500
max_width = 0
padding = "auto"
truecolor = "auto"
nerd_fonts = "auto"
no_pager = false

# Additional ignore globs (appended to built-in defaults)
ignore = [
  "**/*.snap",
  "dist/**",
  "coverage/**",
  "**/.DS_Store",
]

Development

bun run test
bun run tc
bun run lint:fix
bun run build