Merge pull request #97 from naturallaw777/copilot/update-bitcoin-tiles-version-display

Fix Bitcoin tile version: only active tile shows version, preserve BIP110 tag
This commit is contained in:
Sovran_Systems
2026-04-06 21:39:30 -05:00
committed by GitHub

View File

@@ -1574,12 +1574,15 @@ def _parse_bitcoin_subversion(subversion: str) -> str:
Examples: Examples:
'/Bitcoin Knots:27.1.0/''v27.1.0' '/Bitcoin Knots:27.1.0/''v27.1.0'
'/Satoshi:27.0.0/''v27.0.0' '/Satoshi:27.0.0/''v27.0.0'
'/Bitcoin Knots:27.1.0(bip110)/''v27.1.0' '/Bitcoin Knots:27.1.0(bip110)/' 'v27.1.0 (bip110)'
Falls back to the raw subversion string if parsing fails. Falls back to the raw subversion string if parsing fails.
""" """
m = re.search(r":(\d+\.\d+(?:\.\d+)*)", subversion) m = re.search(r":(\d+\.\d+(?:\.\d+)*)", subversion)
if m: if m:
return "v" + m.group(1) ver = "v" + m.group(1)
if "(bip110)" in subversion.lower():
ver += " (bip110)"
return ver
return subversion return subversion
@@ -1798,14 +1801,14 @@ async def api_services():
service_data["sync_progress"] = sync_progress service_data["sync_progress"] = sync_progress
service_data["sync_blocks"] = sync_blocks service_data["sync_blocks"] = sync_blocks
service_data["sync_headers"] = sync_headers service_data["sync_headers"] = sync_headers
if unit == "bitcoind.service": if unit == "bitcoind.service" and enabled:
ver_info = await loop.run_in_executor(None, _get_bitcoin_version_info) ver_info = await loop.run_in_executor(None, _get_bitcoin_version_info)
if ver_info is not None: if ver_info is not None:
subversion = ver_info.get("subversion", "") subversion = ver_info.get("subversion", "")
btc_ver = _parse_bitcoin_subversion(subversion) btc_ver = _parse_bitcoin_subversion(subversion)
service_data["bitcoin_version"] = btc_ver # backwards compat service_data["bitcoin_version"] = btc_ver # backwards compat
service_data["version"] = btc_ver service_data["version"] = btc_ver
else: elif unit != "bitcoind.service":
svc_ver = await loop.run_in_executor(None, _get_service_version, unit) svc_ver = await loop.run_in_executor(None, _get_service_version, unit)
if svc_ver is not None: if svc_ver is not None:
service_data["version"] = svc_ver service_data["version"] = svc_ver
@@ -2081,7 +2084,7 @@ async def api_service_detail(unit: str, icon: str | None = None):
service_detail["sync_progress"] = sync_progress service_detail["sync_progress"] = sync_progress
service_detail["sync_blocks"] = sync_blocks service_detail["sync_blocks"] = sync_blocks
service_detail["sync_headers"] = sync_headers service_detail["sync_headers"] = sync_headers
if unit == "bitcoind.service": if unit == "bitcoind.service" and enabled:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
ver_info = await loop.run_in_executor(None, _get_bitcoin_version_info) ver_info = await loop.run_in_executor(None, _get_bitcoin_version_info)
if ver_info is not None: if ver_info is not None:
@@ -2089,7 +2092,7 @@ async def api_service_detail(unit: str, icon: str | None = None):
btc_ver = _parse_bitcoin_subversion(subversion) btc_ver = _parse_bitcoin_subversion(subversion)
service_detail["bitcoin_version"] = btc_ver # backwards compat service_detail["bitcoin_version"] = btc_ver # backwards compat
service_detail["version"] = btc_ver service_detail["version"] = btc_ver
else: elif unit != "bitcoind.service":
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
svc_ver = await loop.run_in_executor(None, _get_service_version, unit) svc_ver = await loop.run_in_executor(None, _get_service_version, unit)
if svc_ver is not None: if svc_ver is not None: