diff --git a/src/ClaudeDo.Ui/ViewModels/TaskDetailViewModel.cs b/src/ClaudeDo.Ui/ViewModels/TaskDetailViewModel.cs index 33cdfcd..63b30c9 100644 --- a/src/ClaudeDo.Ui/ViewModels/TaskDetailViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/TaskDetailViewModel.cs @@ -90,7 +90,7 @@ public partial class TaskDetailViewModel : ViewModelBase && File.Exists(task.LogPath)) { _formatter = new StreamLineFormatter(); - LiveText = _formatter.FormatFile(task.LogPath); + LiveText = await Task.Run(() => _formatter.FormatFile(task.LogPath)); } StatusText = task.Status.ToString().ToLowerInvariant(); StatusChoice = task.Status.ToString(); diff --git a/src/ClaudeDo.Ui/Views/TaskDetailView.axaml.cs b/src/ClaudeDo.Ui/Views/TaskDetailView.axaml.cs index b8e3b79..f5d2f6d 100644 --- a/src/ClaudeDo.Ui/Views/TaskDetailView.axaml.cs +++ b/src/ClaudeDo.Ui/Views/TaskDetailView.axaml.cs @@ -33,13 +33,16 @@ public partial class TaskDetailView : UserControl this.FindControl("TitleBox")?.Focus(); } + private TaskDetailViewModel? _previousVm; + protected override void OnDataContextChanged(EventArgs e) { base.OnDataContextChanged(e); - if (DataContext is TaskDetailViewModel vm) - { - vm.PropertyChanged += OnViewModelPropertyChanged; - } + if (_previousVm is not null) + _previousVm.PropertyChanged -= OnViewModelPropertyChanged; + _previousVm = DataContext as TaskDetailViewModel; + if (_previousVm is not null) + _previousVm.PropertyChanged += OnViewModelPropertyChanged; } private void OnViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e)