From 2f9491c71b496c8ecddcf0095cbd715d0deb1372 Mon Sep 17 00:00:00 2001
From: Broque Thomas <26755000+Nezreka@users.noreply.github.com>
Date: Fri, 20 Mar 2026 13:41:02 -0700
Subject: [PATCH] Expose Hydrabase as a configurable metadata source (no dev
mode needed)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add Hydrabase section to Settings → Connections with enable toggle,
WebSocket URL, API key, auto-connect, and connect/disconnect button.
_is_hydrabase_active() now checks hydrabase.enabled config in addition
to dev_mode — either path activates it. Default disabled, zero change
for existing users. Dev admin page stays behind dev mode password.
---
config/settings.py | 3 ++-
web_server.py | 19 ++++++++-----
webui/index.html | 32 ++++++++++++++++++++++
webui/static/script.js | 61 ++++++++++++++++++++++++++++++++++++++++++
4 files changed, 108 insertions(+), 7 deletions(-)
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.
+
+
+
+
+
+
+