Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Locales/de-DE.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Status</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Steuert CPU core parking für die Energieverwaltung</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Core-Parking verhindern</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Hält alle logischen Prozessoren im aktiven Energiesparplan im Netzbetrieb aktiv.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Steuert CPU C-States für die Energieverwaltung</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain-Dienst</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/en-US.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Status</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Controls CPU core parking for power management</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Prevent Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Keeps all logical processors unparked for the active power plan while plugged in.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Controls CPU C-States for power management</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain Service</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/es-ES.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Estado</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Controles CPU core parking para administración de energía</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Impedir el aparcamiento de núcleos</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Mantiene activos todos los procesadores lógicos del plan de energía actual mientras el equipo está conectado.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Controles CPU C-States para administración de energía</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain Servicio</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/fr-FR.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Statut</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Contrôle CPU core parking pour la gestion de l'alimentation</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Empêcher le stationnement des cœurs</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Maintient tous les processeurs logiques actifs pour le mode d’alimentation actuel lorsque l’ordinateur est branché.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Contrôle CPU C-States pour la gestion de l'alimentation</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">Service SysMain</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/it-IT.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Stato</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Controlla CPU core parking per la gestione dell'alimentazione</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Impedisci il parcheggio dei core</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Mantiene attivi tutti i processori logici nel piano di alimentazione corrente quando il PC è collegato alla rete.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Controlla CPU C-States per la gestione dell'alimentazione</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain Servizio</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/ru-RU.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">Статус</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">Core Parking</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Элементы управления CPU core parking для управления питанием</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">Отключить парковку ядер</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">Не позволяет парковать логические процессоры в активной схеме электропитания при работе от сети.</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">Элементы управления CPU C-States для управления питанием</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain Сервис</sys:String>
Expand Down
4 changes: 2 additions & 2 deletions Locales/zh-CN.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -574,8 +574,8 @@
<sys:String x:Key="SystemTweaksView_Status">当前状态</sys:String>

<!-- SystemTweaks Names and Descriptions -->
<sys:String x:Key="SystemTweak_CoreParking_Name">核心休眠 (Core Parking)</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">控制 CPU 核心休眠以进行电源管理</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Name">禁止核心停驻</sys:String>
<sys:String x:Key="SystemTweak_CoreParking_Desc">接通电源时,使当前电源计划中的所有逻辑处理器保持活动状态。</sys:String>
<sys:String x:Key="SystemTweak_CStates_Name">C-States 状态</sys:String>
<sys:String x:Key="SystemTweak_CStates_Desc">控制 CPU C-States 以进行节能电源管理</sys:String>
<sys:String x:Key="SystemTweak_SysMain_Name">SysMain 服务</sys:String>
Expand Down
13 changes: 8 additions & 5 deletions Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public async Task LoadAsync_QueriesEverySupportedTweakExactlyOnce()

[Theory]
[InlineData(SystemTweak.GameMode, "Game Mode")]
[InlineData(SystemTweak.CoreParking, "Core Parking")]
[InlineData(SystemTweak.CoreParking, "Prevent Core Parking")]
[InlineData(SystemTweak.CStates, "C-States")]
[InlineData(SystemTweak.UsbSelectiveSuspend, "USB Selective Suspend")]
[InlineData(SystemTweak.PointerPrecision, "Enhance pointer precision")]
Expand Down Expand Up @@ -88,30 +88,33 @@ public async Task ToggleTweakCommand_CallsExpectedServiceAndLogsSuccess(SystemTw
}

[Fact]
public async Task ToggleTweakCommand_WhenServiceFails_LogsFailureAndShowsSafeStatus()
public async Task ToggleTweakCommand_WhenServiceFails_RestoresDisplayedState()
{
var harness = new Harness();
harness.Tweaks
.Setup(service => service.SetCoreParkingAsync(true))
.ReturnsAsync(false);
var viewModel = harness.CreateViewModel();
var item = viewModel.TweakItems.Single(tweak => tweak.TweakType == SystemTweak.CoreParking);
var stateNotifications = 0;
item.PropertyChanged += (_, args) => stateNotifications += args.PropertyName == nameof(item.IsEnabled) ? 1 : 0;

Assert.NotNull(item.ToggleCommand);
await item.ToggleCommand.ExecuteAsync(item);

Assert.Equal(1, stateNotifications);
harness.Logging.Verify(
service => service.LogUserActionAsync(
"SystemTweakFailed",
"Failed to enable Core Parking",
"Failed to enable Prevent Core Parking",
"CoreParking"),
Times.Once);
var entry = Assert.Single(await harness.Audit.GetEntriesAsync());
Assert.Equal("Tweaks", entry.Category);
Assert.Equal(ActivityAuditSeverity.Error, entry.Severity);
Assert.Equal("Failed to enable Core Parking", entry.Message);
Assert.Equal("Failed to enable Prevent Core Parking", entry.Message);
Assert.True(viewModel.HasError);
Assert.Equal("Failed to toggle Core Parking", viewModel.ErrorMessage);
Assert.Equal("Failed to toggle Prevent Core Parking", viewModel.ErrorMessage);
}

private sealed class Harness
Expand Down
8 changes: 7 additions & 1 deletion ViewModels/SystemTweaksViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,10 @@ await this.LogUserActionAsync(
$"Error toggling {item.Name}: {ex.Message}",
item.TweakType.ToString());
}
finally
{
item.RefreshIsEnabled();
}
}

private async Task OpenTweakSettingsAsync(SystemTweakItem? item)
Expand Down Expand Up @@ -266,7 +270,7 @@ private void ApplyLocalizedTweakText()
var text = item.TweakType switch
{
SystemTweak.GameMode => ("SystemTweak_GameMode_Name", "Game Mode", "SystemTweak_GameMode_Desc", "Windows Game Mode scheduling optimizations"),
SystemTweak.CoreParking => ("SystemTweak_CoreParking_Name", "Core Parking", "SystemTweak_CoreParking_Desc", "Controls CPU core parking for power management"),
SystemTweak.CoreParking => ("SystemTweak_CoreParking_Name", "Prevent Core Parking", "SystemTweak_CoreParking_Desc", "Keeps all logical processors unparked for the active power plan while plugged in."),
SystemTweak.CStates => ("SystemTweak_CStates_Name", "C-States", "SystemTweak_CStates_Desc", "Controls CPU C-States for power management"),
SystemTweak.MemoryIntegrity => ("SystemTweak_MemoryIntegrity_Name", "Memory Integrity (HVCI)", "SystemTweak_MemoryIntegrity_Desc", "Opens Windows Security. Disabling this protection reduces system security and may require a restart."),
SystemTweak.Hags => ("SystemTweak_Hags_Name", "Hardware-accelerated GPU scheduling", "SystemTweak_Hags_Desc", "Opens Windows graphics settings to let you review HAGS."),
Expand Down Expand Up @@ -368,5 +372,7 @@ public partial class SystemTweakItem : ObservableObject
public IAsyncRelayCommand<SystemTweakItem>? ToggleCommand { get; set; }

public IAsyncRelayCommand<SystemTweakItem>? ActionCommand { get; set; }

public void RefreshIsEnabled() => this.OnPropertyChanged(nameof(this.IsEnabled));
}
}
Loading