diff --git a/app/main.py b/app/main.py
index 85abcd1..aa7ac4d 100644
--- a/app/main.py
+++ b/app/main.py
@@ -19,6 +19,22 @@ import app.upscaler as upscaler
app = FastAPI(title="AI Video Upscaler Dashboard")
+# Middleware to prevent browser caching of static files (dev mode)
+from starlette.middleware.base import BaseHTTPMiddleware
+from starlette.requests import Request
+
+class NoCacheStaticMiddleware(BaseHTTPMiddleware):
+ async def dispatch(self, request: Request, call_next):
+ response = await call_next(request)
+ path = request.url.path
+ if path.endswith(('.js', '.css', '.html')) or path == '/':
+ response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
+ response.headers["Pragma"] = "no-cache"
+ response.headers["Expires"] = "0"
+ return response
+
+app.add_middleware(NoCacheStaticMiddleware)
+
# CORS middleware for local development
app.add_middleware(
CORSMiddleware,
diff --git a/static/app.js b/static/app.js
index a8ef37d..79a1c58 100644
--- a/static/app.js
+++ b/static/app.js
@@ -1494,7 +1494,7 @@ async function loadQueue() {
const jobs = await res.json();
const displayJobs = jobs.filter(job =>
- ["queued", "analyzing", "extracting", "upscaling", "restoring_faces", "interpolating", "assembling", "completed", "failed", "cancelled", "interrupted"].includes(job.status)
+ ["queued", "analyzing", "extracting", "upscaling", "restoring_faces", "interpolating", "assembling", "completed", "failed", "cancelled", "interrupted", "paused"].includes(job.status)
);
if (displayJobs.length === 0) {
@@ -1520,7 +1520,7 @@ async function loadQueue() {
let metaHtml = `
Model: ${modelLabel} (${scaleLabel})
- Source: ${job.video_path.split('/').pop()}
+ Source: ${job.video_path ? job.video_path.split('/').pop() : 'Unknown'}
`;
let errorHtml = "";
@@ -2033,11 +2033,11 @@ async function loadUploadsBrowser() {
}
async function initializeApp() {
- await loadModels();
- await checkActiveJobs();
- await loadGallery(); // Load enhancement gallery at page load
- await loadQueue(); // Load active jobs queue at page load
- await loadUploadsBrowser(); // Load previously uploaded videos browser
+ try { await loadModels(); } catch(e) { console.error("initializeApp: loadModels failed:", e); }
+ try { await checkActiveJobs(); } catch(e) { console.error("initializeApp: checkActiveJobs failed:", e); }
+ try { await loadGallery(); } catch(e) { console.error("initializeApp: loadGallery failed:", e); }
+ try { await loadQueue(); } catch(e) { console.error("initializeApp: loadQueue failed:", e); }
+ try { await loadUploadsBrowser(); } catch(e) { console.error("initializeApp: loadUploadsBrowser failed:", e); }
// Load GPU Diagnostics
try {