fix(ui): Log Visualizer shows every footer-log message
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
d9355383a4
commit
c956ab102e
@@ -181,8 +181,23 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
|
||||
OnPropertyChanged(nameof(TasksColumnSpan));
|
||||
}
|
||||
|
||||
private const int FooterHistoryCap = 500;
|
||||
|
||||
/// <summary>Every line the footer strip has shown this session, oldest-first, capped; UI thread only.</summary>
|
||||
private readonly List<WorkerLogEntry> _footerHistory = new();
|
||||
|
||||
internal IReadOnlyList<WorkerLogEntry> FooterHistorySnapshot() => _footerHistory.ToArray();
|
||||
|
||||
private void RecordFooter(WorkerLogEntry entry)
|
||||
{
|
||||
_footerHistory.Add(entry);
|
||||
if (_footerHistory.Count > FooterHistoryCap)
|
||||
_footerHistory.RemoveAt(0);
|
||||
}
|
||||
|
||||
public void OnWorkerLogReceived(WorkerLogEntry entry)
|
||||
{
|
||||
RecordFooter(entry);
|
||||
var hhmm = entry.TimestampUtc.ToLocalTime().ToString("HH:mm");
|
||||
WorkerLogText = $"{hhmm} · {entry.Message}";
|
||||
WorkerLogLevel = entry.Level;
|
||||
@@ -214,6 +229,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
|
||||
if (level == WorkerLogLevel.Error)
|
||||
Serilog.Log.Warning("Footer error: {message}", message);
|
||||
|
||||
RecordFooter(new WorkerLogEntry(message, level, DateTime.UtcNow));
|
||||
WorkerLogText = $"{DateTime.Now:HH:mm} · {message}";
|
||||
WorkerLogLevel = level;
|
||||
IsWorkerLogVisible = true;
|
||||
@@ -541,7 +557,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
|
||||
private async Task OpenLogVisualizer()
|
||||
{
|
||||
if (Dialogs is null || Worker is null) return;
|
||||
var vm = new LogVisualizerViewModel(Worker);
|
||||
var vm = new LogVisualizerViewModel(Worker, FooterHistorySnapshot);
|
||||
await vm.RefreshAsync();
|
||||
await Dialogs.ShowLogVisualizerAsync(vm);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user