diff --git a/changelog.json b/changelog.json index 52b05f1..dd12e45 100644 --- a/changelog.json +++ b/changelog.json @@ -3,10 +3,12 @@ "version": "0.27.3", "date": "", "en": [ - "KPA500: the amplifier no longer switches itself off and commands respond instantly. A command this model does not know (the KPA1500’s ATU poll) was tearing the link down every cycle, and each reconnect toggled the serial control lines — which are the KPA500’s power switch. The lines are now held steady, silence is not treated as a dead link, and the baud is picked from a list." + "KPA500: the amplifier no longer switches itself off and commands respond instantly. A command this model does not know (the KPA1500’s ATU poll) was tearing the link down every cycle, and each reconnect toggled the serial control lines — which are the KPA500’s power switch. The lines are now held steady, silence is not treated as a dead link, and the baud is picked from a list.", + "FT decodes: within a period, decodes are listed in arrival order — mirroring the decoder’s own window — instead of strongest-first." ], "fr": [ - "KPA500 : l’ampli ne s’éteint plus tout seul et les commandes répondent instantanément. Une commande inconnue de ce modèle (le poll ATU du KPA1500) détruisait le lien à chaque cycle, et chaque reconnexion basculait les lignes de contrôle série — qui sont l’interrupteur du KPA500. Les lignes sont désormais tenues stables, le silence n’est plus traité comme un lien mort, et le baud se choisit dans une liste." + "KPA500 : l’ampli ne s’éteint plus tout seul et les commandes répondent instantanément. Une commande inconnue de ce modèle (le poll ATU du KPA1500) détruisait le lien à chaque cycle, et chaque reconnexion basculait les lignes de contrôle série — qui sont l’interrupteur du KPA500. Les lignes sont désormais tenues stables, le silence n’est plus traité comme un lien mort, et le baud se choisit dans une liste.", + "FT decodes : dans une période, les décodages sont listés dans l’ordre d’arrivée — comme la fenêtre du décodeur — au lieu du plus fort d’abord." ] }, { diff --git a/frontend/src/components/DecodesPanel.tsx b/frontend/src/components/DecodesPanel.tsx index 0d41455..82af9ca 100644 --- a/frontend/src/components/DecodesPanel.tsx +++ b/frontend/src/components/DecodesPanel.tsx @@ -498,10 +498,11 @@ function buildPeriods(filtered: Decode[], txMsgs: TxMsg[]) { // the same way it was grouped. tr: trSeconds(g.decodes[0]?.mode ?? g.tx[0]?.mode, g.decodes[0]?.tr_period), tx: g.tx, - // Strongest first inside a period: the eye should land on what is - // workable, and time within a slot means nothing — they were all - // transmitting simultaneously. - decodes: g.decodes.sort((x, y) => y.snr - x.snr), + // ARRIVAL order inside a period, per the operator: it mirrors the + // decoder's own window line for line, which makes the two screens + // comparable at a glance — the strongest-first sort scrambled that + // correspondence, and SNR is right there in its column anyway. + decodes: g.decodes, })); }