You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[1.5.0] - 2026-10-05
Deprecated
Short options that meant something else in one command than in all
the others. The old spelling still works until 2.0 and prints a
warning on stderr:
trace -p N (probes; -p is --ports elsewhere): use --probes N.
propagation -t TYPE (-t is --timeout elsewhere): use -r / --type.
ping -w (-w is --workers elsewhere): use --watch.
wifi -i NAME (-i is --interval elsewhere): use -I / --interface.
Added
xping monitor FILE: a live dashboard for a check file. Every
check runs again and again, each on its own schedule (every in the
file, or --every). In a terminal the state is a table redrawn in
place: up or down, the latest value of the check's headline metric, a
trend of the last 16 runs, uptime and how long the current state has
lasted; narrow terminals drop the least important columns, then
shorten check names, and hide the detail rather than show two letters
of it. Elsewhere
(cron, systemd, a pipe) it prints one line per state change. --notify
/ --webhook alert on every change, --save keeps each result in the
history under the same name as the single command, --rounds N stops
after N runs. Ctrl-C ends with a summary (uptime, outages, longest
outage, average); the exit code says whether everything was up.
Durations drop a zero remainder: 1m rather than 1m00s.
ping --until-up and --every, like tcp, udp, http and health: ping once per check until the host answers, then exit 0
(xping ping 10.0.0.1 --until-up -q && ssh 10.0.0.1).
Check files support trace, mtr, wifi, doctor and speedtest,
with their thresholds (max_loss / max_latency for mtr, min_signal for wifi, min_download / min_upload for speedtest).
Speedtest checks run on their own after the parallel ones.
xping check --save keeps the whole report in the history, one
history per check file.
speedtest --min-download MBPS and --min-upload MBPS: exit 1 when
the link is slower than that.
Changed
Every terminal view is now tested with realistic results, with colour
on and off: the layout must be identical either way (the cause of past
column drift), and escape codes in remote text (whois, DNS,
certificates) must never reach the terminal. Coverage rose from 79% to
82%, and the minimum from 75% to 80%.
mypy now checks every module: the last three on the baseline
(exporters/tables.py, verdict.py, diagnostics/speedtest.py) are
typed, and the baseline is gone.
ping --watch now judges the whole session when you stop it: --max-loss / --max-latency and the exit code apply (1 when every
ping was lost), and --save keeps the session in history. An
unresolvable host now exits 1 instead of 0.
Python 3.13 and 3.14 are tested in CI (Linux and macOS) and listed
as supported on PyPI. Python 3.10 stays supported: Ubuntu 22.04,
which the PPA builds for, ships it.
--save confirms the save with the run number and the xping history
command to use, except with -q or an export format, where the output
has to stay clean.
Fixed
xping.diagnostics.check can be imported on its own (it failed with a
circular-import error when it was the first xping module loaded, e.g.
from a script using xping as a library). The pass/fail verdicts moved
from xping.cli.verdict to xping.verdict, below the CLI layer; a
test now imports every module standalone and keeps the lower layers
free of CLI imports.
xping history no longer shows an empty trend line for a single run,
and says "1 run" rather than "1 runs".