diff --git a/cmd/arcrun-app/check-render.sh b/cmd/arcrun-app/check-render.sh index c0ded27..df006e4 100755 --- a/cmd/arcrun-app/check-render.sh +++ b/cmd/arcrun-app/check-render.sh @@ -14,9 +14,27 @@ CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" [ -x "$CHROME" ] || { echo "❌ 找不到 Chrome,跳過渲染檢查"; exit 0; } [ -d frontend/dist ] || { echo "❌ 沒有 frontend/dist——先 wails build"; exit 1; } -W=$(mktemp -d); trap 'rm -rf "$W"; kill %1 2>/dev/null' EXIT +W=$(mktemp -d) +# 🔴 2026-08-05:原本 trap 用 `kill %1`(job spec),在子 shell/連續執行時抓不到 +# ⇒ 上一次的 http.server 沒收掉、佔住 8799 ⇒ 下一次跑抓到**舊頁面**、誤報紅燈 +# (實撞:同一份 build 連跑三次,一次綠兩次紅,白追一輪)。改記 PID 收。 +SRV_PID="" +cleanup() { rm -rf "$W"; [ -n "$SRV_PID" ] && kill "$SRV_PID" 2>/dev/null; } +trap cleanup EXIT +# 保險:先清掉任何殘留在該 port 上的 server(可能是上次沒收乾淨的) +lsof -ti tcp:8799 2>/dev/null | xargs -r kill 2>/dev/null; sleep 0.3 cp -R frontend/dist/* "$W/" cat > "$W/mock.js" <<'JS' +// 🔴 2026-08-05:主題要用 localStorage 設,不能只改 。 +// t193 三修(leo)起 main.js 啟動時會依 localStorage 覆寫成**預設淺色** +// ⇒ 光改 HTML 屬性會被 JS 蓋掉,量到全白 → 誤報「深色模式沒生效」。 +// mock.js 在 module 之前載入,正好趕在 applyTheme() 之前寫入。 +try { localStorage.setItem('arcrun_app_theme','dark'); } catch (e) {} +// 保險:headless 下 localStorage 可能被限制 ⇒ 在 module 跑完後再強制設一次屬性。 +// (main.js 的 applyTheme 只在啟動時跑一次,之後不會再蓋回去。) +addEventListener('DOMContentLoaded', () => { + setTimeout(() => document.documentElement.setAttribute('data-theme','dark'), 0); +}); window.go={main:{App:{GetState:async()=>({version:'v0',statusBig:'看守中',statusSub:'', syncing:false,engine:'workers-ai',geminiKey:'',extractedOK:0,accounts:[]}), SyncNow:async()=>{},PickFolder:async()=>'',AddFolder:async()=>{},RemoveFolder:async()=>{}, @@ -31,6 +49,7 @@ s=re.sub(r']*>','',s,count=1) open(p,'w',encoding='utf-8').write(s) PY (cd "$W" && python3 -m http.server 8799 >/dev/null 2>&1) & +SRV_PID=$! sleep 2 "$CHROME" --headless --disable-gpu --screenshot="$W/s.png" --window-size=1120,780 \ --hide-scrollbars --virtual-time-budget=3000 "http://localhost:8799/index.html" >/dev/null 2>&1