Skip to content

shcode/jira.nvim

 
 

Repository files navigation

All Contributors

Caution

Still in early development, will have breaking changes!

jira.nvim

A Neovim plugin for managing JIRA tasks with a beautiful UI.

Showcase

Note

Disucssion: How do you want to create, edit the jira ticket in this plugin? letieu#1

Features

  • 📋 View active sprint tasks
  • 👥 Query tasks by custom JQL
  • 📝 Read task as markdown
  • 🔄 Change task status
  • ⏱️ Log time on tasks
  • 👤 Assign tasks
  • 🎨 Git integration
  • 🎨 Comment
  • 🎨 Create, edit task
  • ⏱️ Work report

Install

lazy.nvim

{
  "letieu/jira.nvim",
  opts = {
    -- Your setup options...
    jira = {
      base = "https://your-domain.atlassian.net", -- Base URL of your Jira instance
      email = "your-email@example.com",           -- Your Jira email (required for basic auth)
      token = "your-api-token",                   -- Your Jira API token or bearer token
      auth_type = "basic",                        -- "basic" (default) or "bearer"
      api_version = "3",                          -- Jira API version: "2" or "3" (default: "3")
      use_jql_post = true,                        -- Use /search/jql endpoint (default: true). Set to false for /search
      resolve_current_user = false,               -- Replace currentUser() with accountId in JQL (default: false)
      debug = false,                              -- Enable debug logging for API calls (default: false)
      limit = 500,                                -- Global limit of tasks per view
    },
  },
}

Configuration

require('jira').setup({
  -- Jira connection settings
  jira = {
    base = "https://your-domain.atlassian.net", -- Base URL of your Jira instance
    email = "your-email@example.com",           -- Your Jira email (required for basic auth)
    token = "your-api-token",                   -- Your Jira API token or bearer token
    auth_type = "basic",                        -- "basic" (default) or "bearer"
    api_version = "3",                          -- Jira API version: "2" or "3" (default: "3")
    use_jql_post = true,                        -- Use /search/jql endpoint (default: true). Set to false for /search
    resolve_current_user = false,               -- Replace currentUser() with accountId in JQL (default: false)
    debug = false,                              -- Enable debug logging for API calls (default: false)
    limit = 500,                                -- Global limit of tasks per view
  },

  -- Saved JQL queries for the JQL tab
  -- Use %s as a placeholder for the project key
  queries = {
    ["Backlog"] = "project = '%s' AND (sprint is EMPTY OR sprint not in openSprints()) AND statusCategory != Done ORDER BY Rank ASC",
    ["My Tasks"] = "assignee = currentUser() AND statusCategory != Done ORDER BY updated DESC",
  },

  -- Project-specific overrides
  -- Still think about this config, maybe not good enough
  projects = {
    ["DEV"] = {
      story_point_field = "customfield_10035",      -- Custom field ID for story points
      custom_fields = { -- Custom field to display in markdown view
        { key = "customfield_10016", label = "Acceptance Criteria" }
      },
    }
  }
})

Usage

Run the following command to open the Jira board:

"Open board
:Jira <PROJECT_KEY>

"Open one task view
:Jira info ISSUE_KEY

If you don't provide a project key, you will be prompted to enter one.

Keybindings (Normal Mode)

Key Action
H Show help

Tips

  • How to get custom field list -> go to https://your-domain.atlassian.net/rest/api/3/field

Development

Running Tests

make test

TODO

  • Jira sprint board
  • Config
  • Expand, Collapse
  • Read task (Markdown)
  • Format time
  • Backlog (via JQL Dashboard)
  • Custom JQL & Saved Queries
  • Change status
  • Change assignee
  • Log time
  • Comment
  • Create, Edit task
  • Update UI when terminal size change ...

Thanks

Big thanks for gemini CLI free tier.


License

MIT © Tieu Le

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Guennadi Maximov C
Guennadi Maximov C

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

About

I got tired of opening my browser for Jira

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 99.4%
  • Makefile 0.6%