diff --git a/changelog.json b/changelog.json index 37a8782..c3e081b 100644 --- a/changelog.json +++ b/changelog.json @@ -7,14 +7,16 @@ "Super Check Partial: option to merge Club Log’s weekly call list (~180k calls heard on the air in the last 3 years) with MASTER.SCP.", "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." + "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." ], "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.", "Super Check Partial : option pour fusionner la liste hebdomadaire de Club Log (~180k indicatifs entendus sur l’air ces 3 dernières années) avec MASTER.SCP.", "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." + "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." ] }, { diff --git a/frontend/src/components/RecentQSOsGrid.tsx b/frontend/src/components/RecentQSOsGrid.tsx index 8d6170c..ef9c46f 100644 --- a/frontend/src/components/RecentQSOsGrid.tsx +++ b/frontend/src/components/RecentQSOsGrid.tsx @@ -786,7 +786,11 @@ export function RecentQSOsGrid({ rows, myGrid, selectAllSignal, selectRowSignal,
{GROUP_ORDER.map((group) => { - const cols = COL_CATALOG.filter((c) => c.group === group); + // Alphabetical within the group: the catalog's order is the + // GRID's column order, which appends newcomers at the end — so + // the two ClubLog rows sat at opposite ends of the Uploads box. + const cols = COL_CATALOG.filter((c) => c.group === group) + .slice().sort((a, b) => (a.label ?? '').localeCompare(b.label ?? '')); if (cols.length === 0) return null; return (