Skip to content

ChromeWebStore Release & Bugfix#3

Merged
manuelgruber merged 5 commits intomainfrom
C/Bugfix
Feb 11, 2026
Merged

ChromeWebStore Release & Bugfix#3
manuelgruber merged 5 commits intomainfrom
C/Bugfix

Conversation

@manuelgruber
Copy link
Copy Markdown
Member

@manuelgruber manuelgruber commented Feb 11, 2026

Summary

  • Replaces automated tag-triggered release workflow with manual-only workflow
  • Adds Chrome Web Store extension ID to package.json
  • Bumps version to 1.1.0
  • Improves export stripping in build script to handle inline declarations

Key Changes

  • New Release-Chrome-Web-Store.yml workflow triggered only via workflow_dispatch
  • Adds ability to choose whether to publish after upload
  • Removes automatic version bumping from CI pipeline
  • Fixes build script to properly strip inline export statements

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Extension version updated to 1.1.0
  • Chores

    • Updated Chrome Web Store release automation and added Web Store metadata for streamlined publishing
    • Improved build tooling to more thoroughly clean bundled code and updated build output messages

Copilot AI review requested due to automatic review settings February 11, 2026 19:25
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 11, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a new GitHub Actions workflow for Chrome Web Store releases, removes the previous release workflow, bumps extension version from 1.0.0 to 1.1.0 (manifest.json and package.json), adds chromeWebStore.extensionId to package.json, and extends the build script to strip inline export declarations from content scripts.

Changes

Cohort / File(s) Summary
New CI/CD workflow
.github/workflows/Release-Chrome-Web-Store.yml
Adds a two-job release workflow (ci + release): checkout, Bun setup, deps, typecheck/lint/tests, build/validate, pack, upload to Chrome Web Store via OAuth, optional publish, and GitHub Release creation with token masking and error handling.
Removed workflow
.github/workflows/release-chrome-store.yml
Deletes the previous tag/dispatch-triggered release workflow that handled packaging, optional manifest version bump on dispatch, CWS upload/publish, GitHub Release creation, and artifact upload.
Version & Metadata
manifest.json, package.json
Bumps version 1.0.0 → 1.1.0 in both files; adds chromeWebStore.extensionId to package.json.
Build Script Enhancement
toolkit/scripts/build.js
Extends export-stripping to remove inline export declarations (functions/const/let/var/class) from content scripts and updates the success log to "(stripped exports)".

Sequence Diagram

sequenceDiagram
    actor GitHub as GitHub (Push / Dispatch)
    participant CI as CI Job
    participant Builder as Builder (Bun)
    participant Validator as Validator (Type/Lint/Test)
    participant Packager as Packager
    participant CWS as Chrome Web Store API
    participant GHRel as GitHub Release

    GitHub->>CI: trigger workflow
    CI->>CI: checkout repo
    CI->>Builder: setup Bun & install deps
    Builder-->>CI: deps ready
    CI->>Validator: run typecheck, lint, tests
    Validator-->>CI: validation result
    CI->>Packager: build & package extension
    Packager-->>CI: artifact (zip)
    CI->>CWS: validate version & extensionId, obtain OAuth token
    CI->>CWS: upload artifact
    CWS-->>CI: upload status
    alt publish requested
      CI->>CWS: publish extension
      CWS-->>CI: publish status
    end
    CI->>GHRel: create GitHub Release and attach artifact
    GHRel-->>GitHub: release published
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Release 1.0.0 #2 — Changes touch the Chrome Web Store release flow and version bumps in manifest.json/package.json; closely related to this workflow replacement.

Poem

🐇 I nibbled exports, trimmed each little bit,
New workflow ready, packed up neat and fit,
Version hopped to one-point-one with cheer,
Tokens tucked away — release drawing near! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'ChromeWebStore Release & Bugfix' is partially related to the changeset. It mentions the main workflow change (Chrome Web Store release), but uses vague terminology ('Bugfix') that doesn't clearly describe the specific improvements made to the build script or configuration changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch C/Bugfix

Comment @coderabbitai help to get the list of available commands and usage tips.

@manuelgruber manuelgruber changed the title Allow only manual releases ChromeWebStore Release & Bugfix Feb 11, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the release workflow from an automated tag-triggered system to a manual-only workflow, providing better control over Chrome Web Store releases. It also fixes a build script issue with stripping inline export declarations and bumps the version to 1.1.0.

