Automatically enable Do Not Disturb mode when you're in deep work.
Auto-Focus periodically checks what application is in the front and enables Do Not Disturb mode after 12 minutes of focused work in your chosen applications. When you switch to non-work apps, it gives you a buffer period before re-enabling notifications.
Auto-Focus runs as a menu bar app that monitors which application is currently active. When you're using one of your designated focus applications (like VSCode, Xcode, or any other app you choose), it starts a timer. Once you've been focused for 12 minutes (configurable), it automatically enables Do Not Disturb mode.
To prevent losing focus during quick context switches (like checking documentation), Auto-Focus includes a configurable buffer period. This means your focus session won't end immediately when you switch apps - you have a grace period to switch back to your work.
- Download the latest version of Auto-Focus from the releases page
- Install the required Shortcut:
- Open the Shortcuts folder in the downloaded ZIP and install the Shortcut
- or later through Settings of the app itself
- Launch Auto-Focus and configure your focus applications
- Enjoy your uninterrupted work sessions! 🚀
- Automatic Focus Detection: Detects when you're in deep work and enables focus mode automatically
- Smart Buffer: Configurable buffer time prevents losing focus during quick switches
- Focus Insights: Track your focus sessions and productivity patterns
- Browser Integration: Chrome extension for tracking focus URLs (GitHub, Linear, Figma, etc.)
- Menu Bar Interface: Quick access to your focus status and settings
- Multiple Apps Support: Choose which applications should trigger focus mode
- Configurable Thresholds: Customize how long before focus mode activates
- Data Export: Export focus session data (Premium feature)
Releases are fully automated via GitHub Actions. The release workflow only runs when MARKETING_VERSION changes in auto-focus.xcodeproj/project.pbxproj.
To create a new release:
- Bump
MARKETING_VERSIONinauto-focus.xcodeproj/project.pbxproj(e.g.,1.2.0→1.2.1) - Commit and push to
main - The workflow automatically:
- Builds and archives the app
- Code signs with Developer ID certificate
- Notarizes with Apple
- Packages app and extension
- Creates git tag (e.g.,
v1.2.1) - Creates GitHub release with assets
- Updates distribution files
Note: The workflow checks if the version actually changed. If MARKETING_VERSION matches the latest tag, the release is skipped (no duplicate tags).
Configure these secrets in Settings → Secrets and variables → Actions:
APPLE_CERTIFICATE: Base64-encoded .p12 certificate fileAPPLE_CERTIFICATE_PASSWORD: Password for the .p12 certificateAPPLE_ID: Your Apple ID emailAPPLE_APP_SPECIFIC_PASSWORD: App-specific password from https://appleid.apple.com/account/manageAPPLE_TEAM_ID: Your Apple Developer Team ID (LKQJ2JG34Y)HMAC_SECRET: (optional) HMAC secret for license validation
For local testing or manual releases:
make manual-releaseThis will guide you through the notarization process step-by-step.
- Semantic versioning:
v1.MINOR.PATCH(e.g., v1.2.0, v1.2.1) - Manual version bump: Update
MARKETING_VERSIONinproject.pbxprojbefore releasing - Git tags: Created automatically with each release
- Distribution: Files served from
docs/downloads/and GitHub releases
Notarization fails: Check logs with:
xcrun notarytool log <submission-id> --keychain-profile 'Developer'Build issues: Clean and retry:
make clean
make manual-release