···1-## Contributing to ATProto Social
23-### Development install (temporary)
451. Open `about:debugging#/runtime/this-firefox`.
62. Click **Load Temporary Add-on…** and choose `manifest.json` inside the
···910> This method is ideal while iterating; Firefox forgets the add-on on restart.
1112-### Development tips
1314- Inspect background/service-worker logs from `about:debugging` → **Inspect**.
15- The UI scripts (`popup.js` and `options.js`) log to the DevTools console
···18 directory (see workflow below).
19- Licensed under the [Apache License 2.0](./LICENSE).
2021-### Implementation notes
2223- The background worker discovers the user's PDS by resolving the handle
24 (`com.atproto.identity.resolveHandle` + PLC lookup).
···31- Maximum lengths follow the current Frontpage limits (120 characters for the
32 title, 2048 for URLs).
3334-### Self-distribution pipeline
00000000000000000000000000003536-This repository includes `.github/workflows/package-extension.yml` which builds
37-(and optionally signs) the add-on using
38-[`web-ext`](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/).
03940-1. Configure `AMO_JWT_ISSUER` and `AMO_JWT_SECRET` repository secrets with your
41- AMO API credentials if you want automatic signing. Without the secrets, the
42- workflow still produces an unsigned ZIP you can download.
43-2. Trigger the workflow manually (`Actions` → **package-extension** →
44- **Run workflow**).
45-3. Download the artifacts:
46- - `frontpage-extension-unsigned` contains the ZIP that `web-ext build`
47- generates.
48- - `frontpage-extension-signed` (only when secrets are present) contains the
49- signed `.xpi` from AMO for self-hosting.
50-4. Each run also publishes a GitHub Release (tagged `v<version>-<run-id>`) that
51- ships the same ZIP/XPI assets, so you can share a permanent download link.
52- - Mozilla requires every signed upload to have a unique version number. Bump
53- `version` in `extension/manifest.json` before rerunning the workflow if you
54- need a new signed package.
5556-These artifacts can be hosted directly for self-distribution as described in the
0000000057[Mozilla documentation](https://extensionworkshop.com/documentation/publish/self-distribution/).
5859-### Tangled mirror
6061The `mirror-to-tangled.yml` workflow pushes every commit on `main` to Tangled, a
62federated Git hosting platform built on ATProto. Browse the mirror at
···1+# Contributing to ATProto Social
23+## Development install (temporary)
451. Open `about:debugging#/runtime/this-firefox`.
62. Click **Load Temporary Add-on…** and choose `manifest.json` inside the
···910> This method is ideal while iterating; Firefox forgets the add-on on restart.
1112+## Development tips
1314- Inspect background/service-worker logs from `about:debugging` → **Inspect**.
15- The UI scripts (`popup.js` and `options.js`) log to the DevTools console
···18 directory (see workflow below).
19- Licensed under the [Apache License 2.0](./LICENSE).
2021+## Implementation notes
2223- The background worker discovers the user's PDS by resolving the handle
24 (`com.atproto.identity.resolveHandle` + PLC lookup).
···31- Maximum lengths follow the current Frontpage limits (120 characters for the
32 title, 2048 for URLs).
3334+## Cutting a release
35+36+Mozilla requires every signed upload to have a unique version number, so the
37+first step is always bumping the version.
38+39+**1. Bump the version in `extension/manifest.json`:**
40+41+```json
42+"version": "0.1.7"
43+```
44+45+**2. Commit and push to `main`:**
46+47+```sh
48+git add extension/manifest.json
49+git commit -m "Bump version to 0.1.7"
50+git push
51+```
52+53+**3. Trigger the `package-extension` workflow:**
54+55+Via the GitHub UI (`Actions` → **package-extension** → **Run workflow**), or
56+with the `gh` CLI:
57+58+```sh
59+gh workflow run package-extension.yml --repo antonmry/atproto_firefox_plugin
60+```
61+62+**4. Monitor the run:**
6364+```sh
65+gh run list --workflow=package-extension.yml --repo antonmry/atproto_firefox_plugin
66+gh run watch --repo antonmry/atproto_firefox_plugin
67+```
6869+**5. Check the resulting release:**
000000000000007071+```sh
72+gh release list --repo antonmry/atproto_firefox_plugin
73+gh release view --repo antonmry/atproto_firefox_plugin
74+```
75+76+The workflow publishes a GitHub Release tagged `v<version>-<run-id>` with the
77+signed `.xpi` (when `AMO_JWT_ISSUER` and `AMO_JWT_SECRET` secrets are set) and
78+an unsigned `.zip`. These artifacts can be hosted directly for self-distribution
79+as described in the
80[Mozilla documentation](https://extensionworkshop.com/documentation/publish/self-distribution/).
8182+## Tangled mirror
8384The `mirror-to-tangled.yml` workflow pushes every commit on `main` to Tangled, a
85federated Git hosting platform built on ATProto. Browse the mirror at