Flagfox 6.1.1 and 5.2.9 updates released

Flagfox 6.1.1 for Firefox 60+ has been released and is available for update and download from AMO. Flagfox 5.2.9 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.1.1 changelog:

  • Fixed checking/disabling of unavailable actions in menus in some circumstances
  • Worked-around WebExt menu API bugs when at “about:” URLs
  • Various code cleanups and minor optimizations

(Flagfox 6.1.x already received the monthly IPDB update in 6.1.0; IPDB version is July 2018)

Flagfox 5.2.9 changelog:

  • IPv4 & IPv6 address location database updates for July 2018

Just to reiterate for the last time: Flagfox 6.0.x is now EOL; upgrade to Flagfox 6.1.x.

An update on the topic of Mac keyboard shortcuts: For anyone who didn’t read the discussion in the comments on the Flagfox 6.1.0 release blog post, we seem to have come to the conclusion after testing on a Mac that Flagfox 6.1.0+ is actually handling things correctly for the platform, however there are more mystery hotkey combinations that Firefox thinks are fine and allows setting, but don’t actually ever work. Mozilla has provided no method to detect this problem. I suspect these are keyboard shortcuts for OS functions of some kind, and on Mac, this generally means the Command key, even though it gets used for lots of other stuff too. Alt and Ctrl were reported to be working fine, as well. So, for the moment, there’s nothing left for me to do with this issue. If Mozilla ever gets their act together here they might fix this by properly rejecting not-allowed hotkey combinations instead of setting up for silent fails. If anything changes here, please let me know.

Advertisements

Flagfox 6.1 released

Flagfox 6.1.0 for Firefox 60+ has been released and is available for update and download from AMO. This major update brings back multiple features that were forced to be dropped during the WebExtension transition due to lack of API development by Mozilla. A year late, they’ve begun improving the API to bring back at least some dropped capabilities to addons. The two major features now reimplemented in Flagfox are: customizable hotkeys for all actions and the ability to fetch IPs from the DNS cache, as needed. Overall, Flagfox 6.1 is now more reliable and performant.

Flagfox 6.1.0 changelog:

  • IPv4 & IPv6 address location database updates for July 2018
  • Reimplemented support for fetching IPs from the DNS cache, instead of only requests (new WebExt API)
  • Reimplemented support for customizable hotkeys for actions, instead of just one default (new WebExt API)
  • Reimplemented action availability check on menu open, instead of all tab changes (new WebExt API)
  • Added local caching for all favicons (uses localStorage; clears with cache clear)
  • Added throttling to favicon fetching while editing an action’s template
  • Reimplemented default icon loading for missing favicons in menus
  • Added support for importing actions into options from prefs/actions JSON files
  • Improved startup to attempt to load icons into existing tabs, where possible
  • Rewrote IP/host cache, yet again (having the DNS API makes things way less complex now)
  • Added support for all action types in context menus, where now possible (IPs obtainable via DNS cache)
  • Changed hotkey pref save format to match new API; old ones from Flagfox 5.2.x will be imported
  • Added detection and indication of invalid or existing hotkeys, when setting (not 100%, due to iffy API)
  • Added ability to undo a hotkey change without having to cancel config, via escape key
  • Switched to PointerEvents where applicable (only minor use)
  • Improved opening of new tabs to use openerTabId; now opened next to subject, instead of end of strip
  • Support for Tree Style Tabs addon (and similar) is now available again due to openerTabId change
  • Shut up some pointless warning messages on startup from manifest.json load
  • Various code cleanups/fixes
  • Dropped support for Firefox 56-59, as Mozilla only finally added the new APIs used here in Firefox 60

Note: Firefox will ask for a permissions update for DNS, because WebExtensions are forced to re-ask for permission to do everything they used to do before. Just say yes to shut it up and allow update. I don’t even do DNS requests; just uses cache. Google/Mozilla’s permissions model here is not fantastic. I’ve already amended the Flagfox FAQ section on the topic of permissions, if you’d like a longer explanation of any of them in use in Flagfox.

