You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🤖 Add splash screen for instant startup feedback (#226)
## Problem
Users see dock icon but no window for 6-13s during app startup (varies
by machine: ~6s on M3, ~13s on M1).
Even with lazy-loaded services (#223), the renderer makes IPC calls on
mount which requires services to be loaded first, so the main window
can't appear until everything is ready.
## Solution
Added native splash screen that appears instantly (<100ms) while
services load.
## Implementation
**Three-phase startup:**
1. **Show splash** - Native BrowserWindow with static HTML (<100ms)
- No React, no IPC, no heavy dependencies
- Matches app theme colors from colors.tsx
- Shows "Loading services..." with spinner
2. **Load services** - Happens while splash is visible (~6-13s)
- Config, IpcMain, AI SDK, tokenizer modules
- User gets instant visual feedback
3. **Show main window** - Close splash, reveal app
- Services guaranteed ready when window appears
- Main window uses "ready-to-show" event to avoid white flash
## Changes
- **Added `static/splash.html`** - Lightweight loading screen matching
app theme
- **Modified `src/main.ts`** - Three-phase startup with splash screen
- **Updated `Makefile`** - Copy splash.html to dist during build
## Benefits
- ✅ Instant visual feedback (<100ms vs 6-13s black screen)
- ✅ No user confusion ("is it broken?")
- ✅ Services guaranteed ready (no race conditions)
- ✅ Clean transition to main window
- ✅ All tests pass (410 tests)
## Testing
Manually tested on M3 - splash appears instantly, main window appears
~6s later.
_Generated with `cmux`_
0 commit comments