Folke Lemaitre
e896fb93f6
feat(gh): when selecting lines in a diff to add a review comment, you can now suggest code changes. See #2463
2025-11-07 06:37:04 +01:00
github-actions[bot]
a4e46becca
chore(main): release 2.30.0
...
CI / ci (push) Waiting to run
🤖 I have created a release *beep* *boop*
---
## [2.30.0](https://github.com/folke/snacks.nvim/compare/v2.29.0...v2.30.0 ) (2025-11-06)
### Features
* **diff:** prettier commit rendering (git show, diff with header) ([dc2186e ](dc2186e572 ))
* **gh:** add inline review comment annotations to diff viewer ([c83ff8d ](c83ff8d598 ))
* **gh:** create review comments in GitHub PR diff, on diff lines. Closes [#2446 ](https://github.com/folke/snacks.nvim/issues/2446 ) ([85bf3f0 ](85bf3f0123 ))
* **layout:** allow resizing split layouts. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([913379c ](913379ccd2 ))
* **picker.gh_diff:** you can now reply to review comments in diffs with `a`. See [#2446 ](https://github.com/folke/snacks.nvim/issues/2446 ) ([c3bda87 ](c3bda8709a ))
* **picker.icons:** make it easier to add custom icon sources ([82e6966 ](82e69661cd ))
* **picker.marks:** added `<c-x>` to delete a mark from the list. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([9a04605 ](9a04605664 ))
* **picker:** when picker was started from insert mode, return to insert after paste ([a417630 ](a4176301e3 ))
* **util.async:** add proper backtrace to unhandled async errors ([01f6cac ](01f6cac48f ))
### Bug Fixes
* **gh:** force `fancy` diff style for gh pr diff, since that's needed to render/interact with review comments ([bd71cd4 ](bd71cd4b00 ))
* **gh:** only skip empty comment reviews. Closes [#2445 ](https://github.com/folke/snacks.nvim/issues/2445 ) ([1848d74 ](1848d74e7c ))
* **gh:** pass correct context in gh_perform_action. Closes [#2442 ](https://github.com/folke/snacks.nvim/issues/2442 ). Closes [#2443 ](https://github.com/folke/snacks.nvim/issues/2443 ) ([13edbc6 ](13edbc681c ))
* **gh:** properly handly pending requests ([7a15e16 ](7a15e16d01 ))
* **gh:** use lua to parse dates so we can do this in a fast context ([cd0d6fe ](cd0d6fe864 ))
* **image:** run terminal capability detection synchronous when needed. Closes [#2439 ](https://github.com/folke/snacks.nvim/issues/2439 ) ([58f1152 ](58f11527fe ))
* **layout:** ignore very zindex windows for calulating layout zindex, so that it stays below things like notifications ([47340e6 ](47340e6b0b ))
* **lsp:** properly detach buffers on LspDetach. Closes [#2457 ](https://github.com/folke/snacks.nvim/issues/2457 ) ([beb995e ](beb995e1c6 ))
* **picker.actions:** don't open a new tab if the current tab is empty. Closes [#2461 ](https://github.com/folke/snacks.nvim/issues/2461 ) ([4e2424e ](4e2424eca7 ))
* **picker.diff:** added `showbreak=""` for fancy diff. Closes [#2441 ](https://github.com/folke/snacks.nvim/issues/2441 ) ([fb55f7b ](fb55f7bf2b ))
* **picker.format:** use file for icon. fallback to ft when buffer is not a file. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([20ac8bf ](20ac8bfc4a ))
* **picker.grep_word:** pass `--word-regexp` to `ripgrep` ([6aad368 ](6aad36810a ))
* **picker.highlight:** resolve ([4438ee4 ](4438ee4770 ))
* **picker.input:** startinsert when starting the picker from terminal mode. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([b2054a3 ](b2054a3a73 ))
* **picker.lsp_config:** nil on lsp info ([#2459 ](https://github.com/folke/snacks.nvim/issues/2459 )) ([c5257fa ](c5257fa690 ))
* **scope:** textobjects should use synchronous treesitter parsing. Closes [#2448 ](https://github.com/folke/snacks.nvim/issues/2448 ) ([9737c25 ](9737c25f29 ))
* **toggle:** set/get raw values for option toggles. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([41da728 ](41da728f02 ))
* **win:** set `foldcolumn='0'` for minimal style. See [#2390 ](https://github.com/folke/snacks.nvim/issues/2390 ) ([195faa0 ](195faa0646 ))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please ). See [documentation](https://github.com/googleapis/release-please#release-please ).
2025-11-06 22:23:04 +01:00
Folke Lemaitre
4e2424eca7
fix(picker.actions): don't open a new tab if the current tab is empty. Closes #2461
2025-11-06 22:21:06 +01:00
Folke Lemaitre
85bf3f0123
feat(gh): create review comments in GitHub PR diff, on diff lines. Closes #2446
2025-11-06 22:04:47 +01:00
Folke Lemaitre
c3bda8709a
feat(picker.gh_diff): you can now reply to review comments in diffs with a. See #2446
2025-11-06 18:35:57 +01:00
Folke Lemaitre
47340e6b0b
fix(layout): ignore very zindex windows for calulating layout zindex, so that it stays below things like notifications
2025-11-06 18:25:04 +01:00
Folke Lemaitre
6e16c85212
refactor(picker): generalize line meta data in vim.b.snacks_meta
2025-11-06 18:01:37 +01:00
Folke Lemaitre
7a94861471
style(gh): cleanup
2025-11-06 17:56:29 +01:00
Folke Lemaitre
bd71cd4b00
fix(gh): force fancy diff style for gh pr diff, since that's needed to render/interact with review comments
2025-11-06 17:15:54 +01:00
Folke Lemaitre
01f6cac48f
feat(util.async): add proper backtrace to unhandled async errors
2025-11-06 17:15:20 +01:00
Folke Lemaitre
7a15e16d01
fix(gh): properly handly pending requests
2025-11-06 16:57:21 +01:00
Folke Lemaitre
cd0d6fe864
fix(gh): use lua to parse dates so we can do this in a fast context
2025-11-06 16:16:03 +01:00
Folke Lemaitre
4438ee4770
fix(picker.highlight): resolve
CI / ci (push) Waiting to run
2025-11-06 12:55:54 +01:00
EasonMo
c5257fa690
fix(picker.lsp_config): nil on lsp info ( #2459 )
...
## Description
It will report message `error: vim/shared.lua:0: t: expected table, got
nil` when execute `Snacks.picker.lsp_config()`.
2025-11-06 12:18:08 +01:00
Folke Lemaitre
c83ff8d598
feat(gh): add inline review comment annotations to diff viewer
...
Refactors the diff renderer to support displaying GitHub review comments
inline with the relevant diff lines. Links review comments to specific
file positions using reviewThreads data from the GraphQL API, enabling a
more intuitive code review experience directly within the diff view.
- Refactored gh/api.lua to async fetch review comments and threads
- Added annotation support to diff renderer with context object pattern
- Separated diff parsing from formatting for better maintainability
- Integrated review comment positioning via reviewThreads linkage
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 12:00:29 +01:00
Folke Lemaitre
beb995e1c6
fix(lsp): properly detach buffers on LspDetach. Closes #2457
CI / ci (push) Waiting to run
2025-11-06 07:02:56 +01:00
Folke Lemaitre
58f11527fe
fix(image): run terminal capability detection synchronous when needed. Closes #2439
2025-11-06 06:50:21 +01:00
Folke Lemaitre
93cd1175e6
refactor(gh): render cleanup
2025-11-06 06:50:21 +01:00
Folke Lemaitre
f2b3244ed6
refactor(picker): horizontal rules
2025-11-06 06:50:21 +01:00
Folke Lemaitre
82e69661cd
feat(picker.icons): make it easier to add custom icon sources
2025-11-05 14:01:38 +01:00
Folke Lemaitre
a4176301e3
feat(picker): when picker was started from insert mode, return to insert after paste
2025-11-05 14:01:38 +01:00
Folke Lemaitre
dc2186e572
feat(diff): prettier commit rendering (git show, diff with header)
2025-11-05 12:28:15 +01:00
Folke Lemaitre
9737c25f29
fix(scope): textobjects should use synchronous treesitter parsing. Closes #2448
2025-11-05 10:29:12 +01:00
Folke Lemaitre
6aad36810a
fix(picker.grep_word): pass --word-regexp to ripgrep
2025-11-05 09:54:08 +01:00
Folke Lemaitre
1848d74e7c
fix(gh): only skip empty comment reviews. Closes #2445
2025-11-05 08:39:27 +01:00
Folke Lemaitre
913379ccd2
feat(layout): allow resizing split layouts. See #2390
2025-11-05 08:32:43 +01:00
Folke Lemaitre
b2054a3a73
fix(picker.input): startinsert when starting the picker from terminal mode. See #2390
2025-11-05 08:10:34 +01:00
Folke Lemaitre
41da728f02
fix(toggle): set/get raw values for option toggles. See #2390
2025-11-05 08:03:03 +01:00
Folke Lemaitre
9a04605664
feat(picker.marks): added <c-x> to delete a mark from the list. See #2390
2025-11-05 07:42:23 +01:00
Folke Lemaitre
20ac8bfc4a
fix(picker.format): use file for icon. fallback to ft when buffer is not a file. See #2390
2025-11-05 07:30:23 +01:00
Folke Lemaitre
195faa0646
fix(win): set foldcolumn='0' for minimal style. See #2390
2025-11-05 07:21:58 +01:00
Folke Lemaitre
13edbc681c
fix(gh): pass correct context in gh_perform_action. Closes #2442 . Closes #2443
2025-11-05 07:11:30 +01:00
Folke Lemaitre
fb55f7bf2b
fix(picker.diff): added showbreak="" for fancy diff. Closes #2441
2025-11-05 06:55:39 +01:00
github-actions[bot]
6121b40a2d
chore(main): release 2.29.0 ( #2408 )
...
CI / ci (push) Waiting to run
🤖 I have created a release *beep* *boop*
---
##
[2.29.0](https://github.com/folke/snacks.nvim/compare/v2.28.0...v2.29.0 )
(2025-11-04)
### Features
* **gh.diff:** show git status in PR diff
([c671d06 ](c671d062d1 ))
* **gh:** added reviews and nice diffs to gh buffer views. See
[#2411 ](https://github.com/folke/snacks.nvim/issues/2411 )
([1335ca1 ](1335ca1956 ))
* **gh:** allow to update pr branch
([#2419 ](https://github.com/folke/snacks.nvim/issues/2419 ))
([f75f307 ](f75f307af3 ))
* **gh:** use new diff renderer for gh pr reviews
([714edec ](714edec900 ))
* **gh:** when on a review comment, the `gh_comment` action will now do
a reply instead of a top-level comment. Fixes
[#2410 ](https://github.com/folke/snacks.nvim/issues/2410 )
([a4f2b9d ](a4f2b9da2d ))
* **gh:** you can now use `Snacks.picker.gh_actions()` directly to see
actions for the checked out PR
([d0d10f6 ](d0d10f6d13 ))
* **picker.diff:** new fancy diff renderer
([22eea90 ](22eea90a95 ))
* **picker.git_diff:** show proper git status for git diff files
([ab48eeb ](ab48eebeb3 ))
* **picker.git_diff:** show renames
([77609a0 ](77609a0013 ))
* **picker.lsp_config:** added server/dynamic capabilities to preview
([da14fac ](da14fac1e5 ))
* **picker:** consolidate all diff options under `opts.previewers.diff`.
Default style is `fancy`
([b65b06c ](b65b06ca0e ))
* **zen:** added `center` option that defaults to `true` for zen mode
and `false` for zoom mode. Closes
[#2422 ](https://github.com/folke/snacks.nvim/issues/2422 )
([3c2d791 ](3c2d79162f ))
### Bug Fixes
* **dashboard:** start job after the terminal window is shown to make
sure it has the correct size. Closes
[#2421 ](https://github.com/folke/snacks.nvim/issues/2421 )
([e440df3 ](e440df387d ))
* **diff:** fallback if `Normal` has no fg color. Closes
[#2436 ](https://github.com/folke/snacks.nvim/issues/2436 )
([7f453c4 ](7f453c4f32 ))
* **diff:** improved diff parsing. Closes
[#2424 ](https://github.com/folke/snacks.nvim/issues/2424 ). Closes
[#2420 ](https://github.com/folke/snacks.nvim/issues/2420 )
([b6e4eb7 ](b6e4eb7e60 ))
* **diff:** remove diff injections. Closes
[#2406 ](https://github.com/folke/snacks.nvim/issues/2406 )
([ecc21bb ](ecc21bbb9b ))
* **gh.api:** get repo from upstream remote if availble. fallback to
origin
([5043637 ](50436373c2 ))
* **gh.api:** pass repo to cmd. Closes
[#2415 ](https://github.com/folke/snacks.nvim/issues/2415 )
([78046eb ](78046eb481 ))
* **gh.diff:** fixed rendering of diff header when wrap=true
([07c569d ](07c569dfd5 ))
* **gh.item:** better method to extract repo from gh url. Closes
[#2418 ](https://github.com/folke/snacks.nvim/issues/2418 )
([52d544c ](52d544cc64 ))
* **gh.render:** added support for older `StatusContext` checks. Closes
[#2407 ](https://github.com/folke/snacks.nvim/issues/2407 )
([74864a7 ](74864a7bb8 ))
* **gh.render:** use check name. See
[#2407 ](https://github.com/folke/snacks.nvim/issues/2407 )
([6f60105 ](6f60105302 ))
* **gh:** better way of determining current PR
([bd3c1a0 ](bd3c1a0714 ))
* **gh:** input for api should be a table, not a string. Closes
[#2427 ](https://github.com/folke/snacks.nvim/issues/2427 )
([1b3e409 ](1b3e4090a0 ))
* **image:** allow to fully disable all image rendering with
`opts.image.enabled = false`. Closes
[#2404 ](https://github.com/folke/snacks.nvim/issues/2404 )
([34a6591 ](34a6591a61 ))
* **image:** disable image conversion error notifications by default
([cfcf525 ](cfcf525207 ))
* **lsp:** check lsp handlers after LspAttach, since attached_buffers
won't have been set
([1861b0a ](1861b0a8ea ))
* **picker.actions:** only allow stage/unstage/restore for some diffs
([9cde35b ](9cde35b7b1 ))
* **picker.diff:** move git status calc based on diff to format
([b553c18 ](b553c18c26 ))
* **picker.diff:** parse full diff including diff and hunk headers.
Closes [#2429 ](https://github.com/folke/snacks.nvim/issues/2429 )
([53d8012 ](53d8012e5e ))
* **picker.git_diff:** don't show git status, disable
stage/unstage/restore when merge-base is set. Closes
[#2397 ](https://github.com/folke/snacks.nvim/issues/2397 )
([6ff82ca ](6ff82cab7b ))
* **picker.highlight:** resolve all text chunks when needed. Not just
the first.
([962aadd ](962aadd310 ))
* **picker.undo:** cleanup tmp files in `async:on("done")`. Closes
[#2434 ](https://github.com/folke/snacks.nvim/issues/2434 )
([3038dac ](3038dac460 ))
* **picker.undo:** set initial target to the current undo entry. See
[#2434 ](https://github.com/folke/snacks.nvim/issues/2434 )
([dc245ef ](dc245ef04e ))
* **picker:** don't focus a picker window when toggling a window and
picker wasn't current. closes
[#2417 ](https://github.com/folke/snacks.nvim/issues/2417 )
([b80b330 ](b80b330091 ))
* revert rename of actions.lua to tomdar87@outlook.com
([#2423 ](https://github.com/folke/snacks.nvim/issues/2423 ))
([8bb3ad6 ](8bb3ad6c53 ))
* **win:** fixed fixbuf. Closes
[#2409 ](https://github.com/folke/snacks.nvim/issues/2409 )
([2099572 ](2099572fe8 ))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please ). See
[documentation](https://github.com/googleapis/release-please#release-please ).
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-04 22:27:14 +01:00
Folke Lemaitre
7f453c4f32
fix(diff): fallback if Normal has no fg color. Closes #2436
2025-11-04 22:23:27 +01:00
Folke Lemaitre
b65b06ca0e
feat(picker): consolidate all diff options under opts.previewers.diff. Default style is fancy
2025-11-04 22:22:17 +01:00
Folke Lemaitre
714edec900
feat(gh): use new diff renderer for gh pr reviews
2025-11-04 22:22:17 +01:00
Folke Lemaitre
22eea90a95
feat(picker.diff): new fancy diff renderer
2025-11-04 22:22:17 +01:00
Folke Lemaitre
c09740eef6
style(picker.diff): new diff luals options
2025-11-04 06:44:08 +01:00
Folke Lemaitre
dc245ef04e
fix(picker.undo): set initial target to the current undo entry. See #2434
2025-11-04 06:35:52 +01:00
Folke Lemaitre
3038dac460
fix(picker.undo): cleanup tmp files in async:on("done"). Closes #2434
2025-11-04 06:35:09 +01:00
Folke Lemaitre
53d8012e5e
fix(picker.diff): parse full diff including diff and hunk headers. Closes #2429
CI / ci (push) Waiting to run
2025-11-03 21:50:49 +01:00
Folke Lemaitre
2e2cf50514
refactor(picker.highlight): added render and set now uses render with append=true
2025-11-03 18:52:45 +01:00
Folke Lemaitre
1b3e4090a0
fix(gh): input for api should be a table, not a string. Closes #2427
2025-11-03 17:13:24 +01:00
Folke Lemaitre
e440df387d
fix(dashboard): start job after the terminal window is shown to make sure it has the correct size. Closes #2421
2025-11-03 17:10:45 +01:00
Folke Lemaitre
c671d062d1
feat(gh.diff): show git status in PR diff
2025-11-03 13:33:51 +01:00
Folke Lemaitre
9cde35b7b1
fix(picker.actions): only allow stage/unstage/restore for some diffs
2025-11-03 13:33:36 +01:00
Folke Lemaitre
b553c18c26
fix(picker.diff): move git status calc based on diff to format
2025-11-03 13:31:40 +01:00
Folke Lemaitre
77609a0013
feat(picker.git_diff): show renames
2025-11-03 13:17:18 +01:00
Folke Lemaitre
962aadd310
fix(picker.highlight): resolve all text chunks when needed. Not just the first.
2025-11-03 13:17:04 +01:00