/* ============================================================================ * sw-update — makes "Refresh UI" actually land the new build. * * Framework-free, with a shared sync core and a legacy fallback (same pattern as * async-guard.js): * • Loads as a plain