Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 18:40

NetSpeedTray 2.0 - the widget is now a true part of the taskbar.

Since v1.0 the speed readout lived in a separate always-on-top window perched over the taskbar - which meant it could fall behind the taskbar, flicker when you clicked around the shell, and vanish the moment you opened the Start menu or a system flyout (sometimes until you clicked into another window). This release re-architects how the widget sits on the desktop: it's now Z-order-docked to the taskbar, so the Windows shell can no longer cover it. After years of chasing this, the widget is finally rock-solid - it stays put through the Start menu, system flyouts, the tray overflow, taskbar clicks, Explorer restarts, sleep/resume, and monitor changes. It doesn't just sit over the taskbar anymore; it feels like a real part of it. That's the major version bump.

And there's a new home for everything beyond the readout: the Monitor. The two older windows - the history Graph and the App Activity list - are replaced by one calm, unified Monitor with three tabs (Overview · Network · Hardware). It opens on a glanceable Overview of tiles and sparklines, drills into honest statistics you can export, surfaces network latency and the per-app connections behind your traffic, and shows per-process CPU/RAM/GPU usage - all sharing one graph engine and one timeline. It's the half of the app most people never found, finally given a front door.

This release also folds in the entire (previously unreleased) v1.3.4 stabilization work: a broad sweep of bug fixes - including a critical logging fix - correctness hardening, the project's first CI pipeline, and a big jump in test coverage (196 → 722 tests).

Upgrading? If you're on v1.3.2, its in-app updater can't reach GitHub, so please update manually from this page (or WinGet). v1.3.3 users can update in-app as usual. Your settings and history in %APPDATA%\NetSpeedTray are preserved.


🪟 The taskbar, finally

  • The widget no longer disappears behind the taskbar. It's now an owned window of the taskbar, so Windows keeps it above the taskbar through the Start menu, Quick Settings, the tray overflow (^), and plain taskbar clicks - and it recovers automatically after an Explorer restart.
  • No more taskbar-click flicker, and fullscreen hide/show is near-instant in both directions (including apps that go fullscreen without changing focus, like double-clicking a video).
  • Survives sleep/resume and monitor changes - it re-asserts itself on wake and when displays are added, removed, or the primary changes (KVM switches, docking/undocking).

📊 The Monitor

Double-click the widget (or pick Monitor from the tray) to open it. Three tabs, one shared graph engine, and a chart-free Overview so a glance never loads the heavy plotting libraries.

  • Overview - live tiles for network/CPU/GPU/RAM/VRAM with adaptive sparklines, a network hero card with inline latency, a Data-usage card, and a Top-talkers list. Every card is clickable.
  • Network - the history graph over a per-app connection list (live connections, how many are active, the distinct hosts each app reaches), with a per-NIC filter. Honest by design: Windows can't attribute network bytes per app without a driver, so nothing is dressed up as a per-app "speed."
  • Hardware - a combined CPU+GPU history graph (separate-axis / single / smoothing / fixed-or-auto y-axis) over a live per-process CPU / RAM / GPU% list, plus a telemetry band of temps, power, and memory.
  • Honest statistics + export - click any card for a Statistics sheet with real distributions (exact percentiles only where the data supports them), peak vs off-peak, throttle and connection-drop counts. Copy the figures or Export the window as a single .zip (summary CSV + raw CSV + JSON). A headless NetSpeedTray.exe --export-csv exists for scripted use.
  • Built to feel like Windows 11 - native dark title bar and rounded corners, a Fluent tab strip, remembered size/position/last-tab, and full keyboard navigation.

✨ Also new

  • Usage & data caps - daily/weekly/monthly totals, a settable monthly cap with a billing reset day and opt-in 80%/100% alerts, shown as a quiet flyout above the widget (no extra tray icon). The cap reads from a dedicated monotonic counter, so the headline total is authoritative.
  • Network latency - an opt-in probe with a plain-word verdict (Internet: Good / OK / Slow); defaults to your gateway (stays on your LAN), public host strictly opt-in.
  • One-click secure update - Download now fetches the signed installer, verifies it in-app (Windows WinVerifyTrust + a publisher pin, fail-closed), and runs it - falling back to the browser if anything is off.
  • Configurable click actions - reassign double-click and middle-click on the widget (Open Monitor / Open Settings / Pause-Resume / Nothing) under Settings → General → Interaction. Thanks @rami123 (#165).
  • Starts with Windows by default - fresh installs now launch on sign-in, so the widget is just there after a reboot. (Existing setups keep whatever you had; toggle it any time in Settings → General.)
  • Arrow styles (Classic ↑↓, Solid ▲▼, Compact ▴▾, Outline △▽, Outline Compact ▵▿, Double ⇑⇓, or Custom), a live settings preview that renders the exact widget effect before you commit, scroll-to-switch metrics in Cycle mode, an opt-in Pause/Resume in the tray menu, a data-used glance on the widget's hover card, and an in-app temperature onboarding explainer.

🐛 Fixed (highlights)

  • File logging silently failed since v1.3.2 - no log file, empty Support Bundles. Fixed (the headline v1.3.4 fix).
  • Color coding banded by the on-screen number instead of the real Mbps speed in non-Mbps units - now canonical. And the Settings threshold fields no longer always read "Mbps" - the suffix follows the active unit (thanks @rami123, #165).
  • Windows didn't reliably remember their position (incl. across monitors); hardware temp/power froze at the last reading on sensor dropout; taskbar text truncated at very high speeds (#106); Cycle mode clipped CPU/GPU text; monitoring could permanently die after a string of errors; dragging the widget right of the tray snapped it back (#165).

🌍 Localization

Ten languages at 100% key parity. Japanese (#155, #163) by @coolvitto and Korean (#156, #164) by @VenusGirl were refreshed for the 2.0 strings, with native-speaker corrections from #158-#162 applied along the way. The entire Monitor is localized, and a CI guardrail now fails the build if any locale drifts from the English key set or mangles a {placeholder}. Thank you to all the translators 💛


A huge thank-you to everyone who tested, translated, and reported issues - and to @rami123, @coolvitto, and @VenusGirl whose contributions landed in this release.

📄 Full details: see the complete changelog.