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)
|
||||
|
||||
|
||||
1
app/web/static/htmx.min.js
vendored
Normal file
1
app/web/static/htmx.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}Gateway RAR AUTOPASS{% endblock %}</title>
|
||||
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
||||
<script src="/static/htmx.min.js"></script>
|
||||
<style>
|
||||
:root { --bg:#0f1115; --card:#181b22; --ink:#e6e9ef; --muted:#8b93a7; --line:#262b36;
|
||||
--ok:#3ecf8e; --warn:#e6b34a; --err:#e5605e; --accent:#5b8def; }
|
||||
|
||||
Reference in New Issue
Block a user