I posted 3 beta test versions to this blog and managed to get a couple dozen people to test it… with zero feedback. Maybe it would’ve been a less anemic beta test if I could still use the beta channel on AMO, but Mozilla killed that in their apparent never-ending quest to make addon development more annoying. Part of the problem is also likely the plague of all software developers labeling their software as “beta” forever, teaching people that it just means “new” and not “test and report”. In any case, the only major issue I’m worried about is hotkey support on Macs, as neither I nor Richard have one and the documentation with regard to Mac keyboards and this new API is a freakin’ riddle. If someone reading this has a Mac, please test setting and the using a shortcut using the Command key, and then post a comment here telling me how it goes. (if it doesn’t work, Ctrl should trigger it instead, in which case, tell me and I can fix that)

The beta changelogs included recent changes to the default actions that were backported to the Flagfox 6.0.7 update and are thus not listed here. The main noticeable change in 6.1.0 since 6.1b3 is a fix to the detection of tab selection Firefox hotkeys on Windows (every OS uses a different modifier here, apparently). It previously let you try to set those when it shouldn’t and didn’t let you set the ones used in Linux (Mac was already handled). There’s also some code cleanups and the console debug messages have been turned off, as usual.

Just to be clear on the other Flagfox version branches: the Flagfox 5.2.x ESR update with be released later this month and Flagfox 6.0.7 was the final update for that branch. I’m not insane enough to simultaneously maintain 3 branches of an addon. There were no Firefox versions of real consequence dropped from support, so all Flagfox 6.0.x users should simply update to 6.1.x. It never is “simple”, though, as I know there are weirdos stuck on all sorts of intermediate Firefox versions because they disabled Firefox updating arbitrarily and forgot about it, but they’ll update eventually. Flagfox will at least tell them its database is stale after 3 months, as always.

Note that this post is auto-shown only on this major update, and should not be shown again (unless reinstalled). Flagfox is just a tiny little icon most of the time, so a first-run page is pretty much the only way for people to know much has changed. 🙂

Flagfox 6.0.7 and 5.2.8 updates released

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

  • IPv4 & IPv6 address location database updates for June 2018
  • Dropped now-defunct XMarks and URL Parser default actions
  • Replaced old URL Parser action with a simple built-in JS action

(The replacement URL Parser default action is backported from the current Flagfox 6.1 betas.)

Flagfox 5.2.8 changelog:

  • IPv4 & IPv6 address location database updates for June 2018
  • Dropped now-defunct XMarks and URL Parser default actions

Flagfox 6.1 Beta 3 was released yesterday, and I hope to be able to release the final version soon. I still need someone with a Mac to test the new custom hotkey implementation, however. Today’s Flagfox 6.0.x update should be the last on that branch. If you’re one of the approximately 9000 people inexplicably still using Flagfox under Firefox 57-59, upgrade your damned browser. Flagfox 6.1+ requires Firefox 60+ (ESR). I can understand people still using Firefox 52 ESR and can even understand people wanting to use Firefox 56 (the last pre-WebExt-only version; don’t do it, though), but using one of the releases in-between Firefox 56 and the current Firefox 60 main release or ESR is just stupid. If anyone knows why anyone would be on these versions other than the standard “no software has a good updater and people ignore it” problem, I’m curious to know.

Flagfox 6.1 Beta 3

The third and final Flagfox 6.1 beta is ready for testing. You can now download and install from the downloads page here (it will not auto-update from the first beta, but will auto-update to the final release).

Flagfox 6.1b3 changelog:

  • Added support for importing actions into options from prefs/actions JSON files
  • Replaced now-defunct URL Parser default action with simple built-in JS action
  • Fixed error message spew from hotkey migration on startup (regression in 6.1 beta)
  • Various code cleanups/fixes

