Patch follow-up to v0.4.0.
The detached-spawn flow looked broken from the user's seat: pilot dispatched researcher, researcher actually completed and the kernel correctly delivered both the SSE event and the synthetic history injection, but no report bubble ever appeared in the chat surface. User saw the empty wait, asked pilot, pilot said "应该已经显示了" — UX disaster.
Root cause
`UI/SpotlightContentView.swift::handleLocalEvent` had a stale-index guard at the top:
```swift
guard messages.indices.contains(assistantIndex) else { return }
```
Correct for mid-turn events (`text_delta` / `tool_call` need an active assistant bubble to write into). But `spawn_done` arrives 3-5 minutes AFTER the turn that dispatched the spawn has ended — that's the whole point of detach mode. At delivery time, `assistantIndex` is stale, the guard fires, the event is silently dropped.
Fix
`spawnDone` now handled at the TOP of `handleLocalEvent`, BEFORE the stale-index guard. It appends a fresh standalone bubble (doesn't need any active `assistantIndex`) and returns.
Pairs with
- kinclaw v1.12.1 — kernel-side plumbing was already correct; this was purely a Mac-side UI miss.