Skip to content

PingerPlot 1.2.0

Choose a tag to compare

@jamesccupps jamesccupps released this 04 Jun 19:39
· 38 commits to main since this release

PingerPlot 1.2.0 — headless mode + reliability.

The big one: PingerPlot now runs without a GUI, so you can monitor 24/7 from a server or a VLAN-probe host under Task Scheduler. Plus correctness/robustness fixes and the snappier UI from 1.1.1. Still pure Python standard library — zero third-party dependencies.

New

  • Headless / service mode. python -m pingerplot.headless --init monitor.json writes a starter config; python -m pingerplot.headless monitor.json runs it (Ctrl-C to stop). A JSON config drives N targets (defaults + per-target overrides), each logging to its own crash-safe, rotating CSV, with periodic status lines to the console. Built for Windows Task Scheduler; pip install . also adds a pingerplot-headless command.

Reliability & correctness

  • Fixed a TCP-traceroute bug: in elevated full-traceroute mode a hop that returned a hard unreachable could vanish from the round and be logged as a plain timeout. It now always records a definite result.
  • Session saves are atomic (temp + replace) — a crash mid-write can't truncate the file.
  • Session load caps hops and samples against a crafted/corrupt file.
  • Faster UI (from 1.1.1): per-tick CPU ~30 ms → ~2–3 ms; the sidebar is ~97× cheaper with several targets, so it stays responsive as you add more.

Tested

95 tests across Windows + Linux × Python 3.10–3.13, including new coverage for the route grow/shrink logic and the geo-IP resolver.

Install / run (no Git needed)

  1. Download Source code (zip) below and extract it anywhere.
  2. GUI: double-click PingerPlot.vbs. Headless: python -m pingerplot.headless --init monitor.json.

Requires Windows 10/11 and Python 3.10+. Full TCP/UDP traceroute needs an elevated session; ICMP works as a normal user. The headless engine runs anywhere Python does.

Full changelog: v1.1.1...v1.2.0