Skip to content

Commit db4b7af

Browse files
committed
Merge remote-tracking branch 'origin/main' into matt/be-4815-lint-scope
# Conflicts: # eslint.config.ts
2 parents 23aa3a8 + 2026348 commit db4b7af

925 files changed

Lines changed: 14076 additions & 8021 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coderabbit.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ reviews:
55
profile: assertive
66
high_level_summary: false
77
request_changes_workflow: true
8+
# Without this, a review that never happened (rate limit, internal error)
9+
# still reports green, so an unreviewed PR is indistinguishable from a
10+
# cleanly reviewed one.
11+
fail_commit_status: true
812
auto_review:
913
drafts: true
1014
ignore_title_keywords:

.github/actions/find-workflow-run/action.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ runs:
2929
steps:
3030
- name: Find workflow run
3131
id: find
32-
uses: actions/github-script@v8
32+
uses: actions/github-script@v9
3333
env:
3434
WORKFLOW_ID: ${{ inputs.workflow-id }}
3535
HEAD_SHA: ${{ inputs.head-sha }}

.github/actions/resolve-pr-from-workflow-run/action.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ runs:
3232
steps:
3333
- name: Resolve PR
3434
id: resolve
35-
uses: actions/github-script@v8
35+
uses: actions/github-script@v9
3636
with:
3737
github-token: ${{ inputs.token }}
3838
script: |

.github/actions/upsert-comment-section/action.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ inputs:
2626
runs:
2727
using: composite
2828
steps:
29-
- uses: actions/github-script@v8
29+
- uses: actions/github-script@v9
3030
env:
3131
INPUT_PR_NUMBER: ${{ inputs.pr-number }}
3232
INPUT_SECTION_NAME: ${{ inputs.section-name }}

