Repository navigation
Releases: Jeecabs/whiskd
Release list
v5.0.0
Full Changelog: v3.0.0...v5.0.0
whiskd v3.0.0
What changed
This release turns the old roo process wrapper into whiskd: same small tool, clearer name, safer state handling, and a more useful process dashboard.
The main user-facing change: whiskd top now shows running processes only. Stopped processes still exist for logs and cleanup, but they no longer clutter the live dashboard.
Highlights
-
Renamed CLI from
rootowhiskd- Install and run
whiskdinstead ofroo. - The agent skill and docs now use the new name.
- Install and run
-
Cleaner
topdashboardwhiskd topandwhiskd top --globalnow focus on live work: running processes only.- Stopped entries remain available through
whiskd status,whiskd logs <name>, andwhiskd clean.
-
Safer process state
- State moved to a private per-user directory:
/tmp/whiskd-<uid>/.... - State/log files use restrictive permissions.
- Stale PID files are reconciled before commands act on them.
- PID identity checks reduce the chance of acting on a reused PID.
- State moved to a private per-user directory:
-
More reliable stopping and exit recording
- Stops target whole process trees.
- Termination escalates from
SIGTERMtoSIGKILLif needed. - Exit footers use a claim-first protocol to avoid duplicate footer writes during races.
-
More robust TUI behavior
- Foreground mode and attach now share the same attach implementation.
- Terminal restore hooks run on normal exit, signals, and uncaught exceptions, reducing raw-mode/alt-screen leaks.
- Logs are capped while
top/attachare open, not only after process exit.
-
Better shell command handling
- Multi-argument commands preserve shell grouping more carefully.
- Single-string commands still pass through raw, so shell operators like
&&continue to work.
Migration notes
If you previously used roo, switch commands to whiskd:
roo start --name api node server.js
# becomes
whiskd start --name api node server.jsExisting roo state is not migrated automatically. That is intentional: the new state path is part of the safety cleanup. Any old roo process state can be cleaned up separately if needed.
Install from GitHub:
npm install -g github:Jeecabs/whiskdOr from a local checkout:
./install.shVerification
Checked before release:
npm run check
npm run smokev1.0.1
roo v1.0.1
Stability pass. Fixes three real crash / data-loss bugs, caps unbounded buffers, trims hot-path work, and adds a --version flag.
Fixed
- Foreground logging crash at 10 MB:
writeLogused to end the stream after exceeding the cap and then crash on further writes. Now passes through and truncates on close. - Truncation flush race on exit: truncation now runs inside the stream's end callback so the final bytes flush before the file is rewritten.
stop --allleft zombie processes: now escalates to SIGKILL for procs that ignored SIGTERM, matching single-targetstop.- ESRCH crash in
stop:process.killcalls wrapped in try/catch for both single and--allpaths. - Pid file leak on spawn error: foreground
child.on("error")now cleans up its pid file. - Node 24 deprecation: switched
spawn(cmd, args, { shell: true })tospawn(cmd.join(" "), { shell: true })to silence the deprecation warning that will become an error in a future Node.
Performance
- Unbounded pause buffers: foreground and attach pause buffers now cap at 2 MB and drop oldest chunks, so a paused noisy child no longer blows up RSS.
- Full-log slurp on display:
attachpre-fill,roo logs, and top's logs view now tail-read the last 256 KB (1 MB for the TUI view) instead of loading the whole file. - Per-chunk
drawBarremoved from foreground stdout/stderr handlers. The 1 s bar tick already redraws. - Top tick caches immutable metadata:
cmdandstartedare written once at process creation and never change, so the 1 s refresh now reads them once per process instead of every tick.
Added
roo --version/roo -vprints the version.- Internal helpers:
killTree,forceKillTree,readLogTail. stripAnsinow usesutil.stripVTControlCharacters(Node 16.11+).
Install
./install.shRequires Node.js. See README for full usage.
v1.0.0
roo v1.0.0
First stable release. roo is a lightweight process wrapper with a TUI status bar for running, backgrounding, attaching to, and managing long-running commands with automatic log capture.
Features
- Process wrapper: run any command under
roowith a live TUI status bar - Background processes:
roo startruns detached, reattach later withroo attach - Named processes:
--nameflag for easy reference instatus,attach,stop roo topdashboard: live TUI view of running processes, with--globalfor all directories- Status output: human-readable or
--jsonfor scripting - Pause/unpause output streaming from the TUI (
pkey) - Uptime display in the status bar
- Stderr color distinction in attached output
- Safe quit when viewing processes from
top - Empty-state messaging in
topwhen no processes are running
Storage and housekeeping
- Logs stored under
/tmp/roo/<cwd>/mirroring project path hierarchy - 7-day auto-prune of old process directories
- 10 MB cap per log file with rotation
Install
./install.shRequires Node.js. See README for full usage.