Added
-
runwisp service installwires 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--printto emit the unit for Ansible / Nix. WSL prints aRegister-ScheduledTaskPowerShell recipe alongside the systemd path. -
Per-task environment variables via
envandenv_file. Setenv = { 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 fromenv_filestay on the daemon — the API and Web UI only show the file path. -
Prometheus-compatible
/metricsendpoint (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--hostis 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_urlfor notification deep-links. Setexternal_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_urlis set. The flat single-paragraph form is gone. - Default data directory is now
./.runwisp/(was./data/). Keeps RunWisp’s state out of the way whenrunwisp.tomllives next to a framework project that already has its owndata/. To stay on the old path, pass--data data. Absolute--datapaths 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
EndReasonas a named schema. Runend_reasonvalues (success,failed,timeout, …) reference a singlecomponents/schemas/EndReasonenum 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_timeouton every exit; it now cancels with the rest of shutdown, so the daemon quits as soon as in-flight work drains.
- v1.5.1 latest
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- v0.16.4 pre
- v0.16.3 pre
- v0.16.2 pre
- v0.16.1 pre
- v0.16.0 pre
- v0.15.1 pre
- v0.15.0 pre
- v0.14.0 pre
- v0.13.2 pre
- v0.13.1 pre
- v0.13.0 pre
- v0.12.0 pre
- v0.11.0 pre
- v0.10.0 pre
- v0.9.0 pre
- v0.8.0 pre
- v0.7.0 pre
- v0.6.0 pre
- v0.5.0 pre
- v0.4.0 pre
- v0.3.0 pre
- v0.2.0 pre
- v0.1.2 pre
- v0.1.0 pre