ATProto Social — Firefox extension#
A Firefox WebExtension for publishing to ATProto-based social platforms directly from your browser.
ℹ️ This repository is hosted on tangled (PRs, issues) and GitHub (CI/CD, releases).
Features#
- Margin tab — select text on any page and publish it as a highlight or
annotation to margin.at:
- No comment → creates an
at.margin.highlightrecord. - With comment → creates an
at.margin.annotationrecord (motivation: commenting). - Uses the W3C
TextQuoteSelector(exact text + surrounding context) for precise targeting.
- No comment → creates an
- Frontpage tab — share the current tab to
frontpage.fyi by creating a
fyi.frontpage.feed.postrecord on your ATProto account.- Auto-fills the active tab's title and URL.
- Title length indicator (120 character limit).
- Background service worker handles ATProto login, token refresh, and record creation for both services.
- Options page for storing your handle, app password, and optional PDS override.
Prerequisites#
- An ATProto account (Bluesky or self-hosted PDS).
- An app password for that account (create one at https://bsky.app/settings/app-passwords or via your own PDS).
Install on Firefox (desktop)#
- Visit the
Releases page
and download the latest
frontpage-submitter-<version>.xpi(signed) or.zip(unsigned) asset. - In Firefox, open
about:addons, click the gear icon, and choose Install Add-on From File…. - Select the downloaded
.xpi(preferred) or.zipto complete the installation and approve the permissions prompt.
Install on Firefox for Android#
Firefox for Android requires enabling the "Install from file" option first:
- Open Firefox for Android → tap the three-dot menu → Settings → About Firefox.
- Tap the Firefox logo 5 times to unlock debug options.
- Go back to Settings — a new Install extension from file option now appears at the bottom.
- Download the signed
.xpifrom the Releases page to your device. - Tap Install extension from file, select the downloaded
.xpi, and approve the permissions prompt.
The extension must be signed by Mozilla. Unsigned
.xpifiles are rejected on Android. Use the signed asset from the releases page.
Configure credentials#
- Open the add-on pop-up and press the gear icon (or use
about:addons→ Preferences). - Enter your handle and app password. Supply a PDS URL only if you run a custom server.
- Click Save credentials. A success message confirms that the session tokens are stored locally.
- Use Log out at any time to remove stored tokens (you can also revoke the app password server-side).
Publish a highlight or annotation (Margin)#
- Select text on any webpage.
- Open the ATProto Social pop-up — the Margin tab opens by default with the selected text pre-filled.
- Optionally add a comment (turns a highlight into an annotation).
- Click Highlight on Margin or Annotate on Margin.
Submit a link (Frontpage)#
- Browse to the page you want to share.
- Open the ATProto Social pop-up and switch to the Frontpage tab; the title and URL are pre-filled.
- Adjust the text if necessary and click Post to Frontpage.
- On success, the pop-up reports the record URI returned by
com.atproto.repo.createRecord.
See CONTRIBUTING.md for development setup, build pipeline, and implementation notes.