@@ -12,7 +12,6 @@ struct LiveTailView: View {
1212 @State private var sortAscending = false
1313 @State private var columnWidths: [String: CGFloat] = [:]
1414 @State private var cachedSorted: [LiveTailViewModel.LiveTailEntry] = []
15− @State private var cachedSeverities: [SeverityLevel] = []
1615 @State private var severityColumnSet: Set<String> = []
1716 @State private var liveTailSortTask: Task<Void, Never>?
1817
@@ -284,7 +283,6 @@ struct LiveTailView: View {
284283 let sevCols = buildSeverityColumnSet(columns: cols)
285284 guard let col = sortColumn else {
286285 cachedSorted = entries
287− cachedSeverities = entries.map { extractSeverity(from: $0.record, severityColumns: sevCols) }
288286 severityColumnSet = sevCols
289287 return
290288 }
@@ -302,7 +300,6 @@ struct LiveTailView: View {
302300 }.value
303301 guard !Task.isCancelled else { return }
304302 cachedSorted = sorted
305− cachedSeverities = sorted.map { extractSeverity(from: $0.record, severityColumns: sevCols) }
306303 severityColumnSet = sevCols
307304 }
308305 }
@@ -319,7 +316,7 @@ struct LiveTailView: View {
319316 columnWidths: columnWidths,
320317 isSelected: selectedRecord == entry.record,
321318 isAlternate: index % 2 == 1,
322− severity: index < cachedSeverities.count ? cachedSeverities[index] : .unknown,
319+ severity: extractSeverity(from: entry.record, severityColumns: severityColumnSet),
323320 severityColumns: severityColumnSet,
324321 wrapText: wrapText,
325322 onCellFilter: { column, value, exclude in
@@ -360,13 +357,12 @@ struct LiveTailView: View {
360357 .onChange(of: sortAscending) { _, _ in
361358 rebuildSortedEntries()
362359 }
363− .onChange(of: viewModel.entries.count) { _, _ in
360+ // Scroll when the rendered list (`cachedSorted`) changes, targeting
361+ // its last element. Keying off `entries.count` could fire before the
362+ // rebuild, scrolling to an id not yet present (a silent no-op).
363+ .onChange(of: cachedSorted.count) { _, _ in
364364 guard autoScroll, sortColumn == nil else { return }
365− let hasFilters = !viewModel.filterText.isEmpty || !viewModel.columnFilters.isEmpty
366− let target = hasFilters
367− ? viewModel.cachedFilteredEntries.last
368− : viewModel.entries.last
369− if let target {
365+ if let target = cachedSorted.last {
370366 proxy.scrollTo(target.id, anchor: .bottom)
371367 }
372368 }