From 43764e8c8d8944763292ea64eff5b5b61599eb90 Mon Sep 17 00:00:00 2001 From: naturallaw777 <99053422+naturallaw777@users.noreply.github.com> Date: Wed, 29 Jul 2026 02:44:03 +0000 Subject: [PATCH] feat: display version numbers on all Hub service tiles Previously only bitcoind.service showed a version on the tile. Now every service with a parsable Nix store path gets its version displayed (electrs, btcpayserver, lnd, rtl, mempool, vaultwarden, matrix-synapse, caddy, tor, etc.). The existing _get_service_version() helper reads systemctl show --property=ExecStart and extracts the version from the Nix store path. Results are cached for 5 minutes per unit. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com> --- app/sovran_systemsos_web/server.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 44a8dc6..dec23db 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -3097,6 +3097,11 @@ async def api_services(): service_data["version"] = btc_ver if icon == "bip110": service_data["bip110"] = await loop.run_in_executor(None, _get_bip110_status) + # ── Generic version for all services (Nix store path) ────────── + if enabled and unit and "version" not in service_data: + ver = await loop.run_in_executor(None, _get_service_version, unit) + if ver is not None: + service_data["version"] = ver return service_data results = await asyncio.gather(*[get_status(s) for s in services]) @@ -3371,6 +3376,11 @@ async def api_service_detail(unit: str, icon: str | None = None): service_detail["version"] = btc_ver if icon == "bip110": service_detail["bip110"] = await loop.run_in_executor(None, _get_bip110_status) + # ── Generic version for all services (Nix store path) ────────── + if enabled and unit and "version" not in service_detail: + ver = await loop.run_in_executor(None, _get_service_version, unit) + if ver is not None: + service_detail["version"] = ver return service_detail