529ee80ac0
* fix(desktop): load the intact renderer bundle when an update tears one copy index.html and the hashed chunks it names are one generation. A packaged app ships that bundle twice (inside app.asar and, via asarUnpack, beside it in app.asar.unpacked), so an update that replaces the app while its files are locked can leave the two copies from different generations. resolveRendererIndex took the first index.html that existed, so it could pick the torn one and the window died on its first lazy import with "Failed to fetch dynamically imported module" -- with no way out, because every relaunch reloaded the same copy. Check each candidate's declared modules and prefer a complete generation; when both are torn, log which files are missing and how to repair instead of leaving the crash unexplained. * fix(cli): rebuild the desktop app when its renderer bundle is half-replaced The content stamp hashes the SOURCE tree, which an interrupted update leaves intact, so `hermes desktop` reported "up to date" and skipped the rebuild that would repair a torn bundle -- the app relaunched into the same crash and reinstalling looked like the only option. Treat a bundle whose index.html names missing chunks as stale regardless of the stamp, and say so on the way into the rebuild.