diff --git a/image-recipe/configs/nginx-archipelago.conf b/image-recipe/configs/nginx-archipelago.conf
index 3f862ea6..013bfc4e 100644
--- a/image-recipe/configs/nginx-archipelago.conf
+++ b/image-recipe/configs/nginx-archipelago.conf
@@ -652,7 +652,14 @@ server {
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Accept-Encoding "";
- sub_filter_once on;
+ sub_filter_types text/css application/javascript application/json;
+ sub_filter_once off;
+ sub_filter 'href="/' 'href="/app/fedimint/';
+ sub_filter 'src="/' 'src="/app/fedimint/';
+ sub_filter "href='/" "href='/app/fedimint/";
+ sub_filter "src='/" "src='/app/fedimint/";
+ sub_filter 'url("/' 'url("/app/fedimint/';
+ sub_filter "url('/" "url('/app/fedimint/";
sub_filter '' '';
}
location /app/fedimint-gateway/ {
diff --git a/image-recipe/configs/snippets/archipelago-https-app-proxies.conf b/image-recipe/configs/snippets/archipelago-https-app-proxies.conf
index 639f389a..7ded1871 100644
--- a/image-recipe/configs/snippets/archipelago-https-app-proxies.conf
+++ b/image-recipe/configs/snippets/archipelago-https-app-proxies.conf
@@ -174,7 +174,14 @@ location /app/fedimint/ {
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Accept-Encoding "";
- sub_filter_once on;
+ sub_filter_types text/css application/javascript application/json;
+ sub_filter_once off;
+ sub_filter 'href="/' 'href="/app/fedimint/';
+ sub_filter 'src="/' 'src="/app/fedimint/';
+ sub_filter "href='/" "href='/app/fedimint/";
+ sub_filter "src='/" "src='/app/fedimint/";
+ sub_filter 'url("/' 'url("/app/fedimint/';
+ sub_filter "url('/" "url('/app/fedimint/";
sub_filter '' '';
}
location /app/fedimint-gateway/ {
diff --git a/tests/production-quality/TRACKER.md b/tests/production-quality/TRACKER.md
index c4d80243..d274aed8 100644
--- a/tests/production-quality/TRACKER.md
+++ b/tests/production-quality/TRACKER.md
@@ -1,3 +1,33 @@
+# ▶▶ SESSION SAVE / RESUME (2026-06-15)
+
+**State:** v1.7.96-alpha SHIPPED. v1.7.97-alpha NOT cut yet — 10 fixes committed on **vps2 main** (`git remote: gitea-vps2`), nothing on the fleet yet. Validate on .116/.198 + UI-confirm BEFORE cutting .97.
+
+**Resume command (run elsewhere):**
+```
+cd ~/Projects/archy && git fetch gitea-vps2 && git checkout main && git reset --hard gitea-vps2/main && cat tests/production-quality/TRACKER.md
+```
+Then continue from "IN PROGRESS" below.
+
+**Committed & ready for .97 (vps2 main):** B5 (LND CORS, verified .116/.198/.103), B1, B2, B4, B14, B21, B3 (incl. /api/peer-content nginx via bootstrap), B15, B7. B6 pruned-gate already live.
+
+**IN PROGRESS — B13 Fedimint CSS:** nginx template + https snippet committed (fixes FRESH ISOs). REMAINING (resume here): add the bootstrap self-heal for already-deployed nodes, then BUILD (cargo build --release -p archipelago — ALWAYS check EXIT 0 before commit), sideload to .198, verify `curl http://192.168.1.198/app/fedimint/` styled + an asset returns CSS not HTML. Exact code to add in core/archipelago/src/bootstrap.rs:
+
+```rust
+// after NGINX_PEER_CONTENT_BLOCK const:
+const NGINX_FEDIMINT_OLD: &str = " sub_filter_once on;\n sub_filter '' '';\n }\n location /app/fedimint-gateway/ {";
+const NGINX_FEDIMINT_NEW: &str = " sub_filter_types text/css application/javascript application/json;\n sub_filter_once off;\n sub_filter 'href=\"/' 'href=\"/app/fedimint/';\n sub_filter 'src=\"/' 'src=\"/app/fedimint/';\n sub_filter \"href='/\" \"href='/app/fedimint/\";\n sub_filter \"src='/\" \"src='/app/fedimint/\";\n sub_filter 'url(\"/' 'url(\"/app/fedimint/';\n sub_filter \"url('/\" \"url('/app/fedimint/\";\n sub_filter '' '';\n }\n location /app/fedimint-gateway/ {";
+// in patch_nginx_conf(): add to guard + body:
+// let needs_fedimint_css = content.contains("location /app/fedimint/") && !content.contains("'href=\"/' 'href=\"/app/fedimint/'");
+// (add `&& !needs_fedimint_css` to the early-return guard)
+// if needs_fedimint_css { patched = patched.replace(NGINX_FEDIMINT_OLD, NGINX_FEDIMINT_NEW); }
+```
+
+**Then, in priority order:** B12 (mempool host detect — stacks.rs:1278), B16 (bitcoin status retain — UI-test), B6 no-node-present half, B14b (FIPS reachability depth), B22/B23 (peer download + group chat — need live repro), B9/B10/B11/B17/B18/B19, B8 (low), B20 (mesh-headers feature).
+
+**Ship .97 when ready:** ./scripts/create-release.sh 1.7.97-alpha (curate CHANGELOG ≥3 layman bullets first + run scripts/sync-whats-new.py; SKIP_RELEASE_TESTS=1 only for the 2 known-flaky vitest timing tests) → scripts/publish-release-assets.sh 1.7.97-alpha gitea-vps2 → git push gitea-vps2 main + tag. (gitea-local push fails: token rejected — non-blocking.)
+
+---
+
# Production-Quality Bug Tracker
Living tracker for the post-v1.7.96 "no new features until production quality" push.