What changed
Agents can now request secrets via an inline chat modal (not just a separate settings page). Azure DevOps integration now lists repos from all organizations, not just the first one. Mars web bridge is mounted by default (MARS_WEB=1 opt-in removed). Word-by-word fade-in streaming added.
TL;DR
OpenHands 1.28 ships four developer-facing improvements: mid-task secret requests, Azure DevOps full org listing, default Mars bridge, and smoother chat streaming.
Developer signal
The in-conversation secret modal is the most impactful change for production use. Previously, if an agent hit a credential it needed (an API key, a database password), the workflow would break — the user had to go to settings, add it, and restart. Now the agent surfaces a secure inline modal in the chat thread, the user enters the value once, and the run continues without interruption. If you're running OpenHands for multi-step agentic tasks that touch external services, this removes one of the most common workflow interruptions. The Azure DevOps fix is worth calling out separately: if your organization has multiple Azure DevOps orgs, OpenHands was silently missing repos from orgs other than the first one — update to get full repo visibility. For self-hosted deployments: MARS_WEB=1 is now the default and the env var is removed; if you had any Compose configs or deployment scripts that explicitly set MARS_WEB=1 to enable the bridge, that setting is now a no-op and can be cleaned up. If you deliberately had the bridge off (by not setting the flag), note that it is now on by default.