chore(ci): bump actions to node24, add Chrome token script - #139
Merged
Conversation
…rkflow Three unrelated pieces of CI maintenance. Actions bumped off the deprecated node20 runtime: actions/checkout v4 -> v7, actions/setup-node v4 -> v7, pnpm/action-setup v4 -> v6. All three latest majors run on node24. The only behavioural change that could affect us is setup-node v5 auto-caching when package.json declares a `packageManager` field; ours does not, so the explicit `cache: "pnpm"` still governs. scripts/chrome-refresh-token.ts mints a Chrome Web Store refresh token. `wxt submit init` is meant to do this but still requests the out-of-band redirect Google blocked in 2022, and omits access_type=offline, without which Google returns no refresh token at all. The script uses the loopback redirect that replaced OOB. It can be deleted once wxt fixes this upstream. back-merge.yaml automates the `-s ours` reconciliation after each release. It needs a BACKMERGE_TOKEN secret and is inert until that exists. Also dropped the `paths:` filters from the unit and e2e workflows. A workflow skipped by a path filter never reports a status, so a required check would sit on "Expected" and block the PR forever. They have to run unconditionally before they can safely be made required.
Superseded by allowing merge commits for dev -> main. A merge commit keeps dev's tip as a parent of main, so the branches never diverge and there is nothing to reconcile. The workflow was automating a repair for damage the squash-only policy was causing; removing the cause removes the need.
3 tasks
3 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.
Summary
Three pieces of CI maintenance: getting off the deprecated Node 20 action runtime, working around the broken
wxt submit init, and automating the release back-merge.Changes
Actions moved off the deprecated node20 runtime
GitHub is forcing node20 actions onto node24 and warning on every run. Bumped to the latest majors, all of which declare
using: node24:actions/checkoutactions/setup-nodepnpm/action-setupBreaking changes were checked and none affect this repo.
checkoutv5 only raises the minimum runner version, which GitHub-hostedubuntu-latestalready exceeds.setup-nodev5 adds automatic caching whenpackage.jsondeclares apackageManagerfield — ours does not, so the explicitcache: "pnpm"still governs.pnpm/action-setupv5/v6 are purely the node24 move.scripts/chrome-refresh-token.tsMints a Chrome Web Store refresh token.
wxt submit initis supposed to do this, but it is currently unusable:redirect_uri=urn:ietf:wg:oauth:2.0:oob, the out-of-band flow Google blocked in 2022 — it fails withError 400: invalid_requestaccess_type=offline, without which Google returns only an access token and no refresh token at allThis is what broke the v1.8.0 Chrome publish (
invalid_grant). The script uses the loopback redirect that replaced OOB, and requires an OAuth client of type Desktop.This script can be deleted once
wxt submit initis fixed upstream — noted in the file header.Branching model:
dev->mainbecomes a merge commitNot a file in this PR, but the reason
back-merge.yamlis absent from it.A squash merge writes a new commit to
mainwith no parent link todev, so Git's merge base freezes and the next release re-proposes every commitmainalready has. That is what produced the conflicts before v1.8.0, and the-s oursreconciliation that followed.A merge commit keeps
dev's tip as a parent, somerge-base(main, dev)advances on every release and the branches cannot drift. Repo settings changed accordingly:allow_merge_commit: truerequired_linear_history: falseonmainSquash stays the rule for feature ->
dev(one tidy commit per feature). Merge commit is used only fordev->main, the one merge that must preserve ancestry.This removes the need for a back-merge workflow and a
BACKMERGE_TOKENPAT entirely, rather than automating the repair.Removed
paths:filters from unit and e2eA workflow skipped by a path filter never reports a status, so a required check would sit on "Expected" and block the PR permanently. These have to run unconditionally before they can safely be made required. Cost is ~30s and ~45s per PR.
This same trap already exists on
css-selectors, which is required and path-filtered — see below.Testing
access_type=offlineandprompt=consent, loopback redirect, clean error when credentials are absentpnpm check,pnpm format:checkall passFollow-up (not in this PR)
unitande2eto required checks onmainanddev— safe only after this PR merges and removes their path filters.css-selectorsis required and path-filtered, so a docs-only or workflow-only PR tomainis currently unmergeable: a skipped workflow never reports a status, so the check sits on "Expected" forever. It is also a live canary against royalroad.com, so an outage there blocks merging. Worth moving it to a nightlyschedule:and dropping it from the required set — it is monitoring, not a merge gate.dev->mainrelease, now that the setting allows it.