Flagfox 6.1b2 changelog:

  • Added local caching for all favicons (uses localStorage; clears with cache clear)
  • Added throttling to favicon fetching while editing an action’s template
  • Reimplemented default icon loading for missing favicons in menus
  • Fixed handling of raw IPs (e.g. router admin pages; regression in 6.1 beta)

Flagfox 6.1b1 changelog:

  • Reimplemented support for fetching IPs from the DNS cache, instead of only requests (new WebExt API)
  • Reimplemented support for customizable hotkeys for actions, instead of just one default (new WebExt API)
  • Reimplemented action availability check on menu open, instead of all tab changes (new WebExt API)
  • Improved startup to attempt to load icons into existing tabs, where possible
  • Rewrote IP/host cache, yet again (having the DNS API makes things way less complex now)
  • Added support for all action types in context menus, where now possible (IPs obtainable via DNS cache)
  • Changed hotkey pref save format to match new API; old ones from Flagfox 5.2.x will be imported
  • Added detection and indication of invalid or existing hotkeys, when setting (not 100%, due to iffy API)
  • Added ability to undo a hotkey change without having to cancel config, via escape key
  • Switched to PointerEvents where applicable (only minor use)
  • Improved opening of new tabs to use openerTabId; now opened next to subject, instead of end of strip
  • Support for Tree Style Tabs addon (and similar) is now available again due to openerTabId change
  • Dropped now-defunct XMarks action from defaults
  • Various code cleanups
  • Dropped support for Firefox 56-59, as Mozilla only finally added the new APIs used here in Firefox 60

The new import from JSON file works just like the old import works, by dragging/dropping the file (e.g. from desktop/wherever) onto the actions list in the Flagfox options. The format can be any of the 3 supported by Flagfox: the format the default actions JSON file is in, the format the user actions preference is in, or the format the WebExt preferences storage file is in. Note that if it’s not the full format (the first in that list), old default actions can’t be imported, because they’re not actually saved in the user pref (which saves a lot of space). Yes, this means you can take any Flagfox 5.2+ storage.js file from your Firefox profile and dump it into Flagfox 6.1+, and it’ll figure it out and import it as a pile of new custom actions. (you can, of course, delete any you didn’t want, afterwards) The old text list format is still supported, and can still be from a file or a copied/pasted/dragged text selection.

Important: There are a couple dozen people in this beta test now, but not one of you has actually provided any feedback. If nobody actually tests the custom hotkey support on a Mac, then I’m going to have to release it in its current “¯\_(ツ)_/¯” state. Thus far, the only use I’ve gotten from this beta is me learning how to sign XPIs for off-AMO hosting so I can test in my main profile. Even with Mozilla killing off the AMO beta channel, this getting so much less testing than all past betas is a bit disappointing. :/

Known Issues:

  • Keyboard shortcuts are limited to one of Ctrl/Alt (or Command, on Mac), potentially Shift, with a character key. (WebExt API restriction)
  • Keyboard shortcuts have not yet been tested on a Mac.
  • There is a limit of 100 keyboard shortcuts allowed at one time.

(See first post for more detail on the keyboard shortcut known issues.)

As this is a beta test, bugs are always a possibility and should be reported in a comment below or via any other contact method. Please don’t assume an issue is known unless I state so in a blog post somewhere here. I’ll update this blog post with any significant known issues discovered before posting the next version. Also, please only use the latest beta version, which unfortunately must be done manually due to Mozilla killing the beta channel.

Flagfox 6.1 Beta 2

The second Flagfox 6.1 beta is ready for testing. You can now download and install from the downloads page here (it will not auto-update from the first beta, but will auto-update to the final release).

Flagfox 6.1b2 changelog:

  • Added local caching for all favicons (uses localStorage; clears with cache clear)
  • Added throttling to favicon fetching while editing an action’s template
  • Reimplemented default icon loading for missing favicons in menus
  • Fixed handling of raw IPs (e.g. router admin pages; regression in 6.1 beta)

