From 529659970ce4d50e9ad3955938b0b239bc74e0e8 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 00:21:41 +0200 Subject: [PATCH 01/18] Feature: Speed test --- README.md | 1 + .../ExternalServicesManager.cs | 4 +- .../Resources/Strings.Designer.cs | 128 +++++- .../Resources/Strings.resx | 43 ++ .../Cloudflare/SpeedTestMetaInfo.cs | 73 ++++ .../Cloudflare/SpeedTestProgress.cs | 46 ++ .../Cloudflare/SpeedTestResult.cs | 71 +++ .../Cloudflare/SpeedTestService.cs | 403 ++++++++++++++++++ Source/NETworkManager/NETworkManager.csproj | 1 + .../ViewModels/SpeedTestWidgetViewModel.cs | 324 ++++++++++++++ .../NETworkManager/Views/DashboardView.xaml | 8 +- .../Views/DashboardView.xaml.cs | 2 + .../Views/IPApiDNSResolverWidgetView.xaml | 3 +- .../Views/IPApiIPGeolocationWidgetView.xaml | 3 +- .../Views/NetworkConnectionWidgetView.xaml | 23 +- .../Views/PingMonitorHostView.xaml | 9 +- .../Views/SpeedTestWidgetView.xaml | 263 ++++++++++++ .../Views/SpeedTestWidgetView.xaml.cs | 14 + Source/NETworkManager/Views/WiFiView.xaml | 3 +- Website/docs/application/dashboard.md | 16 + Website/src/pages/download.mdx | 1 + 21 files changed, 1409 insertions(+), 30 deletions(-) create mode 100644 Source/NETworkManager.Models/Cloudflare/SpeedTestMetaInfo.cs create mode 100644 Source/NETworkManager.Models/Cloudflare/SpeedTestProgress.cs create mode 100644 Source/NETworkManager.Models/Cloudflare/SpeedTestResult.cs create mode 100644 Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs create mode 100644 Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs create mode 100644 Source/NETworkManager/Views/SpeedTestWidgetView.xaml create mode 100644 Source/NETworkManager/Views/SpeedTestWidgetView.xaml.cs diff --git a/README.md b/README.md index 02c8e942d3..3357827d79 100644 --- a/README.md +++ b/README.md @@ -250,6 +250,7 @@ NETworManager has integrated some **optional** third-party services to enhance f - [api.github.com](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement) - Check for application updates. - [ipify.org](https://www.ipify.org/) - Retrieve the public IP address used by the client. - [ip-api.com](https://ip-api.com/docs/legal) - Retrieve network information (e.g., geolocation, ISP, DNS resolver) used by the client. +- [speed.cloudflare.com](https://www.cloudflare.com/privacypolicy/) - Measure download/upload speed, latency and jitter. ## 📝 License diff --git a/Source/NETworkManager.Documentation/ExternalServicesManager.cs b/Source/NETworkManager.Documentation/ExternalServicesManager.cs index 7f9a50987e..41ec1b1c2f 100644 --- a/Source/NETworkManager.Documentation/ExternalServicesManager.cs +++ b/Source/NETworkManager.Documentation/ExternalServicesManager.cs @@ -16,6 +16,8 @@ public static class ExternalServicesManager new ExternalServicesInfo("ip-api.com", "https://ip-api.com/", Strings.ExternalService_ip_api_Description), new ExternalServicesInfo("ipify.org", "https://www.ipify.org/", - Strings.ExternalService_ipify_Description) + Strings.ExternalService_ipify_Description), + new ExternalServicesInfo("speed.cloudflare.com", "https://speed.cloudflare.com/", + Strings.ExternalService_Cloudflare_SpeedTest_Description) }; } \ No newline at end of file diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index d657fbeaf7..e0676f7d7a 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -4266,6 +4265,15 @@ public static string ExportSelected { } } + /// + /// Looks up a localized string similar to Speed test service used to measure download speed, upload speed, latency, and jitter.. + /// + public static string ExternalService_Cloudflare_SpeedTest_Description { + get { + return ResourceManager.GetString("ExternalService_Cloudflare_SpeedTest_Description", resourceCulture); + } + } + /// /// Looks up a localized string similar to IP Geolocation API - Fast, accurate, reliable. /// @@ -4311,6 +4319,15 @@ public static string FailedToLoadHostsFileMessage { } } + /// + /// Looks up a localized string similar to Fetching metadata.... + /// + public static string FetchingMetadataDots { + get { + return ResourceManager.GetString("FetchingMetadataDots", resourceCulture); + } + } + /// /// Looks up a localized string similar to Field cannot be empty!. /// @@ -5365,6 +5382,15 @@ public static string HTTPStatusCode { } } + /// + /// Looks up a localized string similar to IATA. + /// + public static string IATA { + get { + return ResourceManager.GetString("IATA", resourceCulture); + } + } + /// /// Looks up a localized string similar to ICMPv4. /// @@ -5843,6 +5869,15 @@ public static string ISP { } } + /// + /// Looks up a localized string similar to Jitter. + /// + public static string Jitter { + get { + return ResourceManager.GetString("Jitter", resourceCulture); + } + } + /// /// Looks up a localized string similar to Keyboard. /// @@ -5915,6 +5950,15 @@ public static string LastUsableIPAddress { } } + /// + /// Looks up a localized string similar to Latency. + /// + public static string Latency { + get { + return ResourceManager.GetString("Latency", resourceCulture); + } + } + /// /// Looks up a localized string similar to Latitude. /// @@ -6554,6 +6598,33 @@ public static string MeasuredTime { } } + /// + /// Looks up a localized string similar to Measuring download speed.... + /// + public static string MeasuringDownloadSpeedDots { + get { + return ResourceManager.GetString("MeasuringDownloadSpeedDots", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Measuring latency.... + /// + public static string MeasuringLatencyDots { + get { + return ResourceManager.GetString("MeasuringLatencyDots", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Measuring upload speed.... + /// + public static string MeasuringUploadSpeedDots { + get { + return ResourceManager.GetString("MeasuringUploadSpeedDots", resourceCulture); + } + } + /// /// Looks up a localized string similar to Megabits. /// @@ -10179,6 +10250,15 @@ public static string Server { } } + /// + /// Looks up a localized string similar to Server location. + /// + public static string ServerLocation { + get { + return ResourceManager.GetString("ServerLocation", resourceCulture); + } + } + /// /// Looks up a localized string similar to Server name. /// @@ -10849,6 +10929,34 @@ public static string Speed { } } + /// + /// Looks up a localized string similar to Speed Test. + /// + public static string SpeedTest { + get { + return ResourceManager.GetString("SpeedTest", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Run speed test. + /// + public static string RunSpeedTest { + get { + return ResourceManager.GetString("RunSpeedTest", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Measure download and upload speeds, latency, and jitter with speed.cloudflare.com. + ///Cloudflare may log your IP address and network information. See Cloudflare's privacy policy for details.. + /// + public static string SpeedTestDisclaimerMessage { + get { + return ResourceManager.GetString("SpeedTestDisclaimerMessage", resourceCulture); + } + } + /// /// Looks up a localized string similar to SplashScreen. /// @@ -10912,6 +11020,15 @@ public static string StarForkProjectOnGitHub { } } + /// + /// Looks up a localized string similar to Start. + /// + public static string Start { + get { + return ResourceManager.GetString("Start", resourceCulture); + } + } + /// /// Looks up a localized string similar to Start minimized in tray. /// @@ -11011,6 +11128,15 @@ public static string Steel { } } + /// + /// Looks up a localized string similar to Stop. + /// + public static string Stop { + get { + return ResourceManager.GetString("Stop", resourceCulture); + } + } + /// /// Looks up a localized string similar to Subnet. /// diff --git a/Source/NETworkManager.Localization/Resources/Strings.resx b/Source/NETworkManager.Localization/Resources/Strings.resx index 8a2a680b75..f5d9fc79df 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.resx +++ b/Source/NETworkManager.Localization/Resources/Strings.resx @@ -4306,4 +4306,47 @@ You can copy your profile files from “{0}” to “{1}” to migrate your exis Import profiles... + + Speed Test + + + Run speed test + + + Fetching metadata... + + + Measuring latency... + + + Measuring download speed... + + + Measuring upload speed... + + + Measure download and upload speeds, latency, and jitter with speed.cloudflare.com. +Cloudflare may log your IP address and network information. See Cloudflare's privacy policy for details. + + + Latency + + + Jitter + + + Server location + + + Speed test service used to measure download speed, upload speed, latency, and jitter. + + + Start + + + Stop + + + IATA + \ No newline at end of file diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestMetaInfo.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestMetaInfo.cs new file mode 100644 index 0000000000..36faa18d8a --- /dev/null +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestMetaInfo.cs @@ -0,0 +1,73 @@ +using Newtonsoft.Json; + +namespace NETworkManager.Models.Cloudflare; + +/// +/// Cloudflare PoP (Point of Presence) information returned by the +/// speed.cloudflare.com/meta endpoint. +/// +public class SpeedTestMetaColo +{ + /// + /// IATA airport code of the PoP (e.g. "FRA"). + /// + [JsonProperty("iata")] + public string Iata { get; set; } + + /// + /// City of the PoP (e.g. "Frankfurt-am-Main"). + /// + [JsonProperty("city")] + public string City { get; set; } + + /// + /// ISO 3166-1 alpha-2 country code of the PoP (e.g. "DE"). + /// + [JsonProperty("cca2")] + public string Cca2 { get; set; } +} + +/// +/// Deserialized response of the speed.cloudflare.com/meta endpoint. +/// Provides client and Cloudflare PoP metadata used to enrich the speed +/// test result. Requires the Origin: https://speed.cloudflare.com +/// header on the request, otherwise an empty object is returned. +/// +public class SpeedTestMetaInfo +{ + /// + /// Public IP address of the requesting client as seen by Cloudflare. + /// + [JsonProperty("clientIp")] + public string ClientIp { get; set; } + + /// + /// Autonomous System Number of the client's ISP. + /// + [JsonProperty("asn")] + public int Asn { get; set; } + + /// + /// Human-readable ISP name (e.g. "innogy TelNet"). + /// + [JsonProperty("asOrganization")] + public string AsOrganization { get; set; } + + /// + /// ISO 3166-1 alpha-2 country code of the client (e.g. "DE"). + /// + [JsonProperty("country")] + public string Country { get; set; } + + /// + /// City of the client (e.g. "Bochum"). + /// + [JsonProperty("city")] + public string City { get; set; } + + /// + /// Cloudflare PoP (Point of Presence) details. + /// + [JsonProperty("colo")] + public SpeedTestMetaColo Colo { get; set; } +} \ No newline at end of file diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestProgress.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestProgress.cs new file mode 100644 index 0000000000..b7e7585f11 --- /dev/null +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestProgress.cs @@ -0,0 +1,46 @@ +namespace NETworkManager.Models.Cloudflare; + +/// +/// Phase of a Cloudflare speed test run, reported by +/// via . +/// +public enum SpeedTestPhase +{ + FetchingMetadata, + MeasuringLatency, + MeasuringDownload, + MeasuringUpload +} + +/// +/// Progress event passed by to update the UI +/// with the currently running measurement phase and the latest live estimate +/// of each metric. Values are null until the first sample for that +/// metric has been collected. +/// +/// Current measurement phase. +/// Live download throughput estimate (Mbps). +/// Live upload throughput estimate (Mbps). +/// Live latency estimate (50th percentile of probes). +/// Live jitter estimate (average consecutive delta). +/// +/// Set when this emission marks a freshly completed download sample (one HTTP +/// request finished). Mid-stream live updates leave this null. +/// +/// +/// Set when this emission marks a freshly completed upload sample. +/// +/// +/// Cloudflare /meta response, emitted once after metadata is fetched +/// so ISP / location / server details can be displayed before the bandwidth +/// measurements complete. +/// +public record SpeedTestProgress( + SpeedTestPhase Phase, + double? DownloadMbps = null, + double? UploadMbps = null, + double? LatencyMs = null, + double? JitterMs = null, + double? NewDownloadSampleMbps = null, + double? NewUploadSampleMbps = null, + SpeedTestMetaInfo Meta = null); diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestResult.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestResult.cs new file mode 100644 index 0000000000..e584eba9e4 --- /dev/null +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestResult.cs @@ -0,0 +1,71 @@ +namespace NETworkManager.Models.Cloudflare; + +/// +/// Final result of a Cloudflare speed test run. +/// +public class SpeedTestResult +{ + /// + /// Download throughput in megabits per second (Mbps). null when no + /// samples were collected (e.g. test cancelled before any download). + /// + public double? DownloadMbps { get; set; } + + /// + /// Upload throughput in megabits per second (Mbps). null when no + /// samples were collected. + /// + public double? UploadMbps { get; set; } + + /// + /// Unloaded latency in milliseconds (50th percentile of latency probes). + /// null when no probes were collected. + /// + public double? LatencyMs { get; set; } + + /// + /// Average consecutive delta between latency samples, in milliseconds. + /// null when fewer than two probes were collected. + /// + public double? JitterMs { get; set; } + + /// + /// ISP name (Cloudflare meta asOrganization). + /// + public string Isp { get; set; } + + /// + /// City of the client (Cloudflare meta city). + /// + public string ClientCity { get; set; } + + /// + /// ISO 3166-1 alpha-2 country code of the client (Cloudflare meta country). + /// + public string ClientCountry { get; set; } + + /// + /// City of the Cloudflare PoP serving the test, e.g. "Frankfurt-am-Main". + /// + public string ServerCity { get; set; } + + /// + /// ISO 3166-1 alpha-2 country code of the Cloudflare PoP, e.g. "DE". + /// + public string ServerCountry { get; set; } + + /// + /// IATA code of the Cloudflare PoP, e.g. "FRA". + /// + public string ServerIata { get; set; } + + /// + /// Indicates that the speed test run failed. + /// + public bool HasError { get; set; } + + /// + /// Error message when is true. + /// + public string ErrorMessage { get; set; } +} diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs new file mode 100644 index 0000000000..4120ce0069 --- /dev/null +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs @@ -0,0 +1,403 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace NETworkManager.Models.Cloudflare; + +/// +/// Runs a network speed test against speed.cloudflare.com, modeled +/// after the official cloudflare/speedtest +/// JavaScript library. The full network logic is reimplemented in C#; no +/// telemetry is sent to aim.cloudflare.com. +/// +public class SpeedTestService : IDisposable +{ + private const string BaseUrl = "https://speed.cloudflare.com"; + private const string Origin = "https://speed.cloudflare.com"; + + private const double DefaultEstimatedServerTimeMs = 10.0; + private const double BandwidthFinishRequestDurationMs = 1000.0; + private const double BandwidthMinRequestDurationMs = 10.0; + private const double EstimatedHeaderFraction = 1.005; + + /// + /// Minimum gap between mid-stream live throughput emissions, in ms. + /// + private const double LiveProgressIntervalMs = 250.0; + + private static readonly Regex ServerTimingRegex = new(@"(?:^|;)\s*dur=([0-9.]+)", RegexOptions.Compiled); + + private enum StepDirection { Download, Upload } + + /// + /// Interleaved download/upload sequence from defaultConfig.js of the + /// official cloudflare/speedtest library. The initial 100 KB download + /// (bypassMinDuration) is executed separately between the two latency phases. + /// + private static readonly (StepDirection Direction, int Bytes, int Count)[] Steps = + { + (StepDirection.Download, 100_000, 9), + (StepDirection.Download, 1_000_000, 8), + (StepDirection.Upload, 100_000, 8), + (StepDirection.Upload, 1_000_000, 6), + (StepDirection.Download, 10_000_000, 6), + (StepDirection.Upload, 10_000_000, 4), + (StepDirection.Download, 25_000_000, 4), + (StepDirection.Upload, 25_000_000, 4), + (StepDirection.Download, 100_000_000, 3), + (StepDirection.Upload, 50_000_000, 3), + (StepDirection.Download, 250_000_000, 2), + }; + + private const int LatencyInitialProbes = 1; + private const int LatencyMeasurementProbes = 20; + + private readonly HttpClient _client; + + public SpeedTestService() + { + _client = new HttpClient { Timeout = TimeSpan.FromSeconds(60) }; + _client.DefaultRequestHeaders.Add("Origin", Origin); + _client.DefaultRequestHeaders.UserAgent.ParseAdd("NETworkManager"); + } + + /// + /// Runs a full speed test sequence (metadata, latency, download, upload). + /// Live estimates for each metric are reported via + /// as samples accumulate. The returned + /// contains the final aggregated values. + /// + public async Task RunAsync(IProgress progress, CancellationToken cancellationToken) + { + var pings = new List(); + var downloadBps = new List(); + var uploadBps = new List(); + + // 1. Metadata + Emit(progress, SpeedTestPhase.FetchingMetadata, pings, downloadBps, uploadBps, null, null); + var meta = await FetchMetaAsync(cancellationToken).ConfigureAwait(false); + progress?.Report(new SpeedTestProgress(SpeedTestPhase.FetchingMetadata, Meta: meta)); + + // 2. Initial latency probe (server-time estimation) + Emit(progress, SpeedTestPhase.MeasuringLatency, pings, downloadBps, uploadBps, null, null); + for (var i = 0; i < LatencyInitialProbes; i++) + { + await MeasureLatencyAsync(pings, cancellationToken).ConfigureAwait(false); + Emit(progress, SpeedTestPhase.MeasuringLatency, pings, downloadBps, uploadBps, null, null); + } + + // 3. Initial download estimate (100 KB × 1 — bypassMinDuration, between the two latency phases) + Emit(progress, SpeedTestPhase.MeasuringDownload, pings, downloadBps, uploadBps, null, null); + { + var (bps, durationMs) = await MeasureDownloadAsync(100_000, cancellationToken, + liveBps => Emit(progress, SpeedTestPhase.MeasuringDownload, + pings, downloadBps, uploadBps, liveBps, null)).ConfigureAwait(false); + if (durationMs >= BandwidthMinRequestDurationMs) + { + downloadBps.Add(bps); + Emit(progress, SpeedTestPhase.MeasuringDownload, + pings, downloadBps, uploadBps, null, null, + newDownloadSampleBps: bps); + } + } + + // 4. Proper unloaded latency measurement (20 probes) + Emit(progress, SpeedTestPhase.MeasuringLatency, pings, downloadBps, uploadBps, null, null); + for (var i = 0; i < LatencyMeasurementProbes; i++) + { + await MeasureLatencyAsync(pings, cancellationToken).ConfigureAwait(false); + Emit(progress, SpeedTestPhase.MeasuringLatency, pings, downloadBps, uploadBps, null, null); + } + + // 5. Interleaved download / upload (official cloudflare/speedtest sequence) + var downloadStopped = false; + var uploadStopped = false; + var currentPhase = SpeedTestPhase.MeasuringDownload; + Emit(progress, currentPhase, pings, downloadBps, uploadBps, null, null); + + foreach (var step in Steps) + { + if (step.Direction == StepDirection.Download && downloadStopped) continue; + if (step.Direction == StepDirection.Upload && uploadStopped) continue; + + var stepPhase = step.Direction == StepDirection.Download + ? SpeedTestPhase.MeasuringDownload + : SpeedTestPhase.MeasuringUpload; + if (stepPhase != currentPhase) + { + currentPhase = stepPhase; + Emit(progress, currentPhase, pings, downloadBps, uploadBps, null, null); + } + + for (var i = 0; i < step.Count; i++) + { + if (step.Direction == StepDirection.Download) + { + + var phaseSnapshot = currentPhase; + var (bps, durationMs) = await MeasureDownloadAsync(step.Bytes, cancellationToken, + liveBps => Emit(progress, phaseSnapshot, + pings, downloadBps, uploadBps, liveBps, null)).ConfigureAwait(false); + if (durationMs >= BandwidthMinRequestDurationMs) + { + downloadBps.Add(bps); + Emit(progress, currentPhase, + pings, downloadBps, uploadBps, null, null, + newDownloadSampleBps: bps); + } + if (durationMs >= BandwidthFinishRequestDurationMs) + { + downloadStopped = true; + break; + } + } + else + { + var (bps, durationMs) = await MeasureUploadAsync(step.Bytes, cancellationToken) + .ConfigureAwait(false); + if (durationMs >= BandwidthMinRequestDurationMs) + { + uploadBps.Add(bps); + Emit(progress, currentPhase, + pings, downloadBps, uploadBps, null, null, + newUploadSampleBps: bps); + } + if (durationMs >= BandwidthFinishRequestDurationMs) + { + uploadStopped = true; + break; + } + } + } + } + + // 6. Result + return new SpeedTestResult + { + DownloadMbps = downloadBps.Count > 0 ? Percentile(downloadBps, 0.9) / 1_000_000.0 : null, + UploadMbps = uploadBps.Count > 0 ? Percentile(uploadBps, 0.9) / 1_000_000.0 : null, + LatencyMs = pings.Count > 0 ? Percentile(pings, 0.5) : null, + JitterMs = pings.Count >= 2 ? Jitter(pings) : null, + Isp = meta?.AsOrganization, + ClientCity = meta?.City, + ClientCountry = meta?.Country, + ServerCity = meta?.Colo?.City, + ServerCountry = meta?.Colo?.Cca2, + ServerIata = meta?.Colo?.Iata + }; + } + + /// + /// Builds and emits a using current + /// sample lists. and + /// let mid-stream callers + /// report an instantaneous estimate even before the first completed + /// sample is in the list. + /// + private static void Emit(IProgress progress, SpeedTestPhase phase, + List pings, List downloadBps, List uploadBps, + double? liveDownloadBpsOverride, double? liveUploadBpsOverride, + double? newDownloadSampleBps = null, double? newUploadSampleBps = null) + { + if (progress == null) + return; + + // P90 of completed samples ⊔ current live instantaneous — consistent with + // the final result formula; live override applies only before the first sample. + double? downloadMbps = null; + if (downloadBps.Count > 0 || liveDownloadBpsOverride.HasValue) + { + var p90Bps = downloadBps.Count > 0 ? Percentile(downloadBps, 0.9) : 0.0; + if (liveDownloadBpsOverride.HasValue && liveDownloadBpsOverride.Value > p90Bps) + p90Bps = liveDownloadBpsOverride.Value; + downloadMbps = p90Bps / 1_000_000.0; + } + + double? uploadMbps = null; + if (uploadBps.Count > 0 || liveUploadBpsOverride.HasValue) + { + var p90Bps = uploadBps.Count > 0 ? Percentile(uploadBps, 0.9) : 0.0; + if (liveUploadBpsOverride.HasValue && liveUploadBpsOverride.Value > p90Bps) + p90Bps = liveUploadBpsOverride.Value; + uploadMbps = p90Bps / 1_000_000.0; + } + + double? latencyMs = pings.Count > 0 ? Percentile(pings, 0.5) : null; + double? jitterMs = pings.Count >= 2 ? Jitter(pings) : null; + + var newDownloadSampleMbps = newDownloadSampleBps / 1_000_000.0; + var newUploadSampleMbps = newUploadSampleBps / 1_000_000.0; + + progress.Report(new SpeedTestProgress(phase, downloadMbps, uploadMbps, latencyMs, jitterMs, + newDownloadSampleMbps, newUploadSampleMbps)); + } + + #region Measurement primitives + + private async Task FetchMetaAsync(CancellationToken cancellationToken) + { + using var response = await _client.GetAsync($"{BaseUrl}/meta", cancellationToken) + .ConfigureAwait(false); + response.EnsureSuccessStatusCode(); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + return JsonConvert.DeserializeObject(json); + } + + private async Task MeasureLatencyAsync(List pings, CancellationToken cancellationToken) + { + var sw = Stopwatch.StartNew(); + using var request = new HttpRequestMessage(HttpMethod.Get, $"{BaseUrl}/__down?bytes=0"); + using var response = await _client + .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken) + .ConfigureAwait(false); + sw.Stop(); + var ttfb = sw.Elapsed.TotalMilliseconds; + await response.Content.CopyToAsync(Stream.Null, cancellationToken).ConfigureAwait(false); + + var serverTime = ParseServerTiming(response) ?? DefaultEstimatedServerTimeMs; + var ping = ttfb - serverTime; + if (ping < 0) ping = 0; + pings.Add(ping); + } + + private async Task<(double Bps, double DurationMs)> MeasureDownloadAsync(int bytes, + CancellationToken cancellationToken, Action onLiveBps) + { + var sw1 = Stopwatch.StartNew(); + using var request = new HttpRequestMessage(HttpMethod.Get, $"{BaseUrl}/__down?bytes={bytes}"); + using var response = await _client + .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken) + .ConfigureAwait(false); + sw1.Stop(); + var ttfb = sw1.Elapsed.TotalMilliseconds; + var serverTime = ParseServerTiming(response) ?? DefaultEstimatedServerTimeMs; + var ping = ttfb - serverTime; + if (ping < 0) ping = 0; + + var sw2 = Stopwatch.StartNew(); + long bodyBytes; + double lastProgressMs = 0; + long lastProgressBytes = 0; + await using (var stream = await response.Content + .ReadAsStreamAsync(cancellationToken).ConfigureAwait(false)) + { + var buffer = new byte[81920]; + long total = 0; + int read; + while ((read = await stream.ReadAsync(buffer, cancellationToken) + .ConfigureAwait(false)) > 0) + { + total += read; + var elapsedMs = sw2.Elapsed.TotalMilliseconds; + if (onLiveBps != null && elapsedMs - lastProgressMs >= LiveProgressIntervalMs + && elapsedMs > 0) + { + // Instantaneous throughput over the last interval (delta-based) + var deltaBytes = total - lastProgressBytes; + var deltaMs = elapsedMs - lastProgressMs; + var liveBps = 8.0 * deltaBytes / (deltaMs / 1000.0); + onLiveBps(liveBps); + lastProgressMs = elapsedMs; + lastProgressBytes = total; + } + } + bodyBytes = total; + } + sw2.Stop(); + var bodyMs = sw2.Elapsed.TotalMilliseconds; + var contentLength = response.Content.Headers.ContentLength ?? bodyBytes; + + var downloadDurationMs = ping + bodyMs; + if (downloadDurationMs <= 0) + return (0.0, downloadDurationMs); + + var bps = 8.0 * contentLength / (downloadDurationMs / 1000.0); + return (bps, downloadDurationMs); + } + + private async Task<(double Bps, double DurationMs)> MeasureUploadAsync(int bytes, + CancellationToken cancellationToken) + { + var payload = new byte[bytes]; + using var request = new HttpRequestMessage(HttpMethod.Post, $"{BaseUrl}/__up"); + using var content = new ByteArrayContent(payload); + content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + request.Content = content; + + var sw = Stopwatch.StartNew(); + using var response = await _client + .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken) + .ConfigureAwait(false); + sw.Stop(); + var ttfb = sw.Elapsed.TotalMilliseconds; + await response.Content.CopyToAsync(Stream.Null, cancellationToken).ConfigureAwait(false); + + var uploadDurationMs = ttfb; + if (uploadDurationMs <= 0) + return (0.0, uploadDurationMs); + + var bps = 8.0 * bytes * EstimatedHeaderFraction / (uploadDurationMs / 1000.0); + return (bps, uploadDurationMs); + } + + #endregion + + #region Helpers + + private static double? ParseServerTiming(HttpResponseMessage response) + { + if (!response.Headers.TryGetValues("server-timing", out var values)) + return null; + foreach (var value in values) + { + var match = ServerTimingRegex.Match(value); + if (match.Success && double.TryParse(match.Groups[1].Value, + System.Globalization.NumberStyles.Float, + System.Globalization.CultureInfo.InvariantCulture, out var dur)) + return dur; + } + return null; + } + + private static double Percentile(List values, double p) + { + if (values == null || values.Count == 0) + return 0.0; + var sorted = values.OrderBy(v => v).ToList(); + if (sorted.Count == 1) + return sorted[0]; + var rank = p * (sorted.Count - 1); + var lower = (int)Math.Floor(rank); + var upper = (int)Math.Ceiling(rank); + if (lower == upper) + return sorted[lower]; + var weight = rank - lower; + return sorted[lower] * (1 - weight) + sorted[upper] * weight; + } + + private static double Jitter(List pings) + { + if (pings == null || pings.Count < 2) + return 0.0; + double sum = 0; + for (var i = 1; i < pings.Count; i++) + sum += Math.Abs(pings[i] - pings[i - 1]); + return sum / (pings.Count - 1); + } + + #endregion + + public void Dispose() + { + _client?.Dispose(); + GC.SuppressFinalize(this); + } +} diff --git a/Source/NETworkManager/NETworkManager.csproj b/Source/NETworkManager/NETworkManager.csproj index eb835a62da..817363ce92 100644 --- a/Source/NETworkManager/NETworkManager.csproj +++ b/Source/NETworkManager/NETworkManager.csproj @@ -61,6 +61,7 @@ + diff --git a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs new file mode 100644 index 0000000000..40a1629ab8 --- /dev/null +++ b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs @@ -0,0 +1,324 @@ +using System; +using System.Collections.ObjectModel; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Input; +using LiveChartsCore; +using LiveChartsCore.Drawing; +using LiveChartsCore.Kernel.Sketches; +using LiveChartsCore.SkiaSharpView; +using LiveChartsCore.SkiaSharpView.Painting; +using log4net; +using NETworkManager.Localization.Resources; +using NETworkManager.Models.Cloudflare; +using NETworkManager.Utilities; +using SkiaSharp; + +namespace NETworkManager.ViewModels; + +/// +/// View model for the Cloudflare speed test widget. Exposes live values for +/// the metric tiles plus per-sample history for the download/upload sparkline +/// charts (LiveCharts2). +/// +public class SpeedTestWidgetViewModel : ViewModelBase +{ + private static readonly ILog Log = LogManager.GetLogger(typeof(SpeedTestWidgetViewModel)); + + private CancellationTokenSource _cts; + + public bool IsRunning + { + get; + set + { + if (value == field) + return; + + field = value; + OnPropertyChanged(); + } + } + + /// + /// True until the user accepts the privacy disclaimer for the current + /// VM lifetime. Not persisted — the disclaimer is shown on every app + /// start by design. + /// + public bool ShowDisclaimer + { + get; + set + { + if (value == field) + return; + + field = value; + OnPropertyChanged(); + } + } = true; + + public SpeedTestResult Result + { + get; + private set + { + if (value == field) + return; + + field = value; + OnPropertyChanged(); + OnPropertyChanged(nameof(HasResult)); + } + } + + public bool HasResult => Result != null; + + public string StatusMessage + { + get; + private set + { + if (value == field) + return; + + field = value; + OnPropertyChanged(); + } + } + + public double? CurrentDownloadMbps + { + get; + private set + { + if (Nullable.Equals(value, field)) + return; + + field = value; + OnPropertyChanged(); + } + } + + public double? CurrentUploadMbps + { + get; + private set + { + if (Nullable.Equals(value, field)) + return; + + field = value; + OnPropertyChanged(); + } + } + + public double? CurrentLatencyMs + { + get; + private set + { + if (Nullable.Equals(value, field)) + return; + + field = value; + OnPropertyChanged(); + } + } + + public double? CurrentJitterMs + { + get; + private set + { + if (Nullable.Equals(value, field)) + return; + + field = value; + OnPropertyChanged(); + } + } + + /// Download samples (Mbps), one per completed HTTP request. + private ObservableCollection DownloadSamples { get; } = []; + + /// Upload samples (Mbps), one per completed HTTP request. + private ObservableCollection UploadSamples { get; } = []; + + /// LiveCharts2 series for the download sparkline. + public ISeries[] DownloadSeries { get; } + + /// LiveCharts2 series for the upload sparkline. + public ISeries[] UploadSeries { get; } + + /// Hidden X-axes for the download sparkline (anchored at 0 so the first sample sits at the left edge). + public ICartesianAxis[] DownloadXAxes { get; } = [new Axis { IsVisible = false, MinLimit = 0, MinStep = 1 }]; + + /// Hidden Y-axes for the download sparkline. + public ICartesianAxis[] DownloadYAxes { get; } = [new Axis { IsVisible = false, MinLimit = 0 }]; + + /// Hidden X-axes for the upload sparkline. + public ICartesianAxis[] UploadXAxes { get; } = [new Axis { IsVisible = false, MinLimit = 0, MinStep = 1 }]; + + /// Hidden Y-axes for the upload sparkline. + public ICartesianAxis[] UploadYAxes { get; } = [new Axis { IsVisible = false, MinLimit = 0 }]; + + private ICommand _runCommand; + public ICommand RunCommand => _runCommand ??= new RelayCommand(_ => RunAction()); + + private ICommand _acceptDisclaimerCommand; + public ICommand AcceptDisclaimerCommand => _acceptDisclaimerCommand ??= new RelayCommand(_ => AcceptDisclaimerAction()); + + public SpeedTestWidgetViewModel() + { + var downloadColor = SKColor.Parse("#1ba1e2"); + DownloadSeries = + [ + new LineSeries + { + Values = DownloadSamples, + GeometrySize = 3, + LineSmoothness = 0.3, + DataPadding = new LvcPoint(0, 0), + Stroke = new SolidColorPaint(downloadColor) { StrokeThickness = 1.5f }, + Fill = new SolidColorPaint(downloadColor.WithAlpha(0x33)), + GeometryStroke = new SolidColorPaint(downloadColor) { StrokeThickness = 1.5f }, + GeometryFill = new SolidColorPaint(downloadColor), + YToolTipLabelFormatter = point => $"{point.Model:F1} Mbps" + } + ]; + + var uploadColor = SKColor.Parse("#7fba00"); + UploadSeries = + [ + new LineSeries + { + Values = UploadSamples, + GeometrySize = 3, + LineSmoothness = 0.3, + DataPadding = new LvcPoint(0, 0), + Stroke = new SolidColorPaint(uploadColor) { StrokeThickness = 1.5f }, + Fill = new SolidColorPaint(uploadColor.WithAlpha(0x33)), + GeometryStroke = new SolidColorPaint(uploadColor) { StrokeThickness = 1.5f }, + GeometryFill = new SolidColorPaint(uploadColor), + YToolTipLabelFormatter = point => $"{point.Model:F1} Mbps" + } + ]; + } + + private void RunAction() + { + if (IsRunning) + { + _cts?.Cancel(); + return; + } + + if (ShowDisclaimer) + return; + + RunAsync().ConfigureAwait(false); + } + + private void AcceptDisclaimerAction() + { + ShowDisclaimer = false; + RunAsync().ConfigureAwait(false); + } + + private async Task RunAsync() + { + if (IsRunning) + return; + + IsRunning = true; + Result = null; + CurrentDownloadMbps = null; + CurrentUploadMbps = null; + CurrentLatencyMs = null; + CurrentJitterMs = null; + DownloadSamples.Clear(); + UploadSamples.Clear(); + StatusMessage = Strings.FetchingMetadataDots; + + _cts?.Dispose(); + _cts = new CancellationTokenSource(); + + using var service = new SpeedTestService(); + var progress = new Progress(p => + { + StatusMessage = p.Phase switch + { + SpeedTestPhase.FetchingMetadata => Strings.FetchingMetadataDots, + SpeedTestPhase.MeasuringLatency => Strings.MeasuringLatencyDots, + SpeedTestPhase.MeasuringDownload => Strings.MeasuringDownloadSpeedDots, + SpeedTestPhase.MeasuringUpload => Strings.MeasuringUploadSpeedDots, + _ => string.Empty + }; + + if (p.DownloadMbps.HasValue) + CurrentDownloadMbps = p.DownloadMbps; + if (p.UploadMbps.HasValue) + CurrentUploadMbps = p.UploadMbps; + if (p.LatencyMs.HasValue) + CurrentLatencyMs = p.LatencyMs; + if (p.JitterMs.HasValue) + CurrentJitterMs = p.JitterMs; + + if (p.NewDownloadSampleMbps.HasValue) + { + if (DownloadSamples.Count == 0) + DownloadSamples.Add(p.NewDownloadSampleMbps.Value); + DownloadSamples.Add(p.NewDownloadSampleMbps.Value); + } + if (p.NewUploadSampleMbps.HasValue) + { + if (UploadSamples.Count == 0) + UploadSamples.Add(p.NewUploadSampleMbps.Value); + UploadSamples.Add(p.NewUploadSampleMbps.Value); + } + + if (p.Meta != null) + { + // Populate Result with metadata-only fields so the UI can + // show ISP / location / server while measurements are still running. + Result = new SpeedTestResult + { + Isp = p.Meta.AsOrganization, + ClientCity = p.Meta.City, + ClientCountry = p.Meta.Country, + ServerCity = p.Meta.Colo?.City, + ServerCountry = p.Meta.Colo?.Cca2, + ServerIata = p.Meta.Colo?.Iata + }; + } + }); + + try + { + var result = await service.RunAsync(progress, _cts.Token); + Result = result; + CurrentDownloadMbps = result.DownloadMbps; + CurrentUploadMbps = result.UploadMbps; + CurrentLatencyMs = result.LatencyMs; + CurrentJitterMs = result.JitterMs; + } + catch (OperationCanceledException) + { + // Partial results remain visible; everything resets at the start of the next run. + } + catch (Exception ex) + { + Log.Error("Speed test failed.", ex); + Result = new SpeedTestResult + { + HasError = true, + ErrorMessage = ex.Message + }; + } + finally + { + IsRunning = false; + } + } +} diff --git a/Source/NETworkManager/Views/DashboardView.xaml b/Source/NETworkManager/Views/DashboardView.xaml index 4cf0b44586..b4d0f0a276 100644 --- a/Source/NETworkManager/Views/DashboardView.xaml +++ b/Source/NETworkManager/Views/DashboardView.xaml @@ -23,13 +23,17 @@ + + - + - + diff --git a/Source/NETworkManager/Views/DashboardView.xaml.cs b/Source/NETworkManager/Views/DashboardView.xaml.cs index db73e924b1..e36726f392 100644 --- a/Source/NETworkManager/Views/DashboardView.xaml.cs +++ b/Source/NETworkManager/Views/DashboardView.xaml.cs @@ -9,6 +9,7 @@ public partial class DashboardView private readonly NetworkConnectionWidgetView _networkConnectionWidgetView = new(); private readonly IPApiIPGeolocationWidgetView _ipApiIPGeolocationWidgetView = new(); private readonly IPApiDNSResolverWidgetView _ipApiDNSResolverWidgetView = new(); + private readonly SpeedTestWidgetView _speedTestWidgetView = new(); public DashboardView() @@ -20,6 +21,7 @@ public DashboardView() ContentControlNetworkConnection.Content = _networkConnectionWidgetView; ContentControlIPApiIPGeolocation.Content = _ipApiIPGeolocationWidgetView; ContentControlIPApiDNSResolver.Content = _ipApiDNSResolverWidgetView; + ContentControlSpeedTest.Content = _speedTestWidgetView; // Check all widgets Check(); diff --git a/Source/NETworkManager/Views/IPApiDNSResolverWidgetView.xaml b/Source/NETworkManager/Views/IPApiDNSResolverWidgetView.xaml index 07a8e688a3..7c832ac7e3 100644 --- a/Source/NETworkManager/Views/IPApiDNSResolverWidgetView.xaml +++ b/Source/NETworkManager/Views/IPApiDNSResolverWidgetView.xaml @@ -34,8 +34,7 @@ - - + diff --git a/Source/NETworkManager/Views/IPApiIPGeolocationWidgetView.xaml b/Source/NETworkManager/Views/IPApiIPGeolocationWidgetView.xaml index 45b4d7dcca..86173f75d7 100644 --- a/Source/NETworkManager/Views/IPApiIPGeolocationWidgetView.xaml +++ b/Source/NETworkManager/Views/IPApiIPGeolocationWidgetView.xaml @@ -38,7 +38,6 @@ - @@ -71,7 +70,7 @@ - + diff --git a/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml b/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml index 6414ee6ca2..0b432ddee9 100644 --- a/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml +++ b/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml @@ -20,16 +20,14 @@ - - - - - + + + - + - - + @@ -157,7 +153,7 @@ - + @@ -168,8 +164,7 @@ - - + diff --git a/Source/NETworkManager/Views/PingMonitorHostView.xaml b/Source/NETworkManager/Views/PingMonitorHostView.xaml index d8faf328a4..d56270c4bd 100644 --- a/Source/NETworkManager/Views/PingMonitorHostView.xaml +++ b/Source/NETworkManager/Views/PingMonitorHostView.xaml @@ -216,16 +216,13 @@ Visual="{iconPacks:Material Kind=WindowClose}" /> - diff --git a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml new file mode 100644 index 0000000000..1e5a0919f9 --- /dev/null +++ b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + @@ -201,7 +240,7 @@ - @@ -220,10 +259,10 @@ - - + - - - - - - - - From a43a1bfad9ee6c85fbb993f933e58c612e3608db Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 00:50:53 +0200 Subject: [PATCH 03/18] Feature: Speedtest --- Source/GlobalAssemblyInfo.cs | 4 ++-- Website/docs/img/dashboard.png | Bin 117254 -> 139569 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/GlobalAssemblyInfo.cs b/Source/GlobalAssemblyInfo.cs index 62b4c6e76a..ce0c39e606 100644 --- a/Source/GlobalAssemblyInfo.cs +++ b/Source/GlobalAssemblyInfo.cs @@ -6,5 +6,5 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2026.5.17.0")] -[assembly: AssemblyFileVersion("2026.5.17.0")] +[assembly: AssemblyVersion("2026.5.24.0")] +[assembly: AssemblyFileVersion("2026.5.24.0")] diff --git a/Website/docs/img/dashboard.png b/Website/docs/img/dashboard.png index d0bb40dbffa88c1314dcd894fa61afe80b835d57..e6f6a99dfc03490f6d79ce65da069283cfcf6b00 100644 GIT binary patch literal 139569 zcmbSy1yoc~7w#wuC?H6usI+vKgd!y+-Jnv^&CrN|NC?u>(kV#CFd!g9ch}GzLwCG` z{{MSxz4g{xZ@sfnhI{Xvdt#q`_Wr)_1iev|#<@>^9|D2k$jZD@fk5v3fONtsgI~8CRis}+ih3y5z#n(aUMRePKuW@~F5cY*f8Vo{(RPGD9yHzjyG6wK`XdB# zohAF~g_^6u=B3+PwG}V+D>1V~vL`_i-~6@igyLcTdGD)DGd;AtR5^&|?a- zp4b@Kg4;|b+IqvE&{ZA&OymoR;!%9h;DTkaK=;u)6sPgF)$g}hf1W;A}!cIKoFOd*n1HqvU+6toZ&4vw)(R&@=Hk>O#t z(VGhg@E3mQZX~xj5TusY)`x7jKO%|m2N~nR|pCRq6e{3^hbb5MPHSIDPK_l(5J+-FIYtj)-VN?CCGnN$x2PZ{+ zn!|dc{NmywLpq#Ix3UYy7KAH$^0qfc1erCBk9lWeauO~_w&6*nr~5MPn~I8x!`c8H ziX61-V||W!0#v!Kw6rt;i-eej#LUFR#MJZw1)o*dcg_fz#f#H@q{7_UK-ObuGYme$Z7(+;G}ab%+slLoro?l+d#SCht*EHjx>{j3*YxSrCmC85 zLqnAIFi!Jl915NfeJvp*a&mI;jmX^MVll6?a;Ukcv55(*UNv|;z;U^&X6`e^XIyIJ z)J>6>b#44~cYmd~I5+n@pY_DfTyt--aGa-u}&_VwVSl(=e!XMt`+e?NSFu6Q>bk$^!)t2naZU zst%TeMg|cu=)}gv#Z?)%M_ycbruMdys;cwy^Fs$RWm#ESPwsYCVEwfS71%M-BS$G! z)VS>%jdYmn=%M_Iuif5ayHRV{A)AT3a&%`Ld#aFg2kdqc&DxzNFsHEXTFbU?Pmn~r z4h{~8uN2Uu&2c+{P5n{UZ1WTW`={hzk)HeAzT$7eb=4fj?#|9cZnK`AWMSym#4xk@ z4rnmwq^?a39W!%hnO7GgNvugUq#YNYKywT9$ z;R5EmPGBED*m?N)xDYq5ZKZjc-!bAM+7Z7eFjSw2y0qd&iZ1ahw&N#8F zlLddGu-MpG5s#xJVW?v4l4J<+>7_S{Sj6t^VC^l3fLTuxXw19j&kBir);qI}@EAc^ zT73JfQI1f8WD9ficcIFsMIK-wL`6j{=qJ2ZRO}hbQ-#aTO+>tZ6CY_3-eq$!zCS6< zVj!~nd*7Baja5Uz`Er(Wvh?V53mH(PjtrPqFLCGfKzdZu#>qX?5POur(Zak+u`LZX zpQ%lS&t1@uR3I*CqfmGarOiT8y~d5CyOK?;^L(;5n(enCM&ettqiLLG&(+=^dES0XFl< zXF_!w9$59K!Im#x9$z?g9-E>MP6;gE+&uIgb@6p&!ib5#86!c*RkOXVs+m|?b6^7z zGPINrbYo)@6B8pMl=bz0Zq%B|p?qsiz*6L&c2YGkNHIG--CwD)o*ZGO!W8lA0E4_8 zKw_|CGgoRgURq+*dSv`2K89KI0k!B9j0Y!2F^&Ba<=;b1kf(Lo_KoUZ#!Fl}EdK&2DkVZo#(4j8 z5BeYvJ-W_E+Ptpp4fDan;cPaz@vlOEE&d(9AEF)p z$rw$*QdsqChhWj1h%w**9z1%!sz1S`Bz3;c?6HlN)#3Jci1udUU3$gbH8bahw5!57 ze>*?IEGsK(*o!HCgM|QN<+;;{fn?Ro28QEv<$1P$cDMnX9&-gl^Y!c3gD5fJ5$_Su zV?TO6HvPLaD=RB6Z*8o^2(0%X)F@zYR3h#?+l>0k8X9~Ki*4)c>*w1rrP0IYKwOV1 zJ2K$LfWuN(CrXA>JaV1&wNb+)Gm162JZTj>VuKqvMOFxD4@={xaLzUH1iVZeQjiL_ zoe-{e&<=vyixG(uKjIaBp*s*fp3&5b&qKRvRw;&hEia86D-XwEdKX#}X|iM$Qf6_! zuiKPCAL~?!W<=NdOq$AYRCdfLl#{sLa|G75)kd*hU441VI@c(%!1tD})3l7rgP`)O zjC()WK5#57Eb>7qD$2&q11_??r{~CKXcF`TKMdCm*iMRP8~wFwZ#in~Jva455j0>D z=d^L>RH;sGZaq=JK7BBibqPg3H9ff+M?PH!+!O}2=T3^pcD$&UJ1xH3<>6?m+j4yB z#Uew)^(89R=jt@|a?`BgY`ECKZ7HVAtXDBr^s+}7bulqoUkSe6 z@KP_esyInE9;XQx)?@go1+V?2UU*v_(2X4@& z@OD)QT-}}zU#wv@Q@4tXG%1LS=}V|yVBm7HdvozbZzasdjGfz-%cu*E#vCv3td3t@ zkgd|q{q<+p%3>}3b{AS8g%C|x=0V3sU{e}} z@(=ZQAGJL6kaX%tiOzgEmSy2abZj#ftX*^ZZg6-^kdJY!e)M=S~$ z#>i8)kh_&Nsrwxl5sm1xLFw||p3Jc9k{I$y>?|Dbph zt??NIMLS|#{FcI_4GmTb?O$gQ6|7BJjuz>|0$A~s!>T$K`ARyp!s~!b&=g|O)+KSs zYEX_Tr&m9355~)o*W~hV(cBB;`RtcYxH`Z2dr*tz5B>S_lDvM*d#t#~Air=}icx#1 z^h@V<)RXBDbjU|b8CBK6SXN!ew3wKfX}e||B&&O3(ZX04vuGrJDu{>^F%XRcPTS0fHTXReV zx=ekB1Tjmt!a1_YZgu2jHm*wy$-U(PYbxB%G9T>w09=*#`Q%Lf#a?Gm9DBpX-p#yL zvknko@6D+2^YKkoZs|`qf{1AqSA;2pmzUS;WG=AbwA=QBil}xh2JWMzxVX6Fza=h? z-*xA0j?HNockhi4>v4m%isWMNo?n&;+c6+gu%Aijv%%$5OIQl3&g5(1LrkaR0M8F$-}-{JWl zqPOx-hnL_SoQhmrqfn6}p*@2CC|H79s#}ts`pe{E8%2phIB-iIEU~H%O&-b3RBlGa zgKhS(f`<7cs&m)8g7+?Z1zj|@Ruip>S+OiwEzaK^bA}!Z*E5-i;)Bif$~CvB8Ha(S zL8ATJ4}u@UuPj@SRwUovSb|J>K*r5tZdFHP*3c|f(61JSK&llcZYT%6hR=d zJy{k0Ipm;dgJ=fMNr*hOd^C2oI|>^+5f)yAYu3BrqHIoX7GUFrC~os;76^r|CmSv) zh7W+B^WKX}b+WC!%>d0hmH2KK+f;P_&h6++A;qq~{$KB!OUueU#th1h0{T$Ly=!kl zXwic%l848~%eysE(Fx;;0nXD#$*Di+Txe;U-2L%1SRxVp-m%r(?_8;ibAKLcpq__O z3iJ@Xll(GlJ!8;nl=wkMz==cn5%tu30-3>{6O^KCcDFT3Ew>U?O&MJAf)(0fYEyEQ zRFeP5sCAxP5aGCP{eG$|_)VWx~cD36|ece5Cp-{zOZuj1J zMO9k}M6zqR_dK$)n^DI;8@e;@z!Jd*@B&r)N~1{cbk+~odx2tRRRG`I=cr$r+Iel1 zt-HJX{Ag>REkIPNqA~399*p5qd<-l3p5)U)%#zwI#g=bAF_HXIRFhRGl~VdI(hu~O z@791VaH^Y#4tp!#Go(&+{))cg1F$OM z!+!CMWKuq>F@5OtVV?x9*X4$xVafZJU?S#vuw{u}>@A!Tu_12(b2Ir)c(>zEMl%X zP?)#eh9`&?WI{iyknZPORf9>@?>9z%+BRGsQD2|5+Jp}|sE<{`O*&(F8h9BLlTH?> zuUBpQ?`wX9Wql|%ZeqLJ^ax7-++kLLLggv`+Y8OmWO$blwuGS5uN;~LxdjTb$v@BF zO#YN^M(oUn8j-)AYjN4{>^hhD55CKc4tw^}Dumeqhf039J}e_spmn|a87ol%^LTdH zIGctp9UX!6Zfm4*-~*3L`?#P=Mi9W}78w~zYpM?Z9dX#wSeDmDo!3)%93Jdu=+O1& zco<~|>fH9hHlwbmM~Qi7s^G%=I#)Sk8|*e||R)jS@ zy7q%T{X1~A$5Vm^7jpYi`*S}&7@SRO&Myo4*E?NZxUKX8Z>@OiS4Lf3o$z*bv-$gp zti8BaFoqy>#-$R9=DIEUG{Wors2{QBWWTAYm@HHQvYzOyp(qBW?Xi-KNk>=lW2a62 zv3>cm7V$P=f}(^8PT|a@Hs4M^vp}}}JFbhrml|W16uoxZC_I`~r-|A?Lcp^6ePt?) zw%30WN=dD*O~!ven1&Q91&ooj+Xy`uB8U&ftW3Bn0XJVVTIl3JJkt=yk$@MF7HGw; zK3k|k4+w%T{@$Ivy=(kBR$Xz4<_rDw6K`CN5_k31m*z?Sx~@_YYw5;+!-gd0By=(( zEMk`GT?7T4>|T)_6EibxEjzJJPI$?NIN|!iS0ah4-4xVT2VAM}AdIMk)MF_TH571y z?vw1JtcGcLy4QZcX)UhthP9ILu9E*NYMs}1W0UPTa~g= z^nwjE-)PMz%FRPa*z2#a&Xd`EB4mt@x2Nqf*6%mWh?x&$(#geUZdR`zpU1IibAi93 zb&r$)C;%dT8#%cUXuyw+v(&4DoX?-pQNbJ0PV?E27~$4n+s7Xr+ogT4uvyBsrCSxGjwljx$vrV@DGnBiqYaOybC0zTf4rTr zwwR2XouH{K2X6$)1xeXNYf&$Z`fmbf&o4gT08cuHZEkjrI#u7;>rq##m=EZ`8iDIp z#b|E7J^*Htp-AmFZ)T@;IItI@ltjlXtrMXEa!pV8>6KFIKJ=&e3_dQgKA(opfW%!1 z&OAF2=TP|>U<3f_*#htZwfD&!{1}-SAMds{khPNH(UaE(@E*k^fquB061}xq=rn*i zj1ZwgubzTb-K9$PXMX9XBzv@; z-Fr90&CP8a#4;58HdB#wa&?J_kXKK|u1|a6a{Bn_O#lU8zGVAE!lrjJjq+a6zdu?Z z?fWJ&6QnV=f4)5QIccWuNfDvIMh8H~7!tW{#o=*e1(n&qfIyoS_@@cKN{O8=5;Sw% zxJOe{(*Xyi$2`~zAof(C#g7+qw%{P0Dm9UtQm&m}M}N8AD(tu{e>~GVF);y}eAx0U z-A>*A<&&(;%*BB$9)ygqlYEk(YSFkeBOgB_1oGQ?7G&vhZ2A+m&IRYqP6CuRHa4Q5 z0TK=%LCqwaj9eSL$AO2brlyuD7MEZ>2@L-8J6Fx$yllyfE+;#44{4<26ZsU>)jLb4 z9Mk(K4H8~??NLYS^+_BmN&4kGrzkWCWHmC( zx36*wq_~-4gwh@!=hD<(Ls9M3X+E#H8?c+N@ABo z`x~JK_5geV&=Ag}=K_=ukrE@V>L##655olxoq(csGbI1cLnr)Bo=W2pZw-o9_TqfDBV( z#M}#bdASw&?^Y2vsT%sr7-v$OFEP^A|_@@8xsUkOSwdGSMzC(GiT_Rjz@F0$=7>u*0R7vapRO7`92qk1F&B7Y8&*I4Kqsjc0fkV!pQg|;O^bK{U3PP*-_gt)FTo1aws*x zB@2GXk{{vd9K(|2jM&&+y1gL{S@5e7+liP)s+r^ zBw~wvZVVn><$pTyIobCUleGk#8GI9+>)-m5L$;U;*w6dZ%4SG??da{L29PR1g>-dw zm6C*OKoc{+j$kObfUU+xD1~lkNKDkQ1(uQ9!sO?Q zyX6#3a?AYP3H?Gw2`Q8F#n#cJM)H-2nIBae1uf9eBwj^sBcUT?gHM}@47ZrZ(+T8` z#!lnnW=44S5#aJA|tu+&ZRHq)erk7)o-X=%F>m)Ab)% ztB>dFw0~x3EjJFzlV`Hmt_=Ki)HR(N6S_qAk}1e0Cj04uhSQ?}4ASWZz;KSy(yS*B z4-bRWox1!#zYC=lT%RN_qDu`X5-AtwDwN3-M1W{6z#Zh zJ^oQflgKPFQ7;tVj`#_!;=8tQ>zw2gLngcJ)EQTFC?oa|RbkZDCt)THC#EAs)A2Bh z&GD*A=JQK4mizu&8HjiiByRmxPFFb8Y`aMLHHksOTU;SmsrOwecG3$gTwF7r<~t+d zphl6^va&+Y{-ypn?l6P*p(XbFI`@@K8)~0ej&65_iyeMVf(j0OS03&9ZuONtjdJIWk;+QGa;m$KkKTXq^)b6?{0yd7h0Xdj2l8+) zP2ce(a?(@OD^R!#U*KTz|c*ekQ|(NRsP5(UkIjok=YH}Cjli-Ai4>SwZV z-Mt7a#A5%?GC#koozISJ#3Bnmmo(Nxg-2EhQlmhAGusn?>R8E`Er!gd_XgU=@eg6% zZ*Yj%$SAxV2WK+`eV+g6ZAxE{RUotWz9ND^#H$V%@wgE3gEyO!mzRjbD^BRPo=!bT zA^;N4jbJ2jhXSWqJz&f{*lYE$D-+vsy>8iK8+I}~+Uv7*mHotewK@VWRg$d#MNh!r#YMmQf|xgY!)M0qvqE%BV;p@$3loMzbh=igOd5q z(1-nQA?(F^UUL+NBG)al5#rgH{#{Vh27y8=MaJl!p+A?Fll6uAR?h5TZLa30pudz< zCT7tR=lu;5H(arcZ?U}q-vypGwB+pU?5A$kf17OdYgyRi6DQ&#ixs!fg3ap4cKZAN zhT)Rf{^l%J`Bzq-6BT5jwRLB``@7-vuo4dI$^ldD_)rrImrU*5B9q7-7BQpHaROp~ z?{`K04zwHL8+%v#{HG1$sAs1Yxr+J`va#81tSj%C!HRd62)~_1E4#nkU67mmHk3-h z?k(^=Ac}Y!+Wno=2wCSwMn)Emp67kzHhGtNEINgV#yUx(x)aSLH?HtJJ;Gh;wcm%f zOLTuMOJ=3Ie0;KDh;uq-Q)A{V$GA;uzE7qd>kwN)tgqsw*wXvXQa+4>KKw&+a^mi~ zoSzGIY$6VVl!BZYm&=r!`^c=l(wdr=+c{$4eiRrp{ozY-#?C#!$0YMq1Cs!W5 zZWjSu;@#V~GGBmUWzW1gnv~00fA&?mLLp{Se@kE=Azh|N!HxLNN;RION@dQj!0_<( zSznMnH|27VMX$h$aL-u0kl|Z3+EI8I=XIt`58X^osH~qA@3U66S6p&|>-LF4EQf#S z9LN4tTQP-)E}K-7fYvyv^P_>00yz8Nis-Q*Vyw{*0|4#Iihj8`w;|#UY1#`bfz)*c zTT>W*&^Je=(Q-e}z6(CrGl}KZTxR@w5MV_dKG(0<5xR^~?#S@RUdRYH8Tp($6(#V& zYJ;k!qu!d_sOx!B4f}xSXsOnQDsZjBITWofCpd^gEDOtDUTjN}?J4Dp4vLlo%I}YC zdv|8~)SmP_#R+DsVR~QX#(xt8+|L7HY*A4UOdtjfQvVxH05wh3I&aiCu83 z)&N9zxPxyQ3D*&ST|VNwj{VwPo_n;8?(0yp*9*H{V%Gbq_|48-h|Idx$Vv8aN@H%- z2dQ1ii~5S4{pGM3(-Ee#pQ*UvRL0y07Kws$)tzJsd?TxiNUWumy%AI})sxCs{c+wk zhx6z@jn>@(-ihOp$jA~)qh;@$9R}^CD*Y5uol#PwO5<{jBkQgyy3e%T?6&onh)VhR z_}Y1)x0uQssr*k!%1oVvk$CY#84W}N}|EB;2R zB5N=`1Aua^CBw9ZAC733nd$?o@N^~B*2X3~fPg_!uin!QfUWzzVoJ&PU>N`5UVjt= zsNP0V-cVQ9GGSR5Rkx7&0x<@5O2CW499Mc$GGEBcEAv0@cwLTvI;i%SkP(p z4esFMztumm7f=y8Bbc`V81}z9(IMcky-O3hq+;polN|ev;?Hjw z)igChQ2*}%I0NDRw000zgYp{^AP&|hC>-KX{%>K||KnqHAk(RDunO8gT&2F|vAG<^ zyB`4jRh^tZV1}U&|Gw$>VZr{FA(6B=*$$pqF(t0*|IwP&fa+QG|Ac|fg;knx$$N?D?5_sGXR)J0dxFM;hfYF?v#()&ruhISh z(MNA20wL9lAD)y%`QIfVnc;IWSgoL^(?Rb}!bvQkVSC32CxS&w?)uYR8-U!d5qrr4dHX$nWeC;vj<-fPIn!x0l2jH(YP51yen8bVGkfh z3ZSuJ&B2d^oZ8C%(16V637!Eb6N+yMJ-M^H8@>=GeBs>yl?-32y#nEX5=awaw;>-n z5#O`Tfo}nt10Ew5@~?b6JmA*Z-co0!wOk|*cqw2ZiHL~I6A+}rfUyGt0+O#%aOqng zeHrjDLH29iNfM$V@*ofhKA`JEc>n|BLI4I?Ls{8=cfJK6yuBWeA*3==U&)>KyZMEk#rD92P>Oj^ z!Tk#j;1j6hs)`Eu<pU5cBQqcl7lh-;eLVMz7l0#ltP5hz5|Qd=u@;c{;_Ay)DBy20Z= zPXH53#&45kJqbp220%+AKXs3RoWs!2cJip&egV*4DWRd*gFF%F zx6n&NLqh?S^>g8b6F9x`->wbk(*;7VcFME4?WZb5GsS1O7Ag=&+LS_UAw2iR_useYbclH@rbgf`ry_mi`4N#U7 zAdc_^%PM6F!qJBf22Rw^doYQ>sN9&Jy>G{sNkP$9A0fV9f0i@R| zcBMRecyx3`CG0|r9S?MA_7nFkBy1Cw>%GqFHr(F=0~+e^0sTfg-!l)0vZ-0vrinUmo>{{b*;UVW$7=%gI3e~I9lbGJ+)kTJR=eDo7kr53q8<+%~fS01FO6tQC6FMjx zDnO!S)>)4}v86$WR9g(lic=*9qD{KV&2=~>Nkbj zTaB90u+-IaV;jvZsxni^r)O&$J(5`DI zO@efFaSHJNM_^e!#`_M?!b0t`4=e|Tg@pjTDvy$pl~PEK@BgOw7+c-j$bN2HNy#^c^W(%UuoaTl z_4{!ykIjF7R8dp=Lt60jrfdzMiUV;dDm_p4zyS8+WdOel)K-*S#$U>O(;2tfJ>>g& zP>*vpA);xJgQpkPwfBQ<;>DJyj&O!AbBQq_qrYam`H2kUP|*`K| z^Z&FvizGT`Nx7~83!*E5*IBQ~tMbYTi2g7z|8TP#x&dxIaTA>Au&;ta5j?e zRxnTO&st)Ah3ri8KxvoSH7XE+#gxP)FX~qA`(U^vP#lo)+if!y*MAC$d@4#E4!(6= zM3R*)cQH|Tn)dd~g_>uqOvCniI!=ikO}i6BOT?kIn`(syBI{oS-3~kGsyuD*XGkFf z53$j~F1*$Y{LHpgRR25v89o4Xe3nQ?v^xtpQaY%eit@F_&3h=h8g@C+XU}R zcW|;XeKBR|9IIJ>f?Vn(M)H{T6l$x6c&%8jHxo1KUaiR8w-gnmuceJ;z25J5;&GHZ zYd!WEm`BTMhR4QJ7NgDXP87`OU5f${5m0ZD#5)f&Op-F|T>NAY6+Yj6cwEry(dH^y zHAO5`W^dV4L6uN;w^NLNINv4KI27*Ik`E)+=mPF=q;O4D%0w@}pureOKMPLgY52?O zJ$LE6$#>c7J?luL(77qGh+%Yb|?eU zD_Tn1pi%#>MI?rQX3?A1{$6(#k ziy=^_fA|Jjw+6{?QDiOQdjEIj=oFAyR7pVJ2KEhP*6x&#vXsK*)XDtR&JoGA$3i8TMkSrr8D+t0>qZa>_&-jeh!9n-V z8p}`#X}dq8sDcc1cT?X$&_DeR9-n~N5l0z5ICE%TW&=;#@*_e1bgr~0@H(zgs-UoC zBEXu!_1TfaaV8qDaMMLzL#^@6T!B5+1#pNWcEdloXn~?IQcH5h*Fj>J-J?$)F{;JB#=bZ&fuA~ z$8l=MBaz0kdrUgzZ&xGY{$K^H9ir+T1q5oIwvAn#4Z6`t^1~xb1XuDY9Hf-e*!>1u za~W{`$&5DJgxTwBbn9>qxT%Mvq(iZ|5KWV~yaDvW#hlsQ32LqmGexw;IMyRW?{XrG zOhR!|TvrSu8m`KQvwos3&rY}MNL>0sE);0s-co~}ojQKmF;do&3aim&uRnUgUQcnV zAmh6Gf|?uK2&fDJPS*HVM-1+VjMe+xHdkY%ASM^f&Ff7B$X`BNk6>9J} zfXd*pY7#CL)pbwqim0;z=~+B(elIqKoNYXzG|-OIa3iEZ+TSCFJnSPe&KtZMRc*zF zziF7+e@Ihz>?-FS;d=g=LLY8%aKoqxY>>OW;AfR}QM6w_={Ye{Pc_GWAUoai+i3lJ z+RDaJZFnYi!-qw}Jx#~`cq2_$f6k9r^fWX^TB9|>``Bb${=~$DgdY-!p$9!}B@H`3 zZJ6)*Epp)cB=P#RZ2-SStMieV(e56*=Ng62)e4Y7NSnWqs`OxZr==a?JYQCQt4J{k z%j^MJ3+W_u(@Iq7BOSqhb0GhaVF!hN6RFWe=0k@|Q8P$lXas+kVdXrQq1WnU`18G= z+B96~O8}*--{?E-kFs5yyu;j4x*@8__f~$z63pG6@2Jl~2KD7?&h_DopJ}URxqNM_ z560TjkWXs!!;`uw*Pn+t(RuGK&9`7^e(7C-0hLBa3^NK4x4k}B`ys@vkxM<^F+OKb z=i+S7p$mc9Mh>rtj3Un$6fT=>-q6%sl04w*6^HM z9s}>~YJ;WaWgxKMybGK1Ib437z(Afb%h<`p$(op@j@e_#7tGVeM=D0$9a)zwW z4#U0w_EWl;+DT}0Nqy@2D^V1B@&s%*>-wTy$@{2`|9!!{$yxamRZ;3|s2375HL{U( z@R+jU`Fkreqrwk*FXS%0D~r>9+HGbY_G0Xu6N5) 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 literal 117254 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 z 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 Date: Sun, 24 May 2026 00:57:23 +0200 Subject: [PATCH 04/18] Docs: #3440 --- .../Resources/Strings.Designer.cs | 21 +++++++++--------- Website/docs/changelog/next-release.md | 22 +++++++++++-------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index e0676f7d7a..10ca5852bf 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -10007,6 +10008,15 @@ public static string RunCommandDotsWithHotKey { } } + /// + /// Looks up a localized string similar to Run speed test. + /// + public static string RunSpeedTest { + get { + return ResourceManager.GetString("RunSpeedTest", resourceCulture); + } + } + /// /// Looks up a localized string similar to Save. /// @@ -10937,16 +10947,7 @@ public static string SpeedTest { return ResourceManager.GetString("SpeedTest", resourceCulture); } } - - /// - /// Looks up a localized string similar to Run speed test. - /// - public static string RunSpeedTest { - get { - return ResourceManager.GetString("RunSpeedTest", resourceCulture); - } - } - + /// /// Looks up a localized string similar to Measure download and upload speeds, latency, and jitter with speed.cloudflare.com. ///Cloudflare may log your IP address and network information. See Cloudflare's privacy policy for details.. diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 5d1f49036a..0094d83d4a 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -32,16 +32,9 @@ Release date: **xx.xx.2025** ## What's new? -**[Neighbor Table](../application/neighbor-table.md)** (formerly ARP Table) - -- IPv6 (NDP) neighbor entries are now shown in addition to IPv4 (ARP). [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) -- New **Interface** and **State** columns (sortable, searchable). [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) -- Add entry dialog now accepts IPv4 and IPv6 addresses. [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) -- View is read-only when not running elevated; modifying the table requires elevated rights. [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) +**Dashboard** -**Firewall** - -- New feature to quickly add, edit, enable, disable and delete NETworkManager-owned firewall rules. Managed rules are prefixed with `NETworkManager_` in the Windows Firewall. (See the [documentation](https://borntoberoot.net/NETworkManager/docs/application/firewall) for more details) [#3383](https://github.com/BornToBeRoot/NETworkManager/pull/3383) +- New **Speed Test** widget to measure download/upload speed, latency, and jitter against [`speed.cloudflare.com`](https://speed.cloudflare.com/). The test is user-initiated and shows download (Mbps), upload (Mbps), latency (ms), jitter (ms), ISP, client location, and Cloudflare PoP. A privacy disclaimer is shown on first use. [#3440](https://github.com/BornToBeRoot/NETworkManager/pull/3440) **PowerShell** @@ -51,6 +44,17 @@ Release date: **xx.xx.2025** - DPI scaling is now applied correctly when NETworkManager is moved to a monitor with a different DPI scaling factor. The embedded PuTTY window now receives an explicit `WM_DPICHANGED` message with the new DPI value packed into `wParam`, since the OS does not forward this message across process boundaries after `SetParent`. [#3352](https://github.com/BornToBeRoot/NETworkManager/pull/3352) +**Firewall** + +- New feature to quickly add, edit, enable, disable and delete NETworkManager-owned firewall rules. Managed rules are prefixed with `NETworkManager_` in the Windows Firewall. (See the [documentation](https://borntoberoot.net/NETworkManager/docs/application/firewall) for more details) [#3383](https://github.com/BornToBeRoot/NETworkManager/pull/3383) + +**[Neighbor Table](../application/neighbor-table.md)** (formerly ARP Table) + +- IPv6 (NDP) neighbor entries are now shown in addition to IPv4 (ARP). [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) +- New **Interface** and **State** columns (sortable, searchable). [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) +- Add entry dialog now accepts IPv4 and IPv6 addresses. [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) +- View is read-only when not running elevated; modifying the table requires elevated rights. [#3403](https://github.com/BornToBeRoot/NETworkManager/pull/3403) + **Profiles** - Profiles can now be imported from **Active Directory**. Search for computers by name using an AD query, select the results, assign a group, and apply connection settings (RDP, SSH, etc.) before importing. [#3368](https://github.com/BornToBeRoot/NETworkManager/pull/3368) From 0ac95b287f06515c3cad0ec6a433f13f3ccbbc99 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 00:58:14 +0200 Subject: [PATCH 05/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../NETworkManager.Localization/Resources/Strings.resx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Source/NETworkManager.Localization/Resources/Strings.resx b/Source/NETworkManager.Localization/Resources/Strings.resx index f5d9fc79df..26281a6118 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.resx +++ b/Source/NETworkManager.Localization/Resources/Strings.resx @@ -4334,19 +4334,10 @@ Cloudflare may log your IP address and network information. See Cloudflare's pri Jitter - - Server location - Speed test service used to measure download speed, upload speed, latency, and jitter. - - Start - Stop - - IATA - \ No newline at end of file From 59287697540670346ac8aa28dac9cec744c03ede Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:04:47 +0200 Subject: [PATCH 06/18] Fix: Based on copilot feedback --- Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs | 5 +++-- Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs index d28b0e4da4..4d343e5aaf 100644 --- a/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs @@ -65,7 +65,7 @@ private static readonly (StepDirection Direction, int Bytes, int Count)[] Steps public SpeedTestService() { - _client = new HttpClient { Timeout = TimeSpan.FromSeconds(60) }; + _client = new HttpClient { Timeout = Timeout.InfiniteTimeSpan }; _client.DefaultRequestHeaders.Add("Origin", Origin); _client.DefaultRequestHeaders.UserAgent.ParseAdd("NETworkManager"); } @@ -330,6 +330,7 @@ private async Task MeasureLatencyAsync(List pings, CancellationToken can CancellationToken cancellationToken) { var payload = ArrayPool.Shared.Rent(bytes); + Array.Clear(payload, 0, bytes); try { using var request = new HttpRequestMessage(HttpMethod.Post, $"{BaseUrl}/__up"); @@ -355,7 +356,7 @@ private async Task MeasureLatencyAsync(List pings, CancellationToken can } finally { - ArrayPool.Shared.Return(payload); + ArrayPool.Shared.Return(payload, clearArray: true); } } diff --git a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs index 40a1629ab8..d3472f27fa 100644 --- a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs +++ b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs @@ -267,12 +267,15 @@ private async Task RunAsync() if (p.NewDownloadSampleMbps.HasValue) { + // Seed the first point twice so LiveCharts2 renders the sparkline + // anchored at x=0 rather than starting mid-chart on the first sample. if (DownloadSamples.Count == 0) DownloadSamples.Add(p.NewDownloadSampleMbps.Value); DownloadSamples.Add(p.NewDownloadSampleMbps.Value); } if (p.NewUploadSampleMbps.HasValue) { + // Same workaround as above for the upload sparkline. if (UploadSamples.Count == 0) UploadSamples.Add(p.NewUploadSampleMbps.Value); UploadSamples.Add(p.NewUploadSampleMbps.Value); From 102861f9d57809c4e9edac4c9b18caff04a5ca50 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:14:07 +0200 Subject: [PATCH 07/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../Resources/Strings.Designer.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index 10ca5852bf..381af46712 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -11021,15 +11021,6 @@ public static string StarForkProjectOnGitHub { } } - /// - /// Looks up a localized string similar to Start. - /// - public static string Start { - get { - return ResourceManager.GetString("Start", resourceCulture); - } - } - /// /// Looks up a localized string similar to Start minimized in tray. /// From be283a0a3c8cc085333ea000bb70d3da2d7cdf8c Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:16:00 +0200 Subject: [PATCH 08/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../Resources/Strings.Designer.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index 381af46712..b0a98fa2a0 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -5383,15 +5383,6 @@ public static string HTTPStatusCode { } } - /// - /// Looks up a localized string similar to IATA. - /// - public static string IATA { - get { - return ResourceManager.GetString("IATA", resourceCulture); - } - } - /// /// Looks up a localized string similar to ICMPv4. /// From a5dc9acb977cb210f32d5fd99b210a61e13d5f92 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:24:10 +0200 Subject: [PATCH 09/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../Resources/Strings.Designer.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index b0a98fa2a0..15439c9124 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -10251,15 +10251,6 @@ public static string Server { } } - /// - /// Looks up a localized string similar to Server location. - /// - public static string ServerLocation { - get { - return ResourceManager.GetString("ServerLocation", resourceCulture); - } - } - /// /// Looks up a localized string similar to Server name. /// From 6b45ff19fa7ef42b1cc69fd4a73234d1146192ed Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:30:02 +0200 Subject: [PATCH 10/18] Fix: Copilot feedback --- .../Cloudflare/SpeedTestService.cs | 101 +++++++++++------- .../ViewModels/SpeedTestWidgetViewModel.cs | 4 +- 2 files changed, 64 insertions(+), 41 deletions(-) diff --git a/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs index 4d343e5aaf..1c5b097be3 100644 --- a/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs +++ b/Source/NETworkManager.Models/Cloudflare/SpeedTestService.cs @@ -1,9 +1,9 @@ using System; -using System.Buffers; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text.RegularExpressions; @@ -19,7 +19,7 @@ namespace NETworkManager.Models.Cloudflare; /// JavaScript library. The full network logic is reimplemented in C#; no /// telemetry is sent to aim.cloudflare.com. /// -public class SpeedTestService : IDisposable +public class SpeedTestService { private const string BaseUrl = "https://speed.cloudflare.com"; private const string Origin = "https://speed.cloudflare.com"; @@ -61,13 +61,14 @@ private static readonly (StepDirection Direction, int Bytes, int Count)[] Steps private const int LatencyInitialProbes = 1; private const int LatencyMeasurementProbes = 20; - private readonly HttpClient _client; + private static readonly HttpClient _client = CreateClient(); - public SpeedTestService() + private static HttpClient CreateClient() { - _client = new HttpClient { Timeout = Timeout.InfiniteTimeSpan }; - _client.DefaultRequestHeaders.Add("Origin", Origin); - _client.DefaultRequestHeaders.UserAgent.ParseAdd("NETworkManager"); + var client = new HttpClient { Timeout = Timeout.InfiniteTimeSpan }; + client.DefaultRequestHeaders.Add("Origin", Origin); + client.DefaultRequestHeaders.UserAgent.ParseAdd("NETworkManager"); + return client; } /// @@ -329,35 +330,25 @@ private async Task MeasureLatencyAsync(List pings, CancellationToken can private async Task<(double Bps, double DurationMs)> MeasureUploadAsync(int bytes, CancellationToken cancellationToken) { - var payload = ArrayPool.Shared.Rent(bytes); - Array.Clear(payload, 0, bytes); - try - { - using var request = new HttpRequestMessage(HttpMethod.Post, $"{BaseUrl}/__up"); - using var content = new ByteArrayContent(payload, 0, bytes); - content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); - request.Content = content; - - var sw = Stopwatch.StartNew(); - using var response = await _client - .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken) - .ConfigureAwait(false); - sw.Stop(); - var ttfb = sw.Elapsed.TotalMilliseconds; - response.EnsureSuccessStatusCode(); - await response.Content.CopyToAsync(Stream.Null, cancellationToken).ConfigureAwait(false); - - var uploadDurationMs = ttfb; - if (uploadDurationMs <= 0) - return (0.0, uploadDurationMs); - - var bps = 8.0 * bytes * EstimatedHeaderFraction / (uploadDurationMs / 1000.0); - return (bps, uploadDurationMs); - } - finally - { - ArrayPool.Shared.Return(payload, clearArray: true); - } + using var request = new HttpRequestMessage(HttpMethod.Post, $"{BaseUrl}/__up"); + using var content = new ZeroStreamContent(bytes); + request.Content = content; + + var sw = Stopwatch.StartNew(); + using var response = await _client + .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken) + .ConfigureAwait(false); + sw.Stop(); + var ttfb = sw.Elapsed.TotalMilliseconds; + response.EnsureSuccessStatusCode(); + await response.Content.CopyToAsync(Stream.Null, cancellationToken).ConfigureAwait(false); + + var uploadDurationMs = ttfb; + if (uploadDurationMs <= 0) + return (0.0, uploadDurationMs); + + var bps = 8.0 * bytes * EstimatedHeaderFraction / (uploadDurationMs / 1000.0); + return (bps, uploadDurationMs); } #endregion @@ -407,9 +398,41 @@ private static double Jitter(List pings) #endregion - public void Dispose() + /// + /// Streams zero bytes as HTTP content without allocating + /// a full-sized buffer. A single small shared chunk is reused across all writes. + /// + private sealed class ZeroStreamContent : HttpContent { - _client?.Dispose(); - GC.SuppressFinalize(this); + private readonly int _length; + private static readonly byte[] _chunk = new byte[81920]; + + internal ZeroStreamContent(int length) + { + _length = length; + Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + Headers.ContentLength = length; + } + + protected override Task SerializeToStreamAsync(Stream stream, TransportContext? context) => + SerializeToStreamAsync(stream, context, CancellationToken.None); + + protected override async Task SerializeToStreamAsync(Stream stream, TransportContext? context, + CancellationToken cancellationToken) + { + var remaining = _length; + while (remaining > 0) + { + var toWrite = Math.Min(_chunk.Length, remaining); + await stream.WriteAsync(_chunk.AsMemory(0, toWrite), cancellationToken).ConfigureAwait(false); + remaining -= toWrite; + } + } + + protected override bool TryComputeLength(out long length) + { + length = _length; + return true; + } } } diff --git a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs index d3472f27fa..0e3c57ccf8 100644 --- a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs +++ b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs @@ -25,6 +25,7 @@ public class SpeedTestWidgetViewModel : ViewModelBase { private static readonly ILog Log = LogManager.GetLogger(typeof(SpeedTestWidgetViewModel)); + private readonly SpeedTestService _service = new(); private CancellationTokenSource _cts; public bool IsRunning @@ -244,7 +245,6 @@ private async Task RunAsync() _cts?.Dispose(); _cts = new CancellationTokenSource(); - using var service = new SpeedTestService(); var progress = new Progress(p => { StatusMessage = p.Phase switch @@ -299,7 +299,7 @@ private async Task RunAsync() try { - var result = await service.RunAsync(progress, _cts.Token); + var result = await _service.RunAsync(progress, _cts.Token); Result = result; CurrentDownloadMbps = result.DownloadMbps; CurrentUploadMbps = result.UploadMbps; From 7da263727e63f6676b5ad6a0220a62051abeaca4 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:39:31 +0200 Subject: [PATCH 11/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- Source/NETworkManager/Views/SpeedTestWidgetView.xaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml index de8f3e69c3..368e107729 100644 --- a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml +++ b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml @@ -217,9 +217,9 @@ - - - + + + From d0fc909fcb8ad0e1ae92f1280748b8b9047aae54 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:41:12 +0200 Subject: [PATCH 12/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs index 0e3c57ccf8..7fa4dce898 100644 --- a/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs +++ b/Source/NETworkManager/ViewModels/SpeedTestWidgetViewModel.cs @@ -218,13 +218,13 @@ private void RunAction() if (ShowDisclaimer) return; - RunAsync().ConfigureAwait(false); + _ = RunAsync(); } private void AcceptDisclaimerAction() { ShowDisclaimer = false; - RunAsync().ConfigureAwait(false); + _ = RunAsync(); } private async Task RunAsync() From 8db182ca695a49a9b9f4cebf50be566d3279431d Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:41:56 +0200 Subject: [PATCH 13/18] Update NetworkConnectionWidgetView.xaml --- .../NETworkManager/Views/NetworkConnectionWidgetView.xaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml b/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml index 0b432ddee9..0838b5e8a3 100644 --- a/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml +++ b/Source/NETworkManager/Views/NetworkConnectionWidgetView.xaml @@ -50,7 +50,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -176,7 +176,7 @@ - @@ -214,7 +214,7 @@ - Date: Sun, 24 May 2026 01:47:08 +0200 Subject: [PATCH 14/18] Fix: Nullable converter --- .../NullableDoubleToStringConverter.cs | 32 +++++++++++++++++++ .../Views/SpeedTestWidgetView.xaml | 9 +++--- 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 Source/NETworkManager.Converters/NullableDoubleToStringConverter.cs diff --git a/Source/NETworkManager.Converters/NullableDoubleToStringConverter.cs b/Source/NETworkManager.Converters/NullableDoubleToStringConverter.cs new file mode 100644 index 0000000000..dd83917813 --- /dev/null +++ b/Source/NETworkManager.Converters/NullableDoubleToStringConverter.cs @@ -0,0 +1,32 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace NETworkManager.Converters; + +/// +/// Converts a nullable to a formatted string, returning "-/-" for null. +/// Pass a ConverterParameter of the form "F0|ms" or "F1|Mbps" to control the numeric format +/// specifier and the unit suffix, separated by '|'. +/// +public sealed class NullableDoubleToStringConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not double d) + return "-/-"; + + if (parameter is string fmt) + { + var parts = fmt.Split('|'); + var format = parts.Length > 0 ? parts[0] : "G"; + var unit = parts.Length > 1 ? " " + parts[1] : string.Empty; + return d.ToString(format, culture) + unit; + } + + return d.ToString(culture); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => + throw new NotImplementedException(); +} \ No newline at end of file diff --git a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml index 368e107729..00af691b5c 100644 --- a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml +++ b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml @@ -15,6 +15,7 @@ + @@ -226,11 +227,11 @@ + Text="{Binding CurrentLatencyMs, Converter={StaticResource NullableDoubleToStringConverter}, ConverterParameter='F0|ms', Mode=OneWay}" /> + Text="{Binding CurrentJitterMs, Converter={StaticResource NullableDoubleToStringConverter}, ConverterParameter='F1|ms', Mode=OneWay}" /> @@ -240,7 +241,7 @@ - @@ -259,7 +260,7 @@ - From dc86ddec2d7add0e4de2c1cea6998c7ce58045d1 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:53:55 +0200 Subject: [PATCH 15/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- Website/docs/application/dashboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Website/docs/application/dashboard.md b/Website/docs/application/dashboard.md index 1fa63b4b17..8e20296fe5 100644 --- a/Website/docs/application/dashboard.md +++ b/Website/docs/application/dashboard.md @@ -110,4 +110,4 @@ The result includes: - **Client city and country** - **Server location** — Cloudflare PoP (Point of Presence) handling the test -The first time the widget is used, a privacy disclaimer informs the user that `speed.cloudflare.com` will receive requests with the client's IP address and network information. See the [Cloudflare privacy policy](https://www.cloudflare.com/privacypolicy/) for details. The widget never contacts Cloudflare's telemetry endpoint (`aim.cloudflare.com/__log`). +Before running the test, a privacy disclaimer informs the user that `speed.cloudflare.com` will receive requests with the client's IP address and network information. The disclaimer is shown again after restarting the app because acceptance is not currently persisted. See the [Cloudflare privacy policy](https://www.cloudflare.com/privacypolicy/) for details. The widget never contacts Cloudflare's telemetry endpoint (`aim.cloudflare.com/__log`). From 00fb5f4f13ff2d9094b95ce344488603195b6a38 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:54:15 +0200 Subject: [PATCH 16/18] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- Website/docs/changelog/next-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 0094d83d4a..deac80abd4 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -34,7 +34,7 @@ Release date: **xx.xx.2025** **Dashboard** -- New **Speed Test** widget to measure download/upload speed, latency, and jitter against [`speed.cloudflare.com`](https://speed.cloudflare.com/). The test is user-initiated and shows download (Mbps), upload (Mbps), latency (ms), jitter (ms), ISP, client location, and Cloudflare PoP. A privacy disclaimer is shown on first use. [#3440](https://github.com/BornToBeRoot/NETworkManager/pull/3440) +- New **Speed Test** widget to measure download/upload speed, latency, and jitter against [`speed.cloudflare.com`](https://speed.cloudflare.com/). The test is user-initiated and shows download (Mbps), upload (Mbps), latency (ms), jitter (ms), ISP, client location, and Cloudflare PoP. A privacy disclaimer is shown before use. [#3440](https://github.com/BornToBeRoot/NETworkManager/pull/3440) **PowerShell** From 5896a4b6887b3544f8f7e564fb57039ec0234920 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 01:58:24 +0200 Subject: [PATCH 17/18] Update SpeedTestWidgetView.xaml --- Source/NETworkManager/Views/SpeedTestWidgetView.xaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml index 00af691b5c..250a2313d5 100644 --- a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml +++ b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml @@ -216,11 +216,10 @@ Text="{x:Static localization:Strings.Server}" /> - - - - + + + + From 83d45b20256e3160b075c41bd6be7cf744815d64 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 24 May 2026 02:09:54 +0200 Subject: [PATCH 18/18] Fix: Copilot feedback --- .../ExternalServicesManager.cs | 2 +- .../Resources/Strings.Designer.cs | 19 +++++++++---------- .../Resources/Strings.resx | 2 +- Website/docs/application/dashboard.md | 1 - Website/docs/changelog/next-release.md | 2 +- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Source/NETworkManager.Documentation/ExternalServicesManager.cs b/Source/NETworkManager.Documentation/ExternalServicesManager.cs index 41ec1b1c2f..6970f872bf 100644 --- a/Source/NETworkManager.Documentation/ExternalServicesManager.cs +++ b/Source/NETworkManager.Documentation/ExternalServicesManager.cs @@ -18,6 +18,6 @@ public static class ExternalServicesManager new ExternalServicesInfo("ipify.org", "https://www.ipify.org/", Strings.ExternalService_ipify_Description), new ExternalServicesInfo("speed.cloudflare.com", "https://speed.cloudflare.com/", - Strings.ExternalService_Cloudflare_SpeedTest_Description) + Strings.ExternalService_speed_cloudflare_Description) }; } \ No newline at end of file diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index 15439c9124..0ff7f753ea 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -4266,15 +4265,6 @@ public static string ExportSelected { } } - /// - /// Looks up a localized string similar to Speed test service used to measure download speed, upload speed, latency, and jitter.. - /// - public static string ExternalService_Cloudflare_SpeedTest_Description { - get { - return ResourceManager.GetString("ExternalService_Cloudflare_SpeedTest_Description", resourceCulture); - } - } - /// /// Looks up a localized string similar to IP Geolocation API - Fast, accurate, reliable. /// @@ -4293,6 +4283,15 @@ public static string ExternalService_ipify_Description { } } + /// + /// Looks up a localized string similar to Speed test service used to measure download speed, upload speed, latency, and jitter.. + /// + public static string ExternalService_speed_cloudflare_Description { + get { + return ResourceManager.GetString("ExternalService_speed_cloudflare_Description", resourceCulture); + } + } + /// /// Looks up a localized string similar to External services. /// diff --git a/Source/NETworkManager.Localization/Resources/Strings.resx b/Source/NETworkManager.Localization/Resources/Strings.resx index 26281a6118..9e99aee06d 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.resx +++ b/Source/NETworkManager.Localization/Resources/Strings.resx @@ -4334,7 +4334,7 @@ Cloudflare may log your IP address and network information. See Cloudflare's pri Jitter - + Speed test service used to measure download speed, upload speed, latency, and jitter. diff --git a/Website/docs/application/dashboard.md b/Website/docs/application/dashboard.md index 8e20296fe5..d72147c801 100644 --- a/Website/docs/application/dashboard.md +++ b/Website/docs/application/dashboard.md @@ -107,7 +107,6 @@ The result includes: - **Latency** in ms (unloaded, 50th percentile of latency probes) - **Jitter** in ms (average consecutive delta between latency samples) - **ISP** — internet service provider as reported by Cloudflare -- **Client city and country** - **Server location** — Cloudflare PoP (Point of Presence) handling the test Before running the test, a privacy disclaimer informs the user that `speed.cloudflare.com` will receive requests with the client's IP address and network information. The disclaimer is shown again after restarting the app because acceptance is not currently persisted. See the [Cloudflare privacy policy](https://www.cloudflare.com/privacypolicy/) for details. The widget never contacts Cloudflare's telemetry endpoint (`aim.cloudflare.com/__log`). diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index deac80abd4..0ae974e596 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -34,7 +34,7 @@ Release date: **xx.xx.2025** **Dashboard** -- New **Speed Test** widget to measure download/upload speed, latency, and jitter against [`speed.cloudflare.com`](https://speed.cloudflare.com/). The test is user-initiated and shows download (Mbps), upload (Mbps), latency (ms), jitter (ms), ISP, client location, and Cloudflare PoP. A privacy disclaimer is shown before use. [#3440](https://github.com/BornToBeRoot/NETworkManager/pull/3440) +- New **Speed Test** widget to measure download/upload speed, latency, and jitter against [`speed.cloudflare.com`](https://speed.cloudflare.com/). The test is user-initiated and shows download (Mbps), upload (Mbps), latency (ms), jitter (ms), ISP, and server location. A privacy disclaimer is shown before use. [#3440](https://github.com/BornToBeRoot/NETworkManager/pull/3440) **PowerShell**
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 z