From 7f7bee630f39313a23985b08a6314bc4058aab0f Mon Sep 17 00:00:00 2001
From: Eduard Gert
Date: Mon, 18 May 2026 10:56:27 +0200
Subject: [PATCH] update about settings dev version, keep profile switch in
sync between ui and tray
---
client/ui/frontend/src/i18n/locales/de/common.json | 2 ++
client/ui/frontend/src/i18n/locales/en/common.json | 2 ++
client/ui/frontend/src/i18n/locales/hu/common.json | 2 ++
.../frontend/src/modules/settings/SettingsAbout.tsx | 11 ++++++++++-
client/ui/tray.go | 8 ++++++++
5 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/client/ui/frontend/src/i18n/locales/de/common.json b/client/ui/frontend/src/i18n/locales/de/common.json
index 58279f93c..aa2412523 100644
--- a/client/ui/frontend/src/i18n/locales/de/common.json
+++ b/client/ui/frontend/src/i18n/locales/de/common.json
@@ -209,6 +209,8 @@
"settings.troubleshooting.stage.cancelling": "Wird abgebrochen…",
"settings.about.client": "NetBird Client v{version}",
+ "settings.about.clientName": "NetBird Client",
+ "settings.about.development": "[Entwicklung]",
"settings.about.gui": "Oberfläche v{version}",
"settings.about.copyright": "© {year} NetBird. Alle Rechte vorbehalten.",
"settings.about.links.imprint": "Impressum",
diff --git a/client/ui/frontend/src/i18n/locales/en/common.json b/client/ui/frontend/src/i18n/locales/en/common.json
index 7f4dc5774..82613bd13 100644
--- a/client/ui/frontend/src/i18n/locales/en/common.json
+++ b/client/ui/frontend/src/i18n/locales/en/common.json
@@ -209,6 +209,8 @@
"settings.troubleshooting.stage.cancelling": "Cancelling…",
"settings.about.client": "NetBird Client v{version}",
+ "settings.about.clientName": "NetBird Client",
+ "settings.about.development": "[Development]",
"settings.about.gui": "GUI v{version}",
"settings.about.copyright": "© {year} NetBird. All Rights Reserved.",
"settings.about.links.imprint": "Imprint",
diff --git a/client/ui/frontend/src/i18n/locales/hu/common.json b/client/ui/frontend/src/i18n/locales/hu/common.json
index f1d219a25..bec4186cf 100644
--- a/client/ui/frontend/src/i18n/locales/hu/common.json
+++ b/client/ui/frontend/src/i18n/locales/hu/common.json
@@ -209,6 +209,8 @@
"settings.troubleshooting.stage.cancelling": "Megszakítás…",
"settings.about.client": "NetBird Kliens v{version}",
+ "settings.about.clientName": "NetBird Kliens",
+ "settings.about.development": "[Fejlesztés]",
"settings.about.gui": "Felület v{version}",
"settings.about.copyright": "© {year} NetBird. Minden jog fenntartva.",
"settings.about.links.imprint": "Impresszum",
diff --git a/client/ui/frontend/src/modules/settings/SettingsAbout.tsx b/client/ui/frontend/src/modules/settings/SettingsAbout.tsx
index d71e74248..d3583e81e 100644
--- a/client/ui/frontend/src/modules/settings/SettingsAbout.tsx
+++ b/client/ui/frontend/src/modules/settings/SettingsAbout.tsx
@@ -37,7 +37,16 @@ export function SettingsAbout() {
className={"text-sm font-semibold text-nb-gray-100 cursor-default select-none"}
onClick={handleVersionClick}
>
- {t("settings.about.client", { version: daemonVersion })}
+ {daemonVersion === "development" ? (
+
+ {t("settings.about.clientName")}{" "}
+
+ {t("settings.about.development")}
+
+
+ ) : (
+ t("settings.about.client", { version: daemonVersion })
+ )}
{t("settings.about.gui", { version: guiVersion })}
diff --git a/client/ui/tray.go b/client/ui/tray.go
index a2872682b..7c181a414 100644
--- a/client/ui/tray.go
+++ b/client/ui/tray.go
@@ -136,6 +136,14 @@ func NewTray(app *application.App, window *application.WebviewWindow, svc TraySe
app.Event.On(services.EventStatus, t.onStatusEvent)
app.Event.On(services.EventSystem, t.onSystemEvent)
+ // Refresh the Profiles submenu when ProfileSwitcher fires the change.
+ // applyStatus already reloads on status-text transitions, but a
+ // switch on an idle daemon doesn't drive one — without this hook,
+ // a React-initiated switch leaves the tray's submenu and active-
+ // profile label stale.
+ app.Event.On(services.EventProfileChanged, func(*application.CustomEvent) {
+ go t.loadProfiles()
+ })
// Defer the first profile load until the macOS/GTK/Win32 menu impl is
// live — Menu.Update() short-circuits while app.running is false, and
// AppKit's main queue isn't ready earlier either (see d23ef34 InvokeSync