← back to Marketing Command Center
fix(mcc): guard panel-router race that blanked panels + untrack screen-record videos
243d9c5d5f969ee8f1fd4dac57ef1763ce3244e8 · 2026-07-22 10:31:51 -0700 · Steve Abrams
route() in public/app.js had no concurrency guard across its two awaits (fetch
panel HTML, load panel JS), so rapid panel switching interleaved two route()
calls that both wrote the shared #panel — a stale one landed after the fresh
render and wiped it (title stays, zero cards/API/errors = "posts all blank").
Added a latest-wins token: after each await, bail if a newer nav superseded.
Verified via /screenrecord (5-run order-varied recording, run3 reproduced the
all-blank cascade) + a fixed-app.js-over-live-data proxy A/B. Deploy held (gated).
Also .gitignore screenrecord/rec/ + *.webm and untrack the 10 committed webm
recordings (7.5MB) an auto-save hook had pulled into history going forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
M .gitignoreD screenrecord/rec/run0/page@2c01d7569b49f94de71e05a9041138ba.webmD screenrecord/rec/run0/page@dc4fb41967627d02042518ad55804ad4.webmD screenrecord/rec/run1/page@69c3c7a42f13d89b8093ee3cbdfb4684.webmD screenrecord/rec/run1/page@8c820e74949b209ee3fb93803ee5fd1b.webmD screenrecord/rec/run2/page@1616cf421912feb6679fb38f1cd1aeaf.webmD screenrecord/rec/run2/page@355fdee8652b5a116b4b1321da3205f3.webmD screenrecord/rec/run3/page@0e731e2683305ede1ccab89a5b156259.webmD screenrecord/rec/run3/page@c60d9473e49baf6ebfdac95e693ec000.webmD screenrecord/rec/run4/page@07f63bbb75a5b265add060fc2fa13ead.webmD screenrecord/rec/run4/page@9b7d861794ba0b63f83535678a98fd0f.webm
Diff
commit 243d9c5d5f969ee8f1fd4dac57ef1763ce3244e8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jul 22 10:31:51 2026 -0700
fix(mcc): guard panel-router race that blanked panels + untrack screen-record videos
route() in public/app.js had no concurrency guard across its two awaits (fetch
panel HTML, load panel JS), so rapid panel switching interleaved two route()
calls that both wrote the shared #panel — a stale one landed after the fresh
render and wiped it (title stays, zero cards/API/errors = "posts all blank").
Added a latest-wins token: after each await, bail if a newer nav superseded.
Verified via /screenrecord (5-run order-varied recording, run3 reproduced the
all-blank cascade) + a fixed-app.js-over-live-data proxy A/B. Deploy held (gated).
Also .gitignore screenrecord/rec/ + *.webm and untrack the 10 committed webm
recordings (7.5MB) an auto-save hook had pulled into history going forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
.gitignore | 4 ++++
.../run0/page@2c01d7569b49f94de71e05a9041138ba.webm | Bin 721402 -> 0 bytes
.../run0/page@dc4fb41967627d02042518ad55804ad4.webm | Bin 983290 -> 0 bytes
.../run1/page@69c3c7a42f13d89b8093ee3cbdfb4684.webm | Bin 973328 -> 0 bytes
.../run1/page@8c820e74949b209ee3fb93803ee5fd1b.webm | Bin 714611 -> 0 bytes
.../run2/page@1616cf421912feb6679fb38f1cd1aeaf.webm | Bin 651074 -> 0 bytes
.../run2/page@355fdee8652b5a116b4b1321da3205f3.webm | Bin 979439 -> 0 bytes
.../run3/page@0e731e2683305ede1ccab89a5b156259.webm | Bin 763778 -> 0 bytes
.../run3/page@c60d9473e49baf6ebfdac95e693ec000.webm | Bin 495490 -> 0 bytes
.../run4/page@07f63bbb75a5b265add060fc2fa13ead.webm | Bin 663779 -> 0 bytes
.../run4/page@9b7d861794ba0b63f83535678a98fd0f.webm | Bin 936511 -> 0 bytes
11 files changed, 4 insertions(+)
diff --git a/.gitignore b/.gitignore
index b68d3ef..3bd15f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,3 +54,7 @@ __pycache__/
data/cc-import-fm-clients.json
data/engine-queue.json
data/engine-config.json
+
+# screen-record debug artifacts (videos are large binaries; keep log+report only)
+screenrecord/rec/
+*.webm
diff --git a/screenrecord/rec/run0/page@2c01d7569b49f94de71e05a9041138ba.webm b/screenrecord/rec/run0/page@2c01d7569b49f94de71e05a9041138ba.webm
deleted file mode 100644
index 6cd29e9..0000000
Binary files a/screenrecord/rec/run0/page@2c01d7569b49f94de71e05a9041138ba.webm and /dev/null differ
diff --git a/screenrecord/rec/run0/page@dc4fb41967627d02042518ad55804ad4.webm b/screenrecord/rec/run0/page@dc4fb41967627d02042518ad55804ad4.webm
deleted file mode 100644
index 9e9d765..0000000
Binary files a/screenrecord/rec/run0/page@dc4fb41967627d02042518ad55804ad4.webm and /dev/null differ
diff --git a/screenrecord/rec/run1/page@69c3c7a42f13d89b8093ee3cbdfb4684.webm b/screenrecord/rec/run1/page@69c3c7a42f13d89b8093ee3cbdfb4684.webm
deleted file mode 100644
index ee6e2bf..0000000
Binary files a/screenrecord/rec/run1/page@69c3c7a42f13d89b8093ee3cbdfb4684.webm and /dev/null differ
diff --git a/screenrecord/rec/run1/page@8c820e74949b209ee3fb93803ee5fd1b.webm b/screenrecord/rec/run1/page@8c820e74949b209ee3fb93803ee5fd1b.webm
deleted file mode 100644
index b360d4f..0000000
Binary files a/screenrecord/rec/run1/page@8c820e74949b209ee3fb93803ee5fd1b.webm and /dev/null differ
diff --git a/screenrecord/rec/run2/page@1616cf421912feb6679fb38f1cd1aeaf.webm b/screenrecord/rec/run2/page@1616cf421912feb6679fb38f1cd1aeaf.webm
deleted file mode 100644
index b4092c9..0000000
Binary files a/screenrecord/rec/run2/page@1616cf421912feb6679fb38f1cd1aeaf.webm and /dev/null differ
diff --git a/screenrecord/rec/run2/page@355fdee8652b5a116b4b1321da3205f3.webm b/screenrecord/rec/run2/page@355fdee8652b5a116b4b1321da3205f3.webm
deleted file mode 100644
index 05830ab..0000000
Binary files a/screenrecord/rec/run2/page@355fdee8652b5a116b4b1321da3205f3.webm and /dev/null differ
diff --git a/screenrecord/rec/run3/page@0e731e2683305ede1ccab89a5b156259.webm b/screenrecord/rec/run3/page@0e731e2683305ede1ccab89a5b156259.webm
deleted file mode 100644
index 93a7fe1..0000000
Binary files a/screenrecord/rec/run3/page@0e731e2683305ede1ccab89a5b156259.webm and /dev/null differ
diff --git a/screenrecord/rec/run3/page@c60d9473e49baf6ebfdac95e693ec000.webm b/screenrecord/rec/run3/page@c60d9473e49baf6ebfdac95e693ec000.webm
deleted file mode 100644
index de90d3f..0000000
Binary files a/screenrecord/rec/run3/page@c60d9473e49baf6ebfdac95e693ec000.webm and /dev/null differ
diff --git a/screenrecord/rec/run4/page@07f63bbb75a5b265add060fc2fa13ead.webm b/screenrecord/rec/run4/page@07f63bbb75a5b265add060fc2fa13ead.webm
deleted file mode 100644
index e2bb43e..0000000
Binary files a/screenrecord/rec/run4/page@07f63bbb75a5b265add060fc2fa13ead.webm and /dev/null differ
diff --git a/screenrecord/rec/run4/page@9b7d861794ba0b63f83535678a98fd0f.webm b/screenrecord/rec/run4/page@9b7d861794ba0b63f83535678a98fd0f.webm
deleted file mode 100644
index 63dfac3..0000000
Binary files a/screenrecord/rec/run4/page@9b7d861794ba0b63f83535678a98fd0f.webm and /dev/null differ
← 5a92b90 auto-save: 2026-07-22T10:13:11 (5 files) — scripts/repro-run
·
back to Marketing Command Center
·
fix(mcc): durable local cache for expiring IG/fbcdn post ima 2ffb36f →