Flagfox 6.0.5 and 5.2.6 updates released

Flagfox 6.0.5 for Firefox 57+ has been released and is available for update and download from AMO. Flagfox 5.2.6 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.

Flagfox 6.0.5 changelog:

  • IPv4 & IPv6 address location database updates for April 2018
  • Updated IPDB build system to handle new Maxmind file format
  • Updated country names list for Swaziland->eSwatini name change

Flagfox 5.2.6 changelog:

  • IPv4 & IPv6 address location database updates for April 2018

(Same IPDB files as 6.0.x from same the build system, now updated. All other updates are exclusive to newer versions.)

Future release schedule:
My extended support for Flagfox 5.2.x is scheduled to end once the current Firefox 52 ESR reaches its official end-of-life (EOL), which is currently scheduled to be in August 2018. If Mozilla’s schedule changes, I will most likely do so as well, but I don’t expect them to extend it. I plan to release Flagfox 6.1 sometime next month, at which time support for Flagfox 6.0.x will end. Flagfox 6.1 will use new APIs added to Firefox 60+, and as such will drop support for Firefox 56-59. This will create the unusual situation where the current version of Flagfox requires the absolute most recent version of Firefox, again. Fortunately, this time Firefox 60 is an ESR; no users should have any legitimate reason to continue running the dropped versions of Firefox. Of course, this plan is subject to change, as it all too frequently does.


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.)

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).

Flagfox 6.0 released with Firefox 57+ support

Flagfox 6.0.0 has been uploaded to Mozilla Add-ons for release!

Everyone with Flagfox installed in Firefox 57+ will automatically get the new version on the next automatic addon update check by Firefox. Firefox 56 is technically supported, but with a few issues that cannot be fixed without updating Firefox, so automatic updates should be set to not go out to anyone who refused to upgrade Firefox. (Flagfox 6.0.0 can be manually installed in Firefox 56 by downloading it and using “Install add-on from file” in the little gear icon menu in the Firefox Addon Manager.) Unfortunately, this means Firefox 52 ESR is no longer supported. I would very much rather not drop support for the most recent Extended Support Release, but Mozilla has banned all addons that use so-called “legacy” APIs and mandated addon rewrites using the new WebExtension API based on Google Chrome’s addon system. It’s… not great, but we have no say in the matter. :/

There are a few noticeable feature changes to this new version that are the direct result of WebExtension API limitations, most notably a smaller icon. Read the full list below.

I’ve started updating the Flagfox FAQ with information about this latest release, including detailed explanations for WebExtension permissions. Updates to the listing on Mozilla Add-ons will take a bit, as doing so is a PITA.

Flagfox 6.0.0 changelog:

  • IPv4 & IPv6 address location database updates for December 2017
  • First pure WebExtension API version of Flagfox; Firefox 57+ support added (min is v56; v57+ highly recommended)
  • Ported Flagfox options from XUL window to HTML tab (along with all other dialogs), per WebExt requirement
  • Improved IPDB to now run in its own dedicated JS Worker thread
  • Started using ES6 promises everywhere (some new uses because it’s better; many compelled by WebExt API)
  • Faster flag icon updates using new WebExt API (pages loaded/cached prior to install/update must be refreshed)
  • Added simple indicator icons+tags for HSTS, HTTP/2, and insecure HTTP to flag icon tooltips
  • Changed TLD nationality to always show in tooltips for nation-restricted non-ccTLDs (IDN TLDs require Firefox 57+)
  • Added Flagfox actions context menus for elements within a page and background tabs (IP-related stuff NYI)
  • Improved keyboard support in the options page
  • Added domain names of actions (that have a URL) to their tooltips in the options page
  • Added options page support for paste to import and cut/copy to clone, via main menu or hotkey (e.g. ctrl+v/c/x)
  • Changed options page to autosave actions JSON to storage rather than wait for tab close
  • Fixed some bugs with actions import/drag/drop in options under recent versions of Firefox
  • Added Linux support for opening actions in a background window (mostly useless, but nonetheless true)
  • Implemented custom locale properties file parsing/loading, because screw WebExtension’s bloated I18N
  • Implemented universal automatic English fallback for locales (Flagfox 5 had some; Flagfox 6 has it for everything)
  • Now stripping redundant manual English fallback strings on build, to save a bit of space for install/load
  • Added automatic locale file unload after disuse to reduce memory use when no longer needed
  • Significantly improved location/host/ip caching (which is now required, due to WebExt APIs)
  • Implemented (partial) replacements for various features Mozilla abandoned with the WebExt transition (e.g. eTLD)
  • Removed old grey question mark icon; replaced its last remaining use with the already-used globe icon
  • Disabled actions that need a content script on protocols and Mozilla domains blocked by the WebExt API
  • Added ability to handle default action favicons on non-standard paths; all should show, now (improvement over 5.x)
  • Geotool action hotkey changed from Ctrl+Alt+G to Alt+Shift+G due to the very limited WebExtension hotkey API
  • New default action hotclicks: “Check Server Status” on double-click and “Google Cache” on triple-click
  • Various default action changes:
    • Improved Page Metadata JS action to list everything it can find (with improved formatting)
    • Netcraft & IntoDNS switched to HTTPS (only URL Parser & Traceroute remain without HTTPS support)
    • Dropped Wave A11Y due to various issues, including over-active use throttling
    • Dropped obsolete Validate.nu action, as it became a redirect to the main W3C Validator
    • Demoted WOT from default menu to options-available, due to excessive popup ads (amongst other issues)
    • Added: Is It Up? (alternative status checker), Built With, Mozilla Security Observatory, & Video Converter
  • Dropped support for all Firefox/Gecko versions 24-55, which includes all versions of SeaMonkey up to current
    (SeaMonkey support may be readded when they have a version that supports WebExtensions sufficiently)
    (Unfortunately, Firefox 52 ESR support is also not possible, due to unavailable WebExtension API updates)
    -> This Flagfox version supports Firefox 56+ (desktop), however some features require Firefox 57+ to work fully
    -> Due to bugs in Mozilla’s WebExtension API, this support floor will increase further in future 6.x releases

