v0.1.2 - First Beta Release
🍺 BarKeeper v0.1.2 — First Beta Release
Use your macOS Bar to Keep your environments and shortcuts under control.
This is the first public beta of BarKeeper — a lightweight, native macOS menu bar app for managing resources with one click. Run scripts, monitor the status of applications, or spin up and shutdown cloud resources — all from your macOS top bar.
✨ Features
Menu Bar Native
- Lives entirely in your macOS menu bar — no Dock icon clutter
- Custom app icon for the menu bar and application
Two Resource Types
- Toggle — Stateful on/off controls with three scripts (status, on, off) and live status indicators:
- 🟢 Green dot — resource is ON (exit code
0) - ⚪ Gray dot — resource is OFF (non-zero exit code)
- 🔴 Red dot — an error occurred during the last action
- 🟢 Green dot — resource is ON (exit code
- Button — Stateless one-click action that executes a single script immediately. Perfect for one-off tasks like deploying a build, flushing a cache, or opening a dashboard.
Configurable Polling
- Automatic status checks with adjustable intervals from 1 minute to 1 hour
- Manual-only polling option (set interval to
0)
Settings UI
- Full add / edit / delete resource management through a native SwiftUI settings window with sidebar navigation
- Resource editor form for configuring scripts, names, and resource types
- Settings window opens reliably and comes to the front
JSON Import & Export
- Export your entire configuration as a portable
BarKeeper-config.jsonfile for sharing or backup - Import a JSON configuration file (replaces the current config and refreshes all statuses immediately)
Built-in Azure Fabric Capacity Template
- Pre-configured resource template for Azure Fabric Capacity management (resume/suspend) to get started instantly with Azure CLI
Shell Script Execution
- Scripts run using your default login shell (
$SHELL -l -c "...") so Homebrew,nvm,pyenv, customPATHentries, and tools likeazCLI are all available - stdout and stderr captured separately and trimmed
- Exit code determines success or failure
Version Label
- App version displayed in the menu bar popup
- Development builds clearly marked when version is not injected by CI
🛠 Developer & Project Infrastructure
- XcodeGen-powered — Xcode project is generated from
project.ymland never committed to the repo - Environment-based code signing —
DEVELOPMENT_TEAMresolved from an environment variable, keeping signing credentials out of source - Hardened Runtime enabled for Gatekeeper compatibility
- Automated CI/CD release pipeline via GitHub Actions:
- Build → Code Sign (Developer ID) → Notarize with Apple → Package as
.dmgand.zip→ Draft GitHub Release with SHA256 checksums - Version and build number automatically injected from git tag and run number
- Build → Code Sign (Developer ID) → Notarize with Apple → Package as
- Comprehensive documentation — README with screenshots, getting started guide, script examples, architecture overview, troubleshooting table, and security considerations
- Release pipeline docs (
docs/RELEASE.md) covering all pipeline stages, required secrets, and troubleshooting - CODEOWNERS file for review assignment
- MIT Licensed
📋 System Requirements
- macOS 15.0+ (Sequoia)
- Xcode 16+ / Swift 6.0+ (for building from source)
- (Optional) Azure CLI for the built-in Azure template
📦 Installation
Download BarKeeper.dmg from this release, open it, and drag BarKeeper.app into your Applications folder. The app is signed and notarized — macOS Gatekeeper will allow it to run without any additional steps.
🔮 What's Next
We have exciting features planned for upcoming releases:
- Notification Center integration for action completion feedback
- New resource type: List Option (dropdown menus)
- Alternator resource type with status text display
- Foreground program support for long-running processes
- Critical action confirmation dialog
- Homebrew Cask distribution
⚠️ Known Limitations
This is a beta release — please report any bugs via GitHub Issues. Key things to keep in mind:
- Config is stored in cleartext at
~/Library/Application Support/BarKeeper/config.json— avoid storing secrets directly in scripts - App Sandbox is disabled (required for arbitrary shell command execution)
- Scripts run with your full user privileges
Checksums (SHA256)
- DMG:
2e3a06bb739378beeb87f6d14c77daa0c7d69b294f94f1f8aed36afe06738e1e - ZIP:
16cbea0b82136e5b671b6f2a488a248e2269dd9ae2c33e4e159e2c67d16e7bb7
Full Changelog: v0.1.1...v0.1.2