From c9e3e790dc8a34407e7a2dcea8787dc8bf2ac082 Mon Sep 17 00:00:00 2001
From: larena1 <60823161+larena1@users.noreply.github.com>
Date: Tue, 24 Mar 2026 23:00:10 +0100
Subject: [PATCH] Reconnect without notification
---
.../Configuration/ConfigMqtt.Designer.cs | 20 ---
.../Controls/Configuration/ConfigMqtt.cs | 5 -
.../HASS.Agent/Forms/Configuration.cs | 2 -
src/HASS.Agent/HASS.Agent/MQTT/MqttManager.cs | 152 ++++--------------
.../HASS.Agent/Models/Config/AppSettings.cs | 1 -
.../Localization/Languages.Designer.cs | 12 +-
.../Resources/Localization/Languages.de.resx | 3 -
.../Resources/Localization/Languages.en.resx | 3 -
.../Resources/Localization/Languages.es.resx | 3 -
.../Resources/Localization/Languages.fr.resx | 3 -
.../Resources/Localization/Languages.nl.resx | 3 -
.../Resources/Localization/Languages.pl.resx | 3 -
.../Localization/Languages.pt-br.resx | 3 -
.../Resources/Localization/Languages.resx | 3 -
.../Resources/Localization/Languages.ru.resx | 3 -
.../Resources/Localization/Languages.sl.resx | 3 -
.../Resources/Localization/Languages.tr.resx | 3 -
17 files changed, 35 insertions(+), 190 deletions(-)
diff --git a/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.Designer.cs b/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.Designer.cs
index d404552a..d5c734f6 100644
--- a/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.Designer.cs
+++ b/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.Designer.cs
@@ -57,7 +57,6 @@ private void InitializeComponent()
this.LblClientId = new System.Windows.Forms.Label();
this.NumMqttPort = new Syncfusion.Windows.Forms.Tools.NumericUpDownExt();
this.PbShow = new System.Windows.Forms.PictureBox();
- this.CbIgnoreGracePeriod = new System.Windows.Forms.CheckBox();
this.CbEnableMqtt = new System.Windows.Forms.CheckBox();
this.LblMqttDisabledWarning = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.NumMqttPort)).BeginInit();
@@ -476,23 +475,6 @@ private void InitializeComponent()
this.LblMqttDisabledWarning.Text = Languages.ConfigMqtt_LblMqttDisabledWarning;
this.LblMqttDisabledWarning.Visible = false;
//
- // CbIgnoreGracePeriod
- //
- this.CbIgnoreGracePeriod.AccessibleDescription = "Ignore grace period after waking up from hibernation.";
- this.CbIgnoreGracePeriod.AccessibleName = "Ignore grace period";
- this.CbIgnoreGracePeriod.AccessibleRole = AccessibleRole.CheckButton;
- this.CbIgnoreGracePeriod.AutoSize = true;
- this.CbIgnoreGracePeriod.Checked = false;
- this.CbIgnoreGracePeriod.CheckState = CheckState.Unchecked;
- this.CbIgnoreGracePeriod.Font = new Font("Segoe UI", 10F);
- this.CbIgnoreGracePeriod.Location = new Point(59, 612);
- this.CbIgnoreGracePeriod.Name = "CbIgnoreGracePeriod";
- this.CbIgnoreGracePeriod.Size = new Size(354, 23);
- this.CbIgnoreGracePeriod.TabIndex = 103;
- this.CbIgnoreGracePeriod.Text = Languages.ConfigMqtt_CbIgnoreGracePeriod;
- this.CbIgnoreGracePeriod.UseVisualStyleBackColor = true;
- this.CbIgnoreGracePeriod.CheckedChanged += new System.EventHandler(this.CbIgnoreGracePeriod_CheckedChanged);
- //
// ConfigMqtt
//
this.AccessibleDescription = "Panel containing the MQTT client configuration.";
@@ -501,7 +483,6 @@ private void InitializeComponent()
this.AutoScaleDimensions = new SizeF(96F, 96F);
this.AutoScaleMode = AutoScaleMode.Dpi;
this.BackColor = Color.FromArgb(45, 45, 48);
- this.Controls.Add(CbIgnoreGracePeriod);
this.Controls.Add(LblMqttDisabledWarning);
this.Controls.Add(CbEnableMqtt);
this.Controls.Add(PbShow);
@@ -571,6 +552,5 @@ private void InitializeComponent()
private PictureBox PbShow;
internal CheckBox CbEnableMqtt;
private Label LblMqttDisabledWarning;
- internal CheckBox CbIgnoreGracePeriod;
}
}
diff --git a/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.cs b/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.cs
index cf85f27d..7949b70d 100644
--- a/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.cs
+++ b/src/HASS.Agent/HASS.Agent/Controls/Configuration/ConfigMqtt.cs
@@ -61,10 +61,5 @@ private void CbEnableMqtt_CheckedChanged(object sender, EventArgs e)
{
LblMqttDisabledWarning.Visible = CbEnableMqtt.CheckState != CheckState.Checked;
}
-
- private void CbIgnoreGracePeriod_CheckedChanged(object sender, EventArgs e)
- {
-
- }
}
}
diff --git a/src/HASS.Agent/HASS.Agent/Forms/Configuration.cs b/src/HASS.Agent/HASS.Agent/Forms/Configuration.cs
index b82a4261..0db1af3b 100644
--- a/src/HASS.Agent/HASS.Agent/Forms/Configuration.cs
+++ b/src/HASS.Agent/HASS.Agent/Forms/Configuration.cs
@@ -328,7 +328,6 @@ private void LoadSettings()
_mqtt.CbAllowUntrustedCertificates.CheckState = Variables.AppSettings.MqttAllowUntrustedCertificates ? CheckState.Checked : CheckState.Unchecked;
_mqtt.CbUseRetainFlag.CheckState = Variables.AppSettings.MqttUseRetainFlag ? CheckState.Checked : CheckState.Unchecked;
_mqtt.CbUseWebSocket.CheckState = Variables.AppSettings.MqttUseWebSocket ? CheckState.Checked : CheckState.Unchecked;
- _mqtt.CbIgnoreGracePeriod.CheckState = Variables.AppSettings.MqttIgnoreGracePeriod ? CheckState.Checked : CheckState.Unchecked;
// updates
_updates.CbUpdates.CheckState = Variables.AppSettings.CheckForUpdates ? CheckState.Checked : CheckState.Unchecked;
@@ -436,7 +435,6 @@ private async Task StoreSettingsAsync()
Variables.AppSettings.MqttAllowUntrustedCertificates = _mqtt.CbAllowUntrustedCertificates.CheckState == CheckState.Checked;
Variables.AppSettings.MqttUseRetainFlag = _mqtt.CbUseRetainFlag.CheckState == CheckState.Checked;
Variables.AppSettings.MqttUseWebSocket = _mqtt.CbUseWebSocket.CheckState == CheckState.Checked;
- Variables.AppSettings.MqttIgnoreGracePeriod = _mqtt.CbIgnoreGracePeriod.CheckState == CheckState.Checked;
// mqtt -> service
await SettingsManager.SendMqttSettingsToServiceAsync();
diff --git a/src/HASS.Agent/HASS.Agent/MQTT/MqttManager.cs b/src/HASS.Agent/HASS.Agent/MQTT/MqttManager.cs
index e266db46..109965a0 100644
--- a/src/HASS.Agent/HASS.Agent/MQTT/MqttManager.cs
+++ b/src/HASS.Agent/HASS.Agent/MQTT/MqttManager.cs
@@ -36,8 +36,8 @@ public class MqttManager : IMqttManager
{
private IManagedMqttClient _mqttClient = null;
- private bool _disconnectionNotified = false;
private bool _connectingFailureNotified = false;
+ private Stopwatch _disconnectedTimer = null;
private MqttStatus _status = MqttStatus.Connecting;
@@ -132,53 +132,21 @@ private async Task OnMqttDisconnected(MqttClientDisconnectedEventArgs arg)
{
_isReady = false;
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Connecting);
-
- var gracePeriod = Variables.AppSettings.DisconnectedGracePeriodSeconds;
-
- // give the connection the grace period to recover
- var runningTimer = Stopwatch.StartNew();
- while (runningTimer.Elapsed.TotalSeconds < gracePeriod)
+ if (Variables.ShuttingDown)
{
- await Task.Delay(TimeSpan.FromSeconds(5));
-
- if (IsConnected())
- {
- _isReady = true;
-
- if (_status == MqttStatus.Connected)
- return;
-
- _status = MqttStatus.Connected;
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Ok);
- Log.Information("[MQTT] Reconnected from disconnection");
-
- return;
- }
-
- if (Variables.AppSettings.MqttIgnoreGracePeriod)
- {
- var lastResumed = SystemStateManager.LastEventOccurrence.TryGetValue(SystemStateEvent.Resume, out var lastResumeEventDate);
- if (lastResumed && DateTime.Now < lastResumeEventDate.AddSeconds(gracePeriod))
- {
- Log.Information("[MQTT] System resumed less than {gracePeriod} seconds ago, ignoring grace period on disconnection");
- break;
- }
- }
- }
-
- // nope, call it
- _status = MqttStatus.Disconnected;
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Stopped);
-
- // log if we're not shutting down, but only once
- if (Variables.ShuttingDown || _disconnectionNotified)
+ Variables.MainForm?.SetMqttStatus(ComponentStatus.Stopped);
+ _status = MqttStatus.Disconnected;
return;
+ }
- _disconnectionNotified = true;
+ Variables.MainForm?.SetMqttStatus(ComponentStatus.Connecting);
+ _status = MqttStatus.Connecting;
- Variables.MainForm?.ShowToolTip(Languages.MqttManager_ToolTip_Disconnected, true);
- Log.Warning("[MQTT] Disconnected: {reason}", arg.Reason.ToString());
+ if (_disconnectedTimer == null)
+ {
+ _disconnectedTimer = Stopwatch.StartNew();
+ Log.Warning("[MQTT] Disconnected: {reason}", arg.Reason.ToString());
+ }
}
///
@@ -186,61 +154,23 @@ private async Task OnMqttDisconnected(MqttClientDisconnectedEventArgs arg)
///
private async Task OnMqttConnectionFailed(ConnectingFailedEventArgs arg)
{
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Connecting);
-
var gracePeriod = Variables.AppSettings.DisconnectedGracePeriodSeconds;
-
- // give the connection the grace period to recover
- var runningTimer = Stopwatch.StartNew();
- while (runningTimer.Elapsed.TotalSeconds < gracePeriod)
- {
- await Task.Delay(TimeSpan.FromSeconds(5));
-
- if (IsConnected())
- {
- // recovered
- if (_status == MqttStatus.Connected)
- return;
-
- _status = MqttStatus.Connected;
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Ok);
- Log.Information("[MQTT] Reconnected from failed connection");
-
- return;
- }
-
- if (Variables.AppSettings.MqttIgnoreGracePeriod)
- {
- var lastResumed = SystemStateManager.LastEventOccurrence.TryGetValue(SystemStateEvent.Resume, out var lastResumeEventDate);
- if (lastResumed && DateTime.Now < lastResumeEventDate.AddSeconds(gracePeriod))
- {
- Log.Information("[MQTT] System resumed more than {gracePeriod} seconds ago, ignoring grace period on connection failed");
- break;
- }
- }
+ if (_disconnectedTimer?.Elapsed.TotalSeconds > gracePeriod && !_connectingFailureNotified)
+ {
+ Variables.MainForm?.ShowToolTip(Languages.MqttManager_ToolTip_Disconnected, true);
+ Variables.MainForm?.ShowToolTip(Languages.MqttManager_ToolTip_ConnectionFailed, true);
+ _connectingFailureNotified = true;
+
+ var excMsg = arg.Exception.ToString();
+ if (excMsg.Contains("SocketException"))
+ Log.Error("[MQTT] Error while connecting: {err}", arg.Exception.Message);
+ else if (excMsg.Contains("MqttCommunicationTimedOutException"))
+ Log.Error("[MQTT] Error while connecting: {err}", "Connection timed out");
+ else if (excMsg.Contains("NotAuthorized"))
+ Log.Error("[MQTT] Error while connecting: {err}", "Not authorized, check your credentials.");
+ else
+ Log.Fatal(arg.Exception, "[MQTT] Error while connecting: {err}", arg.Exception.Message);
}
-
- // nope, call it
- _status = MqttStatus.Error;
- Variables.MainForm?.SetMqttStatus(ComponentStatus.Failed);
-
- // log only once
- if (_connectingFailureNotified)
- return;
-
- _connectingFailureNotified = true;
-
- var excMsg = arg.Exception.ToString();
- if (excMsg.Contains("SocketException"))
- Log.Error("[MQTT] Error while connecting: {err}", arg.Exception.Message);
- else if (excMsg.Contains("MqttCommunicationTimedOutException"))
- Log.Error("[MQTT] Error while connecting: {err}", "Connection timed out");
- else if (excMsg.Contains("NotAuthorized"))
- Log.Error("[MQTT] Error while connecting: {err}", "Not authorized, check your credentials.");
- else
- Log.Fatal(arg.Exception, "[MQTT] Error while connecting: {err}", arg.Exception.Message);
-
- Variables.MainForm?.ShowToolTip(Languages.MqttManager_ToolTip_ConnectionFailed, true);
}
private Task OnMqttConnected(MqttClientConnectedEventArgs arg)
@@ -249,8 +179,9 @@ private Task OnMqttConnected(MqttClientConnectedEventArgs arg)
Variables.MainForm?.SetMqttStatus(ComponentStatus.Ok);
Log.Information("[MQTT] Connected");
- // reset error notifications
- _disconnectionNotified = false;
+ Task.Run(async () => await AnnounceAvailabilityAsync());
+
+ _disconnectedTimer = null;
_connectingFailureNotified = false;
return Task.CompletedTask;
@@ -282,7 +213,6 @@ public async void ReloadConfiguration()
// reset state
_status = MqttStatus.Connecting;
Variables.MainForm?.SetMqttStatus(ComponentStatus.Connecting);
- _disconnectionNotified = false;
_connectingFailureNotified = false;
Log.Information("[MQTT] Initializing ..");
@@ -307,7 +237,6 @@ private async void StartClient(ManagedMqttClientOptions options)
try
{
await _mqttClient.StartAsync(options);
- InitialRegistration();
}
catch (MqttConnectingFailedException ex)
{
@@ -323,23 +252,6 @@ private async void StartClient(ManagedMqttClientOptions options)
}
}
- ///
- /// Announce our general availability
- ///
- private async void InitialRegistration()
- {
- if (!Variables.AppSettings.MqttEnabled || _mqttClient == null)
- return;
-
- while (!IsConnected())
- await Task.Delay(2000);
-
- await AnnounceAvailabilityAsync();
- _isReady = true;
-
- Log.Information("[MQTT] Initial registration completed");
- }
-
///
/// Prepares info for the device we're running on
///
@@ -525,6 +437,8 @@ public async Task AnnounceAvailabilityAsync(bool offline = false)
.WithRetainFlag(Variables.AppSettings.MqttUseRetainFlag);
await _mqttClient.InternalClient.PublishAsync(integrationMsgBuilder.Build());
+
+ _isReady = true;
}
else
{
@@ -895,4 +809,4 @@ private static void HandleActionReceived(MqttApplicationMessage applicationMessa
command.TurnOnWithAction(payload);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/HASS.Agent/HASS.Agent/Models/Config/AppSettings.cs b/src/HASS.Agent/HASS.Agent/Models/Config/AppSettings.cs
index c5de6e89..b00faf46 100644
--- a/src/HASS.Agent/HASS.Agent/Models/Config/AppSettings.cs
+++ b/src/HASS.Agent/HASS.Agent/Models/Config/AppSettings.cs
@@ -81,7 +81,6 @@ public AppSettings()
public bool MqttUseRetainFlag { get; set; } = true;
public string MqttRootCertificate { get; set; } = string.Empty;
public string MqttClientCertificate { get; set; } = string.Empty;
- public bool MqttIgnoreGracePeriod { get; set; } = false;
public bool NfcScanningEnabled { get; set; } = false;
public string NfcSelectedScanner { get; set; } = string.Empty;
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.Designer.cs b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.Designer.cs
index b79f442b..e892e9c5 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.Designer.cs
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.Designer.cs
@@ -582,7 +582,8 @@ internal static string CommandsManager_MonitorWakeCommandDescription {
///- Special keys go between { }, like {TAB} or {UP}
///
///- Put a + in front of a key to add SHIFT, ^ for CTRL and % for ALT. So, +C is SHIFT-C. Or, +(CD) is SHIFT-C and SHIFT-D, while +CD is SHIFT-C and D
- ///
/// [rest of string was truncated]";.
+ ///
+ /// [rest of string was truncated]";.
///
internal static string CommandsManager_MultipleKeysCommandDescription {
get {
@@ -2418,15 +2419,6 @@ internal static string ConfigMqtt_CbEnableMqtt {
}
}
- ///
- /// Looks up a localized string similar to Ignore grace period after waking up from hibernation.
- ///
- internal static string ConfigMqtt_CbIgnoreGracePeriod {
- get {
- return ResourceManager.GetString("ConfigMqtt_CbIgnoreGracePeriod", resourceCulture);
- }
- }
-
///
/// Looks up a localized string similar to &TLS.
///
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.de.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.de.resx
index 33f53638..ed1c1c12 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.de.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.de.resx
@@ -3496,9 +3496,6 @@ Die Bildschirmnummer hängt von der Systemkonfiguration ab – beginnt bei 0.Legt den Standard-Audioeingang für das System fest (einschließlich des Standard-Kommunikationsgeräts).
Als Payload benötigen Sie den Namen des Audiogeräts.
-
- Ignorieren Sie die Schonfrist nach dem Aufwachen aus dem Ruhezustand
-
Verwenden Sie ein modernes Taskleistensymbol
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.en.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.en.resx
index d41bfa3c..564a0169 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.en.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.en.resx
@@ -3392,9 +3392,6 @@ Screen number depends on system configuration - starts at 0.
Sets the default audio input for the system (including default communication device).
Requires audio device name as a payload.
-
- Ignore grace period after waking up from hibernation
-
Use modern tray icon
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.es.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.es.resx
index f7bcab92..03fa293c 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.es.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.es.resx
@@ -3372,9 +3372,6 @@ El número de pantalla depende de la configuración del sistema: comienza en 0.<
Establece la entrada de audio predeterminada para el sistema (incluido el dispositivo de comunicación predeterminado).
Necesita el nombre del dispositivo de audio como carga útil.
-
- Ignorar el período de gracia después de despertar de la hibernación
-
Utilice el icono de bandeja moderno
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.fr.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.fr.resx
index 7a293a1a..a5208f74 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.fr.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.fr.resx
@@ -3396,9 +3396,6 @@ Le numéro d'écran dépend de la configuration du système - commence à 0.Définit l'entrée audio par défaut du système (y compris le périphérique de communication par défaut).
Vous avez besoin du nom du périphérique audio comme charge utile.
-
- Ignorer la période de grâce après la sortie de l'hibernation
-
Utiliser l'icône de la barre d'état moderne
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.nl.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.nl.resx
index 25a14e7a..6b3f74e7 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.nl.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.nl.resx
@@ -3393,9 +3393,6 @@ Schermnummer is afhankelijk van de systeemconfiguratie - begint bij 0.
Stelt de standaardaudio-invoer in voor het systeem (inclusief het standaardcommunicatieapparaat).
U hebt de naam van het audioapparaat nodig als payload.
-
- Negeer de respijtperiode na het ontwaken uit de winterslaap
-
Gebruik het moderne ladepictogram
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pl.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pl.resx
index 50cd749e..b29796a6 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pl.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pl.resx
@@ -3482,9 +3482,6 @@ Numer ekranu zależy od konfiguracji systemu – zaczyna się od 0.
Ustawia domyślne wejście audio dla systemu (w tym domyślne urządzenie komunikacyjne).
Wymaga nazwy urządzenia audio jako ładunku.
-
- Ignoruj okres karencji po przebudzeniu ze stanu hibernacji
-
Użyj nowoczesnej ikony w zasobniku
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pt-br.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pt-br.resx
index efa65bd2..b793b6ed 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pt-br.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.pt-br.resx
@@ -3418,9 +3418,6 @@ O número da tela depende da configuração do sistema – começa em 0.
Define a entrada de áudio padrão para o sistema (incluindo o dispositivo de comunicação padrão).
Você precisa do nome do dispositivo de áudio como carga útil.
-
- Ignorar o período de carência após sair da hibernação
-
Use o ícone moderno da bandeja
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.resx
index 97b13dc7..dfb1a9f9 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.resx
@@ -3390,9 +3390,6 @@ Screen number depends on system configuration - starts at 0.
Sets the default audio input for the system (including default communication device).
Requires audio device name as a payload.
-
- Ignore grace period after waking up from hibernation
-
Use modern tray icon
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.ru.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.ru.resx
index 5092bec3..60efcf8a 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.ru.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.ru.resx
@@ -3442,9 +3442,6 @@ Home Assistant.
Устанавливает аудиовход по умолчанию для системы (включая устройство связи по умолчанию).
В качестве полезной нагрузки требуется имя аудиоустройства.
-
- Игнорировать льготный период после выхода из спящего режима
-
Использовать современный значок в трее
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.sl.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.sl.resx
index b59e91c9..a7feaeb7 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.sl.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.sl.resx
@@ -3521,9 +3521,6 @@ Zahteva ime zvočne naprave kot tovor.
Nastavi privzeti zvočni vhod za sistem (vključno s privzeto komunikacijsko napravo).
Ime zvočne naprave potrebujete kot obremenitev.
-
- Po prebujanju iz mirovanja prezrite obdobje odloga
-
Uporabi sodobno ikono pladnja
diff --git a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.tr.resx b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.tr.resx
index d2e9d83e..3e45b237 100644
--- a/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.tr.resx
+++ b/src/HASS.Agent/HASS.Agent/Resources/Localization/Languages.tr.resx
@@ -2988,9 +2988,6 @@ Ekran numarası sistem konfigürasyonuna bağlıdır - 0'dan başlar.
Sistem için varsayılan ses girişini ayarlar (varsayılan iletişim cihazı dahil).
Yük olarak ses cihazı adına ihtiyacınız vardır.
-
- Hazırda bekletme modundan uyandıktan sonra ek süreyi göz ardı et
-
Modern tepsi simgesini kullan