Network Intelligence
●
TLS certificate inspection
— subject, issuer, expiry date, and SANs shown per HTTPS port; automatic ⚠ EXPIRED and ⚠ expires soon warnings
●
SMB2 OS fingerprinting
— identifies exact Windows version via SMB dialect negotiation on port 445
●
SNMP sysDescr probe
— pulls full system description from routers, switches, NAS devices, and printers over UDP 161
●
HTTP Server header grabbing
— shows actual server software (e.g. Apache/2.4.54, nginx/1.24) instead of the raw status line
Security
●
Security risk flags
— automatic per-host analysis: Telnet open 🔴, FTP open 🔴, expired TLS cert 🔴, cert expiring soon 🟡, HTTP without HTTPS 🟡, SNMP default community 🟡; colored ⚠ badge on host row
Organization
●
Device labels & notes
— right-click any host to set a custom name (NAS, Dad's PC, Smart TV) and free-text notes; persisted to disk; searchable in the filter bar
Background Monitoring
●
System tray — minimize to tray
— clicking ✕ hides the window to the system tray instead of exiting; double-click to restore
●
Auto-Rescan
— set a rescan interval (Off / 5 min / 15 min / 30 min) from the tray icon menu
●
Windows change notifications
— balloon notification when new devices join or known devices leave while running in the tray
About Window
●
Links panel in About
— website, project page, help, downloads, terms, bug report, and donate links all accessible from the About dialog
Preferences
●
Preferences window
— new ⚙ Preferences dialog with General (minimize to tray, start minimized), Auto-Rescan interval, Notification settings (balloon on/off, change threshold), and Privacy controls; settings persisted to %AppData%\ClumsyNetWatch\preferences.json
Privacy & Telemetry
●
First-run consent dialog
— on first launch, a clear opt-in screen explains exactly what is collected (app version, OS version, scan counts, country, anonymous ID) and what is not (IP addresses, personal data); no telemetry fires before the user accepts
●
Anonymous opt-in telemetry
— sends anonymous startup and scan-complete events to a private Cloudflare Worker + D1 database; can be turned off at any time in Preferences → Privacy; no PII ever transmitted
License
●
Commons Clause + MIT license
— free for personal use; commercial / business use requires a license; license terms surfaced in the About window with a contact link
Stability
●
In-app update checker
— checks GitHub Releases on startup; a non-intrusive blue banner appears at the top of the window when a newer version is available, with a direct download link and a dismiss button
●
Global crash handler
— unhandled exceptions now show a friendly recovery dialog with a link to file a bug report instead of silently crashing
●
Full Scan warning dialog
— before launching a Full port scan (all 65 535 ports), a dialog shows the estimated time and host count so users can confirm before committing
Bug Fixes
●
Full scan found nothing on every host
— scanning all 65 535 ports fired 65 k simultaneous TCP connections per host, exhausting OS socket limits; fixed with a SemaphoreSlim(200) per-host concurrency cap
●
OpenPorts race condition under concurrent scanning
— port results were written to a non-thread-safe List<int> from parallel tasks; replaced with ConcurrentBag<int>
●
Balloon notification threshold never enforced
— the BalloonThreshold preference was saved but the check was missing; balloon now correctly fires only when change count ≥ threshold
●
Dark mode button hover
— Donate, About, Profiles, Import, and Export buttons were unreadable on hover in dark mode; custom ControlTemplate applied to both themes
●
Donate button URL
— toolbar Donate button was pointing to clumsyslab.tech instead of the PayPal donation link