K, fuck it. AppImage is causing me issues where none of my web extensions are able to keep their history since they're being served from a different folder each time.
That and the fact that ublock origin is somehow busted is telling me it's time to rewrite how WebExtensions are bundled into Agregore.
One benefit of this will be the ability for users to mess with their installed extensions directly.
First: Removing all the old extensions and making sure there's a step to publish them as ZIPs
As part of this I've done some profiling of the startup time for Agregore (using console logs and my sense of time) and I found that reordering some of the initializing code can drastically improved perceived boot speed.
The main culprit was the `app.setAsDefaultProtocolClient` API. It's probably doing a bunch of sync API calls to the OS which is getting in the way. God I hate sync APIs. :P
I think for one or two protocols it's not a big deal, but in Agregore we're doing like 10 so it adds up.
AHA! "Fixed" the Ublock Origin issue by reverting to version 1.47.4
1.48.0 added a fancy new thing for rendering icons and it seems my extension system doesn't support whatever this fanciness is.
https://github.com/gorhill/uBlock/releases/tag/1.48.0
Could also be one of the patches since then though. 🤷
For anyone curious, here's the diff for the work I was doing: https://github.com/AgregoreWeb/agregore-browser/commit/575528d9e21b84fcfd4798e4eb52c79f157866a2
Love me some deleted code 🥰
I'm especially happy with this file for tracking all the built in extensions. Should make it way easier to customize Agregore for communities.
Adding new extensions and updating versions for extensions is now super easy.
All I need to do is add a new entry to a JSON file with a `url` for downloading the zip file for an extension, as well as a `version` string which is used to compare against the manifest on disk.
The URL also has some basic templating where the system will replace occurances of `{version}` with the version number. With this I just need to update the one line to update the version.