feat(logs): coalesce repeated identical lines into one row (×N badge)

A line identical to the last persisted row (level+source+message+path)
within a 5-min refreshing window updates that row — context._repeat counts
the fold, _firstAt keeps the first occurrence, createdAt tracks the latest
so the storm stays at the top of the newest-first viewer. A continuous
storm stays ONE row however long it rages, so it can't evict unrelated
history via the 50k row cap or grind the appliance disk. LogsViewer badges
coalesced rows ×N (tooltip: count + first occurrence, sq/en). In-memory
last-row cache only; a pruned-under-us row falls through to a fresh insert.

Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
2026-07-10 08:29:43 +02:00
parent e2d5105da2
commit 51b160bfc9
5 changed files with 137 additions and 7 deletions
+1
View File
@@ -947,6 +947,7 @@ export const en: Catalog = {
status: "Status",
path: "Path",
empty: "No logs.",
repeated: "Repeated {{count}} times (first at {{firstAt}})",
},
backup: {
title: "Backup",