Flagfox 6.1b1 changelog:

  • Reimplemented support for fetching IPs from the DNS cache, instead of only requests (new WebExt API)
  • Reimplemented support for customizable hotkeys for actions, instead of just one default (new WebExt API)
  • Reimplemented action availability check on menu open, instead of all tab changes (new WebExt API)
  • Improved startup to attempt to load icons into existing tabs, where possible
  • Rewrote IP/host cache, yet again (having the DNS API makes things way less complex now)
  • Added support for all action types in context menus, where now possible (IPs obtainable via DNS cache)
  • Changed hotkey pref save format to match new API; old ones from Flagfox 5.2.x will be imported
  • Added detection and indication of invalid or existing hotkeys, when setting (not 100%, due to iffy API)
  • Added ability to undo a hotkey change without having to cancel config, via escape key
  • Switched to PointerEvents where applicable (only minor use)
  • Improved opening of new tabs to use openerTabId; now opened next to subject, instead of end of strip
  • Support for Tree Style Tabs addon (and similar) is now available again due to openerTabId change
  • Dropped now-defunct XMarks action from defaults
  • Various code cleanups
  • Dropped support for Firefox 56-59, as Mozilla only finally added the new APIs used here in Firefox 60

The main changes in beta 2 are bugfixes and better handling of favicons. All previous versions of Flagfox relied on Firefox to handle the caching of action favicons. It had a tendency to check for updates to those icons way too often, and I think (not 100%) it is a little worse since the transition to WebExt. Including the default actions’ favicons in the installer is not really viable, due to the insane state of copyright law. What I’ve written here is a caching system that uses local storage. It’s not the same “storage” API as in WebExt; it’s using the “storage” API usable via websites. (:sigh: name your APIs better, people…) The former is uses for addon prefs and the latter is being used here for persistent caching. Note that this cache is cleared along with other browser caches when manually clearing your cache, as is intended. I have this new system set to only check for favicon updates once every 30 days, at the moment (I might extend this). An additional reason for doing all of this is that it makes it easy to reimplement support for showing a default icon in the menus when none is available, which was a feature that I dropped in the WebExt transition, as there was no easy way to do that anymore. (Flagfox 5.2.x just listened for an error on trying to load the image; the WebExt API provides no way to do this for menus, though the options page still did this)

Known Issues:

  • Keyboard shortcuts are limited to one of Ctrl/Alt (or Command, on Mac), potentially Shift, with a character key. (WebExt API restriction)
  • Keyboard shortcuts have not yet been tested on a Mac.
  • There is a limit of 100 keyboard shortcuts allowed at one time.

(See previous post for more detail on the keyboard shortcut known issues.)

As this is a beta test, bugs are always a possibility and should be reported in a comment below or via any other contact method. Please don’t assume an issue is known unless I state so in a blog post somewhere here. I’ll update this blog post with any significant known issues discovered before posting the next beta version. Also, please only use the latest beta version, which unfortunately must be done manually due to Mozilla killing the beta channel.

Flagfox 6.1 Beta 1

Mozilla finally added some rather crucial missing WebExtension APIs, about a year late, and Flagfox 6.1 now takes advantage of them to reimplement some of the major features that were forced to be dropped in Flagfox 6.0. Firefox 60+ is required. This is still an experimental development version, so the standard beta warning to backup your stuff applies, but it’s not likely to hurt anything (occasionally backing up your browser profile(s) is just good advice, in general). Whilst this beta is available due to new features added by Mozilla, it’s also hindered by yet more features eliminated by Mozilla: they removed the beta channel from AMO. I feel like they often do everything in their power to make this more difficult… (intentional, or not). Nonetheless, AMO at least supports signing of off-site WebExtensions, so these versions are code signed and will work in a normal release version of Firefox without special configuration. Automatic beta updates are not available, however, once a future release version of Flagfox 6.1+ is available, it should automatically update to that and function normally thereafter (“should” being the operative word). This first beta file is available to download and install from the downloads page here.

