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

@nickitakhy/worktimer

v0.2.1

Published

CLI installer for the WorkTimer macOS menu bar app

Readme

WorkTimer

Small macOS menu bar timer for tracking work time from the top-right of the screen.

What It Does

  • Starts counting up as soon as the app launches.
  • Lives in the macOS menu bar.
  • Also appears in the Dock while running.
  • Tries to register itself to launch at login.
  • Single click pauses or resumes.
  • Double click opens the panel.
  • Right click opens the panel.
  • Resets automatically each day and keeps a daily log.
  • Can show timer, money, typing stats, mouse distance, or an icon in the menu bar.
  • Saves the current day session locally, so relaunching the app does not wipe the timer.
  • Tracks typing time, chars, CPM, WPM, and estimated on-screen mouse travel.

Quick Start For Someone Downloading The App

If you are just receiving WorkTimer.app or WorkTimer-macOS.zip, do this:

  1. Unzip it
  2. Drag WorkTimer.app into /Applications or ~/Applications
  3. Open it
  4. The setup panel should open automatically on first launch
  5. If you want typing and mouse stats, press the in-app Grant Access button and enable WorkTimer in:
    • System Settings > Privacy & Security > Accessibility
    • System Settings > Privacy & Security > Input Monitoring

If the menu bar item is missing, check the hidden section in Ice/Bartender first.

Easiest Install

If you already have Node installed on macOS, the fastest install is:

npx @nickitakhy/worktimer

That downloads the matching signed WorkTimer.app from GitHub releases, installs it into ~/Applications, and opens it.

Useful commands:

npx @nickitakhy/worktimer open
npx @nickitakhy/worktimer doctor
npx @nickitakhy/worktimer install --app-dir=/Applications

Requirements

  • macOS 14 or newer
  • Xcode 16 or current Swift 6 toolchain

Developer Install

cd apps/worktimer
./scripts/install-app.sh

That builds a release app, installs it to ~/Applications/WorkTimer.app, and opens it.

If you want a different install location, set:

WORKTIMER_INSTALL_DIR=/Applications ./scripts/install-app.sh

The installer will use your personal Developer ID Application certificate if one is available in Keychain. Otherwise it falls back to ad hoc signing for local use.

Setup For Full Stats

Timer and pay tracking work right away.

AI usage is optional and only appears when WorkTimer can find local Codex/Claude logs or compatible usage snapshot files.

Wispr Flow stats are optional and only appear when Wispr Flow is installed locally.

Typing and mouse stats need macOS privacy approval:

  • System Settings > Privacy & Security > Accessibility
  • System Settings > Privacy & Security > Input Monitoring
  • move WorkTimer.app into /Applications or ~/Applications before granting permissions
  • WorkTimer retries automatically after both switches are on, but if stats still look stuck, reopen WorkTimer once

You can jump straight there with:

cd apps/worktimer
./scripts/open-permissions.sh

If permissions get stuck and you want to re-grant them cleanly:

cd apps/worktimer
./scripts/reset-permissions.sh
./scripts/open-permissions.sh

To inspect the installed app’s trust state and path:

cd apps/worktimer
./scripts/doctor.sh

Launch Again Later

cd apps/worktimer
./scripts/open-app.sh

or:

open -na ~/Applications/WorkTimer.app

Make A Sendable Build

cd apps/worktimer
./scripts/package-app.sh

That creates:

  • dist/WorkTimer-macOS.zip
  • dist/README-SEND-TO-FRIENDS.txt

That is the preferred non-developer onboarding path for another person.

To build a notarized zip with your personal ASC auth profile:

cd apps/worktimer
./scripts/package-app.sh --notarize --profile=Personal

First-Run Behavior

  • The app should appear in the top-right menu bar area.
  • The app should also appear in the Dock while it is running.
  • On first launch, the setup panel should open automatically.
  • The app also attempts to turn on launch-at-login automatically.
  • If macOS asks for approval, check System Settings > General > Login Items.
  • If you want typing stats or mouse travel, approve WorkTimer in both Accessibility and Input Monitoring.
  • If you use Ice, Bartender, or another menu bar organizer, it may appear in the hidden section first.
  • The default panel is simple black/white, with:
    • current timer
    • small reset button
    • hourly pay input
    • top-bar mode switch
    • typing stats
    • mouse travel stats
    • daily history
    • action log

Development

Run directly from SwiftPM:

cd apps/worktimer
swift run WorkTimer

Run tests:

cd apps/worktimer
swift test

Notes

  • WorkTimer data now lives in ~/Library/Application Support/WorkTimer/worktimer.sqlite.
  • Older typing.sqlite installs are migrated automatically the first time the new build launches.
  • Updating or reinstalling the app should preserve the current day timer and history.
  • Mouse distance is an estimate of cursor travel on the display surface, based on display size reported by macOS.
  • Wispr Flow stats are detected automatically from the local flow.sqlite database when Wispr Flow is installed.