The sync step checked out the master the build started from. Fixes merged
on master while the tests ran made that master stale, so the push of the
"Preparation to X release" commit was rejected as non-fast-forward. The
step only warns about it, so the build stayed green while master missed
the released changelog section and What's New page, and the What's New
GitHub Pages site was not published. This happened for 2.48.0.
IdeaVim took Shift+Enter in the AIR prompt, so AIR's new line action never
ran and Insert mode couldn't break a line. Instead of special-casing single
keys, hand any key bound to an `Air.Chat.Prompt.*` action in the active
keymap to AIR, which also covers Enter, Ctrl+Enter and user rebindings.
Rider gets the state of a backend action (e.g. MoveElementRight or ReformatCode for C#) from the backend only for a real hotkey: when the last shortcut seen by the key dispatcher belongs to the action, it wraps the action into a composite that asks the backend. The synchronous tryToExecute goes through the same hotkey update but never gets there. After `:action` the last shortcut is Enter, so the action isn't wrapped, and after an `<Action>` mapping it is wrapped, but tryToExecuteNow updates the original action instead of the wrapped one. Either way only the frontend answers, it reports the action as disabled, and tryToExecute rejects it. The asynchronous tryToExecute updates the action the way a menu does, with an asynchronous request to the backend, so it gets the real state without blocking the EDT. The action then runs later, so executeAction can't tell whether it succeeded, but the backend's changes arrive later anyway.
The new Rider tests also cover the action cases fixed earlier (VIM-3376, VIM-3826, VIM-3861, VIM-3881) that had no Rider test. ReformatCode from a mapping no longer freezes Rider, so its disabled test is replaced by RiderReformatCodeTest, which runs in its own Rider in case it does again.
For a hotkey, Rider replaces its backend actions with a single RiderBackendCompositeAction, so IdeaVim's action listener sees the composite and not e.g. CommentByLineComment. The composite doesn't implement PossiblyDelegatingToBackendAction, so IdeaVim normalized the caret right away, before the backend applied the comment. The frontend took that caret move for a user change made while the request was pending and replayed it on top of the backend's changes, which put the caret back on the line just commented. The unit test didn't catch it because it simulates an action with the interface. The composite is internal to Rider and not available at compile time, so it's recognized by its class name, the same way the interface is.
Add changelog entries for the surround tag prompt (VIM-2796), incsearch in non-search prompts (VIM-4346) and k scrolling with sticky lines (VIM-4329), and create whatsnew-tbr.html from the release section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code-action sets origin to its GitHub App token and revokes it at
the end of its step, so the following push in "Record the release commit
the page describes" failed with "Invalid username or token".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>