Added newSession, tree, and fork keybinding actions for /new, /tree, and /fork commands. All unbound by default. (#1114 by @juanibiapina)
Added retry.maxDelayMs setting to cap maximum server-requested retry delay. When a provider requests a longer delay (e.g., Google's "quota will reset after 5h"), the request fails immediately with an informative error instead of waiting silently. Default: 60000ms (60 seconds). (#1123)
/resume session picker: new "Threaded" sort mode (now default) displays sessions in a tree structure based on fork relationships. Compact one-line format with message count and age on the right. (#1124 by @pasky)
Added Qwen CLI OAuth provider extension example. (#940 by @4h9fbZ)
Added OAuth modifyModels hook support for extension-registered providers at registration time. (#940 by @4h9fbZ)
Added Qwen thinking format support for OpenAI-compatible completions via enable_thinking. (#940 by @4h9fbZ)
Added sticky column tracking for vertical cursor navigation so the editor restores the preferred column when moving across short lines. (#1120 by @Perlence)
Added resources_discover extension hook to supply additional skills, prompts, and themes on startup and reload.
Fixed
Fixed switchSession() appending spurious thinking_level_change entry to session log on resume. setThinkingLevel() is now idempotent. (#1118)
Fixed clipboard image paste on WSL2/WSLg writing invalid PNG files when clipboard provides image/bmp format. BMP images are now converted to PNG before saving. (#1112 by @lightningRalf)
Fixed Kitty keyboard protocol base layout fallback so non-QWERTY layouts do not trigger wrong shortcuts (#1096 by @rytswd)