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));
}
}