<b>Choosing a source</b>

A source is a host and a port, optionally reached through a multicast group on a named
interface. Pass it on the command line, or let udpscope ask.

<b>How to reach it</b>

Run with <tt>--server</tt> and the app connects straight away. Run <i>without</i>
<tt>--server</tt> and a chooser appears first: the sessions udpscope has stored, newest
first, plus a <b>New host…</b> form for one it has not seen. The chooser runs before any
buffer is allocated and before any socket is opened, so declining it costs nothing.

<b>Worth knowing</b>

• The list is the sessions that <i>named a signal</i>. A session whose streamer was down
  stores empty slot names and is filtered out, which is what keeps the list the sources you
  actually configured rather than every port you have ever typed.
• A stored row reconnects the way it was reached. The multicast group and the interface are
  written inside the session file, because the file's name (<tt>host_port.toml</tt>) cannot
  carry them.
• <tt>--multicast</tt> still needs <tt>--server</tt>: the CONFIG message is fetched from the
  server, not from the group.
• The <tt>×</tt> beside a row deletes that session file. Nothing else is removed.

<b>Example</b>

<tt>udpscope</tt> with two stored sessions lists
<tt>127.0.0.1:8000  plots=1 signals=3</tt> and
<tt>10.0.0.5:8001  plots=2 signals=4 multicast=239.1.2.3 interface=10.0.0.9</tt>.
Activating the first reports <tt>[sources] picked 127.0.0.1:8000</tt> and continues into
the scope with that session's layout already loaded.
