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.
+
+
+
+
+
+
+