Use advanced flag on config entries
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 30 Jan 2026 13:41:21 +0000 (14:41 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 30 Jan 2026 13:41:21 +0000 (14:41 +0100)
27 files changed:
music_assistant/constants.py
music_assistant/controllers/config.py
music_assistant/controllers/music.py
music_assistant/controllers/streams/streams_controller.py
music_assistant/controllers/webserver/controller.py
music_assistant/providers/airplay/player.py
music_assistant/providers/apple_music/__init__.py
music_assistant/providers/audiobookshelf/__init__.py
music_assistant/providers/bandcamp/__init__.py
music_assistant/providers/bbc_sounds/__init__.py
music_assistant/providers/chromecast/constants.py
music_assistant/providers/filesystem_smb/__init__.py
music_assistant/providers/fully_kiosk/__init__.py
music_assistant/providers/gpodder/__init__.py
music_assistant/providers/hass/__init__.py
music_assistant/providers/jellyfin/__init__.py
music_assistant/providers/opensubsonic/__init__.py
music_assistant/providers/orf_radiothek/__init__.py
music_assistant/providers/plex/__init__.py
music_assistant/providers/roku_media_assistant/__init__.py
music_assistant/providers/snapcast/__init__.py
music_assistant/providers/snapcast/constants.py
music_assistant/providers/somafm/__init__.py
music_assistant/providers/sonos_s1/__init__.py
music_assistant/providers/squeezelite/__init__.py
music_assistant/providers/squeezelite/constants.py
music_assistant/providers/vban_receiver/__init__.py

index 0dff508fd266289e6f0723c19588e11ae09ec7cb..1e9cfddff9bb0dcc1aeda516e36c07613022d078 100644 (file)
@@ -159,7 +159,7 @@ CONF_ENTRY_LOG_LEVEL = ConfigEntry(
         ConfigValueOption("verbose", "VERBOSE"),
     ],
     default_value="GLOBAL",
-    category="advanced",
+    advanced=True,
     requires_reload=False,  # applied dynamically via _set_logger()
 )
 
