diff --git a/app_radios.go b/app_radios.go
index 2fe8d99..252e6d4 100644
--- a/app_radios.go
+++ b/app_radios.go
@@ -118,9 +118,16 @@ func (a *App) ActiveRadioID() string {
}
// RadioListEntry is what the status-bar menu needs: enough to draw a row.
+//
+// Name is what the OPERATOR typed, empty when they typed nothing; Label is what
+// to draw when there is no better idea. The two are separate because the caller
+// has a better idea than we do: the status bar knows what the radio calls
+// itself over CAT, and "FTDX10" beats "Radio 2" — but only where the operator
+// has not given it a name of their own, which beats both.
type RadioListEntry struct {
ID string `json:"id"`
Name string `json:"name"`
+ Label string `json:"label"`
Backend string `json:"backend"`
Active bool `json:"active"`
}
@@ -135,7 +142,7 @@ func (a *App) ListRadios() []RadioListEntry {
out := make([]RadioListEntry, 0, len(list))
for i, r := range list {
out = append(out, RadioListEntry{
- ID: r.ID, Name: radioLabel(r, i),
+ ID: r.ID, Name: strings.TrimSpace(r.Name), Label: radioLabel(r, i),
Backend: r.Settings.Backend, Active: r.ID == active,
})
}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 12a40b2..9f8c267 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -313,9 +313,17 @@ function RadioChip({ catUp, catState, onOpenSettings }: {
return () => document.removeEventListener('mousedown', onDoc);
}, [open]);
+ // What the operator called this radio comes first.
+ //
+ // The chip showed what the RADIO calls itself over CAT — "Kenwood (911)" for
+ // a K3, a bare "CAT" for a Flex that reports nothing useful — which is the
+ // answer to a question nobody asked once the rig has a name in the list. The
+ // model identity is still there, in the tooltip.
+ const active = radios.find((r: any) => r.active);
+ const named = (active?.name || '').trim();
const label = catUp
- ? (catState.rig || 'CAT')
- : (catState.enabled ? (shortCatError(catState.error) || 'CAT off') : 'CAT');
+ ? (named || catState.rig || 'CAT')
+ : (catState.enabled ? (named || shortCatError(catState.error) || 'CAT off') : (named || 'CAT'));
// The menu opens with ONE radio too.
//
// It was only shown from two, on the reasoning that a single radio has
@@ -330,9 +338,9 @@ function RadioChip({ catUp, catState, onOpenSettings }: {
))}
diff --git a/frontend/src/components/SettingsModal.tsx b/frontend/src/components/SettingsModal.tsx
index f28ec7e..8aff137 100644
--- a/frontend/src/components/SettingsModal.tsx
+++ b/frontend/src/components/SettingsModal.tsx
@@ -3224,7 +3224,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged
{radios.map((r: any, i: number) => (
- {r.name?.trim() || `Radio ${i + 1}`}
+ {r.name?.trim() || r.label || `Radio ${i + 1}`}
))}
diff --git a/frontend/wailsjs/go/models.ts b/frontend/wailsjs/go/models.ts
index b6a9427..5aa0560 100644
--- a/frontend/wailsjs/go/models.ts
+++ b/frontend/wailsjs/go/models.ts
@@ -3606,6 +3606,7 @@ export namespace main {
export class RadioListEntry {
id: string;
name: string;
+ label: string;
backend: string;
active: boolean;
@@ -3617,6 +3618,7 @@ export namespace main {
if ('string' === typeof source) source = JSON.parse(source);
this.id = source["id"];
this.name = source["name"];
+ this.label = source["label"];
this.backend = source["backend"];
this.active = source["active"];
}