The decode SSE stream and the history behind it are not rig-scoped: every rig's decodes reach the browser, each carrying the rig that heard it. The panels on the decoder tabs want that — they aggregate the whole station — but the mini views over the waterfall caption the spectrum underneath, and they were reading the same unfiltered histories. A background rig copying APRS on another band put its frames over the active rig's waterfall. The mode gate did not help: it reads the mode of the rig on screen, so those frames appeared whenever that rig happened to be in PKT. Filter each overlay on the rig it belongs to, through one shared predicate that compares a decode's rig_id with the per-tab active rig already driving the spectrum and the audio. A decode that names no rig, and a session that has not learnt its rig list yet, still show everything. The FTx normalizer was dropping rig_id on the floor, so it now keeps it. CW needed more than a filter: its lines accumulate character by character, so two rigs copying at once braided their text into one unreadable line. Lines in progress are now kept per rig. The bar repaints in render() move into refreshDecodeBars(), which the rig switch calls as well — otherwise the outgoing rig's frames stayed on screen until the next state update — and which finally includes the CW bar. Closes #49 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyX26FCpMQxiBoC7r5K1A7 Signed-off-by: Stan Grams <sjg@haxx.space>
13 lines
349 B
JavaScript
13 lines
349 B
JavaScript
import {
|
|
initializeFt8FamilyBar,
|
|
initializeFtxDecoder,
|
|
installFtxCompatibilityHelpers
|
|
} from "./chunk-K3D6FOP5.js";
|
|
import "./chunk-BQQXSNLC.js";
|
|
import "./chunk-KL66PICH.js";
|
|
|
|
// src/plugins/ft8.ts
|
|
installFtxCompatibilityHelpers();
|
|
initializeFt8FamilyBar();
|
|
initializeFtxDecoder({ id: "ft8", label: "FT8", periodMs: 15e3, periodDigits: 0 });
|