Skip to content

Releases: Jeecabs/whiskd

v5.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 05:05

Full Changelog: v3.0.0...v5.0.0

whiskd v3.0.0

Choose a tag to compare

@Jeecabs Jeecabs released this 09 Jul 00:13

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 roo to whiskd

    • Install and run whiskd instead of roo.
    • The agent skill and docs now use the new name.
  • Cleaner top dashboard

    • whiskd top and whiskd top --global now focus on live work: running processes only.
    • Stopped entries remain available through whiskd status, whiskd logs <name>, and whiskd 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.
  • More reliable stopping and exit recording

    • Stops target whole process trees.
    • Termination escalates from SIGTERM to SIGKILL if 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/attach are 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.js

Existing 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/whiskd

Or from a local checkout:

./install.sh

Verification

Checked before release:

npm run check
npm run smoke

v1.0.1

Choose a tag to compare

@Jeecabs Jeecabs released this 18 Apr 07:21

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: writeLog used 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 --all left zombie processes: now escalates to SIGKILL for procs that ignored SIGTERM, matching single-target stop.
  • ESRCH crash in stop: process.kill calls wrapped in try/catch for both single and --all paths.
  • 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 }) to spawn(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: attach pre-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 drawBar removed from foreground stdout/stderr handlers. The 1 s bar tick already redraws.
  • Top tick caches immutable metadata: cmd and started are 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 -v prints the version.
  • Internal helpers: killTree, forceKillTree, readLogTail.
  • stripAnsi now uses util.stripVTControlCharacters (Node 16.11+).

Install

./install.sh

Requires Node.js. See README for full usage.

v1.0.0

Choose a tag to compare

@Jeecabs Jeecabs released this 18 Apr 07:07

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 roo with a live TUI status bar
  • Background processes: roo start runs detached, reattach later with roo attach
  • Named processes: --name flag for easy reference in status, attach, stop
  • roo top dashboard: live TUI view of running processes, with --global for all directories
  • Status output: human-readable or --json for scripting
  • Pause/unpause output streaming from the TUI (p key)
  • Uptime display in the status bar
  • Stderr color distinction in attached output
  • Safe quit when viewing processes from top
  • Empty-state messaging in top when 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.sh

Requires Node.js. See README for full usage.