diff --git a/config/settings.py b/config/settings.py index 6b59d565..4da789c8 100644 --- a/config/settings.py +++ b/config/settings.py @@ -444,7 +444,8 @@ class ConfigManager: "hydrabase": { "url": "", "api_key": "", - "auto_connect": False + "auto_connect": False, + "enabled": False }, "content_filter": { "allow_explicit": True diff --git a/web_server.py b/web_server.py index 6b7b100f..ab0d85c9 100644 --- a/web_server.py +++ b/web_server.py @@ -4560,12 +4560,16 @@ _comparison_lock = threading.Lock() def _is_hydrabase_active(): """Check if Hydrabase should be used as the primary metadata source. - Returns False when dev mode is off — no behavior change for normal users.""" + Active when: (dev_mode OR hydrabase.enabled config) AND client connected.""" try: - return (dev_mode_enabled - and hydrabase_client is not None - and hydrabase_client.is_connected()) - except NameError: + if hydrabase_client is None or not hydrabase_client.is_connected(): + return False + # Dev mode always enables Hydrabase (legacy behavior) + if dev_mode_enabled: + return True + # Config toggle: user enabled Hydrabase as metadata source + return config_manager.get('hydrabase.enabled', False) + except (NameError, Exception): return False def _run_background_comparison(query, hydrabase_counts=None): @@ -40759,7 +40763,10 @@ try: timeout=10 ) _hydrabase_ws = _auto_ws - dev_mode_enabled = True + # Enable dev mode only if Hydrabase was previously in dev mode + # The config toggle (hydrabase.enabled) handles non-dev usage + if not _hydra_cfg.get('enabled'): + dev_mode_enabled = True print(f"✅ Hydrabase auto-connected to {_hydra_cfg['url']}") except Exception as e: print(f"⚠️ Hydrabase auto-reconnect failed: {e}") diff --git a/webui/index.html b/webui/index.html index 3e0c0f09..db1b3aa9 100644 --- a/webui/index.html +++ b/webui/index.html @@ -3677,6 +3677,38 @@ + +
+

Hydrabase

+
+ +
+
+ + +
+
+ + +
+
+ +
+
+
P2P metadata network. When enabled and connected, replaces Spotify/iTunes as the primary metadata source for searches.
+
+
+ + +
+
+