style(design): FINDING-004 — htmx vendorizat local, nu din CDN (offline-first)
Dashboard-ul incarca htmx din unpkg.com. Gateway-ul ruleaza offline (LXC/VPS + Cloudflare Tunnel); cand CDN-ul e blocat/inaccesibil, htmx nu se incarca si dashboard-ul ramane static: zero polling (banner alerta blocate, coada, mapari), butoanele de mapare nu trimit. Aceeasi decizie offline-first ca fontul UI (FINDING-002, fara dependinta CDN). Fix: vendorizez htmx.org@1.9.12 minificat in app/web/static/, montez StaticFiles la /static in main.py, base.html refera /static/htmx.min.js. Verificat live: window.htmx.version=1.9.12, fragment polls 200, zero regresie vizuala. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,10 +10,12 @@ from __future__ import annotations
|
||||
|
||||
from contextlib import asynccontextmanager
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.exceptions import RequestValidationError
|
||||
from fastapi.responses import JSONResponse, PlainTextResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from . import __version__
|
||||
from .api.v1.router import router as api_v1_router
|
||||
@@ -46,6 +48,13 @@ async def validation_exception_handler(request: Request, exc: RequestValidationE
|
||||
return JSONResponse(status_code=422, content={"detail": cleaned})
|
||||
|
||||
|
||||
# Assets servite local (htmx vendorizat), NU din CDN: gateway-ul ruleaza
|
||||
# offline (LXC/VPS, Cloudflare Tunnel). Fara asta, dashboard-ul ramane static
|
||||
# (zero polling banner/coada) cand unpkg e blocat/inaccesibil. Aceeasi decizie
|
||||
# offline-first ca fontul UI (fara dependinta CDN).
|
||||
_STATIC_DIR = Path(__file__).resolve().parent / "web" / "static"
|
||||
app.mount("/static", StaticFiles(directory=str(_STATIC_DIR)), name="static")
|
||||
|
||||
app.include_router(api_v1_router)
|
||||
app.include_router(web_router)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user