- useUpdateStore: keep sidecar-sourced body when merging fresh desktopInfo (electron-updater returns 'See release notes at ...' which clobbered it) - main.mjs: defer quitAndInstall/relaunch via setImmediate so IPC reply flushes first; wire update-downloaded and error events; log restart path