Known issues that cannot be fixed due to buggy/badly designed and now mandatory-to-use WebExtension APIs:

  • Icon is smaller and squarified, per WebExt API’s apparent requirements (API not documented properly)
  • Icon menu has default toolbar menu items in it, even if N/A; no way to disable; nightly has some fixes
  • Icon menu limited to 6 top-level items, per arbitrary WebExt API limitation; others in auto-submenu
  • Icon menu item favicons (if enabled) have no default; WebExt API has no way to set a default/onerror
  • All menu generation is done more often than prior versions due to primitive WebExt API (no on-showing event)
  • Icon tooltip doesn’t have columns or text styling, as the WebExt API here is primitive (plain text only)
  • Icon middle-click settings no longer work, due to limited WebExt API (existing settings left alone, but hidden)
  • Hotkey customization is no longer available, due to very limited WebExt API (no user-set hotkey support, at all)
  • The WebExt notifications API outputs to the OS notifications system, which may get truncated text
  • There is no way to select “Don’t show this again” for notifications (custom buttons not supported in Firefox)
  • Firefox wipes WebExtension data on uninstall, without user notification or prompting (affects *ALL* addons!)

Known issues that will be addressed in future Flagfox updates:

  • The new page element action menus do not yet support actions that use IP addresses (implementation TBD)
  • All page notifications for TLD/IP country mismatches have been disabled until I can make notifications better
  • Options edit action autocomplete and detailed help popup are disabled (cut for time; reimplementation TBD)
  • Options page is kinda ugly, due to having to port XUL to HTML and CSS being a horrible monstrosity
  • Some RTL locale display issues (nothing drastic, and probably nothing you haven’t seen in other software)

My initial estimate, months ago, would be that updating Flagfox for the now-mandatory WebExtension API required by Firefox 57+ was that it would take an annoying few dozen hours. Once I started working on it heavily, I realized that there were way more problems with the API than advertised, and it is fundamentally different and slower to work with than all prior “legacy” APIs Mozilla has now banned. That dozens of hours estimate quickly became hundreds of hours… and I eventually realized that was still underestimating things, and that’s not even counting the fact that I unfortunately got rather sick and unable to work on this significantly for a good two weeks.

Flagfox is a one-person hobby-project, and dear lord, this transition damn-near killed me, and it’s still
only ready a month and a half after Firefox 57 was released. In any case, it’s ready now… now, I can get some sleep.

Polite comments/feedback welcome. If you think you’ve found a bug, please report it in the comments here, or on the Flagfox support forum, or via email, or Twitter, or whatever. This blog is set to hold comments for approval for all new posters, after which point you can post without delay, forever (so long as you don’t hit the spam filter, of course). Also, if you see something that needs updating/fixing on this blog or in the FAQ, please report that too.

If you’ve previously posted a review to the Flagfox addon page inquiring about Firefox 57+ support, you can simply post a new review to replace the old one. (the system shows one per person, though you can click a review to browse all old ones, too) Note that as per Mozilla’s policies, bug reports / support requests are deleted by moderators and users generally are pointed to provided support channels, instead, e.g. here. Also note that Mozilla broken the AMO email notifications system in their most recent update, so if you post a bug report / support request, and it gets deleted before I check that email and go to the site, your post will be lost forever, like tears in rain.

This Flagfox major update was beta tested by a few hundred kind users. If you’d like to get early updates and test new versions prior to main release, you can install the most recent version here (6.0.0rc is functionally identical to 6.0.0; Mozilla’s beta channel requires different version numbers for development versions). With Flagfox beta tests, I generally delete the beta branch eventually, when it’s not needed anymore, at which point all users on it will auto-update to the normal release and begin receiving normal updates. Mozilla does not provide a less kludgy way of keeping beta-users up-to-date without manually packaging/releasing more beta channel files. I’ve grown used to Mozilla implementation dubiousness, but it still annoys me every time, especially when it stays that way for many years…

Flagfox 5.1 released

Flagfox 5.1 is now released and available for download and update. Major changes include a switch to HTTPS for the main default actions (most others were already HTTPS), a greatly reduced installer/update size, and support for Firefox Reader Mode.

Mozilla is now signing all addons hosted on their site, but the code signer unfortunately has horrible ZIP compression for its XPI repacker, so it bloated up the prior versions’ file sizes by around 20%. The optimizations in this update compensate for that, though Mozilla has said that they would like to fix their general issue eventually as well.

Full changelog for this update:

  • IPv4 & IPv6 address location database updates for June 2015
  • IPDB files now encoded in a new compressed format, saving space & some memory
  • Locale files now JARed for better compression & simpler code sign verification
  • Updated Geotool and Whois actions to HTTPS (default flag click & middle-click)
  • Added support for Firefox 38+ Reader Mode
  • Minor flag icon set updates
  • Switched to newer “drop” event naming to maintain compatibility
  • Dropped support for Gecko 17-23 based browsers
    -> This Flagfox version supports Firefox 24+ and SeaMonkey 2.21+
    -> Recommended minimum version is Firefox 38+

Flagfox now requires a minimum of Firefox 24, however Firefox 38 or later is highly recommended. (download current Firefox here or ESR here) Current development versions are also supported.