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.0.4 update released

I have posted Flagfox 5.0.4 to Mozilla Add-ons. After a Mozilla editor signs off, the update will be available to all users, however you can download it before then via the all versions page.

Changelog for this month’s update:

  • IPv4 & IPv6 address location database updates for June 2014
  • Flag icon updates
  • Added support for form field actions under e10s
  • Updated TLD mismatch warning country code whitelist
  • Updated Validate.nu action to use new URL (old is down)
  • Minor startup improvements

Continue reading

Flag selection & update policy

With the new flag set in Flagfox 5.0, many countries/territories got updates for their flags that were long overdue. Previously, there were quite a few small regions using the flag of a colonial power because neither old icon set had a flag for them. This new set is based on the flags Wikipedia uses, so it is now as complete as can be. This also makes my response to change requests a lot simpler.

My policy has always been that I will not wade into political disputes. The flag I will show for your country/territory is the one Wikipedia uses.

I am not qualified to pick a side in the dispute over what flag should be shown for an island on the opposite side of the planet that I’ve never heard of. I thus defer to more informed experts on the matter. Win over the curators of the Wikipedia article and I will go along with what they use. If they have everything properly set up I may even be able to include updates automatically.

Note that specifically I’m referring to the main English article, not any localized versions. Also note that I will not “localize” a flag to appease different locales’ view of the world, nor will I override their decision because you don’t accept a flag as “official” but they do. Additionally, just to state what should be obvious, each country/territory gets one flag, no matter how many flags are declared/accepted for it.

No matter how passionate you are that the flag you want is the “correct” one, there are also going to be other people who want another one instead. Please understand that we do not all live in the same world. Your dispute is as alien to me as a political issue local to me is to you. I’m not going to change flags just because someone sent me an angry email written in a language I don’t read, because the response to doing so will probably be an equally angry email written in a different language I don’t read. I’m not going to pick sides in issues I’ve never even heard of.

Issues with Flagfox 5.0 under certain themes

Apparently the default Mac OS X Firefox theme is squishing the icons a little bit. The different OSes have varying theme characteristics in the current version of Firefox. This is a pain in the ass for development, especially because I don’t own a Mac. I had about 200 beta testers for a month or so, but nobody noticed the subtle issue. I’m looking into a way to fix it at the moment.

Some people also do not like the light flag border when using a dark theme. I tested this before the release and thought it looked OK, but I don’t use dark themes personally. The 5.0.1 update has an updated border that will use a dark border under dark themes, so it will be less noticeable.

Also previously noted is that if you use a lightweight theme (wallpaper/skin/Persona) under Linux (or possibly some other OSes, but not Windows) then Firefox applies an unfocused effect to your interface. If you click the address bar and the flag icon gets lighter, it’s because of your theme. Under Windows this only affects the background and not the icon. There is no way to override this effect for just Flagfox; it affects everything, including search plugin icons. I was well aware of this effect before the release, as I am on Linux myself, however I don’t personally have an issue with it. If you do, you can disable it with the following userChrome.css:

