Fix config values not persisting when making changes (#2839)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 18 Dec 2025 13:01:04 +0000 (14:01 +0100)
committerGitHub <noreply@github.com>
Thu, 18 Dec 2025 13:01:04 +0000 (14:01 +0100)
music_assistant/controllers/config.py
music_assistant/controllers/webserver/controller.py

index fb1899e8631860b3c9914ebeda9ab0bde839745f..6f8899c8dadaf62fd730380c64c904bd83506c10 100644 (file)
@@ -422,13 +422,18 @@ class ConfigController:
             ):
                 extra_entries.append(CONF_ENTRY_LIBRARY_SYNC_BACK)
 
-        return [
+        all_entries = [
             *DEFAULT_PROVIDER_CONFIG_ENTRIES,
             *extra_entries,
             *await prov_mod.get_config_entries(
                 self.mass, instance_id=instance_id, action=action, values=values
             ),
         ]
+        # set current value from stored values
+        for entry in all_entries:
+            if entry.value is None:
+                entry.value = values.get(entry.key, None)
+        return all_entries
 
     @api_command("config/providers/save", required_role="admin")
     async def save_provider_config(
@@ -554,7 +559,12 @@ class ConfigController:
         if values is None:
             values = self.get(f"{CONF_PLAYERS}/{player_id}/values", {})
 
-        return await player.get_config_entries(action=action, values=values)
+        all_entries = await player.get_config_entries(action=action, values=values)
+        # set current value from stored values
+        for entry in all_entries:
+            if entry.value is None:
+                entry.value = values.get(entry.key, None)
+        return all_entries
 
     @overload
     async def get_player_config_value(
@@ -1036,10 +1046,15 @@ class ConfigController:
         if values is None:
             values = self.get(f"{CONF_CORE}/{domain}/values", {})
         controller: CoreController = getattr(self.mass, domain)
-        return list(
+        all_entries = list(
             await controller.get_config_entries(action=action, values=values)
             + DEFAULT_CORE_CONFIG_ENTRIES
         )
+        # set current value from stored values
+        for entry in all_entries:
+            if entry.value is None:
+                entry.value = values.get(entry.key, None)
+        return all_entries
 
     @api_command("config/core/save", required_role="admin")
     async def save_core_config(
index d7deffec6e5840460b7fce1318708ed5e8499cfc..150708752b79da3ee69e58fa229e9eb5f0c2e6a4 100644 (file)
@@ -158,6 +158,7 @@ class WebserverController(CoreController):
                 required=False,
                 depends_on=CONF_ENABLE_SSL,
                 depends_on_value=False,
+                hidden=bool(values.get(CONF_ENABLE_SSL, False)) if values else False,
             ),
             ConfigEntry(
                 key=CONF_ENABLE_SSL,