Консоль не пустеет после перезапуска менеджера
CI / test (push) Successful in 25s
Release / release (push) Successful in 37s

Номера строк консоли живут в памяти менеджера и после его перезапуска
начинаются заново, а открытая вкладка отбрасывает всё, чей номер не больше
последнего увиденного. После обновления панели консоль оставалась пустой при
живом сервере — до перезагрузки страницы.

У буфера появилась метка запуска: поток отдаёт её отдельным событием, и по
её смене вкладка сбрасывает счётчик, чистит экран и забирает историю нового
запуска заново.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-06 21:05:10 +03:00
co-authored by Claude Opus 5
parent ae8c511a9a
commit e0c33706b3
6 changed files with 94 additions and 5 deletions
+18
View File
@@ -39,3 +39,21 @@ func TestAppendStripsANSI(t *testing.T) {
t.Errorf("в буфер попала строка с кодами: %q", lines[0].Text)
}
}
// Номера строк живут в памяти менеджера: после перезапуска они начинаются
// заново. Метка запуска должна это показывать, иначе открытая вкладка примет
// новые строки за уже показанные.
func TestLogBufferEpochDiffers(t *testing.T) {
first, second := newLogBuffer(8), newLogBuffer(8)
if first.epoch == "" {
t.Fatal("метка запуска пустая")
}
if first.epoch == second.epoch {
t.Fatalf("метки совпали: %q", first.epoch)
}
first.append(LogLine{Stream: "manager", Text: "первый запуск"})
second.append(LogLine{Stream: "manager", Text: "второй запуск"})
if got := second.since(0); len(got) != 1 || got[0].Seq != 1 {
t.Fatalf("нумерация нового буфера: %+v", got)
}
}