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

@tuis/cronos

v0.2.0

Published

A terminal calendar app built with OpenTUI.

Readme

Cronos

A terminal calendar app built with OpenTUI.

https://github.com/user-attachments/assets/d26b4de6-23c7-4ac3-9147-4517389c3c5e

Some earlier versions previously written in Zig + Sokol

Usage

bun install
bun dev

Install (CLI + TUI)

Requires Bun on your PATH.

npm i -g @tuis/cronos
cronos

CLI

cronos list
cronos list --date 2025-04-10
cronos next
cronos add --date 2025-04-10 "Lunch 12pm-1pm #green"
cronos delete --id event-12-1713456789

Keyboard Shortcuts

Global (no modal open)

| Key | Action | |-----|--------| | [ / ] | Previous / Next month | | h / l | Previous / Next day | | k / j | Previous / Next week | | t | Jump to today | | y | Toggle year view | | v | Toggle agenda side view | | a | Add event | | s | Search events | | g | Go to date | | , | Settings | | q | Quit |

Agenda (when agenda is open)

| Key | Action | |-----|--------| | Up / Down | Navigate events | | e | Edit selected event | | d | Delete selected event | | v | Toggle agenda side view |

Add/Edit modal

| Key | Action | |-----|--------| | Enter | Save event | | Esc | Close |

Search modal

| Key | Action | |-----|--------| | Up / Down | Navigate results | | Enter | Go to date | | Ctrl+E | Edit selected event | | Ctrl+D | Delete selected event | | Esc | Close |

Go to date modal

| Key | Action | |-----|--------| | Tab / Shift+Tab | Next / Previous field | | Enter | Go to date | | Esc | Close |

Settings modal

| Key | Action | |-----|--------| | h / l | Previous / Next section | | j / k | Previous / Next option | | Tab / Shift+Tab | Focus next / previous area | | Enter | Activate | | Esc | Close |

Google Calendar Sync (preview)

Requires an OAuth client for an installed app.

export CRONOS_GOOGLE_CLIENT_ID="your-client-id"
# Optional when using PKCE, required if your client has a secret
export CRONOS_GOOGLE_CLIENT_SECRET="your-client-secret"

Open Settings (,) → Sync → Connect Google. Calendars map to colors, and events import as all-day entries for now.

Adding a Shortcut

This is the full flow for adding a new shortcut and its behavior end-to-end.

  1. Add the command definition
    • Add a new entry in the relevant module under src/features/*/*Commands.ts.
    • Include id, title, keys, layers, and run.
  2. Pick a layer
    • Use an existing layer (global, agenda, modal:add, modal:goto, modal:search, modal:settings) in layers.
    • If you need a new context, add a new layer in src/app/commands/keymap.ts.
  3. Wire UI handlers (if needed)
    • For view-local behavior, register handlers in the component via set...CommandHandlers.
  4. Update docs
    • Add bindings to the appropriate Keyboard Shortcuts section in this README.

Example (add n to jump to next year):

// src/features/calendar/calendarCommands.ts
export const calendarCommands = [
  // ...
  {
    id: "calendar.nextYear",
    title: "Next year",
    keys: ["n"],
    layers: ["global"],
    run: () => goToNextYear,
  },
];

Roadmap

  • [ ] Help on '?'
  • [ ] Settings modal on ','
    • [x] Week start day
    • [x] Notification options
    • [x] Themes
    • [x] Google Calendar sync
    • [ ] iCal export/import
  • [ ] Notifications for upcoming events
  • [ ] Recurring events
  • [x] Open google meet links
  • [x] cli support (cronos add ...)
  • [x] Persistent storage
  • [x] Search through event list
  • [x] Agenda side view
  • [x] Yearly view