Skip to content

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 instanceemail="your-email@example.com", -- Your Jira email (required for basic auth)token="your-api-token", -- Your Jira API token or bearer tokenauth_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 /searchresolve_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 settingsjira= {
base="https://your-domain.atlassian.net", -- Base URL of your Jira instanceemail="your-email@example.com", -- Your Jira email (required for basic auth)token="your-api-token", -- Your Jira API token or bearer tokenauth_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 /searchresolve_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 keyqueries= {
["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 enoughprojects= {
["DEV"] = {
story_point_field="customfield_10035", -- Custom field ID for story pointscustom_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)

KeyAction
HShow 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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages