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
Since 0.12.3 every frontend build first verifies the prebuilt encryption module, and on Windows that check failed before the build started, because it mishandled Windows paths and Git's default Windows line endings changed the source files it hashes. The check now gives the same result on Windows, Linux and macOS, including in existing Windows clones, so npm run build works on Windows again. The stored source fingerprint changes because the check script is one of the files it covers. Past the check, the build ran out of memory under Node's default limit, so it now runs with a 12 GB limit, the same value the Docker CI build uses.
Fixes#32656