Update main. #6
@@ -50,6 +50,16 @@ def _last_user_message(messages: list[dict]) -> str:
|
|||||||
def create_app() -> FastAPI:
|
def create_app() -> FastAPI:
|
||||||
app = FastAPI(title="Lyra Web")
|
app = FastAPI(title="Lyra Web")
|
||||||
|
|
||||||
|
@app.middleware("http")
|
||||||
|
async def _no_stale_shell(request: Request, call_next):
|
||||||
|
"""Always revalidate HTML/JS so a PWA can't serve a stale app shell after a
|
||||||
|
deploy (iOS applies heuristic caching when no cache header is set)."""
|
||||||
|
resp = await call_next(request)
|
||||||
|
ct = resp.headers.get("content-type", "")
|
||||||
|
if "text/html" in ct or "javascript" in ct:
|
||||||
|
resp.headers["Cache-Control"] = "no-cache, must-revalidate"
|
||||||
|
return resp
|
||||||
|
|
||||||
@app.get("/_health")
|
@app.get("/_health")
|
||||||
async def health() -> dict:
|
async def health() -> dict:
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|||||||
@@ -380,7 +380,7 @@
|
|||||||
<button class="mini" title="Rename / fix" onclick="renamePlayer(${v.id}, '${esc(v.name||'').replace(/'/g,"\\'")}')">✎</button>
|
<button class="mini" title="Rename / fix" onclick="renamePlayer(${v.id}, '${esc(v.name||'').replace(/'/g,"\\'")}')">✎</button>
|
||||||
${v.last_note ? `<div class="note-meta">“${esc(v.last_note)}”</div>` : ''}
|
${v.last_note ? `<div class="note-meta">“${esc(v.last_note)}”</div>` : ''}
|
||||||
</li>`).join('')}</ul>`
|
</li>`).join('')}</ul>`
|
||||||
: '<p class="empty">No roster yet — tell Lyra who\\'s at the table.</p>'}
|
: '<p class="empty">No roster yet — tell Lyra who is at the table.</p>'}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|||||||
Reference in New Issue
Block a user