.searchbar-textbox:-moz-lwtheme:not([focused="true"]) {
    opacity: 1 !important;

A fix for the border issue has been released in Flagfox 5.0.1.

Flagfox 5.0 update Q & A

I’ve been getting quite a few emails and bits of feedback from various sources, so I thought I may as well put up a post centralizing some common questions and answers.

Can I make the flags smaller?

Yes, however some of the more detailed flags don’t look quite right when you do. See here for more info. It’s just a pref to set via about:config.

Why didn’t you add the size setting to the options?

I didn’t want to include an in-GUI option that didn’t work perfectly. Detailed flags just don’t look right at smaller sizes. Those who reply back to me after I point them to how to change the size often respond “oh, yeah, I see that now”. Having it just in about:config lets me easily leave it as a raw number you can play with, as well.

Will you add back the old flag icons?

No. The old sets are not maintained anymore and full of out-of-date flags. Even attempting to properly figure out how many need fixing would take forever and I don’t have the capability to make replacements that match the styles. They were also bad for various other reasons, hard to make out for many people, and the alternate set was actually upscaled to fit into the still tiny space. It’s quite frankly strange that there are a few people who rudely demand that I revert something I worked on for months because they’re used to the old style. (I still get one guy creating throwaway accounts on Mozilla Add-ons to abuse the review system to repeatedly rant about the lack of status bar support many years after the fact; don’t get me started on the angry email about not supporting a version of Firefox that runs on Windows 98 anymore…) Yeah, it’s a UI change, and there’s a bit of subjectivity, but just because you don’t like it as much as everyone else doesn’t mean you should be an asshole about it.

Why didn’t you add the ability to pick between 3 different sets?

That would be a complicated mess and bloat the installer and update sizes. Again, there’s lots of holes in the old sets that I would have to attempt to (poorly) maintain.

Can’t you just add an option to the options dialog for me?

No. Even if I want to add an option, it needs to be translated into around 40 languages. Flagfox has around a million users and most of them don’t use it in English. The translators are all volunteers and getting any localization updates takes a month or two. Yep, there are downsizes to localization. (though, the positives outweigh the negatives)

How can you say the old sets were out of date? They even had the new Libyan flag.

Yeah, because I added it. There hasn’t been an update to either set in about 6 years, and the primary one was more out of date than the alternate one. I have personally been making an attempt to hack in updates over the years. They didn’t match at all. The size of the old sets was too small to work with without heavy stylization, and I’m no image editor pro. I was forced to limit which flags I could update to avoid making them a complete and total mess. Minor updates had to be ignored. Each individual update was a pain in the ass to do, taking a lot of time, and done always late as I didn’t exactly have a way to know when any of the 250 flags needed changing. It was an unmaintainable mess and the primary reason I decided I had to work towards a better solution. This new set is maintainable. I can actually detect and release updated versions rapidly. If you haven’t noticed, there have been a few more changes in the world as of late, and this is what I need to do to keep up.

There is no Flagfox development team. It’s just me; one guy sitting on a couch with an old laptop. It’s not a full-time job unless you decide to donate quite a lot to keep things going. There is one person working on Geotool. It seems there are quite a few people who can’t grasp that software is written by living people, not always a giant corporation or other organization. This is a free service and this new flag set is the only practical way forward that makes giant improvements in accuracy, usability, and appearance.

Can I have a monochrome mode?

Not trying to be rude, but this question made me laugh. I don’t even want to attempt to count how many countries have tri-color flags. If I made a way for the flags to be monochrome to match other buttons in your theme, you wouldn’t be able to tell many of them apart. People had enough trouble trying to tell apart Ireland and Italy in the old sets. No, monochrome will not work here. 😉

Why are the flags different sizes?

Flags are actually different sizes. Different flags have different aspect ratios. You may be used to flag image stylizations where they’re all squished and changed to be the same size. That is not real life. The 250+ nations of the world have not all gotten together to standardize their flag aspect ratios.

Why don’t the flag colors match?

Flags are actually different colors. The red of Canada’s flag is not the same red as America’s flag. Again, no, the world has not color coordinated their flags. I decided that if I was going to make a new flag set I would do it correctly and respect the actual color choices of each country. Plus, it’s much easier this way.

I don’t like flags at all. Can I have a text only mode?

I’ve been considering this a while as an accessibility feature. It was requested specifically recently by a user, so yes, I’m going to look into implementing this feature at some point.

Why did I put the first-run page on my blog?

If I were to put all 10 translations and all the needed styling to get it working inside the installer it would really bloat up the download size for the update for everyone. Putting it up here also lets me put in updates to links if need be.

Why only PayPal?

Mozilla Add-ons only allows PayPal. Yes, this sucks. I have also provided a second route to donate via Amazon which a few people have opted to use. At request I also put up a Bitcoin address, though as of yet nobody has used it. I would have preferred to also have up a Litecoin address, but could not do so due to technical issues with the client. If anyone has an issue with PayPal, please read this. You can email me to get the email address you need to use to send a donation with PayPal directly if Mozilla’s system does not work for you.

Why haven’t you responded to my email/review/post/comment?

I’ve responded to most people as quickly as I can. I’m ignoring the ones cursing at me. I’m noticing that some of the less coherent ones are getting caught in the spam filter, and I’m inclined to not dig through hundreds of spam emails to find them all.

How has the feedback been thus far, in general?

Overwhelmingly positive. Counting all routes, including contributions, I’ve gotten hundreds of thanks and a couple dozen or so complaints.

Note that the contribution system allows for posting a message, however near as I can tell, there’s no way for me to actually view that. Mozilla doesn’t seem to forward that correctly or put it up anywhere else I can find. Sorry, I have no control over that.

Customizing the Flagfox icon style

Previously, in Flagfox 4.2, we had two different flag icon sets. Neither was perfect; both had different issues. The primary one was stylized with a gloss effect. The secondary one was stylized to be brighter. Both were too small, and the secondary one was actually upscaled. Aspect ratios were a mess and the colors were not always just stylized; sometimes they were just wrong. Both had plenty of missing and out-dated flags, and neither flag set is maintained by their creators anymore.

With Flagfox 5.0, I set out to fix this by creating a new flag icon set based on the public domain works from Wikimedia Commons. Both old sets have been retired. The new set now has flags using the correct aspect ratios and exact colors that the flags are supposed to have. They’re also a little bigger, so you can now actually tell what they all are. 😉

For users who like extra customization or use special themes and would like to tweak the style, there are a couple of ways you can go about customizing the flag icon style in Flagfox 5+.
Continue reading