fix(electron): guard deferred thumbnail capture against destroyed webContents
Surfaced 2026-04-26 while switching peeks: stderr showed `Unhandled
error: TypeError: Object has been destroyed at Timeout._onTimeout` from
the main process. Three sites in `backend/electron/ipc.ts` (lines 1338,
1542, 1797) deferred `captureThumbnail(win.webContents, …)` 1.5s after
`did-stop-loading`. If the window/webContents was destroyed inside that
window — easy to hit by closing a peek immediately after open — the
setTimeout body dereferenced an already-destroyed BrowserWindow and
threw an unhandled exception.
Fix: each setTimeout body now checks `isDestroyed()` first.
New `tests/desktop/window-thumbnail-close-race.spec.ts` opens a
non-canvas web window and closes it inside the 1.5s thumbnail debounce.