{"id":47662882,"url":"https://github.com/mikecsmith/ihj","last_synced_at":"2026-04-05T14:01:47.575Z","repository":{"id":346319126,"uuid":"1189079303","full_name":"mikecsmith/ihj","owner":"mikecsmith","description":"An fzf-inspired issue tracker with vim mode and LLM-assisted backlog refinement. Jira today, more providers coming.","archived":false,"fork":false,"pushed_at":"2026-04-02T23:44:26.000Z","size":892,"stargazers_count":30,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T00:36:06.149Z","etag":null,"topics":["bubbletea","developer-tools","fzf","golang","issue-tracker","jira","llm","productivity","project-management","terminal-ui","tui","vim"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikecsmith.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-23T00:31:06.000Z","updated_at":"2026-04-03T00:23:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mikecsmith/ihj","commit_stats":null,"previous_names":["mikecsmith/ihj"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/mikecsmith/ihj","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikecsmith%2Fihj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikecsmith%2Fihj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikecsmith%2Fihj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikecsmith%2Fihj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikecsmith","download_url":"https://codeload.github.com/mikecsmith/ihj/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikecsmith%2Fihj/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31437927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bubbletea","developer-tools","fzf","golang","issue-tracker","jira","llm","productivity","project-management","terminal-ui","tui","vim"],"created_at":"2026-04-02T11:42:32.094Z","updated_at":"2026-04-05T14:01:47.571Z","avatar_url":"https://github.com/mikecsmith.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ihj — an fzf-inspired issue tracker\n\nAn fzf-inspired issue tracker with pluggable providers, vim mode, and LLM-assisted backlog refinement.\n\n- **Instant load.** Aggressive caching with background refresh — your board is always ready.\n- **Keyboard-driven.** Fuzzy search, single-key actions, and optional vim mode.\n- **Multi-workspace.** Switch between projects and Jira instances in a single keypress.\n- **LLM-assisted backlog refinement.** Extract your backlog as structured context, refine it with an LLM, and review every change through an interactive diff before anything is written.\n- **Provider-agnostic.** Built for Jira today, designed for GitHub Issues, Linear, and others.\n\n\u003e **Early stage software.** Under active development. `ihj` makes write calls to your Jira instance (create, edit, transition, assign, comment). Use at your own risk.\n\n---\n\n## Demo\n\n### General Usage\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/0b63889f-c75a-4670-939d-203f8ccbde94\" width=\"720\"\u003e\u003c/video\u003e\n\n### Bulk Apply\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/652cb941-b43d-4bbf-893f-39a12ae5448a\" width=\"720\"\u003e\u003c/video\u003e\n\n## Installation\n\n```bash\ngo install github.com/mikecsmith/ihj/cmd/ihj@latest\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/mikecsmith/ihj.git\ncd ihj\ngo build -o ihj ./cmd/ihj\n```\n\n## Quick Start\n\n```bash\n# Bootstrap a workspace config from your Jira project.\n# You'll be prompted for server URL, email, and API token.\nihj jira bootstrap PROJ \u003e ~/.config/ihj/config.yaml\n\n# Launch the TUI.\nihj\n```\n\nTo try it without a Jira connection: `ihj jira demo`\n\n## Authentication\n\nTokens are resolved through a chain of backends, tried in order:\n\n1. **OS Keychain** (macOS Keychain, Linux libsecret, Windows Credential Manager) — preferred\n2. **Environment variables** — `IHJ_TOKEN_\u003cALIAS\u003e` (alias uppercased, hyphens become underscores)\n3. **Credentials file** — `~/.config/ihj/credentials.json` (0600 permissions)\n\nUse `ihj auth login \u003cserver-alias\u003e` to store credentials. You'll be prompted for your email and API token. The keychain is used when available; otherwise tokens fall back to the credentials file.\n\n---\n\n## What It Does\n\n### Terminal UI\n\nA split-pane interface with fuzzy search, issue detail with child navigation, and full keyboard control. Enter expands the detail pane to full screen. Tab toggles focus between panes. All actions are available from any view state.\n\nDefault mode uses modifier keys (`Alt+E` to edit, `Alt+T` to transition). Vim mode (`vim_mode: true`) uses single characters in a modal interface (`e`, `t`, `/` for search, `:` for commands).\n\nSee [TUI documentation](docs/tui.md) for key bindings, vim mode, and layout options.\n\n### Bulk Operations\n\nExtract your backlog as structured XML context with `ihj extract`, feed it to an LLM for refinement, and apply the resulting YAML with `ihj apply`. Every field change on every issue gets its own interactive diff — accept, reject, take the remote version, or abort. Nothing is written without your approval.\n\nSee [Bulk operations guide](docs/bulk-operations.md) for the full workflow.\n\n### CLI Commands\n\nEvery TUI action is also available as a standalone command. All issue commands accept an `\u003cid\u003e` argument (e.g. `PROJ-123`).\n\n```\nihj                          Launch TUI (default)\nihj tui [-w workspace] [-f filter]\n                             Launch TUI for a specific workspace/filter\nihj jira demo                Launch TUI with synthetic data (no credentials needed)\nihj jira bootstrap \u003cproject\u003e Scaffold config from a Jira project\nihj auth login \u003cserver\u003e      Store an access token for a server\nihj auth logout \u003cserver\u003e     Remove a stored token\nihj auth status              Show token status for all configured servers\nihj create [-s key=value]    Create a new issue (opens editor)\nihj edit \u003cid\u003e [-s key=value] Edit an issue (opens editor)\nihj comment \u003cid\u003e             Add a comment (opens editor)\nihj assign \u003cid\u003e              Assign issue to yourself\nihj transition \u003cid\u003e          Change issue status\nihj open \u003cid\u003e                Open in browser\nihj branch \u003cid\u003e              Copy git branch name to clipboard\nihj extract \u003cid\u003e             Extract issue context for LLM prompts\nihj export [-w workspace] [-f filter]\n                             Export issue hierarchy as a YAML manifest\nihj apply \u003cfile\u003e [-w workspace]\n                             Review and apply YAML manifest changes\n```\n\nCommands that open your editor use Markdown with YAML frontmatter and JSON Schema for autocompletion. See [Editor integration](docs/editor.md) for details and Neovim setup.\n\n---\n\n## Configuration\n\nConfig lives at `~/.config/ihj/config.yaml`. The easiest way to generate one is `ihj jira bootstrap \u003cPROJECT\u003e`.\n\n```yaml\neditor: \"nvim\"\nvim_mode: true\ndefault_workspace: \"my-board\"\n\nservers:\n  my-jira:\n    provider: \"jira\"\n    url: \"https://company.atlassian.net\"\n\nworkspaces:\n  my-board:\n    server: \"my-jira\"\n    project_key: \"PROJ\"\n    board_id: 42\n    jql: 'project = \"{project_key}\"'\n    # filters, statuses, types, fields...\n```\n\nSee [Configuration reference](docs/config.md) for shortcuts, caching, layout, and multi-workspace setup.\n\nFull working examples: [`jira-scrum.yaml`](examples/jira-scrum.yaml), [`jira-kanban.yaml`](examples/jira-kanban.yaml)\n\n### Provider Setup\n\n- [Jira](docs/jira.md) — board types, sprints, filters, JQL variables, custom fields, templates\n\n---\n\n## Project\n\n- [Architecture](ARCHITECTURE.md) — package structure, dependency graph, design patterns\n- [Contributing](CONTRIBUTING.md) — setup, testing conventions, how to submit changes\n- [Changelog](CHANGELOG.md)\n\n## Acknowledgements\n\n- [Charm](https://charm.sh/) — ihj is built on [Bubble Tea](https://github.com/charmbracelet/bubbletea), [Lip Gloss](https://github.com/charmbracelet/lipgloss), [Glamour](https://github.com/charmbracelet/glamour), [Huh](https://github.com/charmbracelet/huh), and [VHS](https://github.com/charmbracelet/vhs).\n- [jira-cli](https://github.com/ankitpokhrel/jira-cli) — the original inspiration. Early versions of ihj were bash scripts wrapping jira-cli with fzf.\n- [fzf](https://github.com/junegunn/fzf) — inspired the search-driven navigation model.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikecsmith%2Fihj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikecsmith%2Fihj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikecsmith%2Fihj/lists"}