@@ -173,7 +173,8 @@ CONF_ENTRY_FLOW_MODE = ConfigEntry(
     type=ConfigEntryType.BOOLEAN,
     label="Enforce Gapless playback with Queue Flow Mode streaming",
     default_value=False,
-    category="advanced",
+    category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -202,6 +203,7 @@ CONF_ENTRY_OUTPUT_CHANNELS = ConfigEntry(
     default_value="stereo",
     label="Output Channel Mode",
     category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -223,7 +225,8 @@ CONF_ENTRY_VOLUME_NORMALIZATION_TARGET = ConfigEntry(
     label="Target level for volume normalization",
     description="Adjust average (perceived) loudness to this target level",
     depends_on=CONF_VOLUME_NORMALIZATION,
-    category="advanced",
+    category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -234,6 +237,7 @@ CONF_ENTRY_OUTPUT_LIMITER = ConfigEntry(
     default_value=True,
     description="Activates a limiter that prevents audio distortion by making loud peaks quieter.",
     category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -268,6 +272,7 @@ CONF_ENTRY_CROSSFADE_DURATION = ConfigEntry(
     depends_on=CONF_SMART_FADES_MODE,
     depends_on_value="standard_crossfade",
     category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -289,7 +294,8 @@ CONF_ENTRY_OUTPUT_CODEC = ConfigEntry(
     "Some players however do not support FLAC and require the stream to be packed "
     "into e.g. a lossy mp3 codec or you like to save some network bandwidth. \n\n "
     "Choosing a lossy codec saves some bandwidth at the cost of audio quality.",
-    category="advanced",
+    category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -326,7 +332,8 @@ CONF_ENTRY_SYNC_ADJUST = ConfigEntry(
     description="If this player is playing audio synced with other players "
     "and you always hear the audio too early or late on this player, "
     "you can shift the audio a bit.",
-    category="advanced",
+    category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -427,7 +434,8 @@ CONF_ENTRY_SAMPLE_RATES = ConfigEntry(
     default_value=[f"44100{MULTI_VALUE_SPLITTER}16", f"48000{MULTI_VALUE_SPLITTER}16"],
     required=True,
     label="Sample rates supported by this player",
-    category="advanced",
+    category="audio",
+    advanced=True,
     description="The sample rates (and bit depths) supported by this player.\n"
     "Content with unsupported sample rates will be automatically resampled.",
     requires_reload=True,
@@ -444,7 +452,8 @@ CONF_ENTRY_HTTP_PROFILE = ConfigEntry(
     ],
     default_value="no_content_length",
     label="HTTP Profile used for sending audio",
-    category="advanced",
+    category="audio",
+    advanced=True,
     description="This is considered to be a very advanced setting, only adjust this if needed, "
     "for example if your player stops playing halfway streams or if you experience "
     "other playback related issues. In most cases the default setting is fine.",
@@ -489,7 +498,8 @@ CONF_ENTRY_ENABLE_ICY_METADATA = ConfigEntry(
     depends_on_value_not=False,
     default_value="disabled",
     label="Try to inject metadata into stream (ICY)",
-    category="advanced",
+    category="audio",
+    advanced=True,
     description="Try to inject metadata into the stream (ICY) to show track info on the player, "
     "even when flow mode is enabled.\n\nThis is called ICY metadata and is what is used by "
     "online radio stations to show you what is playing. \n\nBe aware that not all players support "
@@ -526,7 +536,8 @@ CONF_ENTRY_SUPPORT_GAPLESS_DIFFERENT_SAMPLE_RATES = ConfigEntry(
     "Only enable this option if your player actually support this, otherwise you may "
     "experience audio glitches during transitioning between tracks.",
     default_value=False,
-    category="advanced",
+    category="audio",
+    advanced=True,
     requires_reload=True,
 )
 
@@ -553,7 +564,7 @@ CONF_ENTRY_MANUAL_DISCOVERY_IPS = ConfigEntry(
     "the Music Assistant server, you may run into issues with streaming. "
     "In that case always ensure that the players can reach the server on the network "
     "and double check the base URL configuration of the Stream server in the settings.",
-    category="advanced",
+    advanced=True,
     default_value=[],
     required=False,
     multi_value=True,
@@ -585,7 +596,7 @@ CONF_ENTRY_ZEROCONF_INTERFACES = ConfigEntry(
         ConfigValueOption("All interfaces", "all"),
     ],
     default_value="default",
-    category="advanced",
+    advanced=True,
     requires_reload=True,
 )
 CONF_ENTRY_LIBRARY_SYNC_ALBUMS = ConfigEntry(
index 9c4d3a8816f5ebdd52219530fcfc33c0633b4b1b..1306a0663b293e803899b33966866245d537f8b0 100644 (file)
@@ -1688,7 +1688,8 @@ class ConfigController:
                 type=ConfigEntryType.BOOLEAN,
                 label="Hide this player in the user interface",
                 default_value=player.hidden_by_default,
-                category="advanced",
+                category="generic",
+                advanced=True,
             ),
             # add entry to expose player to HA
             ConfigEntry(
@@ -1697,7 +1698,8 @@ class ConfigController:
                 label="Expose this player to Home Assistant",
                 description="Expose this player to the Home Assistant integration. \n"
                 "If disabled, this player will not be imported into Home Assistant.",
-                category="advanced",
+                category="generic",
+                advanced=True,
                 default_value=player.expose_to_ha_by_default,
             ),
         ]
index 934786b933d334ac8ab5a232abeccecece91c91b..1677f054a54e7aad20b0715532a7862711ba3be3 100644 (file)
@@ -153,7 +153,8 @@ class MusicController(CoreController):
                 description="This will issue a full reset of the library "
                 "database and trigger a full sync. Only use this option as a last resort "
                 "if you are seeing issues with the library database.",
-                category="advanced",
+                category="generic",
+                advanced=True,
             ),
         )
         if action == CONF_RESET_DB:
index 100d2a8e2d0009277343664bc21cc044df6e97cf..b06081eca7f41dbdc2b991f50f8f88848a94edb3 100644 (file)
@@ -261,7 +261,8 @@ class StreamsController(CoreController):
                 "\nMake sure that this IP can be reached by players on the local network, "
                 "otherwise audio streaming will not work.",
                 required=False,
-                category="advanced",
+                category="generic",
+                advanced=True,
                 requires_reload=True,
             ),
             ConfigEntry(
@@ -272,7 +273,8 @@ class StreamsController(CoreController):
                 description="The TCP port to run the server. "
                 "Make sure that this server can be reached "
                 "on the given IP and TCP port by players on the local network.",
-                category="advanced",
+                category="generic",
+                advanced=True,
                 requires_reload=True,
             ),
             ConfigEntry(
@@ -285,7 +287,8 @@ class StreamsController(CoreController):
                 "Use 0.0.0.0 to bind to all interfaces, which is the default. \n"
                 "This is an advanced setting that should normally "
                 "not be adjusted in regular setups.",
-                category="advanced",
+                category="generic",
+                advanced=True,
                 required=False,
                 requires_reload=True,
             ),
@@ -296,7 +299,8 @@ class StreamsController(CoreController):
                 description="Log level for the Smart Fades mixer and analyzer.",
                 options=CONF_ENTRY_LOG_LEVEL.options,
                 default_value="GLOBAL",
-                category="advanced",
+                category="generic",
+                advanced=True,
             ),
             CONF_ENTRY_ZEROCONF_INTERFACES,
         )
index 371b813fa36c1570862f2d1ca708dd78de6941b1..7bb9a8059e2487e80289ad578f2b2570715179bf 100644 (file)
@@ -232,7 +232,8 @@ class WebserverController(CoreController):
                 "protect outside access to the webinterface and API. \n\n"
                 "This is an advanced setting that should normally "
                 "not be adjusted in regular setups.",
-                category="advanced",
+                category="generic",
+                advanced=True,
                 requires_reload=True,
             ),
         )
index 2193424b098823a276610f8d16bceffa0995240f..f276e1d91f6a326a8d76487952432904d6bea133 100644 (file)
@@ -170,7 +170,6 @@ class AirPlayPlayer(Player):
                 "will only work with AirPlay version 2, "
                 "while older devices may only support RAOP.\n\n"
                 "In most cases the default automatic selection will work fine.",
-                category="airplay",
                 options=[
                     ConfigValueOption("Automatically select", 0),
                     ConfigValueOption("Prefer AirPlay 1 (RAOP)", StreamingProtocol.RAOP.value),
@@ -185,10 +184,10 @@ class AirPlayPlayer(Player):
                 label="Enable encryption",
                 description="Enable encrypted communication with the player, "
                 "some (3rd party) players require this to be disabled.",
-                category="airplay",
                 depends_on=CONF_AIRPLAY_PROTOCOL,
                 depends_on_value=StreamingProtocol.RAOP.value,
                 hidden=self.protocol != StreamingProtocol.RAOP,
+                advanced=True,
             ),
             ConfigEntry(
                 key=CONF_ALAC_ENCODE,
@@ -197,10 +196,10 @@ class AirPlayPlayer(Player):
                 label="Enable compression",
                 description="Save some network bandwidth by sending the audio as "
                 "(lossless) ALAC at the cost of a bit of CPU.",
-                category="airplay",
                 depends_on=CONF_AIRPLAY_PROTOCOL,
                 depends_on_value=StreamingProtocol.RAOP.value,
                 hidden=self.protocol != StreamingProtocol.RAOP,
+                advanced=True,
             ),
             CONF_ENTRY_SYNC_ADJUST,
             ConfigEntry(
@@ -210,7 +209,7 @@ class AirPlayPlayer(Player):
                 required=False,
                 label="Device password",
                 description="Some devices require a password to connect/play.",
-                category="airplay",
+                advanced=True,
             ),
             # airplay has fixed sample rate/bit depth so make this config entry static and hidden
             create_sample_rates_config_entry(
@@ -233,6 +232,7 @@ class AirPlayPlayer(Player):
                 depends_on=CONF_AIRPLAY_PROTOCOL,
                 depends_on_value=StreamingProtocol.RAOP.value,
                 hidden=self.protocol != StreamingProtocol.RAOP,
+                advanced=True,
             ),
         ]
 
