Previously `historyItems` was seeded empty and the intro (with Banner + SessionPanel) was only pushed after Python's `session.create` returned — ~1.8s of agent + tools + MCP init with nothing on screen. Base CLI feels instant because it prints the banner as its first action. Seed `historyItems` with an info-less intro on mount. `appLayout` now renders the Banner unconditionally for `kind === 'intro'` and gates only the SessionPanel on `info` being present. Gateway.ready swaps the skin (~200ms) and session.info fills in the panel when the agent is ready. Net: first usable frame drops from ~2s to ~300ms (node + module graph + React mount). No behavior change — intro message is replaced in place by `introMsg(info)` when `newSession()` / `resumeById()` resolve. |
||
|---|---|---|
| .. | ||
| __tests__ | ||
| app | ||
| components | ||
| config | ||
| content | ||
| domain | ||
| hooks | ||
| lib | ||
| protocol | ||
| types | ||
| app.tsx | ||
| banner.ts | ||
| entry.tsx | ||
| gatewayClient.ts | ||
| gatewayTypes.ts | ||
| theme.ts | ||
| types.ts | ||