feat: add Progressive Web App (PWA) support with service worker registration, manifest, update notifications, and install prompts
This commit is contained in:
@@ -1532,6 +1532,33 @@ async def api_diagnostics(current_user=Depends(require_admin)):
|
||||
if FRONTEND_DIR.exists():
|
||||
app.mount("/static", StaticFiles(directory=str(FRONTEND_DIR)), name="static")
|
||||
|
||||
@app.get("/sw.js")
|
||||
async def serve_service_worker():
|
||||
"""Serve the service worker for PWA support."""
|
||||
sw_file = FRONTEND_DIR / "sw.js"
|
||||
if sw_file.exists():
|
||||
return FileResponse(
|
||||
sw_file,
|
||||
media_type="application/javascript",
|
||||
headers={
|
||||
"Cache-Control": "no-cache, no-store, must-revalidate",
|
||||
"Service-Worker-Allowed": "/"
|
||||
}
|
||||
)
|
||||
raise HTTPException(status_code=404, detail="Service worker not found")
|
||||
|
||||
@app.get("/manifest.json")
|
||||
async def serve_manifest():
|
||||
"""Serve the PWA manifest."""
|
||||
manifest_file = FRONTEND_DIR / "manifest.json"
|
||||
if manifest_file.exists():
|
||||
return FileResponse(
|
||||
manifest_file,
|
||||
media_type="application/manifest+json",
|
||||
headers={"Cache-Control": "public, max-age=3600"}
|
||||
)
|
||||
raise HTTPException(status_code=404, detail="Manifest not found")
|
||||
|
||||
@app.get("/popout/{vault_name}/{path:path}")
|
||||
async def serve_popout(vault_name: str, path: str):
|
||||
"""Serve the minimalist popout page for a specific file."""
|
||||
|
||||
Reference in New Issue
Block a user