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.6.0
Name Modified Size InfoDownloads / Week
Parent folder
checksums-sha256.txt 2026-05-22 370 Bytes
runwisp-darwin-arm64.tar.gz 2026-05-22 8.0 MB
runwisp-darwin-x64.tar.gz 2026-05-22 8.6 MB
runwisp-linux-arm64.tar.gz 2026-05-22 7.7 MB
runwisp-linux-x64.tar.gz 2026-05-22 8.5 MB
README.md 2026-05-22 4.4 kB
v0.6.0 source code.tar.gz 2026-05-22 2.0 MB
v0.6.0 source code.zip 2026-05-22 2.3 MB
Totals: 8 Items   37.1 MB 0

Added

  • runwisp service install wires up systemd or launchd autostart. One command installs a user-level service unit (systemd on Linux/WSL, LaunchAgent on macOS) so the daemon comes back up after reboot. Companions: service uninstall, service status, and --print to emit the unit for Ansible / Nix. WSL prints a Register-ScheduledTask PowerShell recipe alongside the systemd path.

  • Per-task environment variables via env and env_file. Set env = { PORT = "8080" } on a [tasks.*] / [services.*] (or [defaults]) table to overlay inline values; env_file = "secrets.env" reads dotenv from disk. Task-level entries override [defaults] on key collision. Values loaded from env_file stay on the daemon — the API and Web UI only show the file path.

  • Prometheus-compatible /metrics endpoint (opt-in). OpenMetrics 1.0 text covering run counters, last-failure timestamp, per-task active-run gauges, and daemon CPU / memory / uptime. Off by default; enable with [daemon] metrics_enabled = true, and bind it to loopback with [daemon] metrics_listen = "127.0.0.1:9478" when the main --host is public. See Operations / Metrics.

  • Bulk run actions in the Web UI with undo. Master checkbox in the heading plus per-row checkboxes, with inline Re-run, Cancel, and Delete. Deleted rows return for 5s via a toast (survives reload).

  • Delete a run from the Web UI and TUI. Trash button on the run detail panel; the TUI exec view binds D. Removes the metadata row and the captured log segment.

  • [daemon] external_url for notification deep-links. Set external_url = "https://your-host.example.com" and Slack / Telegram messages include a direct link to the run in the Web UI.

  • The Web UI sidebar collapses on narrow viewports. The navigation lives behind a hamburger menu on phones and tablets — no more horizontal scroll.

  • Trigger-type icons next to every task. Server icon for services, clock for cron, hand for manual — in the sidebar and dashboard. Hover for the cron expression or instance count.

  • Notification "View run #abc1234 →" chip. Run-scoped in-app notifications now carry a chip with the short run ID so you can jump straight to it.

Changed

  • Web UI design refresh. Every panel snaps to the same border radius, tone, and shadow; sidebar/page hue drift is gone. A topbar connection pip surfaces daemon reachability on every page. The runs list is now virtualized and server-paginated — search, status filter, and sort order route through the server instead of clipping at a 200-row client cap.
  • Telegram and Slack notifications got a major facelift. A one-line headline with emoji + verb, exit code and duration, trigger and timestamp, plus the last 3 lines of captured output for failures and timeouts and a deep-link when [daemon] external_url is set. The flat single-paragraph form is gone.
  • Default data directory is now ./.runwisp/ (was ./data/). Keeps RunWisp's state out of the way when runwisp.toml lives next to a framework project that already has its own data/. To stay on the old path, pass --data data. Absolute --data paths are unaffected.
  • System resources panel shows live memory bytes inline. The Memory sparkline header now displays used / total (e.g. 1.2 GB / 8.0 GB) next to the percentage.
  • OpenAPI exposes EndReason as a named schema. Run end_reason values (success, failed, timeout, …) reference a single components/schemas/EndReason enum instead of inline enums per call site — generated clients pick it up as one shared type.

Fixed

  • Service runs no longer claim they were triggered by the API. Supervisor-driven instances (boot, crash, slot refill) now show Service ("Service auto-started" in notifications) in the dashboard, activity feed, and Slack / Telegram. Operator-initiated REST restarts still show API.

  • Graceful shutdown is now instant when there's nothing running. The notification retention ticker used to keep the daemon alive for the full [daemon] shutdown_timeout on every exit; it now cancels with the rest of shutdown, so the daemon quits as soon as in-flight work drains.

Source: README.md, updated 2026-05-22