.github/workflows/ci-lint-format.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ jobs:
7878
- name: Comment on PR about auto-fix
7979
if: steps.verify-changed-files.outputs.changed == 'true' && github.event.pull_request.head.repo.full_name == github.repository
8080
continue-on-error: true
81-
uses: actions/github-script@v8
81+
uses: actions/github-script@v9
8282
with:
8383
script: |
8484
github.rest.issues.createComment({

.github/workflows/ci-tests-e2e-coverage.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ jobs:
116116

117117
- name: Upload E2E coverage to Codecov
118118
if: steps.coverage-shards.outputs.has-coverage == 'true'
119-
uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3
119+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
120120
with:
121121
files: coverage/playwright/coverage.lcov
122122
flags: e2e

.github/workflows/ci-tests-unit.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949

5050
- name: Upload coverage to Codecov
5151
if: always()
52-
uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3
52+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
5353
with:
5454
files: coverage/lcov.info
5555
flags: unit

.github/workflows/ci-vercel-website-preview.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363

6464
- name: Fetch head commit metadata
6565
id: head-commit
66-
uses: actions/github-script@v8
66+
uses: actions/github-script@v9
6767
with:
6868
script: |
6969
const { data } = await github.rest.repos.getCommit({

.github/workflows/ci-website-e2e.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ jobs:
105105
- name: Categorize failures
106106
id: failures
107107
if: always() && !cancelled() && steps.tests.outcome != 'success'
108-
uses: actions/github-script@v8
108+
uses: actions/github-script@v9
109109
with:
110110
script: |
111111
const fs = require('fs')
@@ -136,7 +136,7 @@ jobs:
136136
137137
- name: Write job summary
138138
if: always() && !cancelled()
139-
uses: actions/github-script@v8
139+
uses: actions/github-script@v9
140140
env:
141141
TEST_OUTCOME: ${{ steps.tests.outcome }}
142142
REPORT_URL: ${{ steps.deploy.outputs.url }}
@@ -221,7 +221,7 @@ jobs:
221221

222222
- name: Build e2e section content
223223
id: content
224-
uses: actions/github-script@v8
224+
uses: actions/github-script@v9
225225
env:
226226
TEST_OUTCOME: ${{ needs.website-e2e.outputs.test-outcome }}
227227
REPORT_URL: ${{ needs.website-e2e.outputs.report-url }}
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Description: Cadenced patch bump for active cloud release branch(es).
2+
#
3+
# Why this exists:
4+
# New localization keys land on `main` and get backported to `cloud/x.y`, but
5+
# `i18n-update-core.yaml` only runs for version-bump PRs, and nothing was
6+
# driving version bumps on the cloud line on a cadence. A manual bump on the
7+
# cloud branch (e.g. #14066) was inert because it did not open a version-bump
8+
# PR that i18n would pick up. This workflow closes that gap: on a cadence it
9+
# dispatches the existing `release-version-bump.yaml` against the active cloud
10+
# branch, which opens a `version-bump-*` PR. `i18n-update-core.yaml` (now
11+
# allowed to run for `cloud/**` PRs) then regenerates translations for any new
12+
# backported keys and commits them INTO that same PR, so the patch bump and
13+
# the regenerated locale JSON merge to the cloud branch together as one
14+
# trackable "this was deployed" commit. lobe-i18n only translates missing
15+
# keys, so already-translated keys are never re-translated on later runs.
16+
#
17+
# Decision reference: #frontend-releases (Christian Byrne + Austin Mroz).
18+
# Companion change: `i18n-update-core.yaml` triggers on `cloud/**` PRs.
19+
20+
name: 'Cloud Release: Patch Bump + i18n Regen'
21+
22+
on:
23+
workflow_dispatch:
24+
inputs:
25+
branch:
26+
description: 'Cloud branch to bump (blank = auto-detect latest cloud/x.y)'
27+
required: false
28+
default: ''
29+
type: string
30+
force:
31+
description: 'Bump even if no new commits since the last version bump'
32+
required: false
33+
default: false
34+
type: boolean
35+
schedule:
36+
# Daily at 07:00 UTC. Offset from the main nightly bump (00:00 UTC) so the
37+
# two do not contend. Aligns roughly with the daily cloud backport deploys.
38+
- cron: '0 7 * * *'
39+
40+
concurrency:
41+
group: cloud-release-version-bump
42+
cancel-in-progress: true
43+
44+
permissions:
45+
contents: read
46+
47+
jobs:
48+
bump-cloud:
49+
if: github.repository == 'Comfy-Org/ComfyUI_frontend'
50+
runs-on: ubuntu-latest
51+
env:
52+
# PAT so the dispatched release-version-bump run (and the PR it opens)
53+
# actually triggers downstream workflows; GITHUB_TOKEN-triggered events do
54+
# not start new workflow runs.
55+
GH_TOKEN: ${{ secrets.PR_GH_TOKEN }}
56+
steps:
57+
- name: Checkout repository
58+
uses: actions/checkout@v7
59+
with:
60+
fetch-depth: 0
61+
persist-credentials: false
62+
63+
- name: Fetch cloud branches
64+
run: git fetch --no-tags origin '+refs/heads/cloud/*:refs/remotes/origin/cloud/*'
65+
66+
- name: Resolve target branch(es)
67+
id: resolve
68+
env:
69+
INPUT_BRANCH: ${{ github.event.inputs.branch }}
70+
run: |
71+
set -euo pipefail
72+
if [[ -n "${INPUT_BRANCH:-}" ]]; then
73+
# Explicit override from workflow_dispatch.
74+
if ! [[ "$INPUT_BRANCH" =~ ^cloud/[0-9]+\.[0-9]+$ ]]; then
75+
echo "::error::Branch must match cloud/<major>.<minor>"
76+
exit 1
77+
fi
78+
if ! git show-ref --verify --quiet "refs/remotes/origin/${INPUT_BRANCH}"; then
79+
echo "::error::Branch '${INPUT_BRANCH}' not found on origin"
80+
exit 1
81+
fi
82+
BRANCHES="$INPUT_BRANCH"
83+
else
84+
# Auto-detect the newest cloud/x.y line. Older cloud branches are
85+
# EOL once a newer minor is cut, so only the latest is bumped.
86+
BRANCHES=$(git for-each-ref --format='%(refname:short)' 'refs/remotes/origin/cloud/*' \
87+
| sed -n 's#^origin/\(cloud/[0-9]\+\.[0-9]\+\)$#\1#p' \
88+
| sort -t/ -k2 -V \
89+
| tail -n1)
90+
fi
91+
if [[ -z "$BRANCHES" ]]; then
92+
echo "::error::No active cloud/x.y branch found"
93+
exit 1
94+
fi
95+
echo "Resolved cloud branch(es): $BRANCHES"
96+
{
97+
echo 'branches<<EOF'
98+
echo "$BRANCHES"
99+
echo 'EOF'
100+
} >> "$GITHUB_OUTPUT"
101+
102+
- name: Dispatch patch bump for each active cloud branch
103+
env:
104+
BRANCHES: ${{ steps.resolve.outputs.branches }}
105+
FORCE: ${{ github.event.inputs.force }}
106+
run: |
107+
set -euo pipefail
108+
while IFS= read -r BRANCH; do
109+
[[ -z "$BRANCH" ]] && continue
110+
111+
# Idempotency gate A: never stack a second bump PR on a branch that
112+
# already has one open and awaiting merge.
113+
OPEN=$(gh pr list --repo "$GITHUB_REPOSITORY" --base "$BRANCH" \
114+
--state open --limit 1000 --json headRefName \
115+
--jq '[.[] | select(.headRefName | startswith("version-bump-"))] | length')
116+
if [[ "$OPEN" -gt 0 ]]; then
117+
echo "⏭️ $BRANCH: a version-bump PR is already open; skipping."
118+
continue
119+
fi
120+
121+
# Idempotency gate B: skip when nothing merged since the last bump,
122+
# so quiet days do not churn empty patch bumps. `force` overrides.
123+
# If the last bump commit can't be found, proceed (fail open so we
124+
# never silently stop regenerating translations).
125+
LAST_BUMP=$(git log -1 --format='%H' -G'"version":' "origin/$BRANCH" -- package.json || true)
126+
if [[ "${FORCE:-false}" != "true" && -n "$LAST_BUMP" ]]; then
127+
NEW=$(git rev-list --count "$LAST_BUMP..origin/$BRANCH")
128+
if [[ "$NEW" -eq 0 ]]; then
129+
echo "⏭️ $BRANCH: no new commits since last bump; skipping."
130+
continue
131+
fi
132+
echo "ℹ️ $BRANCH: $NEW commit(s) since last bump."
133+
fi
134+
135+
# Dispatch the main definition of release-version-bump (it checks out
136+
# and bumps the `branch` input); do NOT run the cloud branch's older
137+
# copy, which predates the `branch` input.
138+
echo "🚀 $BRANCH: dispatching patch bump."
139+
gh workflow run release-version-bump.yaml \
140+
--repo "$GITHUB_REPOSITORY" \
141+
--ref main \
142+
-f version_type=patch \
143+
-f branch="$BRANCH"
144+
done <<< "$BRANCHES"

0 commit comments

Comments
 (0)