Problem
The app is falsely identifying normal apps as web browsers, causing unwanted uninstall attempts or user confusion. This is a browser detection false positive issue — the app incorrectly decides that a non-browser app is a browser.
How detection currently works (BrowserDetector.kt, lines 17-68)
- New app installed →
AppInstallReceiver triggers detection
- System app check (lines 26-31): System apps (except Chrome when enabled) are skipped
- Local cache check (lines 39-46): Checks
geminiConfirmedBrowsers / geminiConfirmedNonBrowsers and KNOWN_BROWSERS
- Gemini classification (lines 49-63): If Gemini is enabled and quota available, calls
isBrowser()
- Fallback (lines 64-67): Falls to
checkLocalList() using BrowserDatabase.KNOWN_BROWSERS (52 packages)
Possible root causes
BrowserDatabase.kt overreach: The known browser list (52 packages) may include apps that are not dedicated browsers but have web-viewing capabilities (e.g., video downloaders, proxy apps)
- Gemini prompt too aggressive: The system instruction in
GeminiClient.kt (lines 113-134) asks Gemini to flag apps that are "video downloader[s]... that explicitly feature an unrestricted built-in browser with address bar" — this may be catching non-browser apps
- Gemini hallucination: The model returning YES for apps that clearly aren't browsers
- No human-in-the-loop for auto-remove mode: In auto-remove mode (no overlay), false positives result in immediate silent uninstall
Impact
- Users lose apps they actually need
- Trust in the app is damaged
- Support burden increases
Investigation areas
- Audit
BrowserDatabase.KNOWN_BROWSERS — are all 52 entries legitimately dedicated browsers?
- Review Gemini prompt — is it too loose, especially the "video downloader" clause?
- Add a feedback mechanism to mark detections as incorrect
- Consider requiring overlay mode (confirmation dialog) for any Gemini-classified app (vs. known browsers which could still auto-remove)
Problem
The app is falsely identifying normal apps as web browsers, causing unwanted uninstall attempts or user confusion. This is a browser detection false positive issue — the app incorrectly decides that a non-browser app is a browser.
How detection currently works (
BrowserDetector.kt, lines 17-68)AppInstallReceivertriggers detectiongeminiConfirmedBrowsers/geminiConfirmedNonBrowsersandKNOWN_BROWSERSisBrowser()checkLocalList()usingBrowserDatabase.KNOWN_BROWSERS(52 packages)Possible root causes
BrowserDatabase.ktoverreach: The known browser list (52 packages) may include apps that are not dedicated browsers but have web-viewing capabilities (e.g., video downloaders, proxy apps)GeminiClient.kt(lines 113-134) asks Gemini to flag apps that are "video downloader[s]... that explicitly feature an unrestricted built-in browser with address bar" — this may be catching non-browser appsImpact
Investigation areas
BrowserDatabase.KNOWN_BROWSERS— are all 52 entries legitimately dedicated browsers?