After reloading a chat while a background sub-agent was still working, its report came in as a plain user bubble with the whole raw report text instead of the "Background sub-agent finished" row, until the next reload. When the report arrives the page reloads the chat and receives the new turn live at the same moment, and the live copy, which lacks the message details, replaced the complete one from the server. The live copy is now laid over the server copy, so live changes still win and the report keeps what marks it as a sub-agent report.
Fixes#32801
Opening a menu moves the focus to its first entry, and when that entry has a tooltip the tooltip showed and took the first Escape, so the menu stayed open until Escape was pressed a second time. The open menu now gets Escape before the tooltip does and closes on the first press, while Escape in a submenu still closes only the submenu and Escape on a tooltip in a dialog still only hides the tooltip.
Fixes#32798
Since 0.12.3, chat messages show a stray space at the start of every paragraph and inside every italic, bold, struck-through or linked span, so an em dash followed by italic text renders with a visible gap. The edit view has no such space; it only appears in the displayed message. The stray space is gone and formatted text sits flush against its neighbours again.
Fixes#32739
When a function asked the user for input or confirmation and an execute event (a script sent to the browser) arrived in the same tab before they answered, clicking Confirm or Cancel closed the dialog but the answer never reached the function, which then waited until it timed out. Now the answer always goes back to the function that opened the dialog.
Fixes#32742