Skip to content

wjgilmore/gitcycle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

░▒▓ ─────────────────────────────────────────────────────────────── ►  ▓▒░

            88           ,ad8888ba,                       88
            ""   ,d     d8"'    `"8b                      88
                 88    d8'                                88
 ,adPPYb,d8 88 MM88MMM 88          8b       d8  ,adPPYba, 88  ,adPPYba,
a8"    `Y88 88   88    88          `8b     d8' a8"     "" 88 a8P_____88
8b       88 88   88    Y8,          `8b   d8'  8b         88 8PP"""""""
"8a,   ,d88 88   88,    Y8a.    .a8P `8b,d8'   "8a,   ,aa 88 "8b,   ,aa
 `"YbbdP"Y8 88   "Y888   `"Y8888Y"'    Y88'     `"Ybbd8"' 88  `"Ybbd8"'
 aa,    ,88                            d8'
  "Y8bbdP"                            d8'

░▒▓ ◄ ───────────── end of line · ride the grid ───────────────────  ▓▒░

gitCycle

A terminal UI for exploring the git repository you're standing in and the GitHub organization it belongs to. Built with Ratatui, shells out to git and gh for data.

gitCycle repo tab

Features

Dashboard tab — your GitHub at a glance (works regardless of cwd; no git repo required)

  • Awaiting your review — PRs in your active org where you're a requested reviewer
  • Your open PRs — PRs you've authored across all orgs you have access to
  • Notifications — your GitHub inbox (gh api /notifications), with unread indicators and reason tags (review_requested / mention / assign / ci_activity / …)
  • Your recent commits — commits authored by you across all repos, newest first

The Dashboard scopes "awaiting your review" to the org detected from your current repo. If you're not in a repo, it falls back to your primary GitHub org from gh api /user/orgs.

Repo tab — current repository overview (only meaningful inside a git repo)

  • Branch, upstream, ahead/behind, last fetch
  • Dirty files list — each modified/added/deleted/untracked path with a color-coded status code (M/A/D/??/R)
  • Recent commits (focus with c, press Enter for a full commit detail: author, message, file-by-file stats)
  • Open pull requests in the current repo

When gitcycle is launched outside a git repo, this tab shows a friendly placeholder.

Pressing Enter on a focused commit opens a detail screen showing the commit metadata, full message, and per-file change stats:

gitCycle commit detail

Org tab — organization-wide views (org auto-detected from origin remote)

  • Activity sub-view: recent PRs and issues grouped by author
  • Repos sub-view: searchable list of all non-archived org repos, sorted by most recently pushed. Press Enter on a repo to drill in and see top contributors, recent commits, and recent PRs for that specific repo.
  • Users sub-view: searchable list of org members. Press Enter on a user to drill in and see their recent activity across the org — commits authored, PRs submitted, and PRs they reviewed.

gitCycle org repos sub-view

Org data (activity, repos, and member list) is prefetched in the background on startup, so switching tabs is instant.

Prerequisites

You need three things on your machine:

  1. Rust toolchain — install via rustup:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. GitHub CLI (gh) — install via Homebrew (macOS), apt, or follow cli.github.com:

    brew install gh
  3. Authenticated gh — log in once:

    gh auth login

    You can be logged into multiple accounts and switch with gh auth switch. Make sure the active account has access to the repositories/orgs you want to view.

Installation

From crates.io (recommended)

cargo install gitcycle

This downloads the latest release from crates.io/crates/gitcycle, builds it in release mode, and drops the binary at ~/.cargo/bin/gitcycle.

From source

If you want to track master or hack on the code:

git clone https://github.com/wjgilmore/gitcycle.git
cd gitcycle
cargo install --path .

PATH setup

If ~/.cargo/bin isn't on your PATH, add it to your shell config:

# bash / zsh
export PATH="$HOME/.cargo/bin:$PATH"

Then open a new terminal (or source your config) and verify the binary is on your PATH:

which gitcycle

Usage

cd into any git repository whose origin remote points to GitHub, then run:

gitcycle

Keyboard shortcuts

Global

Key Action
q quit
r reload all data
1 / 2 / 3 jump to Dashboard / Repo / Org tab
Tab, / cycle tabs
Esc back / close detail / unfocus panel

Dashboard tab

Key Action
v focus the "awaiting your review" panel
p focus the "your open PRs" panel
n focus the "notifications" panel
c focus the "your recent commits" panel
s open the GitHub-account switcher (centered modal listing your gh auth accounts; / to pick, Enter to switch + reload, Esc to cancel)
/, j/k, PgUp/PgDn, g/G move selection within the focused panel
Enter open detail for the selected item (PR description, commit diff, or notification summary)
o open the selected row (or current detail screen) in your browser

Repo tab

Key Action
c focus the recent-commits panel
d focus the dirty-files panel
/, j/k, PgUp/PgDn, g/G move selection within the focused panel
Enter (commits) open commit detail
Enter (dirty files) view diff for the selected file (replaces commits + PRs on the right)
Esc (in diff view) close diff and return to commits + PRs

Org tab

Key Action
[ / ] cycle sub-view (Activity ↔ Repos ↔ Users)
/, j/k, PgUp/PgDn, g/G scroll / move selection

Org → Repos sub-view

Key Action
/ start typing to filter the repo list
Enter (in filter mode) confirm filter
Esc (in filter mode) clear filter
Enter (on a repo) open repo detail

Org → Users sub-view

Key Action
/ start typing to filter the user list
Enter (in filter mode) confirm filter
Esc (in filter mode) clear filter
Enter (on a user) open user detail (commits, submitted PRs, reviewed PRs)

Troubleshooting

  • error: gh ... failed: HTTP 502 — transient GitHub API hiccup. Press r to retry; calls already retry up to 3× internally with backoff.
  • could not resolve to a Repository — the active gh account doesn't have access. Run gh auth status to check, and gh auth switch if you have multiple accounts.
  • Org tab shows "loading…" forever — the background fetch failed silently. Press r to retry, or run the underlying command manually to see the error: gh search prs --owner <ORG> / gh repo list <ORG>.

Releases

See CHANGELOG.md for the version history. Released versions are tagged in git as vX.Y.Z and published to crates.io/crates/gitcycle.

License

MIT — see LICENSE.md.

About

GitHub repository and organization TUI

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages