blippy brings core GitHub issue and PR workflows into a terminal-first interface.
See the feature demo for a visual walkthrough of these capabilities in action.
- Scans local git repositories and indexes GitHub remotes; searches four directory levels inside each repository for nested repositories and finds registered nested worktrees at any depth, subject to scan depth limits and exclusions
- Recognizes GitHub SSH remotes with explicit ports, including
ssh://git@ssh.github.com:443/owner/repo.git - Supports direct
owner/reporepo context from the current working tree - Keeps a local SQLite cache for fast navigation
blippy syncupdates discovered repositories and remotes- Repository scans preserve the selected local checkout and remote
- Broken local repositories are reported while scanning continues for healthy repositories
- Stalled GitHub API requests time out after 30 seconds
- Background sync avoids duplicate requests during repository and issue navigation
- Manual refresh rechecks repository permissions so role changes take effect during a session
- Background refresh preserves the reading position of the selected issue and the offset within a surviving comment, even when earlier comments change
- Renamed and transferred repositories retain their cached issues and linked items
- Recreated repositories sync with a fresh cache and clear old context and pending actions on sync completion; late action, metadata, and linked-item results cannot adopt or change the replacement repository
- Cache write failures report successful GitHub actions and keep the terminal session open
- Toggle between issues and pull requests from the same list view
- Open/closed tabs and assignee filtering
- Distinguishes merged pull requests from closed pull requests
- Fast list navigation with keyboard-first controls
- Issue and PR detail views with context-aware panes
- HTML blocks in Markdown bodies remain readable as literal text
- State and metadata updates prevent overlapping actions on the same item
- Completed state and metadata actions preserve the selected issue or PR when it remains in the list
- Copy repository, issue, and pull request URLs to the system clipboard
- On supported Unix terminals, bracketed paste inserts text without submitting comments or triggering shortcuts, preserving line breaks in bodies
- Create issues directly in the terminal from issue contexts
- Title/body editor with confirmation dialog before submission
- Opens the newly created issue after success when browsing issues; active editors, pickers, search, and PR review keep their context
- Jump from an issue to its linked PR (and back)
- Jump from a PR to its linked issue (and back)
- Includes issues closed by the pull request
- Open linked items in TUI or browser
- Linked-item lookups follow the selected row when scrolling through the issue or PR list
- Linked metadata is cached to reduce repeated lookups; partial results remain usable, and refresh retries incomplete or failed lookups
- Delayed results cache links without interrupting editors, pickers, search, help, or navigation to another item
- Opening a linked item clears list search and assignee filters to reveal the target
- View changed files and diff, with option for checkout
- PR checkout uses the selected GitHub remote and local repository
- Merge pull requests directly from the review/detail flow. Once a diff is loaded, merges require the same head commit; refresh the diff if it changes.
- Split or expanded diff review modes
- Horizontal diff panning for long lines
- Inline comment editors preserve the review layout, diff focus, and selected line when returning
- Mark files viewed/unviewed, ignoring repeat toggles until GitHub responds
- Visual multiline range selection within one diff hunk for review comments, including automatic side fallback for added-only or deleted-only selections
- Refresh keeps collapsed hunks for unchanged files and expands files whose patches changed
- Review comments keep the commit shown when the editor opened. If the PR head or base changes while files load, refresh with
rto retry. - Inline review threads appear only on a matching head and base snapshot; failed refreshes cannot attach old threads to changed code. Unchanged diff refreshes preserve the reading position.
- Add, edit, and delete issue comments
- Read long comments with arrow-key or mouse-wheel scrolling;
j/kstill jump between comments - Add, edit, and delete inline PR review comments
- Failed issue creation and add/edit comment submissions keep their drafts and targets for manual retry, including the original commit and line range for inline reviews
- Pending submissions ignore repeat submits; delayed results preserve newer editors and navigation
- Resolve or reopen PR review threads
- Navigate comment threads on selected diff lines, keeping the selected comment visible
- Edit labels and assignees for issues/PRs from the TUI
- Merge actions are permission-aware and only enabled for authorized repos
- Label and assignee pickers with inline filtering; background suggestions preserve the highlighted option and checked selections
- Metadata pickers stay closed while an action on the same item is pending, so reopening uses its saved labels and assignees
- Open metadata pickers keep mouse input inside the picker, leaving background issues and repository navigation inactive
- Editing is permission-aware and checks repo capabilities
- Repository search by owner/repo/path/remote
- Issue/PR search with GitHub-style qualifiers
- Supported qualifiers include:
is:open,is:closed,is:mergedlabel:<name>matches whole label names, ignoring ASCII case; quotes preserve spaces in namesassignee:<user>,assignee:none#<number>
- Built-in themes:
github_dark,midnight,graphite - Scrollable help overlay with keyboard and mouse wheel controls; input stays in help until it is dismissed
- Configurable keybindings via
~/.config/blippy/keybinds.toml - Configurable close-comment presets in
~/.config/blippy/config.toml - Preset saves retain presets and configuration changes saved by other sessions
- Failed preset saves keep the editor and draft open so the write can be retried