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

kajji

v0.14.1

Published

A terminal UI for Jujutsu: the rudder for your jj

Downloads

161

Readme

kajji

A terminal UI for jj / Jujutsu: navigate changes, inspect polished diffs, and run common jj workflows with ease and speed.

Kajji gives jj a fast, keyboard-first interface with a commit graph, file tree, operation log, bookmark management, GitHub helpers, revset filtering, and custom diff rendering with syntax highlighting, word-level emphasis, split/unified layouts, wrapping, and binary-file handling.

normal mode

Installation

# recommended if you use Homebrew
brew install eliaskc/tap/kajji

# standalone binary installer, no package manager required
curl -fsSL https://kajji.sh/install.sh | bash

# or via JavaScript package manager
npm install -g kajji
bun install -g kajji
pnpm add -g kajji
yarn global add kajji

# or run directly without installing
npx kajji
bunx kajji

To remove kajji and its config/data:

kajji uninstall                       # interactive: removes config, data, and the binary
kajji uninstall --dry-run             # show what would be removed
kajji uninstall --keep-config --keep-data
kajji uninstall --force               # skip the confirmation prompt

From source

Requirements: Bun

git clone https://github.com/eliaskc/kajji.git
cd kajji
bun install
bun dev

Usage

Run kajji in any jj repository:

kajji                    # current directory
kajji /path/to/repo      # specific directory

Kajji has two main viewing modes:

  • Normal mode keeps the log, bookmarks, detail, and command log visible.
  • Diff focus mode gives the detail pane more space for side-by-side diffs.

Toggle between them with ctrl+x.

Features

jj workflows

  • Commit log with graph and revset filtering
  • File view with tree/list toggle, editor launching, and discard for working-copy files
  • New, edit, describe, squash, abandon, duplicate, rebase, split, resolve
  • Undo, redo, operation log, and restore
  • Bookmark create/delete/rename/forget/set/move plus remote-only filtering
  • Git fetch/push menus
  • Open commits and PRs on GitHub
  • Recent repository switcher

Diff viewing

  • Custom unified and split diff renderers
  • Syntax highlighting and word-level change emphasis
  • Line wrapping and horizontal scrolling
  • Hunk and file navigation
  • Optional jj formatter output
  • Binary file detection

TUI polish

  • Vim-style navigation plus mouse support
  • Focusable panels and tabs
  • Command palette with fuzzy search (? / ctrl+p)
  • Context-aware status hints
  • JSONC config with schema autocomplete
  • Automatic update notifications

CLI

Kajji includes a small CLI for scripting and agent workflows:

# List changes with addressable hunk IDs
kajji changes -r @

# Comments
kajji comment list -r @
kajji comment set -r @ --hunk h1 -m "note"
kajji comment set -r @ --file src/App.tsx --line 12 -m "note"
kajji comment delete -r @ --hunk h1
kajji comment delete -r @ --file src/App.tsx --line 12
kajji comment delete -r @ --file src/App.tsx
kajji comment delete -r @ --all -y

Configuration

Kajji reads JSONC config from ~/.config/kajji/config.json (comments and trailing commas are supported).

  • Open it from the command palette (?) with open config
  • Changes made through open config are reloaded when you return to kajji
  • The default config includes $schema: "https://kajji.sh/schema.json" for editor autocomplete

Common settings include:

  • ui.themeMode: system, dark, or light
  • ui.syntaxTheme.dark / ui.syntaxTheme.light: syntax highlighting theme names
  • ui.showFileTree: show files as a tree or flat list
  • diff.layout: auto, unified, or split
  • diff.autoSwitchWidth: terminal width where auto switches to split view
  • diff.wrap: wrap long diff lines
  • diff.useJjFormatter: use jj's configured diff formatter in the detail pane
  • hooks: commands to run before specific operations
  • whatsNewDisabled / autoUpdatesDisabled: update notification controls

Keybindings

Default keybindings are contextual. Press ? or ctrl+p in kajji for the full command list available in the current panel.

Global and navigation

| Key | Action | | ---------------------- | --------------------------------------- | | q | Quit | | ? / ctrl+p | Command palette | | Tab / shift+Tab | Next / previous panel | | 1 / 2 / 3 / 4 | Focus log / refs / detail / command log | | j / k or / | Move down / up | | ctrl+d / ctrl+u | Page down / up | | Enter | Open/drill into the selected item | | Escape | Back, close, or clear filter | | [ / ] or h / l | Previous / next tab | | / | Filter revisions or bookmarks | | ctrl+r | Refresh | | ctrl+x | Toggle normal/diff focus mode | | ctrl+o | Open recent repository |

jj operations

| Key | Action | | --------- | ------------------------------------------------------------------------------------------ | | n / N | New change / new menu | | e | Edit change, or open selected file in editor from file view | | E | Open all files in editor from file view | | d | Describe, delete bookmark, restore operation, or discard file changes depending on context | | s | Squash | | a | Abandon | | r | Rebase, or rename bookmark in refs | | S | Split | | D | Duplicate | | R | Resolve conflicts, or toggle remote-only bookmarks in refs | | u / U | Undo / redo | | f / F | Git fetch / fetch menu | | p / P | Git push / push menu |

Diff and files

| Key | Action | | ---------------------- | ------------------------------------------------------------- | | - | Toggle file tree/list in file view, or jj formatter in detail | | v | Toggle split/unified diff | | w | Toggle diff line wrapping | | h / l or / | Horizontal scroll when wrapping is off | | [ / ] | Previous / next hunk in custom diff view | | { / } | Previous / next file in custom diff view |

Bookmarks and GitHub

| Key | Action | | --------- | -------------------------------------------------- | | c | Create bookmark | | d | Delete bookmark | | r | Rename bookmark | | x | Forget bookmark locally | | b | Set bookmark on selected revision | | m | Move bookmark | | o / O | Open selected revision on GitHub (prompt / direct) | | o | Open selected bookmark's commit or PR on GitHub |

Built With

Related Projects

License

MIT