<b>Status bar and diagnostics</b>

The status bar is two tiers. The bar itself is one glance line — the state, the rate and the
window — and everything else is behind the ⓘ button at its right-hand end.

<b>How to reach it</b>

The bar is always visible under the plot. Click <b>ⓘ</b> for the detail popover.

<b>Worth knowing</b>

• The badge is one glyph in four colours: green <i>alternating</i> lit and dim means data is
  arriving, and a steady colour means it is not. A badge that never blinks is not a working badge.
  Of the two steady colours, <i>grey</i> is no stream at all or a pipeline you stopped (the
  tooltip says which), and <i>yellow</i> is a source that answered but has sent no configuration.
• The state field is one word from a fixed set: <tt>connecting</tt>, <tt>live</tt>,
  <tt>paused</tt>, <tt>armed</tt>, <tt>capturing</tt>, <tt>event held</tt>, <tt>disarmed</tt>. Two
  states add one field each: in trigger mode, how long ago the last event was; while paused, how
  long you have been paused.
• <tt>connecting</tt> means there is no <i>signal list</i> yet — either no session or a session
  with no configuration behind it. Every other word claims a signal list, so until one arrives
  there is nothing for them to describe: nothing can be enabled and no data is owed.
• The paused figure is <i>wall</i> time, not stream time — the producer never stops while paused,
  so it answers "how long have I been looking at this picture".
• Nothing on the bar may change width with the stream, because the bar sits directly above the
  plot and a wider label would relayout it. That is why the rate collapses to one figure or a
  range rather than listing per channel, and why an elapsed time steps to a coarser unit instead
  of growing digits.
• <tt>gaps</tt> counts packets the receiver knows it missed. It is the number that matters: a
  non-zero count means samples are absent from the buffer, not merely late.
• <tt>reconnects</tt> counts sessions re-established with the source. Over unicast a climbing
  count usually means a second client is taking the source's single session.
• The starvation notice — <i>connected, but no data is arriving</i> — is that same situation seen
  from the other side: the signal list is here, so something took the stream away. A source that
  has sent <i>no</i> configuration gets a different notice, <i>trying to connect</i>, because
  nothing was taken away — pointing the app at a port where nothing answers is that case, and the
  usual cause is a streamer that is not running or is serving another port.
• <tt>stored</tt> versus <tt>wire</tt> in the popover is the decimation. They differ exactly
  when the window is too long to store at full rate.

<b>Example</b>

The bar reads <tt>● live · 10 kS/s · 2 s window</tt>. Behind ⓘ:
<tt>Stream  connected, configured / packets 717 · frames 716 · gaps 0 / 3 signals · 3 channels</tt>,
<tt>Buffer  200.0 MB · 1677 s span · time x1 / stored 10 kS/s (wire 10 kS/s)</tt>,
<tt>Plot 1  3 traces · 195000 samples</tt>, <tt>Reconnects  0</tt>.
