From 1288b3f998c50fb1b87e580dd500a56d7a29b1d9 Mon Sep 17 00:00:00 2001 From: rouggy Date: Sun, 30 Aug 2026 20:31:05 +0200 Subject: [PATCH] feat(decodes): the two-letter US state in the status column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plain text, not a badge — it is a fact, not an action — placed first so a WAS chaser can scan the column edge. Shown whenever the status cache knows the state (log county data or the licence address). --- changelog.json | 10 ++++++++++ frontend/src/components/DecodesPanel.tsx | 8 ++++++++ frontend/src/lib/i18n.tsx | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/changelog.json b/changelog.json index 3131104..c499fb6 100644 --- a/changelog.json +++ b/changelog.json @@ -1,4 +1,14 @@ [ + { + "version": "0.27.4", + "date": "", + "en": [ + "FT decodes: the status column shows the two-letter US state when known — for the WAS chasers." + ], + "fr": [ + "FT decodes : la colonne statut affiche l’état US en deux lettres quand il est connu — pour les chasseurs de WAS." + ] + }, { "version": "0.27.3", "date": "", diff --git a/frontend/src/components/DecodesPanel.tsx b/frontend/src/components/DecodesPanel.tsx index 82af9ca..49585c4 100644 --- a/frontend/src/components/DecodesPanel.tsx +++ b/frontend/src/components/DecodesPanel.tsx @@ -74,6 +74,7 @@ type StatusEntry = { new_grid?: boolean; // "new" = never worked, "unconf" = worked and awaiting a confirmation. grid_state?: string; + state?: string; grid?: string; lotw?: boolean; }; @@ -1105,6 +1106,13 @@ export function DecodesPanel({ decodes, txMsgs, txState, txStates, spotStatus, o right edge, shortest first so the eye can scan the column rather than read it. */} + {/* The two-letter US state, when the log or the licence data + knows it — a WAS chaser reads the column for exactly + this. Plain text, not a badge: it is a fact, not an + action. */} + {e?.state && ( + {e.state} + )} {e?.lotw && ( L )} diff --git a/frontend/src/lib/i18n.tsx b/frontend/src/lib/i18n.tsx index f70b07c..5ee31de 100644 --- a/frontend/src/lib/i18n.tsx +++ b/frontend/src/lib/i18n.tsx @@ -176,7 +176,7 @@ const en: Dict = { 'dec.colFreq': 'Freq', 'dec.colFreqTitle': 'Audio offset inside the passband (Hz)', 'dec.txNow': 'Transmitting', 'dec.txIdle': 'Transmit', 'dec.working': 'calling', 'dec.toYou': 'to you', 'dec.txUnknown': 'transmitting — text not reported', 'dec.txNothing': 'nothing being sent', - 'dec.colTime': 'Time', 'dec.colSnr': 'SNR', 'dec.colMsg': 'Message', 'dec.bgGridUnconf': 'GRID?', 'dec.bgGridUnconfTip': 'This square is worked but not yet confirmed — a QSL to chase, not a QSO to make.', 'dec.colGrid': 'Grid', 'dec.colCountry': 'Country', 'dec.colBand': 'Band', 'dec.colMode': 'Mode', 'dec.colStatus': 'Status', 'dec.wkd': 'Wkd', + 'dec.colTime': 'Time', 'dec.colSnr': 'SNR', 'dec.colMsg': 'Message', 'dec.bgGridUnconf': 'GRID?', 'dec.bgGridUnconfTip': 'This square is worked but not yet confirmed — a QSL to chase, not a QSO to make.', 'dec.colGrid': 'Grid', 'dec.colCountry': 'Country', 'dec.colBand': 'Band', 'dec.colMode': 'Mode', 'dec.colStatus': 'Status', 'dec.stateTip': 'US state', 'dec.wkd': 'Wkd', 'dec.bgPota': 'POTA', 'dec.bgGrid': 'GRID', 'dec.bgPfx': 'PFX', 'dec.bgCounty': 'CTY', 'dec.stNew': 'NEW', 'dec.stBand': 'BAND', 'dec.stMode': 'MODE', 'dec.stSlot': 'SLOT', 'dec.stCall': 'CALL', 'dec.empty': 'Nothing decoded yet. Decodes arrive from WSJT-X, JTDX or MSHV over the inbound UDP link (Settings -> UDP).', @@ -696,7 +696,7 @@ const fr: Dict = { 'dec.colFreq': 'Freq', 'dec.colFreqTitle': 'Decalage audio dans la bande passante (Hz)', 'dec.txNow': 'En emission', 'dec.txIdle': 'Emission', 'dec.working': 'appelle', 'dec.toYou': 'pour toi', 'dec.txUnknown': 'en émission — texte non communiqué', 'dec.txNothing': 'rien en cours d’émission', - 'dec.colTime': 'Heure', 'dec.colSnr': 'SNR', 'dec.colMsg': 'Message', 'dec.bgGridUnconf': 'GRID?', 'dec.bgGridUnconfTip': 'Ce carré est contacté mais pas encore confirmé — une QSL à relancer, pas un QSO à faire.', 'dec.colGrid': 'Locator', 'dec.colCountry': 'Pays', 'dec.colBand': 'Bande', 'dec.colMode': 'Mode', 'dec.colStatus': 'Statut', 'dec.wkd': 'Fait', + 'dec.colTime': 'Heure', 'dec.colSnr': 'SNR', 'dec.colMsg': 'Message', 'dec.bgGridUnconf': 'GRID?', 'dec.bgGridUnconfTip': 'Ce carré est contacté mais pas encore confirmé — une QSL à relancer, pas un QSO à faire.', 'dec.colGrid': 'Locator', 'dec.colCountry': 'Pays', 'dec.colBand': 'Bande', 'dec.colMode': 'Mode', 'dec.colStatus': 'Statut', 'dec.stateTip': 'État US', 'dec.wkd': 'Fait', 'dec.bgPota': 'POTA', 'dec.bgGrid': 'LOC', 'dec.bgPfx': 'PFX', 'dec.bgCounty': 'CTY', 'dec.stNew': 'NOUV', 'dec.stBand': 'BANDE', 'dec.stMode': 'MODE', 'dec.stSlot': 'SLOT', 'dec.stCall': 'IND', 'dec.empty': "Aucun decode pour l'instant. Ils arrivent de WSJT-X, JTDX ou MSHV par le lien UDP entrant (Reglages -> UDP).",