feat(stack-view): per-container health strip and structured logs viewer (#689)

* feat(stack-view): per-container health strip and structured logs viewer

Replaces the flat container list with a per-container health strip showing
healthcheck state, uptime, port mapping with an open-app link, and live
cpu/memory/network sparklines fed by a 60-sample ring buffer on the stats
WebSocket.

Adds a structured logs viewer that parses docker timestamps (emitted by the
-t flag on the logs stream) and classifies each line by level. Rows render
as a DOM grid with filter pills (all / info / warn / err with count),
following indicator, and plain-text download. A segmented toggle switches
between the structured viewer and the original xterm view; the choice is
persisted in localStorage.

* fix(stack-view): disable no-control-regex for ANSI escape pattern

ANSI escape sequences start with ESC (0x1B), which is a control character.
The regex is intentional and cannot be rewritten without it.
This commit is contained in:
Anso
2026-04-19 00:17:51 -04:00
committed by GitHub
parent 82aabfe64c
commit a65a1c0e86
5 changed files with 478 additions and 120 deletions
+1 -1
View File
@@ -285,7 +285,7 @@ export class ComposeService {
}
};
const child = spawn('docker', ['logs', '-f', '--tail', '100', containerName], {
const child = spawn('docker', ['logs', '-f', '-t', '--tail', '100', containerName], {
env: {
...process.env,
PATH: process.env.PATH || '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'