Foundation for append-only log rendering and HTTP log streaming.
- FormattedLine gains a stable, monotonically increasing `id` (new
lineId.ts sequence), assigned centrally in formatLogs. Internal
formatters now return id-less FormattedLineContent. This lets the
viewer use `track by log.id` so already-rendered rows are never
re-bound (fixes the text-selection collapse).
- formatJSONLine: runtime guard so a bare JSON string/array log line
falls back to plain text instead of rendering Object.keys as
`0=h 1=e ...`.
- createLogStreamProcessor: stateful demuxer that buffers streamed text,
emits only complete lines (carrying the partial remainder), and reuses
formatLogs/stripHeadersFunc for Docker 8-byte frame demux.
- Unit tests for the demuxer, stable-id assignment and the JSON guard.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>