🔄 BarKeeper v1.0.1
A focused feature release adding the new Alternator resource type, UI clickability improvements, and a new example Feed script.
✨ New Features
⇄ Alternator Resource Type
A new resource type that displays a live string label in the menu bar and switches between discrete states with a single click.
- The status script prints the current state to stdout (e.g.
PersonalorWork) — displayed as a pill badge in the resource row - The action script is executed on click to advance to the next state, after which the status is automatically re-polled to refresh the badge
- Full state management: loading indicator, error display, and Notification Center alerts on success or failure
- Participates in the automatic polling loop alongside toggle resources
- Fully supported across the Settings editor, resource list, and menu bar view
- Added to the JSON config schema with
"type": "alternator",statusScript, andactionScriptfields
Example use cases:
- Switch between GitHub.com and GitHub Enterprise accounts (
gh auth switch) - Rotate
kubectlcontexts (kubectl config use-context)
See the new wiki guide: Switch Git Profile with the Alternator Resource
🖱️ Clickable Icon Areas in Menu Bar View
Navigation icons in the menu bar popup now have an expanded hit area via .contentShape(Rectangle()), making them easier to click — especially on smaller displays.
🚗 New Example: Commute Home Feed Script
Added docs/commute-home-feed.swift — a fully self-contained Swift script that uses MapKit + CoreLocation (no third-party dependencies) to calculate your current driving time home and display it as a Feed resource with trend tracking (faster/slower than last check).
🐛 Bug Fixes
- Status polling now gracefully handles missing status scripts — resources with no
statusScriptconfigured no longer get stuck in a loading state;isLoadingis now properly reset andlastCheckedis updated.
📖 Documentation
- README updated to document the Alternator resource type, including a full description, example config JSON, and updated config schema reference table
- Architecture overview updated to reflect the four resource types now supported
- Inline code comments cleaned up in
ResourceManager.swift
🔧 Internal Changes
- Added
nilIfEmptyutility extension onStringinResourceManager.swiftfor cleaner optional script handling ResourceEditorViewscript-saving logic updated to correctly mapstatusScriptandactionScriptfor alternator resourcesSettingsViewsidebar icon selection updated from a binary toggle/button check to a fullswitchstatement covering all four resource types
📦 Installation
Download BarKeeper.dmg from this release, open it, and drag BarKeeper.app into your Applications folder. The app is signed and notarized.
Checksums (SHA256)
- DMG:
815d4df707bf45a6757b979d61578196b156d0bf9461044d6603f4b06836bdae - ZIP:
7e438201691ff252f3c11d9495481c871e6df5ab29768b8371f3cf750d2f4144
Full Changelog: v1.0.0...v1.0.1
Checksums (SHA256)
- DMG:
815d4df707bf45a6757b979d61578196b156d0bf9461044d6603f4b06836bdae - ZIP:
7e438201691ff252f3c11d9495481c871e6df5ab29768b8371f3cf750d2f4144
Full Changelog: v1.0.0...v1.0.1