Skip to content

ejfox/git-status-dash

Repository files navigation

Git Status Dashboard

Release Test Build GitHub release (latest by date) npm version

Screenshot 2024-06-14 at 1 29 22 AM

A beautiful, blazingly fast git repository monitor that watches all your repos in real-time. Stop tab-switching to check git status – see everything at once in a gorgeous TUI that adapts to your workflow.

Why you'll love it:

  • 🚀 Lightning fast - Go rewrite is 35% faster with 90% less memory
  • 🎨 Gorgeously themed - Auto-detects your system theme or import from VS Code/Alacritty
  • ⚙️ Deeply configurable - Every detail customizable via intuitive CLI
  • 🔍 Smart monitoring - Only shows what matters, when it matters

🚀 Get the Fastest Version

Go version is 35% faster, uses 90% less memory, has zero dependencies, and includes advanced theming & config.

Quick Start (Recommended)

# Download the fast Go binary
curl -L https://github.com/ejfox/git-status-dash/releases/latest/download/git-status-dash-go-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o git-status-dash
chmod +x git-status-dash && sudo mv git-status-dash /usr/local/bin/

# Initialize with beautiful defaults
git-status-dash config init
git-status-dash

Or Use Node.js Version

# Basic usage
npx git-status-dash

# Opens in TUI mode (thanks @zkbkb)
npx git-status-dash -t

# Open another directory
npx git-status-dash -d ~/code/

# Get help
npx git-status-dash --help

Performance comparison on 127 repos:

  • Go: 1.159s, 6.7MB RAM ⚡
  • Node.js: 1.241s, 69MB RAM

⚡ New in Go Version

🎨 Advanced Theming

  • Auto-detect system light/dark mode
  • Import themes from VS Code, Alacritty, Kitty
  • 4 built-in themes: matrix, minimal, hacker, neon
  • Popular themes: ayu, catppuccin, nord, dracula

⚙️ Deep Configuration

  • Display: tree view, timestamps, flash on change
  • Filters: show/hide by status, recent repos only
  • Behavior: refresh rates, TTL mode, notifications
  • Performance: worker pools, timeouts, scan depth

🔧 Quick Config Examples

# Set up your perfect environment
git-status-dash config auto                          # Auto-detect theme
git-status-dash config set display.tree_view true    # Tree structure
git-status-dash config set filter.only_recent true   # Recent repos only  
git-status-dash config set behavior.ttl_mode true    # Exit after 30s

# Import themes from other apps
git-status-dash config download ayu-vscode
git-status-dash config import alacritty ~/.config/alacritty/ayu.yml

How it works

Recursively scans directories and shows git status for all repos. Defaults to current directory, but you can point it anywhere.

Development setup

# Go version
go run *.go

# Node.js version  
npm install && node index.mjs

What's it telling me? 🤔

The table displays the following information for each repository:

  • Repository name (relative to the scanned directory)
  • Status icon and details:
    • ✓ (green): The repository is in sync with the remote.
    • ↑ (yellow): The local branch is ahead of the remote by the specified number of commits.
    • ↓ (yellow): The local branch is behind the remote by the specified number of commits.
    • ✕ (red): There are uncommitted changes or the repository is not a valid git repo.

The repositories are sorted by the most recently modified ones at the top, so you can quickly see which repos need your attention.

🔧 Configuration Reference (Go Version)

Themes

git-status-dash config themes                    # List available themes
git-status-dash config theme matrix              # Set theme  
git-status-dash config auto                      # Auto-detect from system
git-status-dash config sources                   # List theme sources
git-status-dash config download ayu-vscode       # Download from source
git-status-dash config import kitty ~/.config/kitty/theme.conf

Display Options

git-status-dash config set display.tree_view true         # Show as tree
git-status-dash config set display.flash_on_change true   # Flash updates
git-status-dash config set display.show_timestamp true    # Show timestamps
git-status-dash config set display.compact_mode true      # Compact display
git-status-dash config set display.group_by_status true   # Group by status

Filter Options

git-status-dash config set filter.show_synced true        # Show clean repos
git-status-dash config set filter.only_recent true        # Recent repos only
git-status-dash config set filter.recent_days 3           # Define "recent"
git-status-dash config set filter.show_dirty false        # Hide dirty repos

Behavior Options

git-status-dash config set behavior.refresh_interval 500  # Refresh rate (ms)
git-status-dash config set behavior.ttl_mode true         # Exit after timeout
git-status-dash config set behavior.ttl_seconds 30        # Timeout duration
git-status-dash config set behavior.watch_files false     # Disable file watching
git-status-dash config set behavior.notify_on_change true # System notifications

Performance Tuning

git-status-dash config set performance.workers 8          # Concurrent operations
git-status-dash config set performance.timeout 5          # Git timeout (seconds)
git-status-dash config set performance.max_depth 3        # Scan depth limit

Config File Location

  • Linux/macOS: ~/.config/git-status-dash/config.json
  • Windows: %APPDATA%/git-status-dash/config.json
  • Themes: ~/.config/git-status-dash/themes/

Built-in Themes

  • matrix: Hacker green with effects
  • minimal: Clean monochrome
  • hacker: Retro terminal style
  • neon: Bright colors and particles

Supported Theme Sources

  • VS Code: .json theme files
  • Alacritty: .yml config files
  • Kitty: .conf theme files

If you have any questions, suggestions, PRs are welcome.

About

See the status of all the repos in a folder in one place

Topics

Resources

Stars

Watchers

Forks

Contributors