Notes from my run at #23372 (#23392, now superseded by this PR). They may help with the parts marked "Not verified".
Reproduced on main (3b95e7831b), Linux and macOS. I used packaged builds (AppImage on Xvfb, and the arm64 .app on a Mac), each with its own profile and a seeded T3 home. To stall the backend I froze the bin.mjs child with SIGSTOP right after spawn. On both platforms no window appeared for the whole wait, including after the 60 s readiness timeout. Launching again (Linux) and open (macOS) did nothing. On macOS, list_windows for the app's pid stayed empty, and the trace showed desktop.lifecycle.activate → desktop.window.activate with no window, the same spans as in the issue.
macOS Dock/activate, which this PR lists as not captured. I tested it on my branch, where the splash shows at launch instead of after the timeout. The splash showed, and Cmd+W closed it (list_windows returned []). After that, open brought nothing back until I changed activate. Screenshot of the reopened splash: https://github.com/user-attachments/assets/f6939ea8-83f9-4013-b545-2177104636e7
Two things I think also apply here (I only read this branch's code; I didn't run it):
- A closed splash isn't reopened on activate. In
DesktopWindow.tsactivate, if the user closes the splash while the backend isn't ready,splashWindowRefisNoneand it falls through tocreateMainIfBackendReady, which does nothing. Here the next readiness timeout callsonReadinessFailureand brings the splash back, so the window could stay gone for up to 60 s rather than for good. My fix was to callshowConnectingSplashfromactivatewhen the splash is gone and the backend is still starting: 79185c4b5b. - A provider sign-in return link can load into the splash.
DesktopClerk.tsresumeProviderAuthuseselectronWindow.currentMainOrFirst. During a stalled boot the only window is the splash, so the return URL goes to the 360×220 splash. On my branch I switched it toelectronWindow.mainand return when that'sNone. A test inDesktopClerk.test.tsputs a splash first and checks it's never navigated. Same commit.
Recordings from my branch (Linux, 4x speed, splash from launch rather than after the timeout; main window blurred):
- Before: https://github.com/user-attachments/assets/0bb19e56-deb9-4392-a00a-0ba0d53a393e
- After: https://github.com/user-attachments/assets/1c208143-4291-4060-a33a-e607033de218
Not tested: Windows, Wayland, a real WSL connection, and the database stall itself. I couldn't reproduce the 658 s stall; #23482 tracks it.