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

clawtime

v1.0.3

Published

A beautiful terminal animation of the nanoclaw shrimp — waving or jumping right in your terminal.

Downloads

220

Readme

🦐 clawtime

The nanoclaw shrimp, waving hello right in your terminal — redrawn with the expressive ASCII density and fluid motion of Ghosttime. The raised claw waves, the antennae sway, the eyes blink, and a few bubbles and glints drift past. On each launch, Clawtime randomly chooses the wave or Nano Jump mode, whose snappy loop has a crouch, launch, airborne stretch, landing squash, and recovery. Use a mode flag whenever you want a specific one. Smooth, flicker-free, focus-aware, and auto-centered, with basically no CPU when you're not looking.

clawtime — the nanoclaw shrimp rendered in colorful terminal ASCII

Inspired by ghosttime; the terminal engine is derived from it.

Run it

# no install
npx clawtime
npx clawtime --jump

# or install globally
npm install -g clawtime
clawtime

Press q or Ctrl+C to exit. A terminal with 24-bit ("truecolor") support shows the mascot best — that's most modern terminals (Ghostty, iTerm2, Kitty, WezTerm, VS Code…).

Options

| Flag | Description | | --- | --- | | -c, --color <name\|#hex\|r,g,b> | Recolor the body (e.g. -c pink, -c '#ff66cc', -c 255,120,180). Default is nanoclaw teal. | | -w, --wave | Always play the claw-wave animation. | | -j, --jump | Always play the Nano Jump animation. | | --mode <wave\|jump> | Select an animation mode explicitly instead of choosing randomly. | | --select-color | Pick a color interactively. | | --colors | List the available color names. | | -t, --timer <seconds> | Run for a set duration, then exit. | | -nf, --no-focus-pause | Keep animating even when the terminal loses focus. | | -h, --help | Show help. |

clawtime -c cyan        # a cyan shrimp
clawtime -c '#ff9ecb'   # any hex color
clawtime --wave         # always wave the raised claw
clawtime --jump         # crouch, launch, land, recover
clawtime --mode jump    # the explicit mode form
clawtime --jump -c pink # modes and colors compose
clawtime -t 10          # wave for 10 seconds
clawtime -nf            # never pause

How it works

Like ghosttime, the animation is a set of pre-rendered frames plus a few ANSI/DEC escape-sequence tricks:

  • Time-based frame clock. The current frame is derived from elapsed wall time (~33 fps), so playback self-corrects and only redraws on change — idle CPU stays near zero.
  • Flicker-free rendering. It probes for DEC mode 2026 (synchronized output) and paints each frame atomically when supported, otherwise falls back to a cursor-home line-by-line overwrite.
  • Focus-aware pause. Enables focus reporting (?1004) and pauses/resumes when you switch away — disable with -nf.
  • Good terminal citizen. Alternate screen buffer, hidden cursor, auto-centering, full restore on exit. Zero runtime dependencies.

The art

The mascot is built directly from the actual nanoclaw logo, not a hand-drawn approximation:

  1. scripts/rasterize.mjs rasterizes the official SVG (assets/nanoclaw-light-square.svg), crops it to the mascot, downsamples to a ~64-wide grid, flood-fills the white background to transparency (so the eye catchlights survive), and quantizes to the mascot's palette. It splits the sprite into two layers — the body and the raised claw (SVG path #15 plus only its nearby navy outline) — and records an overlapping shoulder pivot → scripts/base-sprite.json.
  2. scripts/generate.mjs builds two seamless loops. The default 84-frame loop rotates the claw about the shoulder with an eased wave envelope while the antenna tips sway and the face blinks. The 36-frame Nano Jump loop uses the reference emoji's key beats—anticipation, stretch, apex, landing squash, and recovery—with a grounded shadow and restrained impact effects → src/animation-data.ts.
  3. At runtime, src/animation.ts turns each pair of source rows into one line of $, %, *, @, +, x, ~, and · density characters. The result has Ghosttime's soft ASCII texture while retaining Nanoclaw's 24-bit teal, navy, highlights, face, and silhouette. -c recolors the body and automatically derives matching shade, highlight, and bubble tones.

Develop

npm run dev            # run from source (needs bun)
npm run gen            # rebuild src/animation-data.ts (animation) from base-sprite.json
npm run raster         # rebuild scripts/base-sprite.json from the SVG (macOS; needs qlmanage + sips)
npm run build          # bundle src/cli.ts -> dist/cli.js (needs bun)

# preview the art (writes HTML to stdout):
node scripts/generate.mjs --pixels 0 > frame0.html   # source pixel grid
node scripts/generate.mjs --hero      > hero.html    # two colored ASCII poses
node scripts/generate.mjs --ascii 0                  # plain terminal characters
node scripts/generate.mjs --ascii 11 --jump          # jump apex

Credits

License

MIT