What's new in v0.9.2
🐛 Bug Fixes
Headless mode — Gemini prompts now always send
The browser window was being resized to 1×1 px when hidden offscreen. This collapsed CSS layout so Gemini's <rich-textarea> got offsetParent = null, causing isVisible() to return false, findGeminiInput() to return null, and prompts to silently never be sent.
Fix: the hidden browser window is now set to 1024×768 while remaining at position (−10000, −10000) — invisible to the user, but with a valid viewport that keeps the DOM layout intact.
Fixes #1.
Chat UI no longer refreshes after Kim answers
After Kim completed a task, the welcome section (browser provider picker, What Kim can do, example prompts, keyboard shortcuts) was re-appearing at the top of the scroll container. This pushed the conversation messages down, creating a visible "scroll reset" that forced the user to scroll back down.
Fix: a hasSentMessageRef now latches to true the moment the user sends their first message and stays true for the entire new-chat session. The welcome section is permanently hidden from that point on.
Cancel widget scoping
The cancel widget (stop button overlay) now only appears when Kim actually takes a screenshot — simple tasks run without it.
Browser provider — no system prompt re-injection
The system prompt was being re-injected into the browser LLM on every task iteration. Fixed to inject once per session.
📦 Changelog since v0.9.1
fix(headless)— browser window viewport 1×1 → 1024×768 soisVisible()works offscreenfix(chat)— welcome section permanently hides after first message sentfix(chat)— scroll reset after task completion resolved as side-effect of abovefix(ui)— cancel widget only shown when agent is taking screenshotsfix(browser)— stop re-injecting system prompt on every taskfix(ci)— stable Node 20 + improved npm cache in GitHub Actionsfix(rust)— clippy warnings cleaned up