""" Web UI routes for serving HTML templates. """ from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from pathlib import Path router = APIRouter(tags=["web"]) # Setup templates directory WEB_ROOT = Path(__file__).resolve().parent.parent templates = Jinja2Templates(directory=str(WEB_ROOT / "templates")) @router.get("/", response_class=HTMLResponse) async def index(request: Request, build_id: str = None): """ Render the main index page showing all builds. Args: request: FastAPI Request object build_id: Optional build ID to automatically show log modal and trigger artifact download on build completion Returns: Rendered HTML template """ return templates.TemplateResponse( "index.html", {"request": request, "build_id": build_id} ) @router.get("/add_build", response_class=HTMLResponse) async def add_build(request: Request): """ Render the add build page for creating new firmware builds. Args: request: FastAPI Request object Returns: Rendered HTML template """ return templates.TemplateResponse( "add_build.html", {"request": request} )