Thanks for helping! TabType is an alpha open-source project and contributions of every size are welcome — bug reports especially.
- Report app-specific bugs. "Ghost text is misplaced in X" or "no suggestions in Y" reports are gold. Include the app, macOS version, and (if you can) a screenshot. Screenshots don't dismiss the ghost.
- Per-app extraction recipes. Some apps expose text cleanly, others don't. If an app misbehaves,
AppPolicy.swiftis where per-app behavior lives — small, self-contained additions. - More autocorrect languages (
Sources/TabType/Core/Spelling/, dictionaries inResources/). - UI/UX polish across the settings panes.
- Notarization — if you have an Apple Developer ID and want to help ship notarized builds, please reach out on an issue.
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcodebuild -downloadComponent MetalToolchain # one-time
./Scripts/setup-signing.sh # one-time, stable local identity
./Scripts/build.sh app && open dist/TabType.app
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift testswift build compiles but can't run the app (MLX Metal kernels need xcodebuild). Use Scripts/build.sh app.
| Area | File(s) |
|---|---|
| Keystroke capture + orchestration | Core/Engine.swift, Core/KeystrokeMonitor.swift |
| Context gathering | Core/ContextReader.swift, Core/ScreenContextProvider.swift, Core/TranscriptExtractor.swift |
| Prompt assembly | Core/PromptBuilder.swift, Core/CompletionInstructions.swift |
| Local inference | Core/Predictor.swift, Core/Engines/, Model/ |
| Rendering | Core/SuggestionOverlay.swift, Core/GhostAppearanceProbe.swift |
| Personalization | Core/PhraseMemory.swift, Core/TypingHistoryStore.swift |
| Per-app rules | Core/AppPolicy.swift |
| Settings UI | UI/SettingsView.swift, UI/Panes/ExtraPanes.swift |
The README architecture section shows how they connect.
- Match the surrounding style; keep comments about why, not what.
- Pure logic (trimming, filtering, budgeting, candidate assembly) belongs in testable static helpers — see
Tests/TabTypeTests/. Add a test when you add such logic. - Keep everything on-device. No network calls except model download.
Small, focused PRs with a clear description. Note which apps/macOS versions you tested on. Run swift test before submitting.