From 8846cba40c09eaf08d03b17644e7718831af02d6 Mon Sep 17 00:00:00 2001 From: rouggy Date: Mon, 31 Aug 2026 11:59:14 +0200 Subject: [PATCH] feat(confirmations): a Club Log received default, No out of the box MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Confirmations page's Club Log row gains its received side, applied to every new QSO the way QRZ.com's already is — so the match download's Y stands out against a ledger of explicit Ns. --- app.go | 9 +++++++-- changelog.json | 6 ++++-- frontend/src/components/SettingsModal.tsx | 9 ++++++--- frontend/wailsjs/go/models.ts | 2 ++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app.go b/app.go index 744d89a..99ed2ce 100644 --- a/app.go +++ b/app.go @@ -357,6 +357,7 @@ const ( keyQSLDefaultEQSLSent = "qsl.eqsl_sent" keyQSLDefaultEQSLRcvd = "qsl.eqsl_rcvd" keyQSLDefaultClublogStatus = "qsl.clublog_status" + keyQSLDefaultClublogCfm = "qsl.clublog_confirmed" keyQSLDefaultHRDLogStatus = "qsl.hrdlog_status" keyQSLDefaultQRZComStatus = "qsl.qrzcom_status" keyQSLDefaultQRZComCfm = "qsl.qrzcom_confirmed" @@ -439,6 +440,7 @@ type QSLDefaults struct { EQSLSent string `json:"eqsl_sent"` EQSLRcvd string `json:"eqsl_rcvd"` ClublogStatus string `json:"clublog_status"` + ClublogCfm string `json:"clublog_confirmed"` // Club Log match/download status HRDLogStatus string `json:"hrdlog_status"` QRZComStatus string `json:"qrzcom_status"` QRZComCfm string `json:"qrzcom_confirmed"` // QRZ.com download/confirmed status @@ -10938,7 +10940,7 @@ func defaultQSLDefaults() QSLDefaults { QSLSent: "N", QSLRcvd: "N", EQSLSent: "R", EQSLRcvd: "N", LOTWSent: "R", LOTWRcvd: "N", - ClublogStatus: "R", HRDLogStatus: "R", + ClublogStatus: "R", ClublogCfm: "N", HRDLogStatus: "R", QRZComStatus: "R", QRZComCfm: "N", } } @@ -10957,7 +10959,7 @@ func (a *App) GetQSLDefaults() (QSLDefaults, error) { keyQSLDefaultQSLSent, keyQSLDefaultQSLRcvd, keyQSLDefaultLOTWSent, keyQSLDefaultLOTWRcvd, keyQSLDefaultEQSLSent, keyQSLDefaultEQSLRcvd, - keyQSLDefaultClublogStatus, keyQSLDefaultHRDLogStatus, + keyQSLDefaultClublogStatus, keyQSLDefaultClublogCfm, keyQSLDefaultHRDLogStatus, keyQSLDefaultQRZComStatus, keyQSLDefaultQRZComCfm, keyQSLDefaultHamlogStatus, keyQSLDefaultHamlogCfm, ) @@ -10971,6 +10973,7 @@ func (a *App) GetQSLDefaults() (QSLDefaults, error) { out.EQSLSent = m[keyQSLDefaultEQSLSent] out.EQSLRcvd = m[keyQSLDefaultEQSLRcvd] out.ClublogStatus = m[keyQSLDefaultClublogStatus] + out.ClublogCfm = m[keyQSLDefaultClublogCfm] out.HRDLogStatus = m[keyQSLDefaultHRDLogStatus] out.QRZComStatus = m[keyQSLDefaultQRZComStatus] out.QRZComCfm = m[keyQSLDefaultQRZComCfm] @@ -10994,6 +10997,7 @@ func (a *App) SaveQSLDefaults(d QSLDefaults) error { keyQSLDefaultEQSLSent: strings.ToUpper(strings.TrimSpace(d.EQSLSent)), keyQSLDefaultEQSLRcvd: strings.ToUpper(strings.TrimSpace(d.EQSLRcvd)), keyQSLDefaultClublogStatus: strings.ToUpper(strings.TrimSpace(d.ClublogStatus)), + keyQSLDefaultClublogCfm: strings.ToUpper(strings.TrimSpace(d.ClublogCfm)), keyQSLDefaultHRDLogStatus: strings.ToUpper(strings.TrimSpace(d.HRDLogStatus)), keyQSLDefaultQRZComStatus: strings.ToUpper(strings.TrimSpace(d.QRZComStatus)), keyQSLDefaultQRZComCfm: strings.ToUpper(strings.TrimSpace(d.QRZComCfm)), @@ -11046,6 +11050,7 @@ func applyQSLDefaultsTo(q *qso.QSO, d QSLDefaults) { fill(&q.EQSLSent, d.EQSLSent) fill(&q.EQSLRcvd, d.EQSLRcvd) fill(&q.ClublogUploadStatus, d.ClublogStatus) + fill(&q.ClublogDownloadStatus, d.ClublogCfm) fill(&q.HRDLogUploadStatus, d.HRDLogStatus) fill(&q.QRZComUploadStatus, d.QRZComStatus) fill(&q.QRZComDownloadStatus, d.QRZComCfm) diff --git a/changelog.json b/changelog.json index c3e081b..49869c7 100644 --- a/changelog.json +++ b/changelog.json @@ -8,7 +8,8 @@ "Fixed: opening the app could silently stop at startup (settings showing as default, “db not initialized”) when a database migration targeted a table that database no longer holds — migrations now skip what does not apply, and a startup failure is written to the log.", "FT Map / Grid squares: the map no longer floats above the menus and the Preferences dialog.", "KPA500: saving ANY settings page no longer power-cycles the amplifier. A save rebuilt every amplifier connection, and closing the COM port drops DTR/RTS — the KPA500’s power switch. An unchanged amplifier now keeps its running connection across saves.", - "Column picker: columns are listed alphabetically inside each group." + "Column picker: columns are listed alphabetically inside each group.", + "Confirmations: a “Club Log received” default for new QSOs, set to No out of the box — the match download flips it to Y." ], "fr": [ "QSL Manager : confirmations Club Log — télécharge vos matches de log (API getmatches) et remplit deux nouvelles colonnes, statut et date de match ClubLog, disponibles partout : colonnes du tableau, filtres, édition groupée et éditeur de QSO.", @@ -16,7 +17,8 @@ "Corrigé : l’application pouvait se figer silencieusement au démarrage (réglages par défaut, « db not initialized ») quand une migration visait une table absente de cette base — les migrations ignorent désormais ce qui ne s’applique pas, et un échec de démarrage est écrit dans le log.", "FT Map / Grid squares : la carte ne passe plus au-dessus des menus et de la fenêtre Préférences.", "KPA500 : sauvegarder n’importe quelle page des réglages n’éteint plus l’ampli. Une sauvegarde reconstruisait chaque connexion d’ampli, et fermer le port COM relâche DTR/RTS — l’interrupteur d’alimentation du KPA500. Un ampli inchangé garde désormais sa connexion à travers les sauvegardes.", - "Sélecteur de colonnes : les colonnes sont triées alphabétiquement dans chaque groupe." + "Sélecteur de colonnes : les colonnes sont triées alphabétiquement dans chaque groupe.", + "Confirmations : un défaut « Club Log reçu » pour les nouveaux QSO, à Non par défaut — le téléchargement des matches le passe à Y." ] }, { diff --git a/frontend/src/components/SettingsModal.tsx b/frontend/src/components/SettingsModal.tsx index 90143a0..bd1d333 100644 --- a/frontend/src/components/SettingsModal.tsx +++ b/frontend/src/components/SettingsModal.tsx @@ -1822,7 +1822,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged qsl_sent: string; qsl_rcvd: string; lotw_sent: string; lotw_rcvd: string; eqsl_sent: string; eqsl_rcvd: string; - clublog_status: string; hrdlog_status: string; qrzcom_status: string; + clublog_status: string; clublog_confirmed: string; hrdlog_status: string; qrzcom_status: string; qrzcom_confirmed: string; hamlog_status: string; hamlog_confirmed: string; }; @@ -1830,7 +1830,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged qsl_sent: '', qsl_rcvd: '', lotw_sent: '', lotw_rcvd: '', eqsl_sent: '', eqsl_rcvd: '', - clublog_status: '', hrdlog_status: '', qrzcom_status: '', + clublog_status: '', clublog_confirmed: '', hrdlog_status: '', qrzcom_status: '', qrzcom_confirmed: '', hamlog_status: '', hamlog_confirmed: '', }); @@ -5709,7 +5709,10 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged {renderSelect('clublog_status', FULL_OPTIONS)} -
+
+ + {renderSelect('clublog_confirmed', FULL_OPTIONS)} +
{/* HRDLog */}
diff --git a/frontend/wailsjs/go/models.ts b/frontend/wailsjs/go/models.ts index 54f4379..907b2bd 100644 --- a/frontend/wailsjs/go/models.ts +++ b/frontend/wailsjs/go/models.ts @@ -3294,6 +3294,7 @@ export namespace main { eqsl_sent: string; eqsl_rcvd: string; clublog_status: string; + clublog_confirmed: string; hrdlog_status: string; qrzcom_status: string; qrzcom_confirmed: string; @@ -3313,6 +3314,7 @@ export namespace main { this.eqsl_sent = source["eqsl_sent"]; this.eqsl_rcvd = source["eqsl_rcvd"]; this.clublog_status = source["clublog_status"]; + this.clublog_confirmed = source["clublog_confirmed"]; this.hrdlog_status = source["hrdlog_status"]; this.qrzcom_status = source["qrzcom_status"]; this.qrzcom_confirmed = source["qrzcom_confirmed"];