feat(ui): replay run log in session terminal, drop per-row live tail
All checks were successful
Release / release (push) Successful in 34s
All checks were successful
Release / release (push) Successful in 34s
Set the task's log path when the run is created (not at completion) so the session terminal can replay live output when the user navigates away and back mid-run. Remove the now-redundant inline per-row live tail (LiveTail / HasLiveTail / TaskMessageEvent) and scroll the terminal to end after the next layout pass so wrapping lines aren't clipped.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
using System.Collections.Specialized;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Threading;
|
||||
using ClaudeDo.Ui.ViewModels.Islands;
|
||||
|
||||
namespace ClaudeDo.Ui.Views.Islands;
|
||||
@@ -9,16 +8,29 @@ public partial class SessionTerminalView : UserControl
|
||||
{
|
||||
public SessionTerminalView() { InitializeComponent(); }
|
||||
|
||||
private DetailsIslandViewModel? _boundVm;
|
||||
|
||||
protected override void OnDataContextChanged(EventArgs e)
|
||||
{
|
||||
base.OnDataContextChanged(e);
|
||||
if (DataContext is DetailsIslandViewModel vm)
|
||||
vm.Log.CollectionChanged += OnLogChanged;
|
||||
if (_boundVm is not null)
|
||||
_boundVm.Log.CollectionChanged -= OnLogChanged;
|
||||
_boundVm = DataContext as DetailsIslandViewModel;
|
||||
if (_boundVm is not null)
|
||||
_boundVm.Log.CollectionChanged += OnLogChanged;
|
||||
}
|
||||
|
||||
private void OnLogChanged(object? sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
if (e.Action != NotifyCollectionChangedAction.Add) return;
|
||||
Dispatcher.UIThread.Post(() => LogScroll.ScrollToEnd(), DispatcherPriority.Background);
|
||||
// Scroll after the next layout pass so the freshly-added (wrapping) line
|
||||
// is measured first — otherwise ScrollToEnd stops short and clips it.
|
||||
EventHandler? handler = null;
|
||||
handler = (_, _) =>
|
||||
{
|
||||
LogScroll.LayoutUpdated -= handler;
|
||||
LogScroll.ScrollToEnd();
|
||||
};
|
||||
LogScroll.LayoutUpdated += handler;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,20 +175,6 @@
|
||||
</Border>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<!-- Live-tail row (visible when running + has tail) -->
|
||||
<Border Classes="task-live-tail" IsVisible="{Binding HasLiveTail}">
|
||||
<StackPanel Spacing="3">
|
||||
<TextBlock Text="{Binding LiveTail}"
|
||||
TextTrimming="CharacterEllipsis" MaxLines="1"/>
|
||||
<Grid Height="3" HorizontalAlignment="Stretch">
|
||||
<Rectangle Fill="{DynamicResource Surface3Brush}"
|
||||
HorizontalAlignment="Stretch" RadiusX="1.5" RadiusY="1.5"/>
|
||||
<Rectangle Fill="{DynamicResource MossBrush}"
|
||||
HorizontalAlignment="Left" Width="60" RadiusX="1.5" RadiusY="1.5"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Star toggle -->
|
||||
|
||||
Reference in New Issue
Block a user