{"id":48277253,"url":"https://github.com/jackchuka/gv","last_synced_at":"2026-04-04T22:37:49.596Z","repository":{"id":339196466,"uuid":"1152820917","full_name":"jackchuka/gv","owner":"jackchuka","description":"Git Vision - monitor multiple git repositories","archived":false,"fork":false,"pushed_at":"2026-03-30T14:22:14.000Z","size":739,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-30T16:28:22.927Z","etag":null,"topics":["cli","devtools","git","productivity","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jackchuka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-08T13:44:53.000Z","updated_at":"2026-03-30T14:24:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jackchuka/gv","commit_stats":null,"previous_names":["jackchuka/gv"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jackchuka/gv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackchuka%2Fgv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackchuka%2Fgv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackchuka%2Fgv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackchuka%2Fgv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jackchuka","download_url":"https://codeload.github.com/jackchuka/gv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackchuka%2Fgv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31417195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"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":["cli","devtools","git","productivity","terminal","tui"],"created_at":"2026-04-04T22:37:47.435Z","updated_at":"2026-04-04T22:37:49.580Z","avatar_url":"https://github.com/jackchuka.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n```\n┌──────────────────────┐\n│  ╔═╗╦  ╦             │\n│  ║ ╦╚╗╔╝             │\n│  ╚═╝ ╚╝   Git Vision │\n└──────────────────────┘\n```\n\nTUI dashboard for monitoring multiple git repositories and worktrees.\nAuto-discovers git repos under configured paths and shows their status in real-time.\n\n\u003cimg src=\"./screenshot.png\" alt=\"gv screenshot\" width=\"800\"\u003e\u003c/img\u003e\n\n\u003c/div\u003e\n\n## Features\n\n- **Auto-discovery** — Scans configured directories for git repos and worktrees\n- **Live status** — Branch, dirty state, staged/modified/untracked counts, ahead/behind tracking\n- **Diff insights** — Lines added/removed, net delta, and file churn per repo\n- **Activity sparklines** — Visualize recent commit activity at a glance\n- **Worktree aware** — First-class support for git worktrees alongside regular repos\n- **Conflict detection** — Surface merge conflicts across all your repos\n- **Background polling** — Automatic refresh detects changes as you work\n- **Vim-style navigation** — `hjkl`, half-page scrolling, filter, and more\n\n## Install\n\n```bash\ngo install github.com/jackchuka/gv@latest\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/jackchuka/gv.git\ncd gv\nmake install\n```\n\n## Quick Start\n\n```bash\ngv init\n```\n\nThe interactive wizard walks you through setup — just enter the directories where you keep your git repos. It writes `~/.config/gv/config.yaml` for you.\n\nThen launch the dashboard:\n\n```bash\ngv\n```\n\n## Usage\n\n```bash\ngv                          # launch the dashboard\ngv init                     # interactive config setup\ngv --scan ~/extra/path      # override config and scan this path only\ngv --config /path/to/conf   # use a custom config file\n```\n\n## Configuration\n\nConfig lives at `~/.config/gv/config.yaml` (respects `$XDG_CONFIG_HOME`).\n\n```yaml\nscan_paths:\n  - ~/code\n  - ~/projects\n  - ~/work\n\nignore_patterns:\n  - \"**/node_modules/**\"\n  - \"**/vendor/**\"\n  - \"**/.venv/**\"\n\nmax_depth: 10 # directory scan depth (default: 10)\npoll_interval: 5s # status check interval (default: 5s)\nauto_refresh: true # enable background polling (default: true)\n```\n\nCommon directories like `node_modules`, `vendor`, `.cache`, `__pycache__`, `build`, and `dist` are ignored by default.\n\n## Keybindings\n\n### Navigation\n\n| Key          | Action         |\n| ------------ | -------------- |\n| `j` / `↓`    | Move down      |\n| `k` / `↑`    | Move up        |\n| `g` / `Home` | Jump to top    |\n| `G` / `End`  | Jump to bottom |\n| `Ctrl+d`     | Half page down |\n| `Ctrl+u`     | Half page up   |\n| `/`          | Filter repos   |\n| `Esc`        | Clear filter   |\n\n### Actions\n\n| Key | Action               |\n| --- | -------------------- |\n| `r` | Reload selected repo |\n| `f` | Fetch selected repo  |\n| `F` | Fetch all repos      |\n| `e` | Open in `$EDITOR`    |\n| `o` | Open in Finder       |\n| `y` | Copy repo path       |\n| `:` | Run shell command    |\n\n### Views \u0026 Sorting\n\n| Key | Action                     |\n| --- | -------------------------- |\n| `1` | Show all repos             |\n| `2` | Show dirty repos only      |\n| `3` | Show repos ahead of remote |\n| `4` | Show repos with conflicts  |\n| `5` | Sort by diff volume        |\n| `6` | Sort by file churn         |\n| `d` | Toggle detail panel        |\n| `?` | Help                       |\n\n## How It Works\n\ngv walks your configured scan paths looking for `.git` directories and worktree links. It runs `git status --porcelain=v2` and supplementary commands concurrently to build a status snapshot of each repo, then polls for changes in the background using content hashing to minimize overhead.\n\n## Requirements\n\n- Go 1.23+\n- Git\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackchuka%2Fgv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjackchuka%2Fgv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackchuka%2Fgv/lists"}