Repository navigation
feat(clipper): build the web clipper for Firefox - #282
Merged
Merged
Conversation
A MV3 extension in extensions/browser: clip the page (Readability), the selection or a picked element to Markdown with MarkDownload-style templates, and send it to Lens through a namespace's import webhook. Shared core for the Firefox, Edge and Safari targets; CI builds a zip per target and attaches them to releases. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018uA6PhZXrmpgsbfDh2W23u
Adds the firefox target (background scripts, gecko id, Firefox 128+), a workflow that runs web-ext lint and build on dist/firefox and signs an unlisted xpi on release when AMO API secrets exist, and Firefox notes in the clipper docs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
Merges main (with the self-hosted builds) and signs dist/firefox-selfhosted, so the release's lens-clipper-firefox.xpi updates itself from the newest release. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
The release bumped the backend version without regenerating openapi.json, so pre-commit's generate-openapi-schema hook fails on main and every PR. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
Owner
Author
|
Generated by Claude Code |
Merged
19 of 20 tasks
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE
19 of 22 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Adeel · project thread
Description
Before: the web clipper (#277) built only for Chrome.
After:
npm run buildalso producesdist/firefox, which loads in Firefox 128+ through about:debugging. CI checks it with Mozilla's own linter and packages an upload-ready zip. On a release, if theAMO_JWT_ISSUER/AMO_JWT_SECRETsecrets are set, Mozilla signs the self-hosted build (dist/firefox-selfhosted, from #294) as an unlisted add-on, and the release getslens-clipper-firefox.xpi. That copy updates itself through thelens-clipper-firefox-updates.jsonthe Browser extension workflow attaches.How:
extensions/browser/targets/firefox.json: backgroundscriptsinstead ofservice_worker, gecko idlens-clipper@adeelahmad.github.io,strict_min_version128 (for MV3optional_host_permissions), anddata_collection_permissions: none(clips go only to the user's own Lens)..github/workflows/browser-extension-firefox.yml: build the firefox target, runweb-ext lint(fails on errors), runweb-ext build, and on release rebuild withEXT_UPDATE_BASEand runweb-ext sign --channel unlistedondist/firefox-selfhosted.release.ymlstarts the new workflow alongsidebrowser-extension.yml.docs/web-clipper.md. No core files changed.Steps to reproduce
cd extensions/browser && npm ci && npm run build -- --target firefox, then about:debugging → This Firefox → Load Temporary Add-on →dist/firefox/manifest.json.Checked locally with web-ext 10.7.0:
lintondist/firefox: 0 errors, 5 warnings.data_collection_permissionsis newer than Firefox 128, which ignores it. Three are innerHTML notes: two inside Mozilla's Readability, and one writes into an inert document.lint --self-hostedondist/firefox-selfhosted: 0 errors.Types of changes
🤖 Generated with Claude Code
https://claude.ai/code/session_016VFSmxk1DTu5en8qADgXzE