From 85c58d5ed0e538f5b35bcf250ec27ccfb67cb8ef Mon Sep 17 00:00:00 2001 From: Lotus CI Date: Tue, 20 Oct 2026 00:19:47 -0400 Subject: [PATCH] fix(cinny-deploy): the call page's scripts are deployed again #30 added `rsync --exclude assets/` to keep old app assets, but an unanchored exclude matches every directory named assets, including public/element-call/assets/. Each deploy then updated the call page's index.html but not its hashed scripts, so after the lotus.28 deploy the call page requested files that did not exist (66 x 404 from 00:05 on 2026-10-20 until the assets were copied in by hand). The excludes are now anchored (/assets/, /public/element-call/assets/), and both asset directories get the same treatment: copied without --delete, pruned after 14 days, so an open call page keeps its scripts across a deploy. config.json stays unanchored on purpose (the production call config lives at public/element-call/config.json). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5 --- cinny/lotus_deploy.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cinny/lotus_deploy.sh b/cinny/lotus_deploy.sh index f1e1ab1..f7adeeb 100755 --- a/cinny/lotus_deploy.sh +++ b/cinny/lotus_deploy.sh @@ -164,9 +164,18 @@ echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploying to $WEBROOT..." # still holding an older index.html (or service-worker precache) asks for its # assets/index-.js, and deleting them on every deploy broke the app # for those users until their cached shell expired. Prune after 14 days. -rsync -a --delete --exclude config.json --exclude assets/ dist/ "$WEBROOT/" -rsync -a dist/assets/ "$WEBROOT/assets/" -find "$WEBROOT/assets" -type f -mtime +14 -delete +# The asset excludes are ANCHORED (leading /): an unanchored `assets/` also +# matched public/element-call/assets/, so the call page's index.html was +# updated while its hashed scripts never were, and calls failed to load. +# config.json stays unanchored on purpose: public/element-call/config.json is +# the production call config too. +rsync -a --delete --exclude config.json \ + --exclude /assets/ --exclude /public/element-call/assets/ dist/ "$WEBROOT/" +for dir in assets public/element-call/assets; do + mkdir -p "$WEBROOT/$dir" + rsync -a "dist/$dir/" "$WEBROOT/$dir/" + find "$WEBROOT/$dir" -type f -mtime +14 -delete +done echo "[$(date '+%Y-%m-%d %H:%M:%S')] ===== Deploy complete ($VITE_APP_VERSION) ====="