Release / / with v2.24.0, v2.25.0, v2.26.0, v2.27.0, v2.28.0, v2.29.0
snacks.nvim v2.30.0
Review GitHub pull requests and add or reply to inline comments without leaving Neovim.
Before you upgrade to v2.30.0
3 to fixLive searches stop after `limit_live=10000` items by default; closed and unlisted buffers now appear in recent-file results.
Read the evidence
`show_delay` defaults to 5000 ms while waiting for initial results; buffer searches also match filetype and buffer type.
Read the evidence
Replace numeric `picker.formatters.file.truncate` with `left`, `center`, or `right`; use `min_width` for a minimum path width.
Pasting through a picker started in insert mode returns to insert mode; a picker opened from terminal mode starts input.
Read the evidence
Diff previews default to the `fancy` renderer and show renames; stage, unstage, and restore are disabled for merge-base comparisons.
Read the evidence
Replace `picker.previewers.diff.builtin` and `picker.previewers.git.builtin` with `picker.previewers.diff.style`: `syntax` for built-in syntax or `terminal` for an external renderer.
Use finder signature `function(opts, ctx)`, read filters from `ctx.filter`, and use `ctx.picker` and `ctx.async`; stop relying on the removed third finder argument and second async-result argument.
Deletion uses system trash by default (`explorer.trash=true`); without a supported executable it falls back to permanent deletion.
Image conversion error notifications are disabled by default; set `image.convert.notify=true` to restore them.
Read the evidence
Large-file buffers disable mini.hipatterns highlighting.
Read the evidence
After deleting a buffer, prefer the alternate buffer, then the last used buffer.
Read the evidence
Scratch metadata moves into `.meta` files with hashed filenames; opening or listing scratches migrates old files and saves originals under `bak`.
Read the evidence
Single-line `j`/`k` scrolling is no longer animated; animation stops when the window's buffer or buffer contents change.
Read the evidence
Only terminal splits stack together by default.
Read the evidence
`center` defaults to true in Zen mode and false in Zoom mode, preserving the view when zooming.
Read the evidence
Existing Snacks windows honor `vim.o.winborder`, falling back to rounded borders when unset.
Read the evidence
What changed in v2.30.0
The closely spaced v2.24.0–v2.30.0 releases add GitHub issue/PR views and inline reviews, plus stage/unstage/restore actions for Git hunks. Picker diff settings, path truncation, custom finder arguments, scratch storage, and several defaults change.
Also: Adds contextual keymaps and ctags navigation; extends Git hunks, scratch management, images, and file operations, with configuration migrations and changed defaults.
Install tag v2.30.0 with Neovim >= 0.9.4; GitHub operations require authenticated GitHub CLI and the Snacks picker.
New things you can do
Use `Snacks.keymap.set` and `Snacks.keymap.del` with `ft`, `lsp`, and conditional `enabled` options.
Read the evidence
Browse issues and PRs, edit or comment, manage labels, merge or check out PRs, and add or reply to inline review comments with `a` in the diff.
Open the tags picker with `Snacks.picker.tags()`.
Fixed and improved
Toggle grep regular expressions with `<a-r>`; matching positions are highlighted and Git grep accepts a configurable pathspec.
Read the evidence
Resume separate picker states, configure project search depth, and use `<c-g>` in the list to print the selected path.
Read the evidence
Delete marks directly from the marks picker with `<c-x>`.
Read the evidence
Search Git history live with pickaxe (`-S`), configure extra Git arguments, restore files from status, and compare against a merge base with `git_diff.base`.
Read the evidence
View staged diff hunks and stage, unstage, or restore individual hunks; `git_diff` lists hunks without file grouping by default.
Read the evidence
Browse incoming and outgoing calls with `lsp_incoming_calls` and `lsp_outgoing_calls`; `lsp_symbols.keep_parents` can retain parent symbols.
Read the evidence
LSP pickers handle Neovim 0.11 client access; `lsp_config` supports `vim.lsp.config` and excludes deprecated server entries.
Read the evidence
Inspect server and dynamically registered capabilities in the LSP configuration preview.
Read the evidence
Configure `vim.ui.select` options by selection kind; selection layouts fit the number of items.
Read the evidence
Expand mounted directories and refresh file trees on systems whose file watcher omits filenames.
Read the evidence
Windows deletion distinguishes files from directories; Git status refreshes across tabs and file reveal works when opening the explorer.
Read the evidence
View ICNS and base64 URL images, and choose a page for an inline PDF.
Read the evidence
`image.enabled=false` disables all image rendering, including picker previews.
Read the evidence
Terminal capability detection handles tmux extended keys, and reloading an image detaches its previous rendering.
Read the evidence
Large-file detection works with Windows paths.
Read the evidence
Filter the projects section with a custom `filter`; terminal widgets handle OSC11 and CSI6n requests.
Read the evidence
Recent-file filtering and opening a file at its stored location work with dashboard statusline and tabline restoration.
Read the evidence
GitLab remote URLs open correctly.
Read the evidence
Configure spacing between notifications with `gap`; filtered notifications remain in history.
Read the evidence
Search scratch buffers with grep and create or delete them from the scratch picker.
Read the evidence
Renaming a file creates its target directory when needed.
Read the evidence
Terminals opened with `open()` appear in `list()`, and opening a terminal at `position='current'` sets its buffer correctly.
Read the evidence
Customize toggle notifications with a function.
Read the evidence
Zoom and minimizing work in terminal mode.
Read the evidence
Resize split layouts; static layouts shrink to their contents.
Read the evidence
Customize input highlighting with a highlight function.
Read the evidence
Disable the module's default scope keymaps in configuration.
Read the evidence
Scope text objects use synchronous Tree-sitter parsing.
Read the evidence
Evaluate block selections with the debugging tools.
Read the evidence
Restore AutoSession-managed sessions from the dashboard using `AutoSession restore` instead of its deprecated `SessionRestore` command.
Seeded by @iluxav with Codex, from the release's public sources. Each change links to its evidence.