Of course writing this took longer than expected; nothing new there. Fiddling with hotkey input was particularly annoying because Mozilla added an API to update a shortcut at runtime, but didn’t actually create an API to validate such a shortcut. Triggered shortcuts can also be intercepted via one event when trying to input them, but not another, and inconsistently, at that. What’s worse, setting it to a test binding is not 100% reliable either, as it can in fact occasionally accept a shortcut it won’t allow. Thus is the standard downfall of artificial APIs: nobody who makes them actually uses them in any real scenario, resulting in easily missed bugs and necessities. Of course everything is even less reliable when recycling somebody else’s API, as in the case with Mozilla basing their WebExtension API on Google Chrome’s. At least they’re willing to diverge from it, when necessary, now.

Flagfox 6.1b1 changelog:

  • Reimplemented support for fetching IPs from the DNS cache, instead of only requests (new WebExt API)
  • Reimplemented support for customizable hotkeys for actions, instead of just one default (new WebExt API)
  • Reimplemented action availability check on menu open, instead of all tab changes (new WebExt API)
  • Improved startup to attempt to load icons into existing tabs, where possible
  • Rewrote IP/host cache, yet again (having the DNS API makes things way less complex now)
  • Added support for all action types in context menus, where now possible (IPs obtainable via DNS cache)
  • Changed hotkey pref save format to match new API; old ones from Flagfox 5.2.x will be imported
  • Added detection and indication of invalid or existing hotkeys, when setting (not 100%, due to iffy API)
  • Added ability to undo a hotkey change without having to cancel config, via escape key
  • Switched to PointerEvents where applicable (only minor use)
  • Improved opening of new tabs to use openerTabId; now opened next to subject, instead of end of strip
  • Support for Tree Style Tabs addon (and similar) is now available again due to openerTabId change
  • Dropped now-defunct XMarks action from defaults
  • Various code cleanups
  • Dropped support for Firefox 56-59, as Mozilla only finally added the new APIs used here in Firefox 60

Known Issues:

  • Keyboard shortcuts are limited to one of Ctrl/Alt (or Command, on Mac), potentially Shift, with a character key. Using Ctrl and Alt at the same time is not supported by Firefox, here. The restriction to character keys is the same as prior versions, however. I might add F-key support, but so many combos with those are tied to OS functions that I think I’ll just consider it not worth the risk of accidents. In addition to the ones that are used as built-in Firefox shortcuts, most punctuation keys are also not supported by the API. The total list of allowed keys is: A-Z, 0-9, Space, Period, Comma. If you’ve got a keyboard that can produce any other single non-punctuation character, it might work, but I have no idea.
  • Keyboard shortcuts are, not surprisingly, something which can vary based on hardware. I don’t own a Mac, so this beta has not yet received any testing on that platform. The API documentation is poorly written with respect to the Command key, so reimplementing support here is a bit of a shot in the dark.
  • There is a limit of 100 keyboard shortcuts allowed at one time. The new API only technically allows updating an existing shortcut defined in the install manifest, not actually adding a new one. The obvious solution is just to add a pile of generic placeholders in there and modify as-needed. That said, if you actually manage to encounter this limit… how? Seriously, did anyone ever use hotkeys this much in Flagfox 5.2? Anyway, I expect this is plenty; just noting it here for completeness.
  • Added 2018-6-14: Icons aren’t working correctly on local raw IPs (e.g. router admin pages).

As this is a beta test, bugs are always a possibility and should be reported in a comment below or via any other contact method. Please don’t assume an issue is known unless I state so in a blog post somewhere here. I’ll update this blog post with any significant known issues discovered before posting the next beta version. Also, please only use the latest beta version, which unfortunately must be done manually due to the killed beta channel, as previously mentioned. Setting up an alternative update server is technically possible, but I don’t have any such system set up, so just using the blog is fine. You can subscribe to this blog via a link off to one of the sides of this page, if you’d like. I will also attempt to remember to post links to these blog posts on Twitter, if you’re willing to put up with whatever other crap I retweet there.