diff --git a/Locales/de-DE.xaml b/Locales/de-DE.xaml index 57daeab..eba6c6d 100644 --- a/Locales/de-DE.xaml +++ b/Locales/de-DE.xaml @@ -574,8 +574,8 @@ Status - Core Parking - Steuert CPU core parking für die Energieverwaltung + Core-Parking verhindern + Hält alle logischen Prozessoren im aktiven Energiesparplan im Netzbetrieb aktiv. C-States Steuert CPU C-States für die Energieverwaltung SysMain-Dienst diff --git a/Locales/en-US.xaml b/Locales/en-US.xaml index eed89f7..46003aa 100644 --- a/Locales/en-US.xaml +++ b/Locales/en-US.xaml @@ -574,8 +574,8 @@ Status - Core Parking - Controls CPU core parking for power management + Prevent Core Parking + Keeps all logical processors unparked for the active power plan while plugged in. C-States Controls CPU C-States for power management SysMain Service diff --git a/Locales/es-ES.xaml b/Locales/es-ES.xaml index 2aab6ff..95e2efa 100644 --- a/Locales/es-ES.xaml +++ b/Locales/es-ES.xaml @@ -574,8 +574,8 @@ Estado - Core Parking - Controles CPU core parking para administración de energía + Impedir el aparcamiento de núcleos + Mantiene activos todos los procesadores lógicos del plan de energía actual mientras el equipo está conectado. C-States Controles CPU C-States para administración de energía SysMain Servicio diff --git a/Locales/fr-FR.xaml b/Locales/fr-FR.xaml index 01dfd6d..d01b035 100644 --- a/Locales/fr-FR.xaml +++ b/Locales/fr-FR.xaml @@ -574,8 +574,8 @@ Statut - Core Parking - Contrôle CPU core parking pour la gestion de l'alimentation + Empêcher le stationnement des cœurs + Maintient tous les processeurs logiques actifs pour le mode d’alimentation actuel lorsque l’ordinateur est branché. C-States Contrôle CPU C-States pour la gestion de l'alimentation Service SysMain diff --git a/Locales/it-IT.xaml b/Locales/it-IT.xaml index 3109fb5..c2a7a16 100644 --- a/Locales/it-IT.xaml +++ b/Locales/it-IT.xaml @@ -574,8 +574,8 @@ Stato - Core Parking - Controlla CPU core parking per la gestione dell'alimentazione + Impedisci il parcheggio dei core + Mantiene attivi tutti i processori logici nel piano di alimentazione corrente quando il PC è collegato alla rete. C-States Controlla CPU C-States per la gestione dell'alimentazione SysMain Servizio diff --git a/Locales/ru-RU.xaml b/Locales/ru-RU.xaml index 3b04a69..115905a 100644 --- a/Locales/ru-RU.xaml +++ b/Locales/ru-RU.xaml @@ -574,8 +574,8 @@ Статус - Core Parking - Элементы управления CPU core parking для управления питанием + Отключить парковку ядер + Не позволяет парковать логические процессоры в активной схеме электропитания при работе от сети. C-States Элементы управления CPU C-States для управления питанием SysMain Сервис diff --git a/Locales/zh-CN.xaml b/Locales/zh-CN.xaml index 2903ff6..0a96554 100644 --- a/Locales/zh-CN.xaml +++ b/Locales/zh-CN.xaml @@ -574,8 +574,8 @@ 当前状态 - 核心休眠 (Core Parking) - 控制 CPU 核心休眠以进行电源管理 + 禁止核心停驻 + 接通电源时,使当前电源计划中的所有逻辑处理器保持活动状态。 C-States 状态 控制 CPU C-States 以进行节能电源管理 SysMain 服务 diff --git a/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs b/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs index cb55c3a..663cb22 100644 --- a/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs +++ b/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs @@ -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")] @@ -88,7 +88,7 @@ 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 @@ -96,22 +96,25 @@ public async Task ToggleTweakCommand_WhenServiceFails_LogsFailureAndShowsSafeSta .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 diff --git a/ViewModels/SystemTweaksViewModel.cs b/ViewModels/SystemTweaksViewModel.cs index 93b3b53..6d27f35 100644 --- a/ViewModels/SystemTweaksViewModel.cs +++ b/ViewModels/SystemTweaksViewModel.cs @@ -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) @@ -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."), @@ -368,5 +372,7 @@ public partial class SystemTweakItem : ObservableObject public IAsyncRelayCommand? ToggleCommand { get; set; } public IAsyncRelayCommand? ActionCommand { get; set; } + + public void RefreshIsEnabled() => this.OnPropertyChanged(nameof(this.IsEnabled)); } }