Skip to content

zintaen/gam

GAM — Git Alias Manager

A professional desktop GUI for managing Git aliases across Windows, Linux, and macOS.

GitHub Stars

MIT License Built with Tauri React TypeScript


GAM Dashboard

✨ Features

Feature Description
🔍 Searchable Alias List Sort by name, command, or scope. Filter with ⌘F instant search.
🏆 Usage Ranking Aliases ranked by a smart scoring algorithm — prioritizes recently and frequently used commands.
📚 Alias Library Browse 270+ predefined aliases from GitAlias. Search, filter by category, and add with one click.
💡 Alias Suggestions Auto-generates alias name candidates using 5 intelligent schemes when creating new aliases.
✏️ Create & Edit Modal form with real-time validation, live command preview, and smart suggestions.
🗑 Safe Delete Confirmation dialog before every destructive action.
⚠️ Dangerous Command Warnings Flags push --force, rm -rf, reset --hard, and shell aliases.
🌐 Scope Toggle Switch between Global, Local, and All scopes.
📦 Import / Export Share alias collections as JSON files.
🛡 Auto-Backup Backs up ~/.gitconfig before every write operation.
⌨️ Keyboard Shortcuts ⌘F to search, Escape to close modals.
🚀 Ultra Modern UI Deep space gradients, dynamic glassmorphism, animated glow effects, and smooth micro-animations.

🧠 Ranking Algorithm

GAM uses a scoring algorithm (inspired by alman) to rank aliases by how useful they are to you:

Score = TimeMultiplier × Length^(3/5) × Frequency

Time-Based Multipliers

Recency Multiplier
≤ 1 hour 4.0×
≤ 1 day 2.0×
≤ 1 week 0.5×
> 1 week 0.25×
  • Frequency — More frequently used aliases score higher
  • Recency — Recently used aliases get a significant boost
  • Length — Longer commands score slightly higher (saving more keystrokes)
  • Auto-Reset — When total score exceeds 70,000, all frequencies are halved to prevent inflation

Toggle between A-Z (alphabetical) and 🏆 Rank sorting in the alias list. Usage is tracked automatically when you copy an alias command.


🎯 Alias Suggestion Schemes

When creating a new alias, type your command first and GAM will suggest alias names using 5 intelligent strategies:

Scheme Example Result
🎯 Semantic checkout co
✂️ Abbreviation log oneline graph log
🔤 Vowel Removal checkout chc
🔡 First-Letter Combo checkout branch cbranch
📏 Smart Truncation checkout ch, che, chec

Suggestions automatically filter out names that conflict with your existing aliases and are sorted by effectiveness. Click any suggestion chip to use it.


📸 Screenshots

Dashboard Create Alias

📥 Download

Direct Download

Download the latest release for your platform from the GitHub Releases page:

Platform File
macOS (Apple Silicon) GAM_x.x.x_aarch64.dmg
macOS (Intel) GAM_x.x.x_x64.dmg
Windows GAM_x.x.x_x64-setup.exe
Linux GAM_x.x.x_amd64.AppImage

Homebrew (macOS)

brew install --cask zintaen/tap/gam

Auto-Update: GAM checks for updates on every launch and lets you update in-place with one click.


🚀 Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/zintaen/gam.git
cd gam

# Install dependencies
pnpm install

# Start the app in development mode
pnpm dev

The Tauri window opens automatically (first run compiles Rust backend ~2-3 min).


🧪 Testing

# Run all tests (229 tests: 174 frontend + 55 Rust)
pnpm test

# Run with coverage report
pnpm test -- --coverage

# Run Rust tests
cd src-tauri && cargo test

# Run in watch mode
pnpm test:watch

Test coverage (22 suites, 174 frontend + 55 Rust tests):

Suite Tests Covers
types.test.ts 6 TypeScript interface verification
suggestion-service.test.ts 18 All 5 suggestion schemes, conflict filtering, edge cases
gitalias-library.test.ts 14 Library data integrity, search, category filtering
App.test.tsx 2 Main application integration layout
AliasForm.test.tsx 13 Form validation, library picker, textarea, edit mode
AliasList.test.tsx 6 Table rendering, sort/filter logic, scope interactions
useGroups.test.ts 7 Group CRUD, active filter, non-Tauri fallbacks
+ 15 more hook/component suites 108 Hooks, components, error boundary, updater
Rust unit tests 55 git_service, settings, repos, groups, ranking parsers

🏗 Architecture

See CODEBASE.md for full architecture details including IPC commands, Rust services, frontend hooks, theme system, app data paths, and file dependency map.

Key design decisions:

  • CLI-first — All Git operations delegate to git config CLI rather than parsing .gitconfig files
  • Lightweight — Tauri uses the OS webview (~3–6 MB) instead of bundling Chromium (~150 MB)
  • Secure — Uses std::process::Command in Rust to prevent command injection
  • Cross-platform — Supports zsh, bash (plain + timestamped), Fish, and PowerShell shell histories

📚 Documentation

Document Description
📖 User Manual Full walkthrough of every feature
🧠 Codebase Architecture, IPC commands, services, file dependencies
🚀 Releasing Build scripts, CI/CD pipeline, and release checklist
🤝 Contributing How to contribute, coding standards, and PR guidelines
📜 Code of Conduct Community expectations

🍌 Support

If GAM saves you time and brainpower, give it a star on GitHub, and consider fueling its development with a banana!

Buy Me A Banana

Or scan the QR Code:

Buy Me A Banana QR


📄 License

This project is licensed under the MIT License.


🙏 Acknowledgments

  • Tauri — Lightweight cross-platform desktop framework
  • React — UI component library
  • Vite — Lightning-fast dev server
  • Vitest — Unit testing framework
  • GitAlias — Curated collection of 270+ Git aliases powering the Alias Library
  • alman — Inspiration for ranking algorithm & alias suggestion schemes

About

A professional desktop GUI for managing Git aliases across Windows, Linux, and macOS.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors