A macOS menu bar app that understands context and fixes your typos and grammar mistakes instantly, while preserving your unique writing style.
- Instant Corrections: Press
⌘⇧Dto fix typos in any text field - Style Preservation: Fixes errors while keeping your tone, word choices, and formatting
- Smart Text Selection: Automatically selects text backward from cursor (paragraph → line → prompt)
- Works Everywhere: Compatible with most macOS apps (Notes, Mail, Slack, Chrome, etc.)
- Handles Long Text: Splits large text into sentences and corrects them in parallel for speed and reliability
- List-Aware: Bullet and numbered lists are corrected item-by-item, preserving structure
- Multi-language: Supports 50+ languages with auto-detection
- Security: Detects prompt injection attempts, warns about sensitive data, validates AI output
- Local History: Corrections are stored locally on your Mac and can be cleared anytime
- Launch at Login: Optionally start TypoFixr when you log in
- Undo: Use
⌘Zin any app to revert a correction
- macOS 13.0 (Ventura) or later
- Groq API key (get one here)
- Visit the project site: kdelmotte.github.io/TypoFixr
- Or download the latest DMG directly: TypoFixr.dmg
- Open the DMG and drag TypoFixr to Applications
- Launch TypoFixr and complete onboarding
- Add your Groq API key when prompted
-
Clone the repository
git clone https://github.com/kdelmotte/TypoFixr.git cd TypoFixr -
Build the app
make build # Debug build make release # Release build
-
Deploy (build + sign + launch)
make deploy
This builds a release binary, signs it with the local
TypoFixrDevcertificate (preserving accessibility permissions), resets onboarding, and launches the app.
-
Grant Accessibility Permission
- On first launch, you'll be prompted to grant Accessibility permission
- Go to System Settings > Privacy & Security > Accessibility
- Enable TypoFixr in the list
-
Add Your Groq API Key
- Click the menu bar icon > Settings > API
- Enter your Groq API key (starts with
gsk_)
-
Start Using
- Type text in any app
- Press
⌘⇧Dto fix typos - That's it!
- Type text in any text field (Notes, Mail, Slack, etc.)
- Press
⌘⇧D(or your custom shortcut) - Your text is instantly corrected!
TypoFixr intelligently selects what to fix using a clipboard-based approach:
| Priority | Behavior |
|---|---|
| 1. Selected text | If you've highlighted text, only that is corrected |
| 2. Paragraph | Selects backward from cursor to start of paragraph |
| 3. Line | If paragraph is too long, selects current line instead |
| 4. Prompt | If no text found, you're prompted to select text |
Click the menu bar icon > Settings:
| Tab | Options |
|---|---|
| General | Launch at Login |
| Shortcut | Change the trigger shortcut (default ⌘⇧D) |
| API | Enter your Groq API key |
| Security | Toggle warnings and clear local history |
| About | Version info and feedback link |
TypoFixr scans text before sending it to Groq:
- Prompt injection detection — patterns like "ignore previous instructions"
- Sensitive data warnings — credit cards, SSNs, passwords, API keys, emails, phone numbers
When detected, you can choose to proceed or cancel.
AI responses are validated on return for suspicious patterns (script tags, shell commands), AI refusals, and unexpected length.
- User-triggered only: Text is only accessed when you press the shortcut
- Pass-through: Text is sent to Groq, corrected, and immediately discarded
- Local storage: Correction history is stored locally in SQLite
- Secure key storage: Your API key is stored in macOS Keychain
- Clear anytime: Delete all history from Settings > Security
TypoFixr/
├── Package.swift # Swift Package Manager config
├── Sources/
│ └── TypoFixr/
│ ├── TypoFixrApp.swift # App entry point
│ ├── AppDelegate.swift # Menu bar setup
│ ├── Models/
│ │ ├── AppState.swift # App state management
│ │ ├── Correction.swift # Correction model
│ │ └── OnboardingFlow.swift # Onboarding step/gating logic
│ ├── Services/
│ │ ├── TextCorrectionService.swift # Main correction logic
│ │ ├── GroqService.swift # AI integration
│ │ ├── HotkeyService.swift # Keyboard shortcuts
│ │ ├── SecurityService.swift # Security checks
│ │ ├── NetworkMonitor.swift # Connectivity detection
│ │ └── HUDService.swift # HUD notifications
│ ├── Database/
│ │ └── DatabaseManager.swift # SQLite storage
│ ├── Assets.xcassets/ # App icon and brand assets
│ └── Views/
│ ├── Branding.swift # Shared TypoFixr branding
│ ├── MenuBarView.swift # Dropdown menu
│ ├── SettingsView.swift # Settings window
│ ├── OnboardingView.swift # First-run experience
│ └── HUDView.swift # HUD overlay
└── Tests/
└── TypoFixrTests/
├── AppStateTests.swift
├── CorrectionTests.swift
├── KeyboardShortcutTests.swift
├── GroqPromptConfigurationTests.swift
├── GroqResponseParsingTests.swift
├── HUDServicePositioningTests.swift
├── SecurityServiceTests.swift
├── HUDViewTests.swift
├── WhitespaceNormalizationTests.swift
├── OnboardingFlowTests.swift
├── GroqOutputValidationTests.swift
├── TextCorrectionServiceTests.swift
├── SentenceChunkingTests.swift
└── TextSelectionFlowTests.swift
make testNote: Requires Xcode (not just Command Line Tools) for XCTest support. The Makefile sets DEVELOPER_DIR automatically.
Build, sign, reset onboarding, and launch:
make deploy- SQLite.swift - Database
- HotKey - Global keyboard shortcuts
- Open System Settings > Privacy & Security > Accessibility
- Find TypoFixr in the list
- Toggle it off and on again
- Restart TypoFixr
- Check if another app is using the same shortcut
- Try changing to a different shortcut in Settings
- Some apps have limited accessibility support
- Try selecting the text before pressing the shortcut
- Check if the text field is read-only
- Verify your API key is correct in Settings > API (should start with
gsk_) - Check your Groq account is active
- Ensure you have internet connectivity
If you see warnings about sensitive data:
- Review the flagged content
- Choose "Send Anyway" if you're sure it's safe
- Or "Cancel" to keep your original text
TypoFixr currently uses Groq-hosted OpenAI GPT-OSS 20B (openai/gpt-oss-20b).
Groq pricing and free-tier limits can change over time, so check your Groq dashboard for the current numbers.
For normal personal usage, Groq's free tier is likely enough, but TypoFixr does not add its own billing layer or markup.
MIT License - see LICENSE file for details.
Contributions are welcome! Please open an issue or pull request.
- Replaced the custom DMG packaging path with a standard
appdmgdrag-and-drop installer flow - Switched to static DMG background assets so the release and local preflight use the same fixed installer layout
- Rebuilt the DMG authoring path so Finder gets both background records instead of dropping the installer art
- Restored the installer background/arrow path without relying on flaky Finder automation
- Hardened DMG packaging so installer metadata no longer collides with stale mounted volumes
- Simplified the installer styling to a calmer, more reliable drag-to-Applications window
- Tightened the onboarding window sizing and spacing so the setup flow stays compact in the shipped app
- Cleaned up the DMG installer layout so Finder labels and icons no longer fight the background artwork
- Fixed the onboarding window layout so setup stays usable on smaller screens and the primary action remains reachable
- Fixed Accessibility permission refresh so onboarding, Settings, and the menu bar all detect restored access without polling forever
- Added TelemetryDeck analytics tracking for onboarding, settings, security warnings, and correction outcomes
- Switched to Groq-hosted OpenAI GPT-OSS 20B reasoning model for higher-quality corrections
- Long text is now split into sentences and corrected in parallel — faster and more reliable
- Bullet and numbered lists are corrected item-by-item, preserving list structure
- Boundary quotes and URLs are preserved through the correction pipeline
- Deterministic single-pass corrections with no retries
- Token budget scales automatically with input length
- Scoped Keychain storage with auto-migration of legacy API keys
- Branded app assets plus a more polished onboarding and settings experience
- Improved HUD notification positioning
- Various bug fixes and internal cleanup
- Improved contextual typo disambiguation (e.g., "note" vs "not")
- Deterministic decoding for consistent results on identical input
- Launch at Login via SMAppService
- Offline detection with network monitoring
- Code cleanup and bug fixes
- Security protections (prompt injection, sensitive data warnings)
- HUD notifications for correction status
- Output validation
- Initial release