Thanks for your interest in contributing!
- Fork the repository and clone it
- Open
TypeWhisper.xcodeprojin Xcode 16+ - SPM dependencies resolve automatically on first build
- Build and run (Cmd+R) - the app appears as a menu bar icon
The project builds without any signing setup using ad-hoc signing.
To use your own signing identity:
echo 'DEVELOPMENT_TEAM = YOUR_TEAM_ID' > CodeSigning.local.xcconfig
- Product runtime support: macOS 14.0+
- Contributor machine: macOS 15.0+ recommended for the current Xcode toolchain
- Swift 6 with strict concurrency
- Debug builds use a separate data directory (
TypeWhisper-Dev) and keychain prefix, so they don't interfere with release builds
- Create a feature branch from
main - Keep changes focused - one feature or fix per PR
- Test your changes manually and run the automated checks
- Fill out the PR template (Summary + Test Plan)
- PRs are squash-merged into
main
Recommended checks:
xcodebuild test -project TypeWhisper.xcodeproj -scheme TypeWhisper -destination 'platform=macOS,arch=arm64' -parallel-testing-enabled NO CODE_SIGN_IDENTITY='-' CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
swift test --package-path TypeWhisperPluginSDK- Follow existing patterns in the codebase
- MVVM architecture with
ServiceContainerfor dependency injection - Localization: use
String(localized:)for all user-facing strings - SwiftData for persistence, Combine for reactive updates
Use the issue templates for bug reports and feature requests.
By contributing, you agree that your contributions will be licensed under GPLv3.