Disable Tabby in terminal applications#127
Merged
Merged
Conversation
Terminal emulators have their own completion, history, and shell integrations that conflict with ghost-text autocomplete. Tabby now automatically stays out of the way when a terminal is focused. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
IINA is a video player, not a terminal — the bundle ID was a hallucinated entry. Also adds the missing test_isTerminal_rio assertion so every entry in the blocklist has test coverage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This was referenced May 21, 2026
Closed
fe7e3cb to
e0b57d6
Compare
| "com.apple.Terminal", | ||
| "com.googlecode.iterm2", | ||
| "net.kovidgoyal.kitty", | ||
| "io.alacritty", |
Contributor
There was a problem hiding this comment.
Alacritty's actual
CFBundleIdentifier is org.alacritty, not io.alacritty. The official Info.plist in the Alacritty repository (confirmed from crash reports and source) shows <string>org.alacritty</string>. With io.alacritty registered here, the detector will never match a real Alacritty install, so Tabby's suggestions will continue to appear inside Alacritty.
Suggested change
| "io.alacritty", | |
| "org.alacritty", |
Comment on lines
+20
to
+22
| func test_isTerminal_alacritty() { | ||
| XCTAssertTrue(TerminalAppDetector.isTerminal(bundleIdentifier: "io.alacritty")) | ||
| } |
Contributor
There was a problem hiding this comment.
The test uses the same incorrect
io.alacritty identifier as the detector, so it always passes — but it proves nothing about real Alacritty installs. Update to org.alacritty to match the fix to TerminalAppDetector.
Suggested change
| func test_isTerminal_alacritty() { | |
| XCTAssertTrue(TerminalAppDetector.isTerminal(bundleIdentifier: "io.alacritty")) | |
| } | |
| func test_isTerminal_alacritty() { | |
| XCTAssertTrue(TerminalAppDetector.isTerminal(bundleIdentifier: "org.alacritty")) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
TerminalAppDetectorCloses #126
Test plan
xcodebuild build)xcodebuild build-for-testing)🤖 Generated with Claude Code
Greptile Summary
This PR adds automatic terminal-app detection to block Tabby suggestions when a terminal emulator is focused, and hides the per-app "Enable in …" toggle for those apps. The implementation is clean and well-tested, following the existing
SuggestionAvailabilityEvaluatorgating pattern.TerminalAppDetectorholds a hard-codedSetof 9 terminal bundle identifiers and is called in both the evaluator and the menu bar view, keeping the two gating layers in sync.io.alacrittybut Alacritty's officialInfo.plistregistersorg.alacritty; the detector will never fire for Alacritty, and the corresponding test asserts the same wrong ID so it gives a false green.Confidence Score: 4/5
Safe to merge after fixing the Alacritty bundle ID; all other terminals and the evaluator/menu-bar logic are correct.
The Alacritty bundle identifier
io.alacrittydoes not match Alacritty's actual registered ID (org.alacritty), so the terminal block silently does nothing for Alacritty users. The companion test uses the same wrong value and passes, masking the gap. Everything else — other bundle IDs, evaluator ordering, menu bar gating, and the broader test suite — looks correct.tabby/Support/TerminalAppDetector.swift (wrong Alacritty bundle ID) and tabbyTests/TerminalAppDetectorTests.swift (test mirrors the same incorrect value).
Important Files Changed
io.alacrittyinstead oforg.alacritty), so Alacritty is never blocked.Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[App Focused] --> B{Globally Enabled?} B -- No --> C[Return: Tabby is turned off.] B -- Yes --> D{App in disabledAppBundleIdentifiers?} D -- Yes --> E[Return: Tabby is disabled in app.] D -- No --> F{TerminalAppDetector.isTerminal?} F -- Yes --> G[Return: Tabby is not available in terminal apps.] F -- No --> H{Input Monitoring granted?} H -- No --> I[Return: Permission required.] H -- Yes --> J{Screen Recording granted?} J -- No --> K[Return: Permission required.] J -- Yes --> L{focusSnapshot.capability?} L -- .supported --> M[Return nil — suggestions enabled] L -- .blocked / .unsupported --> N[Return reason string] subgraph MenuBarView O[latestExternalApplication set?] --> P{isTerminal?} P -- Yes --> Q[Hide per-app toggle] P -- No --> R[Show Enable in App toggle] endReviews (3): Last reviewed commit: "Remove bogus IINA bundle ID, add missing..." | Re-trigger Greptile