harrisoncramer / harrisoncramer/gitlab.nvim

toggle_discussions() doesn't open new window - draft_notes error 404

Open
#507 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Lua
Stars
399
Forks
62
Avg merge
2d 19h
Merged PRs (30d)
2

Description

## Prerequsities

- [x] I'm on the latest version of the plugin
- [x] I've installed the required dependencies
- [x] I've run `:h gitlab.nvim.troubleshooting` and followed the steps there

## Setup Configuration and Environment

```
return {
"harrisoncramer/gitlab.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"sindrets/diffview.nvim",
"nvim-tree/nvim-web-devicons"
},
lazy = false,
build = function() require("gitlab.server").build(true) end, -- Builds the Go binary
keys = function()
local map = require('map')
map.map('n', 'gm', function() require("gitlab").choose_merge_request() end, { desc = "[m]erge request view (gitlab)" } )
map.exportKeys()
end,
config = function()
require("gitlab").setup({
auth_provider = function()
return "", "", nil
end,
connection_settings = {
insecure = true,
},
debug = {
request = true,
response = true,
gitlab_request = true,
gitlab_response = true,
},
})
end,
}
```

## Bug Description

`require("gitlab").toggle_discussions()` does not open discussion window.
Error notificaiton:
`gitlab.nvim: Could not get draft notes: 404 Not Found`

## Reproduction Steps

1. Add my plugin configuration file to neovim with Lazy.nvim installed (tested without other plugins).
2. Run `require("gitlab").choose_merge_request()`, select MR.
3. Use `gld` to open discussion window.
4. Result: No new windows is opened. Error message about draft_notes being not found appears.

## Additional info
Output's of commands from `gitlab.nvim.troubleshooting`:
1. checkhealth gitlab
```
==============================================================================
gitlab: require("gitlab.health").check()

gitlab.nvim ~
- ⚠️ WARNING stevearc/dressing.nvim is a recommended dependency
```

2. require("gitlab").print_settings() - prints defaults + changes from my config as expected.

3. require("gitlab.server").build(true)
```
gitlab.nvim: Installed successfully!
```

4. require("gitlab.server").start(function() print("Server started") end)
```
gitlab.nvim: Failed to initialize Gitlab client: GitLab instance URL cannot be empty
gitlab.nvim: Golang gitlab server exited: job_id: 3, exit_code: 1
```
but if I first use `require("gitlab").choose_merge_request()` and then do `require("gitlab.server").restart()` then server is restarted without any issue:
```
gitlab.nvim: Restarted server
```

5. I've enabled debug logs and here is example of failure in logs:
```
-- REQUEST TO GO SERVER --
GET /mr/draft_notes/ HTTP/1.1
Host: localhost:45393
Accept: */*
Private-Token: REDACTED
User-Agent: curl/7.81.0

-- REQUEST TO GITLAB --
GET /api/v4/projects/2253/merge_requests/710/draft_notes HTTP/1.1
Host:
Accept: application/json
Private-Token: REDACTED
User-Agent: go-gitlab

-- RESPONSE FROM GITLAB --
HTTP/1.1 404 Not Found
Content-Length: 25
Cache-Control: no-cache
Connection: keep-alive
Content-Type: application/json
Date: Tue, 16 Sep 2025 17:25:01 GMT
Server: nginx
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Gitlab-Feature-Category: not_owned
X-Request-Id: 01K59RXX1PQGGYRNDE1B63SDFV
X-Runtime: 0.011073

{"error":"404 Not Found"}

-- RESPONSE FROM GO SERVER --
HTTP/0.0 500 Internal Server Error
Content-Length: 66
Content-Type: application/json

{"message":"Could not get draft notes","details":"404 Not Found"}
```

## Update
One more observation. I am able to create comments, but creation of draft comment fails.
After I create a comment diagnostic symbols for comments are finally loaded and I can list comments via diagnostic listing.

Also:
```
curl --insecure --header "PRIVATE-TOKEN: " --url "https:///api/v4/projects/2253/merge_requests/710/draft_note"
```
fails with error 404, but:
```
curl --insecure --header "PRIVATE-TOKEN: " --url "https:///api/v4/projects/2253/merge_requests/710/discussions"
```
returns valid JSON.
And
```
curl --insecure --header "PRIVATE-TOKEN: " --url "https:///api/v4/projects/2253/merge_requests/710/notes"
```
also returns valid JSON.

## Update 2

I've found the root cause, it seems like draft_notes API was introduced in version 16.0 (or at least somewhere between 15.0 and 16.0). The gitlab that I have to use is version 13.12.
Am I correct to assume that there is nothing I can do to make it work?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.