Firefox WebExtension (Desktop and Mobile) that lets you share the current tab to Margit.at, frontpage.fyi, etc. with minimal effort.
1## ATProto Social — Firefox extension
2
3A Firefox WebExtension for publishing to ATProto-based social platforms directly
4from your browser.
5
6> ℹ️ This repository is hosted on
7> [tangled](https://tangled.org/anton.galiglobal.com/frontpage_firefox_plugin)
8> (PRs, issues) and [GitHub](https://github.com/antonmry/atproto_firefox_plugin)
9> (CI/CD, releases).
10
11### Features
12
13- **Margin tab** — select text on any page and publish it as a highlight or
14 annotation to [margin.at](https://margin.at):
15 - No comment → creates an `at.margin.highlight` record.
16 - With comment → creates an `at.margin.annotation` record
17 (`motivation: commenting`).
18 - Uses the W3C `TextQuoteSelector` (exact text + surrounding context) for
19 precise targeting.
20- **Frontpage tab** — share the current tab to
21 [frontpage.fyi](https://frontpage.fyi) by creating a `fyi.frontpage.feed.post`
22 record on your ATProto account.
23 - Auto-fills the active tab's title and URL.
24 - Title length indicator (120 character limit).
25- Background service worker handles ATProto login, token refresh, and record
26 creation for both services.
27- Options page for storing your handle, app password, and optional PDS override.
28
29### Prerequisites
30
31- An ATProto account (Bluesky or self-hosted PDS).
32- An app password for that account (create one at
33 <https://bsky.app/settings/app-passwords> or via your own PDS).
34
35### Install on Firefox (desktop)
36
371. Visit the
38 [Releases](https://github.com/antonmry/atproto_firefox_plugin/releases) page
39 and download the latest `frontpage-submitter-<version>.xpi` (signed) or
40 `.zip` (unsigned) asset.
412. In Firefox, open `about:addons`, click the gear icon, and choose
42 **Install Add-on From File…**.
433. Select the downloaded `.xpi` (preferred) or `.zip` to complete the
44 installation and approve the permissions prompt.
45
46### Install on Firefox for Android
47
48Firefox for Android requires enabling the **"Install from file"** option first:
49
501. Open Firefox for Android → tap the three-dot menu → **Settings** →
51 **About Firefox**.
522. Tap the Firefox logo **5 times** to unlock debug options.
533. Go back to **Settings** — a new **Install extension from file** option now
54 appears at the bottom.
554. Download the signed `.xpi` from the
56 [Releases](https://github.com/antonmry/atproto_firefox_plugin/releases) page
57 to your device.
585. Tap **Install extension from file**, select the downloaded `.xpi`, and
59 approve the permissions prompt.
60
61> The extension must be signed by Mozilla. Unsigned `.xpi` files are rejected on
62> Android. Use the signed asset from the releases page.
63
64### Configure credentials
65
661. Open the add-on pop-up and press the gear icon (or use `about:addons` →
67 **Preferences**).
682. Enter your handle and app password. Supply a PDS URL only if you run a custom
69 server.
703. Click **Save credentials**. A success message confirms that the session
71 tokens are stored locally.
724. Use **Log out** at any time to remove stored tokens (you can also revoke the
73 app password server-side).
74
75### Publish a highlight or annotation (Margin)
76
771. Select text on any webpage.
782. Open the ATProto Social pop-up — the **Margin** tab opens by default with the
79 selected text pre-filled.
803. Optionally add a comment (turns a highlight into an annotation).
814. Click **Highlight on Margin** or **Annotate on Margin**.
82
83### Submit a link (Frontpage)
84
851. Browse to the page you want to share.
862. Open the ATProto Social pop-up and switch to the **Frontpage** tab; the title
87 and URL are pre-filled.
883. Adjust the text if necessary and click **Post to Frontpage**.
894. On success, the pop-up reports the record URI returned by
90 `com.atproto.repo.createRecord`.
91
92See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, build pipeline,
93and implementation notes.