Start this window's theme service: hand over any theme state stored before the host existed, then
subscribe to the host so this window's copy stays current.
Handing over first so the subscription's immediate delivery already carries whatever was adopted,
rather than the state main had a moment before. A handover that fails must not cost this window
the subscription — that would cost it every theme change for the rest of the session, where the
failed handover only costs it the theme the user left off at.
Neither half is allowed to fail this window's startup. The cache is already usable — it was
filled before React rendered — so a host that is slow or missing costs freshness, not
correctness, and must not take down the unrelated services that start alongside this one.
Only the FIRST subscribe attempt is awaited. This is one of the promises the renderer's startup
batch waits on (see index.tsx), and the retries back off over several seconds — so awaiting
them would put that whole backoff in front of the dock layout in exactly the case where the app
is already slow. Nothing downstream depends on the subscription being live.
Start this window's theme service: hand over any theme state stored before the host existed, then subscribe to the host so this window's copy stays current.
Handing over first so the subscription's immediate delivery already carries whatever was adopted, rather than the state main had a moment before. A handover that fails must not cost this window the subscription — that would cost it every theme change for the rest of the session, where the failed handover only costs it the theme the user left off at.
Neither half is allowed to fail this window's startup. The cache is already usable — it was filled before React rendered — so a host that is slow or missing costs freshness, not correctness, and must not take down the unrelated services that start alongside this one.
Only the FIRST subscribe attempt is awaited. This is one of the promises the renderer's startup batch waits on (see
index.tsx), and the retries back off over several seconds — so awaiting them would put that whole backoff in front of the dock layout in exactly the case where the app is already slow. Nothing downstream depends on the subscription being live.Call once at renderer startup.