fix(ui): validate PowerUse window, explain effort and Prime Claude in Settings

Three usability-audit findings in Settings:
- An unparseable PowerUse window (e.g. "9:0") used to save silently as null
  (= round the clock), the opposite of what the typo implied. Validate() now
  rejects an unparseable start/end unless blank; the worker-side read-time
  tolerance is unchanged.
- "Effort" column header gets a tooltip explaining it's the model's reasoning
  effort (cost/depth tradeoff).
- The "Prime Claude" tab gets a tooltip explaining scheduled Claude runs
  (Ping / Fill My Day / custom prompt).

New locale keys added to en+de. Updated the PowerUse round-trip test that
asserted the old silent-normalize behavior.
This commit is contained in:
mika kuns
2026-09-10 13:34:06 +02:00
parent 6f1fbe5b93
commit 951c2fe92a
6 changed files with 50 additions and 3 deletions
@@ -153,10 +153,17 @@ public class SettingsModalViewModelTests : IDisposable
Assert.Equal("18:00", vm.General.PowerUseWindowStart);
Assert.Equal(88, vm.General.PowerUseHandoffPct);
// A typo in the window is normalized to null on save, not stored as a fake window.
// A typo in the window blocks Save instead of silently becoming "round the clock".
vm.General.PowerUseWindowEnd = "not a time";
await vm.SaveCommand.ExecuteAsync(null);
Assert.Null(worker.Saved);
Assert.NotEqual("", vm.ValidationError);
// Clearing it back out is still a valid "round the clock" window and saves.
vm.General.PowerUseWindowEnd = "";
await vm.SaveCommand.ExecuteAsync(null);
Assert.True(worker.Saved!.PowerUseEnabled);
Assert.Equal("18:00", worker.Saved.PowerUseWindowStart);
Assert.Null(worker.Saved.PowerUseWindowEnd);