diff --git a/changelog.json b/changelog.json index 180aef3..33916d7 100644 --- a/changelog.json +++ b/changelog.json @@ -3,11 +3,11 @@ "version": "0.23.6", "date": "", "en": [ - "Log viewer: the window now keeps about four times more history (1 MB instead of 256 KB, ~6500 lines). During a busy trace the oldest lines used to scroll out of the buffer while you were still reading them; the larger window holds them.", + "Log viewer: the window now keeps twice as much history (512 KB instead of 256 KB, ~3200 lines). During a busy trace the oldest lines used to scroll out of the buffer while you were still reading them; the larger window holds them.", "Ultrabeam over a remote link: fixed intermittent connection drops, phantom frequency jumps and wrong element-length readings. Replies weren't matched to the command that asked for them, so on a slow link a status query could pick up a lingering reply meant for another command — reading, say, the antenna's status where element lengths were expected. Every reply is now matched to its request by sequence number, and stale replies are discarded." ], "fr": [ - "Visionneuse de log : la fenêtre conserve environ quatre fois plus d'historique (1 Mo au lieu de 256 Ko, ~6500 lignes). Lors d'une trace chargée, les plus vieilles lignes défilaient hors du buffer pendant qu'on les lisait encore ; la fenêtre agrandie les garde.", + "Visionneuse de log : la fenêtre conserve deux fois plus d'historique (512 Ko au lieu de 256 Ko, ~3200 lignes). Lors d'une trace chargée, les plus vieilles lignes défilaient hors du buffer pendant qu'on les lisait encore ; la fenêtre agrandie les garde.", "Ultrabeam en remote : coupures de connexion intermittentes, sauts de fréquence fantômes et longueurs d'éléments erronées corrigés. Les réponses n'étaient pas associées à la commande qui les demandait : sur un lien lent, une requête de statut pouvait récupérer une réponse traînante destinée à une autre commande — lisant par exemple le statut de l'antenne là où on attendait les longueurs d'éléments. Chaque réponse est désormais appariée à sa requête par numéro de séquence, et les réponses périmées sont ignorées." ] }, diff --git a/frontend/src/components/LogViewer.tsx b/frontend/src/components/LogViewer.tsx index 1a22adb..2caaaa4 100644 --- a/frontend/src/components/LogViewer.tsx +++ b/frontend/src/components/LogViewer.tsx @@ -21,12 +21,13 @@ import { TailLogFile, GetLogFilePath } from '../../wailsjs/go/main/App'; // 256 KB blob: with "cluster" or "acom" typed in, the window becomes exactly // the subsystem trace you would have grepped for. // • It polls only while open. A closed dialog costs nothing. -// 1 MB ≈ 6500 lines. The window is a sliding tail: once new lines push past it +// 512 KB ≈ 3200 lines. The window is a sliding tail: once new lines push past it // the oldest fall out of the fetched text entirely, so a small buffer dropped // lines the operator was still reading during a busy trace (CAT/cluster/antenna -// polling). The backend caps this at 4 MB; 1 MB is a good balance against the -// per-poll payload while open. -const TAIL_BYTES = 1024 * 1024; +// polling). This is double the old 256 KB — 1 MB was tried but the per-second +// fetch + split + re-render of ~6500 lines made the window lag. 512 KB keeps a +// useful backlog while staying smooth. The backend caps this at 4 MB. +const TAIL_BYTES = 512 * 1024; const POLL_MS = 1000; export function LogViewer({ open, onOpenChange }: { open: boolean; onOpenChange: (v: boolean) => void }) {