Flagfox 6.1 will require Firefox 60+ and actually have most of its capability back

Mozilla seems to finally be getting around to implementing WebExtension APIs that they should’ve had working half a year before setting the ecosystem on fire and banning old APIs. Firefox 60 is looking to be closer to what Firefox 57 should’ve been. It’ll even be an ESR. Of important note, two very important APIs have finally been added:

  • Dynamic keyboard shortcuts – The WebExt API only allowed for static keyboard shortcuts to be specified in the addon’s built-in manifest file. Flagfox 6.0 just has a greyed-out hotkey input field in its action customization dialog, complete with the text “No Firefox 57+ support”, because this was so pathetic that I didn’t even want to hide it. All I could have was an unchangeable built-in shortcut for Geotool. I will now be able to re-implement keyboard shortcuts properly. Note that if you had custom keyboard shortcuts previously, Flagfox 6.0 doesn’t show them (because they can’t work), but they’re still saved and I should be able to revive them in Flagfox 6.1.
  • An actual DNS API – The WebExt API only provided IP addresses for uncached web requests on domains not accessed recently, and they’re only available if an addon is actively listening for them. Someone filed a bug report about web requests having blank IPs for previously seen domains around 7 months ago, but it has been largely ignored (and this change doesn’t fix that). This resulted in an inordinate number of problems and I had to write my own caching system to handle this. It’s not ideal, and I still haven’t finished improving it to handle all use-cases, as it’s a freakin’ headache. Caching things isn’t that hard; properly clearing those cached things when no longer needed, thus not creating an endless memory leak, is another matter. This was a pain to debug and the inability to get cached IPs from Firefox meant first-startup couldn’t show flags yet. Now that they finally added an API similar to what all older versions of Flagfox used, I can actually change things to be reliable again, work fully on first install/startup, and not occasionally forget flags when Firefox’s cache doesn’t agree with my cache that something was obsolete. It’s about damn time.

I’ve also seen some stuff indicating other improvements I may be able to use, but I’m not sure exactly what Firefox version they land in. The two above are the very clear big important ones, however.

Unfortunately, Mozilla killed the addon beta channel as part of their apparent quest to make developing addons more cumbersome, so doing an alpha/beta test will be a bit of a pain, this time around. I’ll look into things further and post something here at some point. ETA TBD.


Flagfox 6.0.4 and 5.2.5 updates released

Flagfox 6.0.4 for Firefox 57+ has been released and is available for update and download from AMO. Flagfox 5.2.5 has also been released for Firefox 52 ESR, SeaMonkey, and Firefox forks based on older Gecko versions (or at least anything newer than Firefox 24). You can download it here.

As a welcome bonus, new versions of addons signed and hosted by Mozilla on AMO are finally signed using SHA2-256, rather just SHA1, which is broken, and MD5, which is comically broken. It only took them… 3 years, since I filed the bug requesting this. This obviously requires the newest Firefox version to be used, otherwise SHA1 is still used (the MD5 hashes are included for no actual reason). If you don’t know what any of this means, you don’t have to; it won’t affect you in any way. Mozilla’s addon security systems are just now using something they should’ve upgraded to long ago and actually provides realistic security again. This is just your routine reminder that security is still usually legally considered to be an optional endeavour, and everything is on fire by default.

Flagfox 6.0.4 changelog:

  • IPv4 & IPv6 address location database updates for March 2018
  • Fixed actions import via drag/drop text into options
  • Added ability to import from text file via drag/drop into options
  • Files are finally now signed by AMO using a non-broken hash (SHA2-256)

Flagfox 5.2.5 changelog:

  • IPv4 & IPv6 address location database updates for March 2018

(Flagfox 5.2.5 was not affected by the text drag/drop bug. All new features are exclusive to newer versions.)

The AMO beta channel has been removed

For anyone who (actually) reads what I post here, just a quick note: Mozilla removed the beta channel from Mozilla Add-ons. (The actual timing was delayed from the date of their post. I’m not sure exactly when the change actually went live.) This means that for all addons which used this feature, they no longer have a simple method to have users test addon pre-releases via AMO. Flagfox 6.0 was my most recent use of this system, and it was invaluable. All users who had installed any beta channel version should automatically be updated to the latest stable channel version. Just to be clear, this applies to every addon Mozilla hosts on AMO, not just Flagfox.

I may do another Flagfox alpha/beta in the future, as I have done multiple times in the past, but it’ll require more time and effort, and will have a little less visibility. If/when I do so, this irregularly used blog is where I’ll announce it.

