Tiny macOS 14+ menu bar app that keeps your current-sprint Jira work visible without leaving the menu bar. Shows your stories, bugs, and tasks in separate sections, with per-ticket menus for assign / workflow transitions / browser open. Login, logout, and switch account straight from the menu. No Dock icon, minimal UI, live ticket count in the menu bar.
- macOS 14+ (Sonoma)
acliinstalled (brew install atlassian/tap/acli)jqinstalled (brew install jq)
Download DMG (recommended):
Open JiraBar.dmg, drag JiraBar.app to /Applications, and launch.
Build from source (Xcode):
open JiraBar.xcodeproj # run the JiraBar schemeBuild from source (CLI):
./Scripts/package_app.sh
# Output: JiraBar.dmg (drag app → /Applications)- Launch
JiraBar.app— the menu bar icon appears immediately. - Open Settings (menu bar → Settings…).
- Under CLI Tools, confirm
acliandjqshow as installed. If not, click Install with Homebrew for each. - Set your Jira site (
your-team.atlassian.net) under Workspace → Preferred Site. - Click Save Site, then click Login.
- Complete authentication in your browser; JiraBar polls until it detects success.
- (Optional) Under Shell Helpers, click Install to add
jira.zshterminal commands to your shell.
Gatekeeper note: App is not code-signed. First launch: right-click → Open → Open.
- Stories section — your assigned stories in the active sprint.
- Bugs section — open bugs assigned to you (not Done).
- Task + Subtask section — open tasks and subtasks assigned to you (not Done).
- Per-ticket submenu:
- Open in Jira (browser)
- Assign to Me
- Next Status / Previous Status (workflow order)
- Move → full status list for your project, current status marked ✓
- Workflow statuses fetched once at login from your project, cached locally — no hardcoding.
- Settings window (opens top-right):
- Preferred site, refresh interval (Manual / 30s / 1m / 2m / 5m), max items per section (3–20).
- CLI Tools — shows
acliandjqinstall status; Install with Homebrew button for each. - Shell Helpers — one-click install of
jira.zshto~/.jira.zshwith autosourcein~/.zshrc.
- Switch Account and Logout from the menu or Settings.
- Menu bar title shows live bug+task count (
Jira 5) orJira …while loading.
Scripts/jira.zsh provides jv, jm, jforward, jmine, jstories, and ~40 other shorthand commands for managing Jira issues from the terminal.
Install from the app (recommended): Open Settings → Shell Helpers and click Install. This copies the script to ~/.jira.zsh and adds source ~/.jira.zsh to your ~/.zshrc automatically.
Manual install:
cp Scripts/jira.zsh ~/.jira.zshAdd this block to your ~/.zshrc before any other Jira config:
export JIRA_SITE="your-team.atlassian.net" # required
export JIRA_PROJECT="MYPROJECT" # required — your Jira project key
# Optional overrides
# export JIRA_TODO_STATUS="TO DO"
# export JIRA_WORKFLOW_STATUSES=("TO DO" "In Progress" "Review" "DONE")
source ~/.jira.zshsource ~/.zshrcjhelp # print all available commands
jastatus # check Jira auth status| Command | What it does |
|---|---|
jv TICKET |
View issue in terminal |
jo TICKET |
Open issue in browser |
ja TICKET |
Assign to me |
jm TICKET... "STATUS" |
Move to any status |
jip / jtest / jreview / jdone TICKET... |
Move to common statuses |
jforward / jbackward TICKET |
Step through workflow |
jmine |
My current-sprint tickets |
jstories |
Sprint stories assigned to me |
jib / jreviewb / jdoneb |
Move current git branch ticket |
jc TICKET "comment" |
Add comment |
jd TICKET file.md |
Replace description from file |
jalogin / jalogout |
Auth management |
TICKET accepts: bare number (3642), project key (PROJECT-3642), or full Jira URL.
If you use Claude Code or Pi, the skill at .claude/skills/jira-acli.md teaches the agent to use the jhelp functions above.
Install globally (available in all projects):
mkdir -p ~/.claude/skills
cp .claude/skills/jira-acli.md ~/.claude/skills/Install locally (this project only — already included in the repo):
The file is already at .claude/skills/jira-acli.md and will be picked up automatically.
acli and jq must be reachable via the user's ~/.zshrc PATH — the snapshot script sources it on every refresh.
- Add Launch at Login toggle in Settings (enabled by default)
- Fix launch at login: decouple toggle state from SMAppService status
- Settings window: fixed height at half screen, scrollable content
- Fix status parsing: use
jqinstead ofpython3, fixawkfield index for site parsing - Fix logout: clear all UserDefaults on logout; only clear
projectStatuseson account switch - Add Refresh Statuses button in Settings
- Fix status ordering: fetch ordered board columns via Jira REST API, fallback to search results
- Settings window: CLI Tools status and Shell Helpers install section
- Settings window positioning (top-right, floating level, off-screen pre-layout fix)
- Per-ticket Move submenu with full project status list
- Next Status / Previous Status actions (workflow order)
- Project statuses fetched once at login, cached in UserDefaults
- Per-ticket action lock (only disables the acting ticket, not the whole menu)
- Initial release
MIT