document the source chooser
Both files, per this project's rule: the probe entries and the two invariants in CLAUDE.md, the feature and why the list is filtered in README.
This commit is contained in:
1 parent
54e840e590
commit
b8d0ce8625
2 files changed
+63
No files matched your search
@@ -458,6 +458,30 @@ a math channel's name and that name only exists as a signal once its graph is in
|
||||
reopened on the same source comes back as the one that was closed — including a signal that was
|
||||
enabled only to feed a math channel.
|
||||
|
||||
**Launched with no `--server`, udpscope asks which source to open.** It used to connect to
|
||||
`127.0.0.1:8000` because that is the default in `Config` — fine for one streamer, useless for
|
||||
several, and there was no way to see which sources the app already knew about. The chooser lists
|
||||
one row per stored session: the server and port it was named after, how many plots and signals it
|
||||
held, and its multicast group when it had one, newest first. `New host…` is a four-field form —
|
||||
server, port, multicast group, interface — and nothing more: `--buffer-mb` and the rest are tuning
|
||||
rather than "which source", and a form that asks for them is a form you have to read before using
|
||||
the app. Cancel exits before anything is allocated, because declining to choose a source is not a
|
||||
failure.
|
||||
|
||||
It runs **before the model exists**, which is the whole reason it is cheap: no buffer, no socket
|
||||
and no window until a source is known, and `ScopeModel`, `Acquisition` and `run_ui()` are
|
||||
untouched by the feature. Every headless probe passes `--server`, so none of them reaches it.
|
||||
|
||||
Two things the list had to get right. A session file is named `<host>_<port>.toml` and that name
|
||||
cannot say whether the source was multicast or which interface it joined on, so the file now
|
||||
records both — in the top block, before the first table, because a bare key written after a
|
||||
`[[table]]` header belongs to that table in TOML, which is how the `enabled` key was silently lost
|
||||
once already. And the list is **filtered to sessions that name a signal**: a development machine
|
||||
accumulates one file per probe run on a throwaway port — 140 of them here, every one with
|
||||
`signals = ["", "", "", ""]` — so an unfiltered chooser opens as a wall of ports nobody chose. A
|
||||
row's `×` forgets a source by deleting its session file, with no confirmation: the gesture is the
|
||||
confirmation, and what it destroys is one layout the app rewrites on the next clean exit.
|
||||
|
||||
**Math channels.** A math channel is derived from the others by a graph of operations and is then
|
||||
an *ordinary channel*: the model synthesises a signal entry for it, so an enabled one is acquired,
|
||||
plotted, measured, exported and listed in the signal panel exactly like a streamed signal — and
|
||||
|
||||
Reference in new issue
Block a user