Hereās a summary of your projectās progression, focusing on each major version of the āForce Desktop Modeā Firefox extension, including the rationale behind changes and key troubleshooting steps:
Version 1.0
Goal: Initial release to force desktop mode on all websites by spoofing user-agent and disabling touch capability.
Key Features:
Simple JavaScript injector
navigator.userAgent spoofing
Attempted to remove mobile indicators
Issues:
Not effective on many websites
Firefox review required before installation
No permanent effectāstill required manual desktop mode toggle
Manifest v2 used (allowed in Firefox, deprecated elsewhere)
Why It Changed:
Did not override all mobile detection mechanisms
Needed deeper spoofing and broader script injection
Version 2.0 / 2.1
Goal: Improve spoofing by using injected scripts and explicitly disabling mobile features.
Changes Made:
Added content_scripts for automatic injection
Disabled navigator.maxTouchPoints
Spoofed window.navigator.platform and userAgent
Removed mobile indicators like ontouchstart
Improved detection blocking for device fingerprinting scripts
Fixes Attempted:
Confirmed via test websites (WhatIsMyBrowser, etc.)
Verified screen resolution, JS detection, and UA string
Problems Identified:
Still detected as mobile on some sites
TouchEvent not removed on all pages
Android Firefox limitations around scripting API
Why It Changed:
Fix inconsistencies in user-agent detection
Provide more complete spoofing
Improve reliability on Android Firefox
Version 3.0
Goal: Migrate to Manifest V3, align with new Firefox requirements, and improve maintainability.
Changes Made:
Migrated from background_page to background.service_worker (eventually rolled back)
Switched from deprecated applications to browser_specific_settings
Defined explicit Firefox UUID for gecko.id
Used scripting.executeScript API
Problems Encountered:
Firefox does not support service_worker in background (unlike Chrome)
Validation error: /background/service_worker not supported
Required matching of gecko.id with UUID from AMO
API compatibility issues on Firefox 91 (especially on Android)
Warnings about scripting.executeScript not supported
Why It Changed:
To comply with Firefoxās manifest validation
Improve standards compliance
Clean, structured separation of injected code
Version 3.1
Goal: Fix manifest and background script compatibility issues introduced in 3.0.
Changes Made:
Reverted to background.scripts instead of service_worker
Ensured gecko.id matches actual AMO UUID
Maintained Manifest V3 but avoided unsupported APIs
Reorganized script logic for better injection and spoofing
Clarified there was no use of bundlers, minifiers, or generators
Results:
Passed validation
Uploaded and installed successfully
Improved spoofing consistency across more websites
Still hit some limitations due to Firefox Android support
Planned Version 3.2 (Postponed)
Intended Features:
Replace scripting.executeScript with content_scripts if Firefox Android continues to block it
Optional UI toggle for enabling/disabling spoofing
Possibly adapt for broader multi-platform spoofing consistency
Continued cleanup and modularity
Overall Summary:
Version Summary
1.0 Initial attempt with basic spoofing. Ineffective on many sites.
2.0/2.1 Introduced broader spoofing (UA, touch points, platform). Improved but not foolproof.
3.0 Migrated to Manifest V3. Broke due to Firefoxās lack of service_worker support.
3.1 Fixed manifest and background compatibility. Fully working version using allowed APIs.
3.2 (Upcoming) Will address Firefox Android API gaps and possibly improve flexibility.
Let me know when youāre ready to proceed with 3.2, or if youād like help debugging real-world site behavior based on whatās working or failing now.