8000 feat(clipper): publish browser extension releases for auto-updates by adeelahmad · Pull Request #294 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(clipper): publish browser extension releases for auto-updates - #294

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-sin0jk
Oct 10, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-sin0jk

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: a release attached the clipper zips, but nothing ever updated an installed clipper.

After: each release also publishes the clipper so installed copies update themselves. Every part runs only when its repository secrets exist and is skipped otherwise:

  • Chrome Web Store: the release is uploaded and published (CWS_EXTENSION_ID, CWS_CLIENT_ID, CWS_CLIENT_SECRET, CWS_REFRESH_TOKEN).
  • Edge Add-ons: the release is uploaded and submitted (EDGE_PRODUCT_ID, EDGE_CLIENT_ID, EDGE_API_KEY).
  • Self-hosted Chrome/Edge: a signed lens-clipper-<browser>.crx, plus the -updates.xml it polls on releases/latest/download (CRX_PRIVATE_KEY).
  • Firefox: lens-clipper-firefox-updates.json for the Mozilla-signed XPI that the Firefox workflow attaches (AMO keys).

How: with EXT_UPDATE_BASE set, build.mjs also writes dist/<target>-selfhosted with an update_url. For Gecko targets it's browser_specific_settings.gecko.update_url, and Safari is skipped. scripts/release.mjs derives the Chromium extension ID from the key and writes both kinds of update manifest. I checked the ID it derives against Chromium's own for the same key, and checked that headless Chromium packs the .crx. Docs: "Releases and updates" in docs/web-clipper.md.

Motivation and Context

Adeel asked for a release pipeline and auto-updates for the browser extensions. Safari updates through the App Store, which the Safari thread handles (#283).

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project.
  • I added or updated tests.
  • My change requires documentation updates, and I have updated docs/ accordingly.

Done questions

  • Goal: CI-only; merged on green.
  • Agents: n/a (release tooling).
  • Zero setup: everything is skipped until the secrets exist.
  • Fewest clicks: updates arrive without the user doing anything.
  • Configurable: n/a.
  • Light: no runtime change.
  • Private and secure: the key is written with umask 077 and removed after use; the token is masked.
  • Cost: n/a.
  • User decides: store publishing only happens when the owner adds the secrets.
  • Upgrades: this is the upgrade path for installed extensions.
  • Honest: the docs say Chrome/Edge only install off-store CRXs through policy or on Linux.
  • Tests and docs updated.
  • Open standards: no new dependencies.
  • Refine later: AMO listed submission if the add-on goes on the AMO store.

🤖 Generated with Claude Code

https://claude.ai/code/session_018uA6PhZXrmpgsbfDh2W23u


Generated by Claude Code

Self-hosted builds with update_url (Firefox updates.json, Chrome/Edge
update XML and signed CRX), plus Chrome Web Store and Edge Add-ons
upload, each only when its secrets exist.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018uA6PhZXrmpgsbfDh2W23u
@adeelahmad adeelahmad self-assigned this Oct 10, 2026
@adeelahmad
adeelahmad merged commit ff0e60e into main Oct 10, 2026
9 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-sin0jk branch October 10, 2026 20:43
adeelahmad added a commit that referenced this pull request Oct 10, 2026
…308)

#296, #291, #285 and #294 merged after the README refresh, so they move from
"In progress" to the feature list, and the web clipper guide's status names
Edge as built.


Claude-Session: https://claude.ai/code/session_01HDx7PPUauyjMn1LZs8JAsS

Co-authored-by: Adeel Ahmad <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0