Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1344Tools index

Previous survey · No. 1330 ·

Pricing
Open Source
Type
TOOL
Use case
Coding
Interfaces
CLI
GitHub
47 stars
Latest release
v0.1.18
Date

About

A single opinionated Zig binary that combines a zero-config shell status line with a directory-aware command history picker for fish, bash, and zsh. It shows git branch/status, language toolchain versions, and command duration, benchmarks its own render cost, and documents exactly what network calls and files it touches for security.

What it does

whetuu replaces your prompt and your up arrow at once. The prompt redraws before every command with where you are, what state your repository is in and how long the last job ran. The up arrow opens a full screen search over past commands, starting with the ones typed in this folder. Enter runs a pick, Tab leaves it on the line for editing. Its store sits beside the shell's own record and never alters it. Failures are not kept, and lines that look like credentials are dropped before they reach disk.

Why it's ranked here

A prompt runs before every command, and this one bounds that cost. Every outside call has a hard time limit, 250 ms for git and 200 ms for the language probe, run side by side, so a hung repository costs a quarter second instead of a frozen shell. Git is told to read without taking its lock, so a commit in another terminal never collides with the prompt. The author publishes reproducible timings: about 1 ms outside a repository and 11 ms in a 10,000 file monorepo, close to what git's own status call costs there. The security notes list every network host, subprocess and file it touches.

What's good

Secret handling is specific rather than hopeful. Commands carrying a known token prefix, a password inside a URL, a literal authorization header or a literal value assigned to a secret-named variable are refused, and matching is anchored on shape, not on how random a string looks. A leading space keeps any command out. The store is owner-only and that permission is re-applied on every write. When a release adds patterns, the first command recorded after upgrading rescans the whole file and removes old matches, using an atomic replace so a crash leaves one intact version. Unit tests live alongside the code they cover.

Tradeoffs

There is nothing to configure, by design. If you dislike a color, the segment order or the star glyph, your only option is a fork. A Nerd Font is required or the icons render as empty boxes. Release builds cover only Linux and macOS on x86 and ARM, and only fish, bash and zsh are supported, so Windows and PowerShell users are out. Building from source needs a development snapshot of Zig rather than a stable release. The prompt also checks GitHub for a newer release at most once a day in the background, which some locked-down machines will not want.

How to use it well

A good fit for someone who wants a fast, informative prompt and folder-aware history without writing any config, and who is happy living with one author's taste. Install it, add the single init line to your shell config, and let the up arrow build a per-project memory over a few days. Enter reruns a pick, Tab lets you edit it first. Prefix sensitive commands with a space. On large repositories, turning on git's untracked cache cuts the biggest cost. It does not sync history across machines and it is not a themeable prompt framework.

Technical notes+

src/render.zig spawns only the git module as an async task and runs the other segments on the main thread, writing them in fixed display order. src/module_git.zig walks up from cwd for .git (following gitdir pointer files), only execs git when a repo is found or GIT_DIR is set, runs porcelain v2 status with --no-optional-locks and timeout_ms = 250, and reads rebase, merge and bisect state plus the stash reflog directly. src/history.zig appends under an exclusive lock, loads only the last 4 MiB (read_budget), rejects invalid UTF-8, and scrub rewrites via createFileAtomic plus sync. src/main.zig scrubs once per version from history add, never from render.

Observed

Language
Written in Zig with no external package dependencies declared.
Platforms
Release targets are x86_64 and aarch64 Linux (musl) and x86_64 and aarch64 macOS.
Shell support
Shell integrations exist for fish, bash and zsh only.
Interface
Command-line interface with init, render, history, scrub, paths and upgrade subcommands.
Configuration
No configuration file; the status line is fixed for all users.
Font requirement
Requires a Nerd Font for branch, language and star glyphs.
Tests
Tests are inline in source modules and run through a single build test step.
History storage
History store is created and re-set with 0600 permissions on every append.
Git subprocess
Git subprocess is bounded by a 250 ms timeout and run with --no-optional-locks.
Network
Network access is limited to GitHub hosts for the upgrade and update-check commands.

Read from README.md, build.zig, build.zig.zon, src/main.zig, src/cli.zig, src/render.zig, src/module_git.zig, src/picker.zig, src/history.zig, src/init_scripts.zig, assets/init.zsh.

What it can do

  • Display shell status line showing git branch and status

    Current directory/git repo state → Status line display

  • Show language toolchain versions in status line

    Project directory → Toolchain version display

  • Show command execution duration

    Shell command execution → Duration display

  • Provide directory-aware command history picker

    Shell command history → Filtered/selected command

Tags

clishellzigstatuslineterminalhistoryfishzshbash

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.