diff --git a/backend/main.py b/backend/main.py index f9b1f75f2..ee3033613 100644 --- a/backend/main.py +++ b/backend/main.py @@ -31,10 +31,10 @@ from utils.auth import ( CustomCSRFMiddleware, create_default_admin_user, ) -from utils import get_version +from utils import get_version, check_new_version from config.config_loader import config, ConfigDict -app = FastAPI(title="RomM API", version="0.1.0") +app = FastAPI(title="RomM API", version=get_version()) app.add_middleware( CORSMiddleware, @@ -95,6 +95,7 @@ class SchedulerDict(TypedDict): class HeartbeatReturn(TypedDict): VERSION: str + NEW_VERSION: str | None ROMM_AUTH_ENABLED: bool WATCHER: WatcherDict SCHEDULER: SchedulerDict @@ -106,6 +107,7 @@ class HeartbeatReturn(TypedDict): def heartbeat() -> HeartbeatReturn: return { "VERSION": get_version(), + "NEW_VERSION": check_new_version(), "ROMM_AUTH_ENABLED": ROMM_AUTH_ENABLED, "WATCHER": { "ENABLED": ENABLE_RESCAN_ON_FILESYSTEM_CHANGE, diff --git a/backend/utils/__init__.py b/backend/utils/__init__.py index 27bf5936d..14a51f879 100644 --- a/backend/utils/__init__.py +++ b/backend/utils/__init__.py @@ -1,5 +1,7 @@ import re +import requests import subprocess as sp +from packaging.version import parse, InvalidVersion from __version__ import __version__ LANGUAGES = [ @@ -143,3 +145,17 @@ def get_version() -> str | None: return None branch = [a for a in output.split("\n") if a.find("*") >= 0][0] return branch[branch.find("*") + 2 :] + + +def check_new_version() -> str | None: + response = requests.get("https://api.github.com/repos/zurdi15/romm/releases/latest") + try: + last_version = response.json()["name"][1:] # remove leading 'v' from 'vX.X.X' + except KeyError: # rate limit reached + return None + try: + if parse(get_version()) < parse(last_version): + return last_version + except InvalidVersion: + pass + return None diff --git a/frontend/src/components/Drawer/Footer.vue b/frontend/src/components/Drawer/Footer.vue index d87347412..6b8ce4d04 100644 --- a/frontend/src/components/Drawer/Footer.vue +++ b/frontend/src/components/Drawer/Footer.vue @@ -1,11 +1,11 @@