Cold launch shows a blank window until the backend is ready
What I'm seeing
On Linux/Wayland, the nightly build takes about 7 seconds from launch to usable UI on a cold start.
Once it appears, the app works normally. This is mostly a perceived startup issue: for several seconds it looks like nothing is happening.
Version / environment
- T3 Code:
0.0.22.nightly.20260501.170-1
- Package:
t3code-bin from AUR, locally bumped to the current nightly release
- OS: Arch Linux
- Session: Hyprland / Wayland
- Launch wrapper uses Wayland Ozone flags and
--no-sandbox
What I found
I took a quick look inside the packaged app.asar. From what I can tell, the desktop process starts the local server first and then loads the renderer from the backend URL:
window.loadURL(backendHttpUrl)
So the rough startup path seems to be:
- Electron main starts.
- Main spawns
apps/server/dist/bin.mjs.
- The server initializes its runtime / SQLite / PTY / HTTP listener.
- Main waits for the backend URL to be ready.
- The window loads the renderer from that URL.
- The UI appears.
That would explain the blank/quiet startup: the app cannot show the real renderer until the local server is ready.
I may be missing some context, but the window reveal logic itself looked intentional. It seems like the expensive part is waiting for the local backend before first paint, not the final show() call.
Suggestion
Would it make sense to show a tiny local loading page immediately, then swap to the backend renderer once it is ready?
Something along these lines:
window.loadFile('splash.html')
await waitForBackendWindowReady(backendHttpUrl)
window.loadURL(backendHttpUrl)
The splash page could be extremely plain: logo/name + “Starting T3 Code…” or similar. Even if the backend still takes the same 5–7 seconds, startup would feel much better because the user gets immediate feedback.
Things I checked that did not seem to be the main issue
- Auto-updater: appears to happen after the window is already shown.
- User config/cache: small in my case, about 37 MB.
- GPU/AppImage extraction: does not look like the main bottleneck.
Happy to provide logs/timing if useful. This is pre-alpha, so totally understandable if this is just not high priority yet — filing because it seems like a small polish win with a big perceived-startup payoff.
Cold launch shows a blank window until the backend is ready
What I'm seeing
On Linux/Wayland, the nightly build takes about 7 seconds from launch to usable UI on a cold start.
Once it appears, the app works normally. This is mostly a perceived startup issue: for several seconds it looks like nothing is happening.
Version / environment
0.0.22.nightly.20260501.170-1t3code-binfrom AUR, locally bumped to the current nightly release--no-sandboxWhat I found
I took a quick look inside the packaged
app.asar. From what I can tell, the desktop process starts the local server first and then loads the renderer from the backend URL:So the rough startup path seems to be:
apps/server/dist/bin.mjs.That would explain the blank/quiet startup: the app cannot show the real renderer until the local server is ready.
I may be missing some context, but the window reveal logic itself looked intentional. It seems like the expensive part is waiting for the local backend before first paint, not the final
show()call.Suggestion
Would it make sense to show a tiny local loading page immediately, then swap to the backend renderer once it is ready?
Something along these lines:
The splash page could be extremely plain: logo/name + “Starting T3 Code…” or similar. Even if the backend still takes the same 5–7 seconds, startup would feel much better because the user gets immediate feedback.
Things I checked that did not seem to be the main issue
Happy to provide logs/timing if useful. This is pre-alpha, so totally understandable if this is just not high priority yet — filing because it seems like a small polish win with a big perceived-startup payoff.