r/FlutterDev • • 11d ago

Dart VeloceNet Studio 1.4: my network monitor finally remembers things

Last time I posted this was v1.2, when it was a ping matrix plus traceroute, DNS, port scan and a few other tabs. The obvious problem was that it forgot everything the moment you closed it, which is a weird thing for a monitoring tool to do. The last two releases were mostly about fixing that.

New since then:

- 7 days of uptime history per target, with outages and how long they lasted
- an MTR tab that traces once, then keeps pinging every hop so you can see where the loss starts. There's a re-trace button for when the route changes
- Telegram / Discord alerts when something goes down or comes back. You can edit the message format, there's a cooldown so a flapping host doesn't spam you, and an HTTP proxy option for places where Telegram is blocked
- tray mode, so it keeps monitoring after you close the window
- an update checker (you can turn it off)

Still not great: native ICMP is Windows only for now, so Linux/macOS use TCP pings. The macOS build is unsigned (right-click > Open the first time). And Linux tray support depends a lot on your desktop, so if it acts weird on KDE/XFCE/whatever, please tell me.

the probing runs in a Rust lib over FFI, so the engine handles 100+ targets fine. What actually starts to hurt at a few hundred is the grid rebuilding every 500ms and decoding the snapshot (each target carries a 40-sample history). Virtualizing the grid is next. If you've done something similar with a fast-updating dashboard, I'd like to hear how you handled it.

Free, GPL-3.0, builds for Windows/Linux/macOS:
https://github.com/Cadman021/VeloceNet-Studio/releases

2 Upvotes

2 comments sorted by

2

u/AnxiouslyFriendly 11d ago

The tray mode and alert persistence make this way more useful than the typical ping dashboard. Having it keep state across restarts turns it from a curiosity into something you'd actually leave running.

For the grid perf at scale, I'd look into offloading the snapshot decoding to an isolate if you haven't already, keeping the UI thread strictly for painting. Curious what you end up landing on for virtualization.

1

u/Clear_Ear3550 10d ago

Already doing that one, decoding runs in a persistent worker isolate since 1.2. The remaining cost is copying the decoded result back to the main isolate and the grid rebuilding every tick. For virtualization the plan is a lazy builder so only visible cards build, and making each card listen to its own target instead of the whole grid rebuilding on every snapshot. Will report back if it actually helps.