···29- An ATProto account that Frontpage can read.
30- An app password for that account (create one at <https://bsky.app/settings/app-passwords> or via your own PDS).
3132-### Load the add-on in Firefox
33341. Open `about:debugging#/runtime/this-firefox`.
352. Click **Load Temporary Add-on…** and choose `manifest.json` inside the `extension/` directory.
363. Pin the “Frontpage” toolbar button if you want quick access.
00000000000003738### Configure credentials
39
···29- An ATProto account that Frontpage can read.
30- An app password for that account (create one at <https://bsky.app/settings/app-passwords> or via your own PDS).
3132+### Development install (temporary)
33341. Open `about:debugging#/runtime/this-firefox`.
352. Click **Load Temporary Add-on…** and choose `manifest.json` inside the `extension/` directory.
363. Pin the “Frontpage” toolbar button if you want quick access.
37+38+> This method is ideal while iterating; Firefox forgets the add-on on restart.
39+40+### Install a packaged build
41+42+After the GitHub Action finishes:
43+44+1. Download the `frontpage-extension-unsigned` (or `frontpage-extension-signed` if signing is enabled) artifact from the workflow run.
45+2. If unsigned, extract the ZIP that `web-ext` produced and re-zip it as needed, or use the ZIP as-is for self-hosting.
46+3. In Firefox, open `about:addons` → click the gear icon → **Install Add-on From File…**, then select the `.zip` or `.xpi`.
47+4. Firefox will install the add-on; confirm the permissions dialog to finish.
48+49+For ongoing self-distribution, host the resulting `.zip`/`.xpi` on your own site and point Firefox users there, following Mozilla’s [self-distribution guide](https://extensionworkshop.com/documentation/publish/self-distribution/).
5051### Configure credentials
52