From a71ef1bab09c113f5066f61167f4825db682183b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Papp?= Date: Tue, 2 Jun 2026 11:09:20 +0200 Subject: [PATCH 1/2] [client/ui] Guard session expiry updates to log only on change --- client/ui/tray_session.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/client/ui/tray_session.go b/client/ui/tray_session.go index 194cf834f..be6a55428 100644 --- a/client/ui/tray_session.go +++ b/client/ui/tray_session.go @@ -60,20 +60,23 @@ func (t *Tray) applySessionExpiry(deadline *time.Time, connected bool) { d = *deadline } - switch { - case deadline == nil: - log.Infof("tray applySessionExpiry: deadline= connected=%v → row hidden", connected) - case deadline.IsZero(): - log.Infof("tray applySessionExpiry: deadline= connected=%v → row hidden", connected) - default: - log.Infof("tray applySessionExpiry: deadline=%s (in %s) connected=%v", - deadline.Format(time.RFC3339), time.Until(*deadline), connected) - } - t.sessionMu.Lock() + changed := !t.sessionExpiresAt.Equal(d) t.sessionExpiresAt = d t.sessionMu.Unlock() + if changed { + switch { + case deadline == nil: + log.Infof("tray applySessionExpiry: deadline= connected=%v → row hidden", connected) + case deadline.IsZero(): + log.Infof("tray applySessionExpiry: deadline= connected=%v → row hidden", connected) + default: + log.Infof("tray applySessionExpiry: deadline=%s (in %s) connected=%v", + deadline.Format(time.RFC3339), time.Until(*deadline), connected) + } + } + if t.sessionExpiresItem == nil { return } From d1f3d88f0db7e169a83658034f4d77e3c273e8fc Mon Sep 17 00:00:00 2001 From: braginini Date: Tue, 2 Jun 2026 11:37:48 +0200 Subject: [PATCH 2/2] Rephrase session expiration --- client/ui/i18n/locales/de/common.json | 8 ++++---- client/ui/i18n/locales/en/common.json | 8 ++++---- client/ui/i18n/locales/hu/common.json | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/ui/i18n/locales/de/common.json b/client/ui/i18n/locales/de/common.json index f7586e3c0..9219ee98d 100644 --- a/client/ui/i18n/locales/de/common.json +++ b/client/ui/i18n/locales/de/common.json @@ -320,10 +320,10 @@ "sessionExpired.signIn": "Anmelden", "sessionAboutToExpire.title": "Sitzung läuft bald ab", - "sessionAboutToExpire.titleLater": "Sitzung läuft ab", - "sessionAboutToExpire.description": "Ihre NetBird-Sitzung läuft in Kürze ab. Bleiben Sie verbunden, damit Ihre Geräte online bleiben.", - "sessionAboutToExpire.descriptionLater": "Ihre NetBird-Sitzung läuft ab. Verlängern Sie jetzt, damit Ihre Geräte online bleiben.", - "sessionAboutToExpire.stay": "Verbunden bleiben", + "sessionAboutToExpire.titleLater": "Ihre Sitzung läuft ab", + "sessionAboutToExpire.description": "Dieses Gerät wird bald getrennt. Browser-Anmeldung zum Erneuern erforderlich.", + "sessionAboutToExpire.descriptionLater": "Eine Browser-Anmeldung hält dieses Gerät mit Ihrem Netzwerk verbunden.", + "sessionAboutToExpire.stay": "Sitzung erneuern", "sessionAboutToExpire.logout": "Abmelden", "sessionAboutToExpire.expired": "Sitzung abgelaufen", "sessionAboutToExpire.extendFailedTitle": "Sitzungsverlängerung fehlgeschlagen", diff --git a/client/ui/i18n/locales/en/common.json b/client/ui/i18n/locales/en/common.json index e830be5e1..6059888af 100644 --- a/client/ui/i18n/locales/en/common.json +++ b/client/ui/i18n/locales/en/common.json @@ -337,10 +337,10 @@ "sessionExpired.signIn": "Sign in", "sessionAboutToExpire.title": "Session expiring soon", - "sessionAboutToExpire.titleLater": "Session will expire", - "sessionAboutToExpire.description": "Your NetBird session will expire shortly. Stay connected to keep your devices online.", - "sessionAboutToExpire.descriptionLater": "Your NetBird session will expire. Extend now to keep your devices online.", - "sessionAboutToExpire.stay": "Stay connected", + "sessionAboutToExpire.titleLater": "Your session will expire", + "sessionAboutToExpire.description": "This device will disconnect soon. Renew with a browser sign-in.", + "sessionAboutToExpire.descriptionLater": "A browser sign-in keeps this device connected to your network.", + "sessionAboutToExpire.stay": "Renew session", "sessionAboutToExpire.logout": "Logout", "sessionAboutToExpire.expired": "Session expired", "sessionAboutToExpire.extendFailedTitle": "Extend Session Failed", diff --git a/client/ui/i18n/locales/hu/common.json b/client/ui/i18n/locales/hu/common.json index eb55dd61e..609d2c006 100644 --- a/client/ui/i18n/locales/hu/common.json +++ b/client/ui/i18n/locales/hu/common.json @@ -320,10 +320,10 @@ "sessionExpired.signIn": "Bejelentkezés", "sessionAboutToExpire.title": "A munkamenet hamarosan lejár", - "sessionAboutToExpire.titleLater": "A munkamenet lejár", - "sessionAboutToExpire.description": "A NetBird munkamenete hamarosan lejár. Maradjon csatlakoztatva, hogy az eszközei elérhetők maradjanak.", - "sessionAboutToExpire.descriptionLater": "A NetBird munkamenete lejár. Hosszabbítsa meg most, hogy az eszközei elérhetők maradjanak.", - "sessionAboutToExpire.stay": "Maradjon csatlakoztatva", + "sessionAboutToExpire.titleLater": "A munkamenete lejár", + "sessionAboutToExpire.description": "Az eszköz hamarosan lecsatlakozik. Megújításhoz böngészős bejelentkezés kell.", + "sessionAboutToExpire.descriptionLater": "Egy böngészős bejelentkezés a hálózaton tartja az eszközt.", + "sessionAboutToExpire.stay": "Munkamenet megújítása", "sessionAboutToExpire.logout": "Kijelentkezés", "sessionAboutToExpire.expired": "Munkamenet lejárt", "sessionAboutToExpire.extendFailedTitle": "A munkamenet meghosszabbítása sikertelen",