index ce3c4476c2877175be51534d7244b63ede3bc87a..e38a640ef4bd109beb38eda897a7f6bb11971ee6 100644 (file)
@@ -258,7 +258,7 @@ async def get_config_entries(
             type=ConfigEntryType.SECURE_STRING,
             label="Manual Music User Token",
             required=False,
-            category="advanced",
+            advanced=True,
             description=(
                 "Authenticate with a manual Music User Token in case the Authentication flow"
                 " is unsupported (e.g. when using child accounts)."
index bbbc3ea243e069fe594f9c034a530c6dddcf6a26..776ce84e93eea0c2b2bf9b8658de749da204a564 100644 (file)
@@ -181,7 +181,7 @@ async def get_config_entries(
             label="Verify SSL",
             required=False,
             description="Whether or not to verify the certificate of SSL/TLS connections.",
-            category="advanced",
+            advanced=True,
             default_value=True,
         ),
         ConfigEntry(
@@ -190,7 +190,7 @@ async def get_config_entries(
             label="Hide empty podcasts.",
             required=False,
             description="This will skip podcasts with no episodes associated.",
-            category="advanced",
+            advanced=True,
             default_value=False,
         ),
     )
index 54a00605f84022b5ca3f9a161a05804786f7f7b5..c04718ffe7f9d651126a9c94336303384ca4d689 100644 (file)
@@ -16,24 +16,9 @@ from bandcamp_async_api import (
 )
 from bandcamp_async_api.models import CollectionType
 from music_assistant_models.config_entries import ConfigEntry, ConfigValueType, ProviderConfig
-from music_assistant_models.enums import (
-    ConfigEntryType,
-    MediaType,
-    ProviderFeature,
-    StreamType,
-)
-from music_assistant_models.errors import (
-    InvalidDataError,
-    LoginFailed,
-    MediaNotFoundError,
-)
-from music_assistant_models.media_items import (
-    Album,
-    Artist,
-    AudioFormat,
-    SearchResults,
-    Track,
-)
+from music_assistant_models.enums import ConfigEntryType, MediaType, ProviderFeature, StreamType
+from music_assistant_models.errors import InvalidDataError, LoginFailed, MediaNotFoundError
+from music_assistant_models.media_items import Album, Artist, AudioFormat, SearchResults, Track
 from music_assistant_models.provider import ProviderManifest
 from music_assistant_models.streamdetails import StreamDetails
 
@@ -93,7 +78,7 @@ async def get_config_entries(
             description="Search limit while getting artist top tracks.",
             value=values.get(CONF_TOP_TRACKS_LIMIT) if values else DEFAULT_TOP_TRACKS_LIMIT,
             default_value=DEFAULT_TOP_TRACKS_LIMIT,
-            category="advanced",
+            advanced=True,
         ),
     )
 
index 5ff5bc991e00dbe4517b683a6d0170f74fc13a80..47a443c471df6c82ec84cac18986af1c04648d49 100644 (file)
@@ -125,14 +125,14 @@ async def get_config_entries(
         ),
         ConfigEntry(
             key=_Constants.CONF_SHOW_LOCAL,
-            category="advanced",
+            advanced=True,
             type=ConfigEntryType.BOOLEAN,
             label="Show local radio stations?",
             default_value=False,
         ),
         ConfigEntry(
             key=_Constants.CONF_STREAM_FORMAT,
-            category="advanced",
+            advanced=True,
             label="Preferred stream format",
             type=ConfigEntryType.STRING,
             options=[
index 5ae91066685c721fe524430e30f1a45b0f5ceb18..06787f9e38c681bbf8f1d28a14d03b7ed424615e 100644 (file)
@@ -35,7 +35,7 @@ CAST_PLAYER_CONFIG_ENTRIES = (
         "better metadata and future expansion. \\n\\n"
         "If you want to use the official Google Cast Receiver app instead, disable this option, "
         "for example if your device has issues with the Music Assistant app.",
-        category="advanced",
+        advanced=True,
     ),
 )
 
index 77c7c40b778a2c5f98bd793260ef5c3ce4bac571..bb51493de57243ebf926fe9dd8c54a6699ce48ec 100644 (file)
@@ -122,7 +122,7 @@ async def get_config_entries(
             type=ConfigEntryType.STRING,
             label="SMB Version",
             required=False,
-            category="advanced",
+            advanced=True,
             default_value="3.0",
             options=[
                 ConfigValueOption("Auto", ""),
@@ -140,7 +140,7 @@ async def get_config_entries(
             type=ConfigEntryType.STRING,
             label="Cache Mode",
             required=False,
-            category="advanced",
+            advanced=True,
             default_value="loose",
             options=[
                 ConfigValueOption("Strict", "strict"),
index d45da7e03d9034223107eebbf90e52647f4e342b..8ae0fab55c05ff19104ab46f8537238e955e8fa2 100644 (file)
@@ -70,14 +70,14 @@ async def get_config_entries(
             default_value="2323",
             label="Port to use to connect to the Fully Kiosk API (default is 2323).",
             required=True,
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_USE_SSL,
             type=ConfigEntryType.BOOLEAN,
             label="Use HTTPS when connecting to the Fully Kiosk API.",
             default_value=False,
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_VERIFY_SSL,
@@ -85,7 +85,7 @@ async def get_config_entries(
             label="Verify HTTPS certificates (recommended).",
             default_value=True,
             description="Disabling verification trusts any certificate (no validation).",
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_SSL_FINGERPRINT,
@@ -96,6 +96,6 @@ async def get_config_entries(
                 "match the device certificate and overrides the verify setting."
             ),
             required=False,
-            category="advanced",
+            advanced=True,
         ),
     )
index 44e80d248e1dea2f4ce189d757c713a0b8dae276..c341f7e032f35cdc3758188bb68dea59a47ddbe4 100644 (file)
@@ -226,7 +226,7 @@ async def get_config_entries(
             label="Verify SSL",
             required=False,
             description="Whether or not to verify the certificate of SSL/TLS connections.",
-            category="advanced",
+            advanced=True,
             default_value=True,
             value=values.get(CONF_VERIFY_SSL),
         ),
index 737405482a3c3352faca7f73994a237670835f14..828c91b7bc48027d5e12d4ba8d0a4ea1618516c1 100644 (file)
@@ -167,7 +167,7 @@ async def get_config_entries(
                 "'authenticate' button to generate a token for you with logging in.",
                 depends_on=CONF_URL,
                 value=cast("str", values.get(CONF_AUTH_TOKEN)) if values else None,
-                category="advanced",
+                advanced=True,
             ),
             ConfigEntry(
                 key=CONF_VERIFY_SSL,
@@ -175,7 +175,7 @@ async def get_config_entries(
                 label="Verify SSL",
                 required=False,
                 description="Whether or not to verify the certificate of SSL/TLS connections.",
-                category="advanced",
+                advanced=True,
                 default_value=True,
             ),
         )
index f417412bc67ad44a765c56df1ecdef60acf37868..29da6e1f9b1a524d62fb9cdf4ccd646cf565991e 100644 (file)
@@ -123,7 +123,7 @@ async def get_config_entries(
             label="Verify SSL",
             required=False,
             description="Whether or not to verify the certificate of SSL/TLS connections.",
-            category="advanced",
+            advanced=True,
             default_value=True,
         ),
     )
index e2c1279d41a7bb1cee95d50be019e6c4b409add4..7936c80097339d281bb30caccf090b3c76cf13bc 100644 (file)
@@ -167,6 +167,6 @@ async def get_config_entries(
             "request. Smaller will require more requests but is better for low bandwidth "
             "connections. The Open Subsonic spec says the max value for this is 500 items.",
             default_value=200,
-            category="advanced",
+            advanced=True,
         ),
     )
index 1f75f33dd56ec01ff214de636499194954af3098..5e8ca4581b8487bc337a13bbe5c9c66b848e071d 100644 (file)
@@ -133,7 +133,7 @@ async def get_config_entries(
                 "Privates use explicit URLs from bundle.json."
             ),
             value=values.get(CONF_STREAM_PROTO),
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_STREAM_QUALITY,
@@ -143,7 +143,7 @@ async def get_config_entries(
             default_value="qxa",
             description="For ORF HLS: q1a/q2a/q3a/q4a/qxa. For shoutcast: q1a/q2a.",
             value=values.get(CONF_STREAM_QUALITY),
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_INCLUDE_HIDDEN,
@@ -153,7 +153,7 @@ async def get_config_entries(
             default_value=False,
             description="Include stations with hideFromStations=true.",
             value=values.get(CONF_INCLUDE_HIDDEN),
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_CATCHUP_PROTO,
index 895c795c7b251ec8cb9d21c78afa0015f716e5f6..93af117288cfff7b0f768860003150510a45dc25 100644 (file)
@@ -245,7 +245,7 @@ async def get_config_entries(  # noqa: PLR0915
             required=True,
             default_value=True,
             depends_on=CONF_LOCAL_SERVER_SSL,
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_AUTH_TOKEN,
@@ -351,7 +351,7 @@ async def get_config_entries(  # noqa: PLR0915
             label="Import Collections",
             description="Import collections (tracks, albums, or artists) as playlists",
             default_value=False,
-            category="advanced",
+            advanced=True,
         )
     )
     entries.append(
@@ -362,7 +362,7 @@ async def get_config_entries(  # noqa: PLR0915
             description="Prefix to add to collection names when imported as playlists",
             default_value="Collection: ",
             depends_on=CONF_IMPORT_COLLECTIONS,
-            category="advanced",
+            advanced=True,
         )
     )
 
@@ -412,7 +412,7 @@ async def get_config_entries(  # noqa: PLR0915
             label="Items per hub",
             description="Maximum number of items to load from each hub (default: 10)",
             default_value=10,
-            category="advanced",
+            advanced=True,
             range=(1, 100),
         )
     )
index db88dff41ef18788623645d955bda74961657340..d23c8b845c3448d99d196c8a285adb987256ca1f 100644 (file)
@@ -52,7 +52,7 @@ async def get_config_entries(
             "of Media Assistant (ID: 782875). If you sideloaded the App on your Roku "
             "this will need to be set to (ID: dev).",
             required=False,
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_AUTO_DISCOVER,
@@ -60,6 +60,6 @@ async def get_config_entries(
             label="Allow automatic Roku discovery",
             default_value=True,
             description="Enable automatic discovery of Roku players.",
-            category="advanced",
+            advanced=True,
         ),
     )
index 2fd845ea6ceb04536155ffa45a08dcd9d5c49d32..8a27b2fcb090db11b1311401a41b959d2c62f496 100644 (file)
@@ -16,9 +16,7 @@ from music_assistant.helpers.process import check_output
 from music_assistant.mass import MusicAssistant
 from music_assistant.models import ProviderInstanceType
 from music_assistant.providers.snapcast.constants import (
-    CONF_CATEGORY_ADVANCED,
     CONF_CATEGORY_BUILT_IN,
-    CONF_CATEGORY_GENERIC,
     CONF_HELP_LINK,
     CONF_SERVER_BUFFER_SIZE,
     CONF_SERVER_CHUNK_MS,
@@ -163,9 +161,7 @@ async def get_config_entries(
             default_value=not local_snapserver_present,
             label="Use existing Snapserver",
             required=False,
-            category=(
-                CONF_CATEGORY_ADVANCED if local_snapserver_present else CONF_CATEGORY_GENERIC
-            ),
+            advanced=local_snapserver_present,
         ),
         ConfigEntry(
             key=CONF_SERVER_HOST,
@@ -174,9 +170,7 @@ async def get_config_entries(
             label="Snapcast server ip",
             required=False,
             depends_on=CONF_USE_EXTERNAL_SERVER,
-            category=(
-                CONF_CATEGORY_ADVANCED if local_snapserver_present else CONF_CATEGORY_GENERIC
-            ),
+            advanced=local_snapserver_present,
         ),
         ConfigEntry(
             key=CONF_SERVER_CONTROL_PORT,
@@ -185,9 +179,7 @@ async def get_config_entries(
             label="Snapcast control port",
             required=False,
             depends_on=CONF_USE_EXTERNAL_SERVER,
-            category=(
-                CONF_CATEGORY_ADVANCED if local_snapserver_present else CONF_CATEGORY_GENERIC
-            ),
+            advanced=local_snapserver_present,
         ),
         ConfigEntry(
             key=CONF_STREAM_IDLE_THRESHOLD,
@@ -195,6 +187,6 @@ async def get_config_entries(
             default_value=DEFAULT_SNAPSTREAM_IDLE_THRESHOLD,
             label="Snapcast idle threshold stream parameter",
             required=True,
-            category=CONF_CATEGORY_ADVANCED,
+            advanced=local_snapserver_present,
         ),
     )
index eb5ecb1ab3f84841b97c816333d5d45fa38e471f..7e5f5945d1334bb397293fc0e8ad20f9536f01cf 100644 (file)
@@ -20,7 +20,6 @@ CONF_STREAM_IDLE_THRESHOLD = "snapcast_stream_idle_threshold"
 
 
 CONF_CATEGORY_GENERIC = "generic"
-CONF_CATEGORY_ADVANCED = "advanced"
 CONF_CATEGORY_BUILT_IN = "Built-in Snapserver Settings"
 
 CONF_HELP_LINK = (
index d3a3ad695846c986c0a157f565361c61c3a9825e..04e5a4a873152264ff5d5c2715156a0b6644fbd0 100644 (file)
@@ -63,7 +63,7 @@ async def get_config_entries(
     return (
         ConfigEntry(
             key=CONF_QUALITY,
-            category="advanced",
+            advanced=True,
             type=ConfigEntryType.STRING,
             label="Stream Quality",
             options=[
index 4354183889540898562eca45abbf2dd10b3279b9..6b86ea8c7cfe543589452a6c3b12f9d68f28d948 100644 (file)
@@ -72,7 +72,7 @@ async def get_config_entries(
             label="Household ID",
             default_value=household_ids[0] if household_ids else None,
             description="Household ID for the Sonos (S1) system. Will be auto detected if empty.",
-            category="advanced",
+            advanced=True,
             required=False,
         ),
     )
index cb17862f4867e59dee8e9cfa1188219b8f0a0c83..cad1b1f554e781e81efc96c9207996aa2bcb3f55 100644 (file)
@@ -64,7 +64,7 @@ async def get_config_entries(
             "player compatibility, so security risks are minimized to practically zero."
             "You may safely disable this option if you have no players that rely on this feature "
             "or you dont care about the additional metadata.",
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_CLI_JSON_PORT,
@@ -80,7 +80,7 @@ async def get_config_entries(
             "it on a different port. Set to 0 to disable this functionality.\n\n"
             "You may safely disable this option if you have no players that rely on this feature "
             "or you dont care about the additional metadata.",
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_DISCOVERY,
@@ -91,7 +91,7 @@ async def get_config_entries(
             "discover and connect to this server. \n\n"
             "You may want to disable this feature if you are running multiple slimproto servers "
             "on your network and/or you don't want clients to auto connect to this server.",
-            category="advanced",
+            advanced=True,
         ),
         ConfigEntry(
             key=CONF_PORT,
index cbd412e18837619ae3f9de00ba50f86c9ed53f5b..3748b6f055783d81440c6660a43fcadabde9294e 100644 (file)
@@ -43,7 +43,7 @@ CONF_ENTRY_DISPLAY = ConfigEntry(
     required=False,
     label="Enable display support",
     description="Enable/disable native display support on squeezebox or squeezelite32 hardware.",
-    category="advanced",
+    advanced=True,
 )
 CONF_ENTRY_VISUALIZATION = ConfigEntry(
     key=CONF_VISUALIZATION,
@@ -57,7 +57,7 @@ CONF_ENTRY_VISUALIZATION = ConfigEntry(
     label="Visualization type",
     description="The type of visualization to show on the display "
     "during playback if the device supports this.",
-    category="advanced",
+    advanced=True,
     depends_on=CONF_DISPLAY,
 )
 
index d8ccfeada1c3e59f327b9ead598a3b791df08935..083d56c5a3797d9de3027154bd8c46f5070c121d 100644 (file)
@@ -11,24 +11,13 @@ from typing import TYPE_CHECKING, cast
 from aiovban.asyncio.util import BackPressureStrategy
 from aiovban.enums import VBANSampleRate
 from music_assistant_models.config_entries import ConfigEntry, ConfigValueOption
-from music_assistant_models.enums import (
-    ConfigEntryType,
-    ContentType,
-    ProviderFeature,
-    StreamType,
-)
+from music_assistant_models.enums import ConfigEntryType, ContentType, ProviderFeature, StreamType
 from music_assistant_models.errors import SetupFailedError
 from music_assistant_models.media_items import AudioFormat
 from music_assistant_models.streamdetails import StreamMetadata
 
-from music_assistant.constants import (
-    CONF_BIND_IP,
-    CONF_BIND_PORT,
-    CONF_ENTRY_WARN_PREVIEW,
-)
-from music_assistant.helpers.util import (
-    get_ip_addresses,
-)
+from music_assistant.constants import CONF_BIND_IP, CONF_BIND_PORT, CONF_ENTRY_WARN_PREVIEW
+from music_assistant.helpers.util import get_ip_addresses
 from music_assistant.models.plugin import PluginProvider, PluginSource
 
 from .vban import AsyncVBANClientMod
@@ -180,7 +169,7 @@ async def get_config_entries(
             "Use 0.0.0.0 to bind to all interfaces, which is the default. \n"
             "This is an advanced setting that should normally "
             "not be adjusted in regular setups.",
-            category="advanced",
+            advanced=True,
             required=True,
         ),
         ConfigEntry(
@@ -190,7 +179,7 @@ async def get_config_entries(
             options=[ConfigValueOption(x, x) for x in VBAN_QUEUE_STRATEGIES],
             label="Receiver: VBAN queue strategy",
             description="What should happen if the receiving queue fills up?",
-            category="advanced",
+            advanced=True,
             required=True,
         ),
         ConfigEntry(
@@ -200,7 +189,7 @@ async def get_config_entries(
             label="Receiver: VBAN packets queue size",
             description="This can be increased if MA is running on a very low power device, "
             "otherwise this should not need to be changed.",
-            category="advanced",
+            advanced=True,
             required=True,
         ),
     )