From 6cf4c07695e843a67bd151fb7b197ad34f80fdaf Mon Sep 17 00:00:00 2001 From: Alex Hope-O'Connor Date: Sat, 7 Mar 2026 22:31:38 +1000 Subject: [PATCH] Fix RestartTimeoutSeconds default; order-aware multi-value diff in save modal - DnsmasqOptions: set RestartTimeoutSeconds default to 30 to match XML comment and original reload timeout (avoids halving timeout for restart/reload). - Save modal: multi-value diff no longer uses set-only Except(); when lists have same items but different order (or duplicate count), show 'Order or duplicates changed' with before/after so reorders (e.g. server=) are visible. --- .../Modals/EffectiveConfigSaveModal.razor | 24 ++++++++++++++----- .../Models/Config/DnsmasqOptions.cs | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/DnsmasqWebUI/Components/EffectiveConfig/Modals/EffectiveConfigSaveModal.razor b/src/DnsmasqWebUI/Components/EffectiveConfig/Modals/EffectiveConfigSaveModal.razor index f7b7053..998b883 100644 --- a/src/DnsmasqWebUI/Components/EffectiveConfig/Modals/EffectiveConfigSaveModal.razor +++ b/src/DnsmasqWebUI/Components/EffectiveConfig/Modals/EffectiveConfigSaveModal.razor @@ -122,16 +122,28 @@ @if (isMultiValue) { - var added = (newList ?? Array.Empty()).Except(oldList ?? Array.Empty()).ToList(); - var removed = (oldList ?? Array.Empty()).Except(newList ?? Array.Empty()).ToList(); + var oldSeq = oldList ?? Array.Empty(); + var newSeq = newList ?? Array.Empty(); + var added = newSeq.Except(oldSeq).ToList(); + var removed = oldSeq.Except(newSeq).ToList(); + var orderOrDuplicatesChanged = added.Count == 0 && removed.Count == 0 && !oldSeq.SequenceEqual(newSeq, StringComparer.Ordinal);
- @foreach (var val in removed) + @if (orderOrDuplicatesChanged) { -
− @val
+
Order or duplicates changed:
+
Before: @string.Join(", ", oldSeq)
+
After: @string.Join(", ", newSeq)
} - @foreach (var val in added) + else { -
+ @val
+ @foreach (var val in removed) + { +
− @val
+ } + @foreach (var val in added) + { +
+ @val
+ } }
} diff --git a/src/DnsmasqWebUI/Models/Config/DnsmasqOptions.cs b/src/DnsmasqWebUI/Models/Config/DnsmasqOptions.cs index 416337f..c42e6b4 100644 --- a/src/DnsmasqWebUI/Models/Config/DnsmasqOptions.cs +++ b/src/DnsmasqWebUI/Models/Config/DnsmasqOptions.cs @@ -50,7 +50,7 @@ public class DnsmasqOptions // --- Timeouts (seconds) for the commands above --- /// Timeout in seconds for / . Default 30. - public int RestartTimeoutSeconds { get; set; } = 15; + public int RestartTimeoutSeconds { get; set; } = 30; /// Timeout in seconds for . Default 5. public int StatusTimeoutSeconds { get; set; } = 5;