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

lazytodo

v0.1.0

Published

Fast and beautiful vim-centric TUI for todo.txt

Readme

lazytodo

CodeRabbit Pull Request Reviews

A fast, beautiful, vim-centric TUI for managing todo.txt files. Built with TypeScript, OpenTUI, and Bun.

lazytodo screenshot

Features

  • Vim-style Keybindings - Navigate with j/k, g/G, and use : commands like :w, :q, :wq
  • Full todo.txt Support - Compliant with the todo.txt format specification
  • Multi-Panel Interface - Priority chart, projects, contexts, and command history panels
  • 8 Built-in Themes - Catppuccin, Dracula, Nord, Gruvbox, Tokyo Night, Solarized, One Dark, Monokai
  • Braille Bar Charts - High-resolution priority visualization with 20 levels of granularity
  • Fast & Lightweight - Single binary with no runtime dependencies
  • Undo Support - Revert changes with u
  • Yank/Paste - Copy tasks with y, paste with p

Installation

From Source

# Install Bun
curl -fsSL https://bun.sh/install | bash

# Clone and build
git clone <repository-url>
cd lazytodo
bun install
bun run build

# Move to PATH
sudo mv lazytodo /usr/local/bin/

Development

bun run dev        # Run without building
bun test           # Run tests

Usage

TUI Mode (Recommended)

lazytodo tui                    # Launch TUI with default ~/todo.txt
lazytodo -f todo.txt tui        # Use specific file

Keyboard Shortcuts

Navigation

| Key | Action | |-----|--------| | j / | Move down | | k / | Move up | | g | Go to top | | G | Go to bottom | | TAB | Cycle panels (Tasks → Priorities → Projects → Contexts) | | ESC | Return to tasks / Clear filter |

Task Actions

| Key | Action | |-----|--------| | Space | Toggle task completion | | Enter / e / i | Edit task | | n / a | Add new task | | d | Add due date | | x | Delete task | | y | Yank (copy) task | | p | Paste task | | 0-9 | Set priority (number mode) | | Shift+A-Z | Set priority (letter mode) |

View

| Key | Action | |-----|--------| | v | Toggle show completed tasks | | / | Search tasks | | s | Cycle sort mode | | o | Toggle highlight overdue | | u | Undo last action | | ? | Show help | | , | Open settings |

Vim Commands

| Command | Action | |---------|--------| | :q / :quit | Quit | | :w / :write | Save | | :wq / :x | Save and quit | | :help | Show help | | :set | Open settings | | :theme <name> | Switch theme | | :sort <mode> | Change sort mode |

CLI Mode

lazytodo list                    # List active tasks
lazytodo add "Call Mom +Family"  # Add task
lazytodo do 1                    # Complete task 1
lazytodo pri 1 A                 # Set priority A
lazytodo edit 1 "New text"       # Edit task
lazytodo delete 1                # Delete task

Filtering

lazytodo list -c phone           # Filter by @context
lazytodo list -p Work            # Filter by +project
lazytodo list --priority A       # Filter by priority
lazytodo list -s "search term"   # Search text
lazytodo list --all              # Include completed

Panels

Priority Chart

Visual bar chart showing task distribution by priority. Uses braille characters for high-resolution display with 20 levels of granularity.

Projects Panel

Lists all +project tags. Press Enter to filter tasks by project.

Contexts Panel

Lists all @context tags. Press Enter to filter tasks by context.

Command History

Read-only log of recent commands (not included in TAB navigation).

Stats (Header)

Shows DUE/OVERDUE count, DONE TODAY, and ACTIVE tasks.

Configuration

Config file: ~/.config/todo-tui/config.toml

# Priority mode: 'letter' (A-Z) or 'number' (0-9)
priorityMode = "number"

# Color theme
theme = "catppuccin"

Available Themes

  • catppuccin (default)
  • dracula
  • nord
  • gruvbox
  • tokyonight
  • solarized
  • onedark
  • monokai

Priority Format Detection

When opening a file, lazytodo detects the priority format used (letter A-Z or number 0-9). If it differs from your settings, you'll be prompted to:

  1. Convert the file - Transform all priorities to match your settings
  2. Switch settings - Adapt your settings to match the file format
  3. Ignore - Keep both formats as-is

This ensures consistency and prevents confusion when working with files created with different priority modes.

Todo File Location

Priority order:

  1. -f flag: lazytodo -f ~/my-todos.txt tui
  2. TODO_FILE environment variable
  3. ./todo.txt (current directory)
  4. ~/todo.txt (home directory)

Todo.txt Format

(A) 2025-12-10 Call Mom +Family @phone due:2025-12-15
x 2025-12-11 (A) 2025-12-10 Completed task +Project @context
  • (A) - Priority (A-Z or 0-9)
  • 2025-12-10 - Creation date
  • +Family - Project tag
  • @phone - Context tag
  • due:2025-12-15 - Due date metadata
  • x - Completion marker
  • Second date after x - Completion date

Tech Stack

  • Runtime: Bun
  • Language: TypeScript
  • TUI Framework: @opentui/react
  • State Management: Zustand
  • CLI: Commander.js

License

MIT