On an unrelated note: The Flagfox 6.0.x and 5.2.x monthly updates are pending, and as usual will be available at the end of the month. I’ve been considering switching from an end-of-month schedule back to a mid-month schedule, but I’ve simply not actually done so yet. Maybe probably next month.

On Forks

A few people asked me what my opinion is of the various Firefox forks that are becoming more popular after Mozilla screwed up. Rather than write my own explanation, I just found someone else’s blog post from last week that says pretty much the same thing, so I’m just going to point to that instead. I don’t normally read How-To Geek, but this explanation from Chris Hoffman is quite good. TL;DR: Firefox 52 ESR is the better recommendation.

Note that Flagfox does generally run in forks and I am occasionally releasing 5.2.x updates, regardless of if I recommend people use forks or not.

Flagfox 6.0.2 and 5.2.4 updates released

Flagfox 6.0.2 for Firefox 57+ has been released and is available for update and download from AMO. (Firefox 56 has partial support and this update may be downloaded and installed manually) Flagfox 5.2.4 has also been released for Firefox 52 ESR, SeaMonkey, and Firefox forks based on older Gecko versions (or at least anything newer than Firefox 24). Mozilla has banned legacy XUL/XPCOM addons on AMO, thus you’ll need to install it manually after downloading it here. The installer is not signed, thus you will need to set xpinstall.signatures.required=false in about:config (Firefox 52 ESR required; will not work in 56). Note that dual branch updates like this will not be provided indefinitely. I will re-evaluate whether to continue after the Firefox 52 ESR EOL.

Flagfox 6.0.2 changelog:

  • IPv4 & IPv6 address location database updates for February 2018
  • Added ability to handle raw IPs when webRequest API provides no IP
  • Minor optimizations
  • Minor JS updates to use some newer syntax, where applicable
  • Tweaked startup to ensure there’s always at least one menu item enabled
  • Reverted crossed-out HTTPS tag to “INSECURE HTTP” due to issues on some platforms

Flagfox 5.2.4 changelog:

  • IPv4 & IPv6 address location database updates for February 2018

I had originally intended to backport a specific bugfix for drag/drop functionality in the options dialog from 6.0.x to handle a changed API, but I was pleasantly surprised to find that Mozilla had actually fixed the compatibility breakage on their end in the interim, at least for the time being. (Unfortunately, I discovered this only after I went to write and test it, thus wasting some time…) Please only use the latest Firefox ESR release.

Note that Firefox forks that are not based on Firefox 52 ESR or Firefox 57+ are not considered fully supported, though they should probably work fine, for now. (meaning I will not be fixing fork-specific bugs in 5.2.x) It is highly recommended you stop using anything based on such old code as soon as possible. Forks that do not eventually implement proper WebExtension support will not be supported indefinitely. Official SeaMonkey support may be re-added in the future once they have full WebExtension support (aka aren’t based on Firefox 52 ESR anymore). Continuing to support legacy addons in addition to WebExtensions is one thing, but asking developers to continue supporting two completely different APIs forever is extremely unrealistic.

Edit: Flagfox 5.2.x ESR downloads & hashes moved to a new dedicated page. Link updated.

Flagfox 6.0.1 update released

Flagfox 6.0.1 has been uploaded to AMO for download and update. It is identical to 6.0.1rc which was pushed to the Flagfox beta channel a couple days ago (save for the requisite version number change).

Flagfox 6.0.1 changelog:

  • IPv4 & IPv6 address location database updates for January 2018
  • Fixed some caching issues causing IPs to be forgotten in a few cases
  • Fixed RTL issues in tooltip and implemented proper support in options
  • Fixed bugs related to hotclick configuration in the options page
  • Worked-around WebExtension API bug that causes some addon options pages to break in private browsing windows
  • Various JS and CSS cleanups

Many thanks to the people who reported some of the bugs fixed in this release.

If anyone gets the globe icon when a flag is possible, and a refresh fixes it, then please report that here. I’m still working on making my cache not suck. Caching things is easy; caching things without caching everything forever and also not uncaching things too early, is another matter. I really wish there was just an API to fetch IPs from Firefox’s cache, but there isn’t, so I’ve got to listen to the initial requests for stuff to get it, and subsequent requests that hit the cache leave their IP property blank.

I’m considering adding some kind of cache for non-private-browsing windows’ locations to be saved between Firefox sessions and Flagfox updates, as it’s impossible to get locations in those scenarios unless a refresh is triggered (which is at least the case for many session restores).