Download Latest Version v0.12.0 source code.zip (9.7 MB)
Email in envelope

Get an email when there's a new version of runwisp

Home / v0.11.0
Name Modified Size InfoDownloads / Week
Parent folder
runwisp-darwin-x64.tar.gz 2026-06-26 10.5 MB
runwisp-linux-arm64.tar.gz 2026-06-26 9.4 MB
checksums-sha256.txt 2026-06-26 370 Bytes
runwisp-darwin-arm64.tar.gz 2026-06-26 9.8 MB
runwisp-linux-x64.tar.gz 2026-06-26 10.3 MB
README.md 2026-06-26 7.9 kB
v0.11.0 source code.tar.gz 2026-06-26 7.1 MB
v0.11.0 source code.zip 2026-06-26 7.7 MB
Totals: 8 Items   54.9 MB 0

Added

  • TUI task & run inspector (i). An on-demand panel showing a task's definition and recent health (success rate, last failure), or a run's full facts (exit code, trigger, retry lineage) in a log view — surfaced on a keypress instead of crowding the header. See the TUI tour.
  • Bulk run cleanup in the TUI. Multi-select runs with space (or a to select every run matching the current filter), then delete, cancel, or re-run them at once; the delete is undoable.
  • Reload runwisp.toml from the TUI (R). The same validate-first reload as runwisp reload, without leaving the TUI. See Reload.
  • Progress bars and live redraws render cleanly. Carriage-return progress bars and multi-line ANSI redraws are now interpreted as a terminal would: the log keeps the finished frame instead of raw \r/escape soup, and live viewers (Web UI and TUI) watch the active region update in place. See Logs.
  • Rewind a settled redraw's frames. A finished progress bar or redraw keeps a sampled, best-effort history you can scrub back to — click the line in the Web UI, use [/] then enter in the TUI, or GET …/log/line/{n}/history. See Logs.
  • runwisp demo --no-tui. Leaves the demo daemon running in the background and prints its Web UI password to stdout instead of opening the TUI — usable over SSH or in scripts. See CLI.
  • Linkable executions. Picking a run in the Web UI now puts its ID in the URL path (/tasks/<name>/<id> and /runs/<id>) — on a task's page and the All Runs page — so an individual execution can be bookmarked or shared; a new task-agnostic GET /api/runs/{runId} restores a shared link to any run.
  • Filter runs in the Web UI. A filter popover on the run list narrows by status (five outcome buckets — Running, Succeeded, Failed, Skipped, Stopped — with an Advanced expander for exact statuses), a From/To date range, task, trigger, an exit-code expression (137, >100, >100 <150), and retries — all applied server-side and mirrored as GET /api/runs query parameters. It opens over the run detail (a bottom sheet on phones), leaving the list visible. See Web UI tour.

Changed

  • Lower idle memory. RSS now settles toward the daemon's working set instead of camping at its high-water mark after a spike.
  • TUI run list filters; the sidebar filters as you type. f filters runs by outcome, with a banner under the column header naming the active filter so the narrowed view is obvious; / on the sidebar filters tasks by name (it's an explicit mode, so q types into the filter instead of quitting). The run list is always newest-first — page it with Home/End/PgUp/PgDn. See the TUI tour.
  • Destructive TUI actions confirm; deletes are undoable. Trigger, re-run, stop, and restart ask before they act; deleting runs (single or bulk) acts immediately and offers a u undo toast instead. Mark every notification read with a in the notifications panel.
  • Tidier log directories. Each run's index, timestamp, rotation, and frame-history sidecars are now consolidated into a single hidden .log.meta container, so an ls of a log directory shows only the .log files. See Logs.
  • Service instances are labelled 1-based. A multi-instance service now shows every run as name#1, name#2, name#3 in the Web UI and TUI instead of name, name#1, name#2; a single-instance service stays just name. See Services.
  • TUI Run Now dialog tells you how to toggle a flag. A focused flag shows an inline cue, the key legend names the action for whatever field is focused, and ←/→ toggle a flag alongside space/x. See Parameters.
  • Port already taken by another RunWisp daemon. Launching runwisp when a daemon from a different data directory holds the port now names that daemon's datadir and config and offers to connect to it or stop it and launch here, instead of the generic "another process" error. A new local-only GET /api/instance (loopback/socket; 403 over the network) backs the discovery.
  • Responsive TUI execution table. Column widths now flex with the terminal — columns grow proportionally up to a per-column maximum and shrink toward sensible floors, and the main panel is capped to a readable max width so it stays left-aligned instead of stretching edge-to-edge on wide terminals.
  • Web UI visual identity: teal brand, slate neutrals. The dashboard now reads in a deep-teal brand accent over cool slate neutrals, with an instrument-style execution detail and a black-box console. Light and dark both retuned.
  • Task view rebuilt around the run history. The history rail and run detail now fill the page edge-to-edge as one card-less surface, divided by a single spine. Run controls live in the detail header: a split Run button triggers with defaults (and queues at max concurrency) with a dropdown to re-run a selected run pre-filled with its inputs; services show Stop/Restart in the same spot. Search moved into a single field in the app header — centered between the breadcrumb and status chips (⌘K focuses it) — that searches run output on a task and filters the run list elsewhere, and the All Runs page adopts the same card-less surface, instrument-style detail, dense status-led rows, and hover-revealed row selection.

Fixed

  • TUI help overlay (?) scrolls. The keyboard-shortcut reference is taller than most terminals and was cut off at the bottom; it now scrolls with ↑/↓, PgUp/PgDn, g/G, and the mouse wheel. See the TUI tour.
  • Maximized log console showed nothing until you scrolled. Expanding the console on a long run rendered a blank viewport until the first scroll event; it now re-syncs its scroll position on resize so lines appear immediately.
  • Run-list sort toggle had no effect. GET /api/runs?sort_direction=… (and the per-task runs list) ignored the direction unless a sort_field was also given, so the Web UI's sort button never reordered anything; the default column now honors an explicit direction.
  • TUI run-detail Delete button. Clicking 🗑 Delete with the mouse now opens the confirm dialog, and keyboard focus reaches the action button from both header rows.
  • Empty TUI run list no longer collapses. A list with no runs (or a filter that matched nothing) now fills the panel with its footer pinned to the bottom, instead of bunching up under the header.
  • Fatal boot errors are no longer silent in TUI mode. runwisp died with exit 1 and no output when startup failed before the TUI attached (e.g. a config parse error); the error now reaches stderr.
  • runwisp exec no longer drops output if its log stream blips. When the live stream ended without a completion event (a transport hiccup under load), the command could exit having printed none of the run's captured output; it now reconnects from the last line it saw and prints the persisted tail.
  • A cancelled request no longer looks like a server error. When a client disconnects mid-query (a browser aborting a superseded fetch), the interrupted read now returns 408 instead of a 500, and genuine 500s log their underlying cause instead of discarding it.
Source: README.md, updated 2026-06-26