Skip to content

xping v1.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 19:00
· 97 commits to main since this release
b1601cb

[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".