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