cross-posted from: https://lemmy.ca/post/1418762

I’ve made a number of improvements since the last time I was posting about my extension. The update is now available on both Firefox and Chrome web stores.

For questions / support: [email protected]

TLDR: See the respective download pages on Firefox & Chrome. The screenshots and features list are mostly self-explanatory.

Note on versions:

  • Firefox has a more recent 1.2.1 version, because my build script missed some files while uploading v1.2.0. It doesn’t look like Chrome had this issue.
  • I’m uploading v1.2.2 to both stores today, which will bring the two missing features to Chrome as well. After 1.2.2, all browsers should have the same features. See below for details.

So how is this different from other similar extensions?

You may have noticed the extension’s name changed to be more generic (and include Kbin 🥳). I’m trying to make this a more well-rounded extension, and that means I’ve incorporated some features from the other extensions, in my own way.

Lemmy Links, Kbin Links, and the other forks:

This is a great extension that replaces links on your page with versions that go to your home instance. However, in order for this to work, it needs to recursively check every element on your page whenever DOM content (the stuff the browser is reading) changes. This is somewhat resource intensive, and while testing I ran into lag and freezing issues. As such, I decided to not include this functionality in the same way.

Instead, I’ve added a right click context menu that does the same thing. This way the user can pick which links they want the extension to convert, and it’s a lot more efficient resource wise. While it’s an extra click, I felt this was a reasonable compromise. However, I’m open to feedback!

NOTE: The context menu is available on Firefox, and it will be available in Chrome in about a week, depending on when they approve my update.

Lemmy Home Instance Helper

This is another extension which checks if you are logged in to an instance, and it creates a button to the search page if you are not. As my extension creates a button on any foreign instance, the search page is only helpful when a community hasn’t been loaded into your home instance yet (ex. because you’re the first one to try accessing it).

To deal with this, my extension modifies the “Community not found” pages with more instructions, as well as buttons to trigger the fetch process or to open the community elsewhere. See this screenshot for an example. Again, open to feedback!


As always, I’d love to collaborate with other people while building this. I’m still cleaning up my code, but feel free to look at the GitHub. If this extension gets popular, I will definitely need help for translations and for things like getting the extension on Safari (I don’t have a recent Apple device to sign the extension with).


Note on permissions:

  • The current versions request “Access to all sites”. This is because the extension needs access to any page that contains “/c/”, “/m/”, or “/post/” in order to create the sidebar buttons. While the extension only looks for those pages, it will show up as “Access to all sites” when installing. Once I have a proper welcome message and settings page, I plan on making this permission optional so you can just use the popup menu if you would like.

Summary of Recent Changes:

  • Added support for Kbin
  • Fixed issue where button wouldn’t load when navigating to a community within Lemmy (available on Firefox, should be on Chrome in a week).
  • (NEW) Right-click context menu on Lemmy/Kbin community links to let you open them directly. You can test them out here: https://lemmy.ca/post/1282303 (available on Firefox, should be on Chrome in a week)
  • (NEW) Information and buttons added to “Community Not Found” error pages to let you fetch the community or open it elsewhere.
  • Updates to sidebar button to state the current selected instance and provide more detailed instructions as a dropdownList
  • Refactored the code to remove more unnecessary permissions.
  • Another pile of bugfixes, UI improvements, and better wording for instructions.

Future Plans:

  • This is complete and will be in v1.2.2. Bringing over the new changes to Google Chrome. Since chrome requires Manifest 3, I still need to iron out some issues with the service workers. The missing features are all related to the background processes that are running on the Firefox version
  • Pushing to other browsers: Microsoft Edge & Opera are still reviewing v1.2.0. Unfortunately, I don’t have any immediate plans for Safari, as I don’t have a device that can sign the extension. I am looking into getting help for that.
  • Setting up a proper Welcome page, Settings page, and Options menu to allow users to turn off features that they don’t like. This will also let me make “access to all sites” optional.
  • Finishing the translations’ setup so that people can contribute other languages to the extension.
  • Adding an option to save your own instances to the popup, for those that have multiple home instances.
  • PriorProject@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    Why structure this as a browser extension rather than pull-requests to the Lemmy web-ui? With Reddit, there was no path to contribute an improvement to the web-UI, so an extension was the only viable path to fix anything. By my sense is that the Lemmy core devs have been very receptive to external contributions, and have welcomed improvements from UX/UI experts.

    Have you considered trying to adapt this to the Lemmy codebase and getting it merge so it’s available to everyone without a having to seek out and install a browser extension?

    • CynberOP
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      I’ve thought about it, but it’s not something I’ll be able to do anytime soon. If it was something like making the extension “official” or having a way to expose web accessible resources for the sites to use, that would be something I could try. Doing away with the extension entirely is harder.

      Unfortunately I don’t know much about having a persistent cookie (with the home instance) that different sites can get from the browser, and I don’t know about another way to generate the links. That’s also something which might have privacy concerns if implemented poorly, because any site will have access your home instance (and whatever other information is required). A browser extension was easier to implement because thats something that’s meant to work with many sites, and everything happens locally on your device, so I was more comfortable publishing it.

      Some of the other features, like the “trigger a search” button on the community not found page, or even just more instructions on what “community not found” means, those are changes that I can more easily push to the codebase. If it’s not already being worked on, then I’ll look into doing it myself :)