logradar
What it is
Section titled “What it is”logradar tails and aggregates log streams from multiple providers at once — Docker containers, Azure Container Apps, shell commands, file tails — clusters the lines into pattern signatures, and renders the whole thing in a live three-pane TUI. Each pattern carries a rolling sparkline of its recent activity drawn in Unicode block characters, sources show animated status icons, and the user can cycle through eight named themes. It’s async (Tokio tasks per source feeding a bounded mpsc channel into the app event loop) and it’s a genuinely well-considered piece of monochrome-adjacent terminal rendering — which is why it’s the most directly applicable entry in Batch 8 for KN-86’s amber-on-black constraint.
Deckline relevance
Section titled “Deckline relevance”- Sparkline rendering via Unicode blocks — lift this wholesale. Each pattern tracks a 2-minute rolling history in 24 buckets (5-second intervals) and renders it as
▁▂▃▄▅▆▇█left-to-right, newest bucket on the right and bolded. Critically, it applies soft-cap normalization (3× the non-zero mean) so a single spike doesn’t flatten the rest of the line into invisibility — the height scale is chosen so typical activity uses the mid-range glyphs and only genuine outliers hit█. This is a complete, production sparkline recipe: fixed bucket count, rolling window, soft-cap normalization, emphasis on the newest sample. KN-86 should adopt it directly as a NoshAPI sparkline primitive — it’s the right answer for any cart rendering a time series (mission tempo, credit history, system load on the Bare Deck STATUS tab) on a single-color display. - Animated status icons as glyph-state, not color-state. Per-source lifecycle:
●running,◐(an animated spinner) starting,✖error,○stopped. These are distinct glyphs — each reads correctly with zero color, and the spinner animates by cycling glyph frames regardless of palette. This is the model for KN-86 status indication everywhere: coprocessor link state, cart load state, mission status — each gets a distinct character, not a colored dot. Maps onto the CIPHER-LINE Row-1 status strip and Row-0 status bar. - Three-pane hierarchy. Sources pane (grouped by provider, with status icons) ▸ patterns pane (signatures + sparklines + rates) ▸ details pane (full log context).
Tab/Shift+Tabswitch panes,Enterdrills (filter by source),bgoes back. The drill-and-back is the same nav-stack idiom as visidata and KN-86’sdrill-into/BACK. The three-pane master→detail layout is a candidate IA for any KN-86 cart that needs list ▸ summary ▸ detail (a mission browser: contracts ▸ phases ▸ phase detail). - The stats bar idiom. A single status line —
sources ▸ patterns ▸ events ▸ evt/m— using▸as a separator between live counters. Clean, dense, monochrome. Direct reference for KN-86’s Row-0 status bar composition: a row of counters separated by a box-drawing/triangle glyph. - Spike detection → emphasis shift. When a pattern’s rate anomalously jumps, its sparkline shifts to the theme accent. On KN-86 (below) this becomes an inversion or glyph emphasis shift rather than a hue shift — but the idea (the data visualization changes appearance to flag an anomaly the operator should notice) is the right one.
- Named-color-role theme system. Eight themes (Matrix, Nebula, Frostbyte, Amber, Deepwave, Signal, Obsidian, Mono), each a role-based palette — colors are assigned to semantic roles (accent, status-ok, status-error, dim) rather than hard-coded per widget, so swapping the palette needs no per-widget change. This is the exact architecture KN-86’s aesthetic-mode roster should use (cross-link the theme-editor idea from 4trk and os-models): define roles, let a
nosh-config.tomlpalette fill them. logradar shipping a Mono theme (“pure grayscale with strategic accents via shape emphasis, not hue”) is near-proof that the architecture already accommodates a single-color target — KN-86 is essentially “logradar locked to the Mono theme, amber instead of gray.”
Single-color adaptation
Section titled “Single-color adaptation”This is the entry where the color-vs-shape audit is most instructive, because logradar already separated the two cleanly:
Relies on shape / character / density (survives monochrome intact):
- Sparkline blocks
▁▂▃▄▅▆▇█— magnitude is the glyph’s height, fully independent of color. The soft-cap normalization that keeps the line legible is a math choice, not a color choice. This is the canonical “brightness+density with Unicode” technique KN-86 is built around; logradar is the best worked example in the corpus. - Status icons
● ◐ ✖ ○— state is the glyph identity; each reads in pure amber-on-black. The starting-spinner animates by frame-cycling, no color. - The
▸-separated stats bar, the ASCII wordmark banner, the three-pane frame — all positional/character, no color dependency. (The banner even has a graceful single-line fallback under 20 rows — a height-responsive layout lesson for KN-86’s fixed-25-row grid edge cases.)
Relies on color (must be re-encoded for KN-86):
- Spike highlight (accent-color sparkline) → re-encode as inversion of the spiking sparkline or a leading marker glyph (
▸▸/‼) before the line. The anomaly flag survives; the mechanism changes from hue to inversion. - Status-icon coloring (green/red/dim over the glyphs) → redundant on KN-86 and discardable, because the glyph identity already carries the state. The color was belt-and-suspenders; KN-86 keeps the belt.
- Trend indicators (color-coded directional symbols for 1-/5-min rates) → keep the directional symbol (
▲▼▬), drop the color. Direction is in the arrow, not the hue.
The takeaway: logradar’s entire information model survives the amber-on-black reframe, because every load-relevant signal is already carried by a glyph or a block-height, with color used only as redundant reinforcement. Its Mono theme is the existence proof. This is the strongest single-color-rendering reference in Batch 8 and a top candidate for the synthesis wave’s “how to do data viz on one color” section.
LISP-integration angle
Section titled “LISP-integration angle”logradar’s pattern-clustering — normalize a log line (strip ANSI), reduce it to a signature, group — is a data reduction the KN-86 Fe VM could express as Lisp: a cart’s “summarize this stream” handler is a (group-by signature lines) over normalized entries, with the sparkline a NoshAPI render of the per-group bucket counts. More directly, the sparkline + status-icon primitives belong in NoshAPI so any Lisp cart can call (draw-sparkline x y buckets) and (status-glyph state) without reimplementing the block math. logradar defines the primitives; Fe carts should get them as builtins.
- Batch 8. Flagged for the synthesis wave as the cluster’s strongest single-color-rendering reference. The sparkline recipe (24 buckets, soft-cap 3× mean, bold newest) and the glyph-state status icons are both directly adoptable as NoshAPI primitives.
- Cross-link 4trk.md and os-models.md — the theme-editor / named-palette lineage; logradar’s role-based palette + Mono theme is the architecture those entries’ theme-editor idea should sit on.
- Cross-link octoscope.md — both are live-refreshing rad/monitor TUIs; octoscope’s change-pulse + auto-refresh is the sibling of logradar’s spike-detection + rolling sparkline.
- Cross-link blessed-contrib.md — that entry catalogs sparkline/LCD/log-viewer widgets; logradar is a worked single-color application of the sparkline widget blessed-contrib merely lists.
- Cross-link visidata.md — frequency tables vs pattern-clustering are two takes on “reduce a stream to a digestible summary.”