
Free macOS menu bar app
CommitBar
Stage, commit, and push from the macOS menu bar
Stage, commit, and push without leaving your flow. A lightweight macOS menu bar companion for everyday Git.
v1.2.7 · 13.7 MB · macOS · Apple silicon · free for personal and public use
What it does
Git commits from your menu bar
- Pick repos once, commit anytime
- Quick status and push from the menu bar
- Built for developers who live in the bar
Install
Get CommitBar running in under a minute
Terminal install · CommitBar
After downloading the zip
Ad-hoc signed apps are not Apple-notarized. Paste these commands if Gatekeeper blocks launch — same flow across all tools.
1. Unzip into Applications
unzip -o "$HOME/Downloads/CommitBar-1.2.7-macos-arm64.zip" -d /Applications/2. Remove Gatekeeper quarantine (if macOS blocks launch)
xattr -dr com.apple.quarantine "/Applications/CommitBar.app"3. Open CommitBar
open -a "CommitBar"
Version history
CommitBar release notes
Every published version, newest first.
v1.2.7
Current9 Oct 2026Fixed
- CommitBar quit after a successful push, pull, commit or branch switch — 1.2.6 crashed right when it showed “Push successful.”, “Pull successful.”, “Commit successful.”, “Committed and pushed.” or the create/switch-branch result: those six notices still called rumps' notification function, which 1.2.6 had switched off, and the error it raised on the main thread aborted the app. They now go through the same path as every other notice, and only rumps' launch-time connection to the old notification API is skipped, so a missed call can no longer crash the app.
v1.2.6
9 Oct 2026Changed
- Menu bar number counts repositories — the number next to the icon is now how many repositories have uncommitted changes, not the total of changed files across them (two repos with 40 edits show 2). With no local changes anywhere it still counts repositories that need a push or pull.
Fixed
- Update notice never seen — When the background check finds a new version, the “Update available” dialog (Install & restart… / Not now) now opens by itself, in front of other windows, once per version. Until now it only posted a notification, which macOS never showed.
- Notifications never shown — Notifications go through Apple's current API (UNUserNotificationCenter). rumps used the deprecated NSUserNotificationCenter, whose notifications current macOS drops without an error. macOS only shows them for Developer ID signed apps; this ad-hoc build logs the reason to its error log instead.
- Update check failed without Homebrew — Update checks and downloads work on Macs without Homebrew: the bundled OpenSSL only looked for certificates in Homebrew's folder. macOS's own `/etc/ssl/cert.pem` is now trusted as well.
v1.2.5
9 Oct 2026Changed
- Current dependencies — built with `packaging` 26.3 and PyInstaller hooks 2026.8. `requirements.txt` now allows `packaging` 26.x (was capped below 26).
v1.2.4
16 Sep 2026Added
- Commit All… and Commit One by One… in the main menu, under the repository list. Both open the same commit window as a repository's Commit…, for every repository that has changes. Commit All opens one window per repository (cascaded); Commit One by One opens them in turn — the title shows “(2 of 5)”, Skip moves on without committing, Cancel stops the sequence.
Changed
- Auto update check every 6 hours (was 12). A failed check — offline right after login, server error — is retried up to 3 times, 10 minutes apart, instead of waiting for the next interval.
- Python 3.10+ for source installs — `install.sh` skips Apple's bundled Python 3.9 and rebuilds a virtualenv that was created with it; the bundled .app is unaffected.
Fixed
- Repository order in the menu only changed when a repository was added — the menu now rebuilds whenever the sorted order changes. Repositories with changes to commit come first, then anything else needing attention (ahead/behind, conflicts, detached HEAD), then clean ones, each A–Z.
- Commit / push / pull errors never showed an alert — every `except … as extra:` handler in `dialogs.py` read `exc`, so a failing git command raised `NameError` inside the background job instead of the alert, and the repository stayed marked `committing…` / `pushing…` until restart.
- Auto update check ran at launch, twice — rumps timers fire as soon as they start, so the “first check about a minute after launch” happened immediately (often before Wi-Fi was up) and the periodic timer fired once more right behind it. The first check now really waits a minute.
v1.2.3
13 Sep 2026Fixed
- First changed file lost its first letter — trimming `git status --porcelain` output removed the leading status space, so an unstaged `bun.lock` showed as `un.lock [staged]` (and generated commit messages read `HANGELOG.md`). Staged/modified counts were off by one for the same reason.
v1.2.2
12 Sep 2026Added
- Auto update check — every 12 hours (first check about a minute after launch). A purple dot on the menu-bar icon plus a notification when a new version is ready; Check for Updates… becomes “Update x.y.z available…”.
v1.2.1
12 Sep 2026Fixed
- Quit reopened the app — Launch at login used `KeepAlive`, so launchd started CommitBar again after Quit. Match RunBar: `KeepAlive` off, unload the login item on Quit (plist stays for the next login).
v1.2.0
27 Aug 2026Added
- Switch or create a branch from each repository’s menu (local branches, plus New Branch…)
v1.1.2
27 Aug 2026Changed
- Menu chrome — Settings…, Check for Updates…, Version, then Quit (same order as the other Bars). Refresh All is now Refresh.
Fixed
- Duplicate menu bar icon after update — after `open` of the new app, do not reload the LaunchAgent. KeepAlive would start a second copy because that process is not the launchd job. The plist stays on disk, so Launch at login is unchanged at the next login.
v1.1.0
19 Aug 2026Changed
- Non-blocking git jobs — commit, push, and pull run in the background so the menu stays usable
- Push/pull 2–3 repositories in parallel; the same repo still allows only one write at a time
- Commit window is modeless, with Commit and Commit & Push buttons (no follow-up alert)
- Menu item shows `pushing…` / `committing…` while that repo is busy
- Status refresh never runs git on the AppKit main thread, and skips a repo that is currently pushing
v1.0.11
14 Aug 2026Fixed
- Self-update with launch at login — start the installer script before parking the KeepAlive LaunchAgent, so bootout cannot kill the app before replace/relaunch. Relaunch uses `open` (same path that works for StackBar).
- Unpack the free-tools zip with `ditto` and skip `__MACOSX/*.app` stubs so the real `Contents/MacOS/CommitBar` is installed
v1.0.10
13 Aug 2026Fixed
- Relaunch after update — open the new `.app` with LaunchServices instead of treating LaunchAgent bootstrap as a successful start (bootstrap loaded the job but the menu bar icon never came back)
v1.0.9
13 Aug 2026Fixed
- Check for Updates progress — show the same “Installing update…” percent window as the other bar apps
- Double reopen after update — park the LaunchAgent before replacing the app so KeepAlive plus `open -n` cannot start both the old and new copies
v1.0.8
13 Aug 2026Changed
- `install.sh` picks the newest Python 3 from Homebrew or Xcode / CLT (no longer hard-coded to 3.12)
v1.0.7
9 Aug 2026Fixed
- Check for Updates zlib Error -3 — fetch manifest/zip via stdlib urllib instead of requests/urllib3 so a CDN that wrongly sets `Content-Encoding: gzip` no longer breaks the update check
v1.0.6
9 Aug 2026Fixed
- Memory leak: rumps retained every rebuilt `NSMenuItem` in a global callback map (~1 GB after days of use)
- Menu now updates titles in place; full rebuild only when repos / remote / editor layout changes
- Filesystem watches ignore high-churn dirs (`node_modules`, `dist`, `.venv`, etc.) and unschedule on remove
- Large git diffs are capped in memory
- Crash on Commit & Push (SIGSEGV from releasing the commit window too early)
v1.0.5
20 Jul 2026Fixed
- SSH Keychain setup / Terminal push-pull when `SSH_AUTH_SOCK` is stale after reboot
- LaunchAgent no longer bakes in a session-specific `SSH_AUTH_SOCK` path
v1.0.4
18 Jul 2026Added
- Check for Updates… menu item (ENTELXCORE manifest + in-app zip install)
v1.0.3
18 Jul 2026Changed
- Patch release for ENTELXCORE Free Tools
v1.0.2
18 Jul 2026Fixed
- `release.sh` always rebuilds before zipping (fixes zip filename vs in-app version mismatch)
- Launch at login migrates off `run.sh` / dev paths when `/Applications/CommitBar.app` exists
Changed
- Menu bar icon uses medium-weight SF Symbol to match the Bars family (RunBar / UsageBar)
- App logo aligned with ENTELXCORE free-tools product mark
v1.0.1
18 Jul 2026Added
- Custom app icon (menu bar dev wrapper and installed `.app`)
- Support for local Git repos without a remote (commit-only flow)
Changed
- Release publishes to ENTELXCORE free-tools (`CommitBar-{version}-macos-arm64.zip`)
v1.0.0
18 Jul 2026Added
- macOS menu bar app for monitoring multiple Git repositories
- Live status: modified, staged, untracked, ahead/behind, conflicts
- Commit dialog with scrollable file list and diff preview
- Push / pull from the menu bar with SSH Keychain support
- Preferences panel (notifications, refresh interval, SSH setup)
- PyInstaller `.app` build and install to `/Applications`
- Release zip script for distribution
Fixed
- Menu bar updates after commit/push/pull
- `git diff` exit code handling
- Always stage files before commit
- Main-thread UI refresh from background git operations




