Extension editor (ctx.ui.editor()) now uses Enter to submit and Shift+Enter for newlines, matching the main editor. Previously used Ctrl+Enter to submit. Extensions with hardcoded "ctrl+enter" hints need updating. (#642 by @mitsuhiko)
SessionManager.list() and SessionManager.listAll() are now async, returning Promise<SessionInfo[]>. Callers must await them. (#620 by @tmustier)
Added
/resume selector now toggles between current-folder and all sessions with Tab, showing the session cwd in the All view and loading progress. (#620 by @tmustier)
SessionManager.list() and SessionManager.listAll() accept optional onProgress callback for progress updates
SessionInfo.cwd field containing the session's working directory (empty string for old sessions)
SessionListProgress type export for progress callbacks
/scoped-models command to enable/disable models for Ctrl+P cycling. Changes are session-only by default; press Ctrl+S to persist to settings.json. (#626 by @CarlosGtrz)
model_select extension hook fires when model changes via /model, model cycling, or session restore with source field and previousModel (#628 by @marckrenn)
ctx.ui.setWorkingMessage() extension API to customize the "Working..." message during streaming (#625 by @nicobailon)
Skill slash commands: loaded skills are registered as /skill:name commands for quick access. Toggle via /settings or skills.enableSkillCommands in settings.json. (#630 by @Dwsy)
Slash command autocomplete now uses fuzzy matching (type /skbra to match /skill:brave-search)
/tree branch summarization now offers three options: "No summary", "Summarize", and "Summarize with custom prompt". Custom prompts are appended as additional focus to the default summarization instructions. (#642 by @mitsuhiko)
Fixed
Missing spacer between assistant message and text editor (#655)
Session picker respects custom keybindings when using --resume (#633 by @aos)
Custom footer extensions now see model changes: ctx.model is now a getter that returns the current model instead of a snapshot from when the context was created (#634 by @ogulcancelik)
Footer git branch not updating after external branch switches. Git uses atomic writes (temp file + rename), which changes the inode and breaks fs.watch on the file. Now watches the directory instead.
Extension loading errors are now displayed to the user instead of being silently ignored (#639 by @aliou)