Caution
Still in early development, will have breaking changes!
A Neovim plugin for managing JIRA tasks with a beautiful UI.
Note
Disucssion: How do you want to create, edit the jira ticket in this plugin? #1
- π 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
{
"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 (Optional for PAT)
token = "your-api-token", -- Your Jira API token or PAT
type = "basic", -- Authentication type: "basic" (default) or "pat"
limit = 200, -- Global limit of tasks per view (default: 200)
},
},
}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 (Optional for PAT)
token = "your-api-token", -- Your Jira API token or PAT
type = "basic", -- Authentication type: "basic" (default) or "pat"
limit = 200, -- Global limit of tasks per view (default: 200)
},
-- Saved JQL queries for the JQL tab
-- Use %s as a placeholder for the project key
queries = {
["Next sprint"] = "project = '%s' AND sprint in futureSprints() ORDER BY Rank ASC",
["Backlog"] = "project = '%s' AND (issuetype IN standardIssueTypes() OR issuetype = Sub-task) 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" }
},
}
}
})Alternatively, you can set Jira credentials using environment variables, which takes precedence over config:
export JIRA_BASE_URL="https://your-domain.atlassian.net"
export JIRA_EMAIL="your-email@example.com"
export JIRA_TOKEN="your-api-token"
export JIRA_AUTH_TYPE="basic" # or "pat"Supported environment variables:
JIRA_BASE_URL- Base URL of your Jira instanceJIRA_EMAIL- Your Jira email (Optional for PAT)JIRA_TOKEN- Your Jira API token or PATJIRA_AUTH_TYPE- Authentication type: "basic" (default) or "pat"
Run the following command to open the Jira board:
" Open board
:Jira <PROJECT_KEY>
" Open one task view (info)
:Jira info ISSUE_KEY
" Create new issue
:Jira create [PROJECT_KEY]
" Edit existing issue
:Jira edit ISSUE_KEYIf you don't provide a project key, you will be prompted to enter one.
Hβ Show help
<Tab>β Toggle node (Expand / Collapse)S,J,Hβ Switch view (Sprint, JQL, Help)qβ Close boardrβ Refresh current view
iβ Create issue / sub-task (under cursor)Kβ Quick issue details (popup)gdβ Read task as infogeβ Edit taskgxβ Open task in browsergsβ Update statusgaβ Change assigneegwβ Add timegbβ Checkout / create branchgoβ Show child issues (sub-tasks)
- How to get custom field list -> go to
https://your-domain.atlassian.net/rest/api/3/field
make test- 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
- Bulk actions
- Update UI when terminal size change ...
Big thanks for gemini CLI free tier.
MIT Β© Tieu Le
Thanks goes to these wonderful people (emoji key):
Guennadi Maximov C π» |
Jonas-Taha El Sesiy π» |
This project follows the all-contributors specification. Contributions of any kind welcome!