From 60e3fc539edbc3d3d0637e8b2b06a45119e53028 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 21 May 2026 18:31:51 -0400 Subject: [PATCH] docs(devops): add Nginx caching investigation task for app version pickup issue Co-Authored-By: Claude Sonnet 4.6 --- documentation/TODO__Agents.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 0f476952..e14f9c67 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -494,6 +494,23 @@ Firefox unaffected. Production unaffected (public IPs only). ago and regressed. Check Nginx site config and FastAPI `CORSMiddleware` settings. Low urgency (dev-only, Firefox workaround available), but blocks home-network iframe testing. +### [DevOps] Nginx caching — app version pickup issue +- [ ] **Investigate Nginx reverse proxy caching so users pick up new app deploys.** + Some users are not getting the updated app after a deploy. SvelteKit hashes JS/CSS bundle + filenames (cache-busting is automatic), but if Nginx or the browser caches `index.html` + itself, users get stale HTML pointing to old (possibly deleted) hashed assets. + + **Check:** + - `proxy_cache` / `expires` directives in Nginx config for the SvelteKit app location + - Actual `Cache-Control` header on `/` — `curl -I https:///` to verify + - Any service worker registration that might add another caching layer + + **Expected fix:** Serve `index.html` with `Cache-Control: no-cache` (or `no-store`). + Hashed static assets (`/_app/immutable/`) can stay aggressively cached (`max-age=31536000, + immutable`). Root page must always be fresh so users pick up the new bundle references. + + **Task ID:** #182928308 (shared Kanban) + ### [DevOps] Remaining deployment items - [ ] **Simplify Dockerfile env file selection** — Currently the Dockerfile uses a `BUILD_MODE` arg to