Copilot UIs share a layout problem: the valuable surface is a document, diff, or canvas. The AI is secondary chrome. If that chrome goes dead during inference, the whole product feels brittle.
Placement patterns that work
- Corner companion — 96–180px presence near the chat dock.
- Inline gutters — tiny mind beside the active inline suggestion.
- Panel header — state dot + short caption above the thread.
Pick one primary placement. Multiple mascots competing with the editor is noise.
Sync with copilot events
| Event | State |
|---|---|
| Composer focused / mic open | listening |
| Completion or agent request started | thinking |
| Stream / partial apply | talking |
| Idle after accept/reject | idle |
Do not steal focus from code
Presence should be peripheral. Avoid modal overlays for ordinary thinking. Keep contrast calm on dark IDE themes; Glim’s mono and deep themes are starting points.
Instrumentation
Track whether users cancel during thinking, re-prompt within 5 seconds, or accept suggestions after talking. Presence is working when cancel-without-reason drops — not when animation likes increase.
Ship a free creature from Glim into your staging copilot this week; wire states before you debate mascot lore.
Try Glim free. Offline starter + MIT creatures. No fake checkout.