Changes:

  • Replaced tag-triggered release workflow with manual workflow_dispatch only
  • Added Chrome Web Store extension ID to package.json configuration
  • Improved build script to strip inline export statements (e.g., export function)

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
toolkit/scripts/build.js Enhanced export stripping to handle inline export declarations for content scripts
package.json Version bumped to 1.1.0 and added chromeWebStore.extensionId field
manifest.json Version bumped to 1.1.0 to match package.json
.github/workflows/release-chrome-store.yml Deleted old automated workflow that supported both tag and manual triggers
.github/workflows/Release-Chrome-Web-Store.yml New manual-only workflow with improved controls and renamed secrets

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +53 to +54
"chromeWebStore": {
"extensionId": "klbbkndjohchnidkbnjijdbggfadpppf"
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The extension ID format should be validated. Chrome Web Store extension IDs are 32-character strings using lowercase letters a-p (base32 encoding). The provided ID 'klbbkndjohchnidkbnjijdbggfadpppf' is 32 characters and uses only lowercase letters a-p, which appears valid. However, consider adding a validation check in the workflow to ensure the extension ID format is correct before attempting to upload.

Copilot uses AI. Check for mistakes.
Comment on lines +184 to +191
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.version.outputs.version }}
name: Clean Autofill ${{ steps.version.outputs.version }}
files: dist/Clean-Autofill.zip
generate_release_notes: true
make_latest: true
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The GitHub release is created unconditionally, even if Chrome Web Store publishing is skipped (when publish input is false) or fails. The old workflow only created GitHub releases for tag-triggered runs. Consider whether a GitHub release should be created when the extension is not published to the Chrome Web Store, or if the release creation should depend on successful publishing when publish=true.

Copilot uses AI. Check for mistakes.
publish:
description: 'Publish to Chrome Web Store after upload'
required: true
default: true
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default value for the publish input is set to true, meaning the extension will be automatically published to the Chrome Web Store unless explicitly disabled. Consider changing the default to false to require explicit confirmation for publishing, reducing the risk of accidental public releases. This is especially important for a manual-only workflow where the user should consciously decide whether to publish.

Copilot uses AI. Check for mistakes.
Comment on lines +93 to +95
CHROME_WEB_STORE_CLIENT_ID: ${{ secrets.CHROME_WEB_STORE_CLIENT_ID }}
CHROME_WEB_STORE_CLIENT_SECRET: ${{ secrets.CHROME_WEB_STORE_CLIENT_SECRET }}
CHROME_WEB_STORE_REFRESH_TOKEN: ${{ secrets.CHROME_WEB_STORE_REFRESH_TOKEN }}
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Breaking change: The secret names have been changed from the old workflow (CHROME_CLIENT_ID, CHROME_CLIENT_SECRET, CHROME_REFRESH_TOKEN) to new names with CHROME_WEB_STORE_ prefix. This will break existing deployments unless the GitHub repository secrets are renamed to match these new names. Consider documenting this breaking change in the PR description or migration guide, or maintain backward compatibility by checking both old and new secret names.

Copilot uses AI. Check for mistakes.

if [ "$UPLOAD_STATE" = "SUCCESS" ]; then
echo "Upload successful"
echo "access_token=$ACCESS_TOKEN" >> $GITHUB_OUTPUT
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security concern: The access token is being passed between steps via GITHUB_OUTPUT. While the token is masked at line 124 using ::add-mask::, GitHub Actions' masking may not fully protect values in step outputs, which could potentially expose the token in the workflow interface or logs. A more secure approach would be to obtain a fresh access token in the Publish step using the same OAuth credentials, rather than reusing the token from the Upload step. This eliminates the need to pass the sensitive token between steps entirely.

Suggested change
echo "access_token=$ACCESS_TOKEN" >> $GITHUB_OUTPUT

Copilot uses AI. Check for mistakes.
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.version.outputs.version }}
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow creates a GitHub release using only the version number as the tag (e.g., "1.1.0"). While this is valid, it deviates from the common convention of prefixing version tags with 'v' (e.g., "v1.1.0"). The old workflow used 'v' prefix for tags (as seen in the deleted file at line 214: git tag "v$NEW_VERSION"). Consider using "v${{ steps.version.outputs.version }}" to maintain consistency with common Git tagging practices and potentially with existing tags in the repository.

Suggested change
tag_name: ${{ steps.version.outputs.version }}
tag_name: v${{ steps.version.outputs.version }}

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.github/workflows/Release-Chrome-Web-Store.yml:
- Around line 196-201: The publish step currently only logs warnings on failure,
allowing the workflow to continue; update the conditional that checks STATUS to
make the job fail when publish did not succeed by adding an explicit non-zero
exit in the else branch. Locate the shell block that inspects the STATUS
variable (the if [ "$STATUS" = "OK" ]; then / elif [ "$STATUS" =
"PUBLISHED_WITH_FRICTION_WARNING" ]; then / else ... fi sequence) and change the
else branch to echo an error (or warning) and then run exit 1 so the workflow
fails; leave the OK and PUBLISHED_WITH_FRICTION_WARNING branches unchanged.
🧹 Nitpick comments (1)
.github/workflows/Release-Chrome-Web-Store.yml (1)

23-26: Pin Bun version for reproducible releases instead of using latest.

Using latest can introduce breaking changes across CI/release runs. Pin a version via a dedicated .bun-version file (create one in the repository root with just the version number, e.g., 1.x or latest tag if you want a fixed release channel).

Update both occurrences at lines 23-26 and 79-82 from bun-version: latest to bun-version-file: .bun-version. Alternatively, you could use bun-version-file: package.json if you want to couple Bun's version to your extension version, though a dedicated .bun-version file is cleaner.

Proposed change
      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
-          bun-version: latest
+          bun-version-file: .bun-version

@manuelgruber manuelgruber merged commit 72c36bf into main Feb 11, 2026
2 of 3 checks passed
@manuelgruber manuelgruber deleted the C/Bugfix branch February 11, 2026 19:50
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