A Chrome/Firefox extension that simplifies follow and post interactions on Mastodon servers other than your own.
 
 
 
 
Go to file
Lartsch 4b59ebf4ef
Update README.md
2022-12-04 11:31:58 -05:00
firefox add support for bookmarking, bump version 2022-12-04 11:30:47 -05:00
img change media 2022-12-02 17:38:31 -05:00
src Merge branch 'main' of https://github.com/Lartsch/FediFollow-Chrome 2022-12-04 11:30:49 -05:00
.gitignore another big update (utilize background script, remove redirect page, introduce ext. follow indicator) 2022-11-25 20:40:41 -05:00
LICENSE Update LICENSE 2022-11-17 15:09:19 +01:00
README.md Update README.md 2022-12-04 11:31:58 -05:00
manifest.json add support for bookmarking, bump version 2022-12-04 11:30:47 -05:00
pack.sh silence zip output 2022-12-03 08:01:23 -05:00

README.md

FediFollow (v0.8.2)

A Chrome/Firefox extension that simplifies following and post interactions on other Mastodon instances than your own.

Features:

  • Supports Mastodon v3 + v4
  • Follow, reblog, bookmark and favourite on external instances (and vice-versa)
  • Show following status and toot status (reblogged, faved, bookmarked) on external instances
  • Single click to execute action, double click to redirect to content on home instance
  • Customizable

Supported browsers:

  • All up-to-date Chromium browsers, including Kiwi browser on Android
  • Up-to-date Firefox, including Firefox Nightly on Android

Important notes:

  • This is still a beta, there will be issues!
  • All data is processed locally only
  • Performance depends on the performance (and rate limiting) of your home instance (read more below)

Navigation

Installation

Chrome and other Chromium browsers

Firefox including Firefox for Android

Note

Setup

  1. Make sure you are logged in to your home instance
  2. Click the extension icon or open its settings page
  3. Set your home instance (required)
  4. Check the other settings (optional)
  5. Click the "Submit" button to save

It can take 1-2 minutes after you have set your home instance to sync your API token for the extension to work.

Please read the additional notes.

Screenshots / GIFs

Extension popup / settings
Showcase

Manual installation

  1. Download the latest Github release for your browser (chrome or firefox)

Chrome

  1. Unzip the downloaded file somewhere
  2. Go to your Chrome extension page (URL: chrome://extensions) and enable developer mode
  3. Click the "Load unpacked" button and then select the unzipped folder (should be "fedifollow-X.X.X-chrome")

Firefox

  1. Open the debugging page (URL: about:debugging)
  2. Select "This Firefox"
  3. Click the "Load Temporary Add-on" button and then select the downloaded Firefox ZIP file

Install in Firefox for Android

Since a while, Firefox on Android only allows a curated list of addons to install, preventing installation of anything else. The following explanation will guide you how to install it from the webstore anyways.

Requirements:

  • Firefox Nightly for Android

Steps:

  1. In Firefox, go to Settings > About Firefox Nightly
  2. Click the Firefox logo 5 times to enable developer options
  3. Go back to Settings > Custom Add-on Collection
  4. Enter the following data:
    • ID: 17665294
    • Name: FediFollow
  5. Click OK, Firefox will close - reopen it
  6. FediFollow will now be available in the Add-ons menu of Firefox Nightly

To update the addon instantly, simply remove and re-install it. Not sure when/if auto-update triggers in Firefox.

I included all of the default add-ons in the custom collection, so you will not miss out on any of those. Of course, you can create your own collection as well.

Additional notes

  1. Currently supports external Mastodon instances v3 + v4
    • I have not tested if Mastodon v3 works as home instance! In general, Mastodon v4 support is the main objective.
    • Support for other Fedi software is still planned
  2. The whitelist mode can be useful if you do not want the extension to run basic checks on every site (since it needs to determine if it is a Mastodon site). Not sure if the blacklist feature is good for anything but I still included it.
  3. It can have several reasons why resolving/executing actions/redirection might not work:
    • You are not logged in to your home instance (can't fix, log in)
    • You are scrolling really fast and posts are not resolved instantly (a delay is implemented to prevent 429 API errors - wait shortly and try again)
    • There are instances that use custom layouts/flavours (additional identifiers need to be added to extension)
    • It's not a Mastodon instance (not supported yet)
    • Element identifiers might change over time (extension needs to be updated)
    • Your home instance has strong rate limiting and blocks the API requests
  4. There can be a short delay before you are redirected since an API call to the respective external instance must be made. In general, performance of this addon depends on the performance of the external instance and your home instance.
  5. If you only want redirects, simply turn off auto-action and leave redirect on - double click will then only redirect, not execute the action
  6. If the extension fails to resolve content, the affected buttons will behave like usually

Todos / Planned features

  • Add support for replying
  • Fix last remaining resolve fails - not sure yet what causes them, please report fails
  • General performance and code improvements
  • Add indicator for content that failed to resolve
  • Update settings in content script instantly (so no page reload is needed)
  • Improve 429 prevention and add resolving fallbacks
  • Add support for other implementations (Plemora, GNU Social, ...)
  • Find additional layouts/flavours to add identifiers for
  • Support for profiles views with follow button disabled
  • Implement caching where applicable to decrease required requests
  • If I find myself to be bored, probably more

Thanks to...

@raikasdev because I stole his fix for cross-browser storage API support
@rosemarydotworld because I customized and use his awesome jQuery.DOMNodeAppear where MutationObservers and delegation failed