[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81732":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":11,"openIssues":12,"contributorsCount":12,"subscribersCount":12,"size":12,"stars1d":12,"stars7d":12,"stars30d":12,"stars90d":12,"forks30d":12,"starsTrendScore":12,"compositeScore":13,"rankGlobal":8,"rankLanguage":8,"license":14,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":8,"pushedAt":8,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":12,"starSnapshotCount":12,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},81732,"monogit","JoaoOliveira889\u002Fmonogit","JoaoOliveira889",null,"Go",31,1,0,37.9,"MIT License",false,"main",true,[],"2026-06-12 04:01:35","# monogit\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FJoaoOliveira889\u002Fmonogit?color=7aa2f7&label=tag&logo=github&style=flat-square\" alt=\"Latest Tag\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FJoaoOliveira889\u002Fmonogit\u002Ftotal?color=9ece6a&label=downloads&logo=github&style=flat-square\" alt=\"Total Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\">\u003Cimg src=\"https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit?style=flat-square\" alt=\"Go Report Card\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fhomebrew-tap\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fhomebrew-v0.0.15-7dcfff?logo=homebrew&style=flat-square\" alt=\"Homebrew Version\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\">\u003Cstrong>MonoGit v0.0.15 · JoaoOliveira889\u002Fmonogit\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n**Multi-repo Git dashboard for your terminal.** A TUI tool that scans a root directory for Git repositories and gives you a panoramic view of branches, ahead\u002Fbehind status, and dirty state - with one-key actions for Git workflows and confirmation guards for every mutating command.\n\n![Monogit Dashboard](img\u002Fbanner.jpg)\n\nBuilt with [Bubble Tea](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbletea), [Lip Gloss](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Flipgloss), and [Bubbles](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbles).\n\n---\n\n## Documentation\n\nFor detailed guides, configuration options, and troubleshooting, visit our **[Wiki Documentation](docs\u002FREADME.md)**.\n\n- [Getting Started](docs\u002Fgetting-started.md)\n- [Keybindings Reference](docs\u002Fkeybindings.md)\n- [Configuration Guide](docs\u002Fconfiguration.md)\n- [Troubleshooting](docs\u002Ftroubleshooting.md)\n\n## Features\n\n- **Panoramic Dashboard**: View multiple Git repositories at once with real-time indicators for branch name, ahead\u002Fbehind status, and dirty state. The active branch is displayed directly alongside the repository name.\n- **Auto-scan & Detection**: Automatically discovers all Git repositories under any target root directory.\n- **Batch Operations**: One-key actions to `fetch`, `pull`, and `push` either for the selected repository or for all of them concurrently. Bulk `checkout` and `stash` actions work across all filtered repositories with confirmation safeguards.\n- **Confirmation Safeguards**: Mandatory confirmation dialogs for every mutating action that changes repository state or files, including pull, push, stash, commit, branch changes, tag creation, discard, and undo. Fetch stays direct, and commit wizard file selection stays local until the final commit confirmation.\n- **Interactive Commit Wizard**: A guided flow to choose all changes or a manual file set, write a commit message, and optionally push changes in one go, with final confirmation before the commit runs.\n- **Deploy Tags**: Create annotated tags and deploy them to remote repositories with a simple interactive wizard (shortcut `t`).\n- **Branch Management**: List, create, checkout, merge, and delete both local and remote branches directly from the TUI.\n- **External Integration**: Instantly open any repository in your favorite **Editor** (VS Code, Cursor, Zed, Vim, etc.) or **Browser** (GitHub, GitLab, etc.).\n- **Stash Support**: Full stash management panel with pop, apply, drop, and file inspection.\n- **Commit History & Graphs**: Toggle between a simple commit log and a visual commit graph.\n- **Security First**: Built with Go's `exec.Command` with individual arguments to ensure zero shell injection vectors, no telemetry, and restrictive local config permissions.\n- **Command Log**: A dedicated panel to inspect a temporary in-memory history and raw output of every executed Git command.\n- **Tokyo Night Theme**: A beautiful, dark theme crafted with Lip Gloss for maximum readability.\n\n---\n\n## Installation\n\n### Option 1 — Homebrew (macOS & Linux)\n\n```bash\nbrew tap JoaoOliveira889\u002Ftap\nbrew install monogit\n```\n\n### Option 2 — Pre-built binary\n\nDownload the latest release for your platform from the [Releases page](https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest).\n\n```bash\n# macOS (Apple Silicon)\ncurl -LO https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest\u002Fdownload\u002Fmonogit_Darwin_arm64.tar.gz\ntar -xzf monogit_Darwin_arm64.tar.gz\nsudo mv monogit \u002Fusr\u002Flocal\u002Fbin\u002F\n\n# macOS (Intel)\ncurl -LO https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest\u002Fdownload\u002Fmonogit_Darwin_x86_64.tar.gz\ntar -xzf monogit_Darwin_x86_64.tar.gz\nsudo mv monogit \u002Fusr\u002Flocal\u002Fbin\u002F\n\n# Linux (amd64)\ncurl -LO https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit\u002Freleases\u002Flatest\u002Fdownload\u002Fmonogit_Linux_x86_64.tar.gz\ntar -xzf monogit_Linux_x86_64.tar.gz\nsudo mv monogit \u002Fusr\u002Flocal\u002Fbin\u002F\n```\n\n### Option 3 — Install with `go install`\n\n```bash\ngo install github.com\u002FJoaoOliveira889\u002Fmonogit\u002Fcmd\u002Fmonogit@latest\n```\n\n> Requires Go 1.26.3 or later.\n\n### Option 4 — Build from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FJoaoOliveira889\u002Fmonogit.git\ncd monogit\ngo build -o monogit .\u002Fcmd\u002Fmonogit\n```\n\n---\n\n## Usage\n\n```bash\n# Scan current directory\nmonogit\n\n# Scan a specific directory\nmonogit --path ~\u002Fprojects\n\n# Set auto-fetch interval to 10 minutes\nmonogit --interval 10m\n```\n\n### Flags\n\n| Flag         | Default | Description                                |\n|--------------|---------|--------------------------------------------|\n| `--path`     | `.`     | Root directory to scan for Git repositories |\n| `--interval` | `5m`    | Auto-fetch interval (e.g. `1m`, `10m`, `1h`) |\n| `--version`  | -       | Show version, commit, and build date       |\n\nEvery mutating command opens a confirmation modal before it runs. Fetch stays direct, while pull, push, stash, undo, branch changes, tag creation, and the final commit confirmation follow that rule.\n\n---\n\n## Keybindings\n\n### Global\n\n| Key | Action |\n|-----|--------|\n| `↑ | k` | Move cursor up |\n| `↓ | j` | Move cursor down |\n| `← | h` | Switch to Left Panel (Repositories) |\n| `→ | l` | Switch to Right Panel (Details\u002FLog) |\n| `1 | 2 | 3` | Jump directly to specific panel |\n| `tab` | Cycle between visible panels |\n| `ctrl+p | ?` | Toggle Help Menu |\n| `esc` | Back \u002F Cancel \u002F Close |\n| `q` | Quit |\n\n### Repository Panel\n\n| Key | Action |\n|-----|--------|\n| `f` | Fetch selected repository |\n| `F` | Fetch **all** repositories |\n| `p` | Pull selected repository |\n| `P` | Pull **all** repositories |\n| `u` | Push selected repository |\n| `U` | Push **all** repositories |\n| `c` | **Commit Wizard** (`a` add all, `v` select files → message → confirm → optional push) |\n| `b` | List local & remote branches |\n| `M` | Merge branch into HEAD (inside branch panel) |\n| `t` | **Deploy Tag** (create → message → confirm → push) |\n| `s` | **Stash** changes |\n| `S` | Open **Stash Panel** (pop, apply, drop) |\n| `Z` | **Stash All** (stash dirty filtered repos) |\n| `B` | **Checkout All** (switch branch in all filtered repos) |\n| `z` | **Quick Undo** (soft reset last commit) |\n| `e` | Open in **Editor** (auto-detects VS Code, Vim, etc.) |\n| `w` | Open in **Browser** (GitHub, GitLab, etc.) |\n| `g` | Toggle Graph \u002F Simple log view |\n| `o` | Open Command Log |\n| `v` | Start a selection range |\n| `y` | Copy the current selection |\n| `ctrl+v` | Paste clipboard text into prompts |\n\nMutating actions prompt for confirmation before they run, with fetch as the explicit exception.\n\nInside branch, file, stash, and commit panels, destructive actions continue to require confirmation before execution. Commit wizard file selection remains a local choice until the commit is confirmed.\n\nThe footer always keeps `? help` visible and shows the running `MonoGit` version on the right edge so global shortcuts and build context stay available in every screen.\n\n---\n\n## Layout\n\n```\n┌─────────────────────────┬──────────────────────────────┐\n│  Repositories           │  ◈ api-gateway               │\n│                         │                              │\n│  ▸ api-gateway  main ↑2 │  Branch:  main               │\n│    auth-svc     dev  ↓1 │  Ahead:   ↑ 2 commits       │\n│    payment      main ✓  │  Behind:  0                  │\n│    user-svc     feat ●  │  Status:  Modified ●         │\n│                         │                              │\n│                         │  Recent Commits:             │\n│                         │  ─────────────────           │\n│                         │  a1b2c3d Fix auth            │\n│                         │  d4e5f6a Add rate limit      │\n│                         │  g7h8i9j Update deps         │\n└─────────────────────────┴──────────────────────────────┘\n f fetch │ p pull │ u push │ c commit │ t tag │ B checkout-all │ Z stash-all │ e editor │ q quit\n```\n\n---\n\n## Architecture\n\nThe project follows **Clean Architecture** principles, keeping business logic decoupled from implementation details:\n\n```\nmonogit\u002F\n├── cmd\u002Fmonogit\u002F        # Entry point\n├── internal\u002F\n│   ├── domain\u002F         # Core entities: Repository, FileStatus, interfaces\n│   ├── usecase\u002F        # Business logic: Git operations orchestrator\n│   ├── adapters\u002F\n│   │   ├── git\u002F        # CLI Git provider (exec-based, no shell injection)\n│   │   └── tui\u002F        # Bubble Tea UI: model, update, view, keys\n│   └── pkg\u002F\n│       ├── scanner\u002F    # Directory traversal and repo detection\n│       ├── config\u002F     # Local config and startup cache\n│       ├── editor\u002F     # Editor auto-detection and launcher\n│       └── ui\u002F         # Shared styles (Lip Gloss tokens)\n└── .goreleaser.yaml    # Multi-platform release config\n```\n\n**Security note:** All Git commands are built using `exec.Command` with individual string arguments - no shell interpolation, no injection vectors, no telemetry, and no hidden data collection.\n\n---\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feat\u002Fmy-feature`\n3. Commit your changes following [Conventional Commits](https:\u002F\u002Fwww.conventionalcommits.org\u002F)\n4. Push and open a Pull Request\n\n---\n\n## Support\n\nIf monogit helps you manage repositories more efficiently, consider supporting its development.\n\n\u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002FJoaoOliveira889\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fcdn.buymeacoffee.com\u002Fbuttons\u002Fv2\u002Fdefault-yellow.png\" alt=\"Buy Me a Coffee\" style=\"height: 60px !important;width: 217px !important;\" >\u003C\u002Fa>\n\n---\n\n## License\n\n[MIT](LICENSE) © João Oliveira\n","MonoGit 是一个用于终端的多仓库 Git 仪表盘工具。它使用 Bubble Tea、Lip Gloss 和 Bubbles 等技术构建，能够扫描指定根目录下的所有 Git 仓库，并提供分支名称、领先\u002F落后状态和脏状态的全景视图。用户可以通过一键操作执行 `fetch`、`pull`、`push` 等 Git 工作流，并且在执行任何修改操作时都有确认保护机制。此外，它还提供了交互式的提交向导，帮助用户选择更改的文件、编写提交信息并推送更改。适用于需要同时管理和操作多个 Git 仓库的开发人员或团队，尤其适合那些希望通过终端高效管理项目的用户。",2,"2026-06-11 04:06:09","CREATED_QUERY"]