fix(ui): dispose VM subscriptions/timers, guard offline Stop, align review delta-path

- DetailsIslandViewModel/TasksIslandViewModel/ListsIslandViewModel: implement
  IDisposable, unsubscribe Loc.LanguageChanged and worker events (memory leaks).
- IslandsShellViewModel: dispose the three System.Timers.Timer instances.
- StopAsync: guard on Task/IsRunning/IsConnected and wrap CancelTask in try/catch.
- TaskMatchesList virtual:review now matches WaitingForReview (aligns with ReviewFilter).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-09 09:53:58 +02:00
parent 00a065bf7f
commit 01e0c1d794
4 changed files with 72 additions and 15 deletions

View File

@@ -15,7 +15,7 @@ using Microsoft.EntityFrameworkCore;
namespace ClaudeDo.Ui.ViewModels;
public sealed partial class IslandsShellViewModel : ViewModelBase
public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
{
public ListsIslandViewModel? Lists { get; }
public TasksIslandViewModel? Tasks { get; }
@@ -268,6 +268,16 @@ public sealed partial class IslandsShellViewModel : ViewModelBase
});
}
public void Dispose()
{
_clearTimer.Stop();
_clearTimer.Dispose();
_connectTimer.Stop();
_connectTimer.Dispose();
_primeStatusTimer.Stop();
_primeStatusTimer.Dispose();
}
private void RefreshBannerFromStatus()
{
switch (_updateCheck.LastCheckStatus)