Sidebar: show running build version
Display the running build version at the bottom of the sidebar (e.g. v0.2.11 for releases, v0.2.11.3 for dev builds), linking to the changelog. New version.py exposes display_version(); shared_templates.py registers it as the app_version Jinja global; main.py adds /api/version. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
74de3ddee2
commit
347f959d80
@ -53,6 +53,12 @@ app.include_router(changelog_router)
|
||||
app.include_router(search_router)
|
||||
|
||||
|
||||
@app.get("/api/version")
|
||||
async def version():
|
||||
from version import display_version
|
||||
return JSONResponse({"version": display_version()})
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
async def health():
|
||||
try:
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
from fastapi.templating import Jinja2Templates
|
||||
|
||||
from db import get_db_conn
|
||||
from version import display_version
|
||||
|
||||
|
||||
def _develop_mode() -> bool:
|
||||
@ -16,3 +17,4 @@ def _develop_mode() -> bool:
|
||||
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
templates.env.globals["develop_mode"] = _develop_mode
|
||||
templates.env.globals["app_version"] = display_version
|
||||
|
||||
@ -118,6 +118,18 @@ html {
|
||||
|
||||
.sidebar-bottom { margin-top: auto; }
|
||||
|
||||
.sidebar-version {
|
||||
display: block;
|
||||
margin-top: 0.5rem;
|
||||
text-align: center;
|
||||
font-family: var(--mono);
|
||||
font-size: 0.68rem;
|
||||
color: var(--text-dim);
|
||||
text-decoration: none;
|
||||
opacity: 0.75;
|
||||
}
|
||||
.sidebar-version:hover { opacity: 1; }
|
||||
|
||||
.disk-warning {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -289,6 +289,7 @@
|
||||
</svg>
|
||||
<span id="rescan-label">Rescan library</span>
|
||||
</button>
|
||||
<a href="/changelog" class="sidebar-version" title="Running Novela build">{{ app_version() }}</a>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
26
containers/novela/version.py
Normal file
26
containers/novela/version.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""Novela version metadata.
|
||||
|
||||
The release version is the single source maintained in ``changelog.py``
|
||||
(``CHANGELOG[0]["version"]``). Dev/test builds append an explicit ``BUILD``
|
||||
segment that is incremented by ``scripts/bump-dev-build.py`` on every test
|
||||
build, so operators can see exactly which image build is running in the
|
||||
sidebar. ``BUILD`` is reset to 0 for releases.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from changelog import CHANGELOG
|
||||
|
||||
BUILD = 2
|
||||
|
||||
|
||||
def _release_version() -> str:
|
||||
"""Return the semantic release version (e.g. v0.2.11)."""
|
||||
return CHANGELOG[0]["version"] if CHANGELOG else "v0.0.0"
|
||||
|
||||
|
||||
def display_version() -> str:
|
||||
"""Return the user-visible Novela version (e.g. v0.2.11 or v0.2.11.3)."""
|
||||
version = _release_version()
|
||||
if BUILD > 0:
|
||||
return f"{version}.{BUILD}"
|
||||
return version
|
||||
Loading…
Reference in New Issue
Block a user