-
-
Notifications
You must be signed in to change notification settings - Fork 302
[DO NOT MERGE]: unstable to hotfixes, Q1 major release #5750
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: hotfixes
Are you sure you want to change the base?
Changes from all commits
1caaeca
84145d2
b21a6f4
c4add77
57bb0cb
64e0548
4c99984
d831e0d
7bc2310
254877f
5e2b6d1
1ec4cb6
d0e98b1
b8e5720
7140688
256e2d8
afc7092
5b1cc28
a7d629b
6fb74cf
ade978b
eb3c5a3
ceacb29
6b9a271
f0387e3
311d6a0
fa86bf8
4a394de
64cce0f
ab9bd48
a0f3e79
94417df
266c1b0
0799417
8f5ddb3
af4223a
99ab4bb
6cbe9c4
929e49e
c3a369e
a8c5b55
db78166
1a3701d
e276410
661d675
d55f59a
5dc92e1
b3404d9
ebbf733
4f7569e
e033d2f
f0b08e3
8f60d97
3d9cae6
fe5ef92
327221d
26fa9ec
70321ae
97bdf41
3d240e5
d861343
6355010
13813dc
4f2a12a
53d2043
429975a
e01eee1
22478ad
4aebc0e
e54e72d
baac181
d6b9621
c270ce4
f2aa6e6
74341c4
22a5c2d
38a9805
c3d1cbe
2dd5003
e19fac7
f19d93c
568ae8c
d9b3f4d
60bd767
83efcdf
04d114c
362e4af
f8eac9e
83219f5
68f6102
4665226
3818aaa
90bdb6a
8339d18
1fba461
f17bbf6
f3bc749
dbc30f2
c7cf5ee
59a13aa
00b2506
082ed1b
677893f
48db1b7
b143bcd
740ea5d
1105aa9
cb656d2
279aa22
3525f8b
6bee301
eeb8d57
37147dd
1cb649a
3c6342c
b881d73
045277a
dfd820f
04095fa
3061264
93c3534
6f4929c
a08885e
42d8179
4a9a5d6
69c97ea
4b49376
46682a3
740dca2
6344d05
b57d722
627ecf9
c101d70
f45d9a6
ec6e003
0629ee8
231ea16
0a56046
4e339ff
d82337c
f436d3a
48b07ac
e27ae12
51b825d
6cb800e
23bafd7
2a37d75
bbeeea9
f44919b
86cf30f
5c162b9
bb5d337
b22272c
2720b83
23367c1
79cf4ea
d24fbd2
9353ee4
e6c4f53
9a73bf4
390208d
8badfd7
fab1b12
9a3f537
ebc4482
5e2f4f1
21cff99
dd7d197
d0d323a
16a9af8
49cf302
f287a3a
c82b8b4
45079ec
b3d0d8c
d6d60ea
d2e2f7d
157eb3d
80f8bcb
021c2f4
4c0bf11
d4f17a6
b003b78
ac06403
a3e678b
642cc26
23ae2e1
0bda8e4
0c4cde6
4cd99f6
c446796
85dcbc2
a2d376a
05ad687
df440a5
259f299
1df05b4
b515a2e
91bd36c
20e9985
4967d3e
e70b1f9
502b5ce
363d10d
fda8398
381380b
0b2a220
f9a2866
3ffe139
bc484fa
24a93eb
7f4634a
c4a8556
3a42a0e
177cd8c
ea58a1b
7c6bbf2
8eca885
1c55d3c
f3391be
6e426dc
e5631c8
29535ef
8bc7f56
0e9ce29
8ab2d66
31e489f
e0557ce
85bbbec
9b5e84b
99a0557
bed1c82
2a319ea
5fe5e55
1c6571b
e159cd7
d4184a4
732481c
0d90630
e1d7cd2
3745761
0fe74ca
d1d135e
45777b9
9dcef1e
e184621
96c01c1
c43f058
1da37b7
f18cdf8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| name: Send reply on a new contributor pull request | ||
| on: | ||
| pull_request_target: | ||
| types: [opened] | ||
| jobs: | ||
| call-workflow: | ||
| name: Call shared workflow | ||
| uses: learningequality/.github/.github/workflows/contributor-pr-reply.yml@main | ||
| secrets: | ||
| LE_BOT_APP_ID: ${{ secrets.LE_BOT_APP_ID }} | ||
| LE_BOT_PRIVATE_KEY: ${{ secrets.LE_BOT_PRIVATE_KEY }} | ||
| SLACK_COMMUNITY_NOTIFICATIONS_WEBHOOK_URL: ${{ secrets.SLACK_COMMUNITY_NOTIFICATIONS_WEBHOOK_URL }} | ||
| Original file line number | Diff line number | Diff line change | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,11 @@ | |||||||||||||||||||||||
| name: Handle pull request events | |||||||||||||||||||||||
| on: | |||||||||||||||||||||||
| pull_request_target: | |||||||||||||||||||||||
| types: [review_requested, labeled] | |||||||||||||||||||||||
| jobs: | |||||||||||||||||||||||
| call-workflow: | |||||||||||||||||||||||
| name: Call shared workflow | |||||||||||||||||||||||
| uses: learningequality/.github/.github/workflows/pull-request-target.yml@main | |||||||||||||||||||||||
| secrets: | |||||||||||||||||||||||
| LE_BOT_APP_ID: ${{ secrets.LE_BOT_APP_ID }} | |||||||||||||||||||||||
| LE_BOT_PRIVATE_KEY: ${{ secrets.LE_BOT_PRIVATE_KEY }} | |||||||||||||||||||||||
|
Comment on lines
+7
to
+11
Check warningCode scanning / CodeQL Workflow does not contain permissions Medium
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
Copilot AutofixAI about 1 month ago In general, the fix is to explicitly declare a Concretely, in permissions:
contents: readbetween line 1 (
Suggested changeset
1
.github/workflows/call-pull-request-target.yml
Copilot is powered by AI and may make mistakes. Always verify output.
Refresh and try again.
|
|||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,15 @@ | ||
| name: Update community pull requests spreadsheet | ||
| on: | ||
| pull_request_target: | ||
| types: [assigned,unassigned,opened,closed,reopened] | ||
| types: [assigned, unassigned, opened, closed, reopened, edited, review_requested, review_request_removed] | ||
|
|
||
| jobs: | ||
| call-update-spreadsheet: | ||
| call-workflow: | ||
| name: Call shared workflow | ||
| uses: learningequality/.github/.github/workflows/update-pr-spreadsheet.yml@main | ||
| secrets: | ||
| LE_BOT_APP_ID: ${{ secrets.LE_BOT_APP_ID }} | ||
| LE_BOT_PRIVATE_KEY: ${{ secrets.LE_BOT_PRIVATE_KEY }} | ||
| CONTRIBUTIONS_SPREADSHEET_ID: ${{ secrets.CONTRIBUTIONS_SPREADSHEET_ID }} | ||
| CONTRIBUTIONS_SHEET_NAME: ${{ secrets.CONTRIBUTIONS_SHEET_NAME }} | ||
| GH_UPLOADER_GCP_SA_CREDENTIALS: ${{ secrets.GH_UPLOADER_GCP_SA_CREDENTIALS }} | ||
Check warningCode scanning / CodeQL Workflow does not contain permissions Medium
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
|
||
| Original file line number | Diff line number | Diff line change | |||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,87 @@ | |||||||||||||||||||||||||||||||||||
| name: Download translations from Crowdin | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| on: | |||||||||||||||||||||||||||||||||||
| workflow_dispatch: | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| jobs: | |||||||||||||||||||||||||||||||||||
| download: | |||||||||||||||||||||||||||||||||||
| name: Download translations and update files | |||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | |||||||||||||||||||||||||||||||||||
| steps: | |||||||||||||||||||||||||||||||||||
| - name: Checkout repository | |||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v6 | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Install uv | |||||||||||||||||||||||||||||||||||
| uses: astral-sh/setup-uv@v7 | |||||||||||||||||||||||||||||||||||
| with: | |||||||||||||||||||||||||||||||||||
| python-version: '3.10' | |||||||||||||||||||||||||||||||||||
| activate-environment: "true" | |||||||||||||||||||||||||||||||||||
| enable-cache: "true" | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Install Python dependencies | |||||||||||||||||||||||||||||||||||
| run: uv pip sync requirements.txt | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Use pnpm | |||||||||||||||||||||||||||||||||||
| uses: pnpm/action-setup@v5 | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Use Node.js | |||||||||||||||||||||||||||||||||||
| uses: actions/setup-node@v6 | |||||||||||||||||||||||||||||||||||
| with: | |||||||||||||||||||||||||||||||||||
| node-version: '20.x' | |||||||||||||||||||||||||||||||||||
| cache: 'pnpm' | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Setup Java for crowdin-cli | |||||||||||||||||||||||||||||||||||
| uses: actions/setup-java@v5 | |||||||||||||||||||||||||||||||||||
| with: | |||||||||||||||||||||||||||||||||||
| distribution: 'temurin' | |||||||||||||||||||||||||||||||||||
| java-version: '17' | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Install gettext | |||||||||||||||||||||||||||||||||||
| run: sudo apt-get update && sudo apt-get install -y gettext | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Install JavaScript dependencies | |||||||||||||||||||||||||||||||||||
| run: pnpm install --frozen-lockfile | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Download translations | |||||||||||||||||||||||||||||||||||
| env: | |||||||||||||||||||||||||||||||||||
| CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_API_KEY }} | |||||||||||||||||||||||||||||||||||
| run: make i18n-download | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Generate App Token | |||||||||||||||||||||||||||||||||||
| id: generate-token | |||||||||||||||||||||||||||||||||||
| uses: actions/create-github-app-token@v3 | |||||||||||||||||||||||||||||||||||
| with: | |||||||||||||||||||||||||||||||||||
| app-id: ${{ secrets.LE_BOT_APP_ID }} | |||||||||||||||||||||||||||||||||||
| private-key: ${{ secrets.LE_BOT_PRIVATE_KEY }} | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| - name: Create Pull Request | |||||||||||||||||||||||||||||||||||
| uses: peter-evans/create-pull-request@v8 | |||||||||||||||||||||||||||||||||||
| with: | |||||||||||||||||||||||||||||||||||
| token: ${{ steps.generate-token.outputs.token }} | |||||||||||||||||||||||||||||||||||
| commit-message: | | |||||||||||||||||||||||||||||||||||
| Update translations from Crowdin | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| This includes: | |||||||||||||||||||||||||||||||||||
| - Updated translation files (.po and .json) | |||||||||||||||||||||||||||||||||||
| - Compiled Django messages (.mo files) | |||||||||||||||||||||||||||||||||||
| - Updated frontend i18n files | |||||||||||||||||||||||||||||||||||
| branch: i18n-update-${{ github.ref_name }} | |||||||||||||||||||||||||||||||||||
| base: ${{ github.ref_name }} | |||||||||||||||||||||||||||||||||||
| delete-branch: true | |||||||||||||||||||||||||||||||||||
| title: 'Update translations from Crowdin for ${{ github.ref_name }}' | |||||||||||||||||||||||||||||||||||
| body: | | |||||||||||||||||||||||||||||||||||
| ## Summary of changes | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| This PR updates translations downloaded from Crowdin. | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| ### Changes included: | |||||||||||||||||||||||||||||||||||
| - Updated translation files (`.po` and `.json`) | |||||||||||||||||||||||||||||||||||
| - Compiled Django messages (`.mo` files) | |||||||||||||||||||||||||||||||||||
| - Updated frontend i18n files | |||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| ### Testing checklist: | |||||||||||||||||||||||||||||||||||
| - [ ] Verify that translations are not obviously empty or untranslated in the message files | |||||||||||||||||||||||||||||||||||
| - [ ] Switch to a few different languages and navigate the app | |||||||||||||||||||||||||||||||||||
| labels: | | |||||||||||||||||||||||||||||||||||
| i18n | |||||||||||||||||||||||||||||||||||
| TAG: user strings | |||||||||||||||||||||||||||||||||||
|
Comment on lines
+8
to
+87
Check warningCode scanning / CodeQL Workflow does not contain permissions Medium
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
Copilot AutofixAI about 21 hours ago Add an explicit
Placing this at the top-level applies to the existing
Suggested changeset
1
.github/workflows/i18n-download.yml
Copilot is powered by AI and may make mistakes. Always verify output.
Refresh and try again.
|
|||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,50 @@ | ||||||||||||||||||||||||||||||||
| name: Upload translations to Crowdin | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||
| workflow_dispatch: | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||
| upload: | ||||||||||||||||||||||||||||||||
| name: Extract and upload strings to Crowdin | ||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||
| - name: Checkout repository | ||||||||||||||||||||||||||||||||
| uses: actions/checkout@v6 | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Install uv | ||||||||||||||||||||||||||||||||
| uses: astral-sh/setup-uv@v7 | ||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||
| python-version: '3.10' | ||||||||||||||||||||||||||||||||
| activate-environment: "true" | ||||||||||||||||||||||||||||||||
| enable-cache: "true" | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Install Python dependencies | ||||||||||||||||||||||||||||||||
| run: uv pip sync requirements.txt | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Use pnpm | ||||||||||||||||||||||||||||||||
| uses: pnpm/action-setup@v5 | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Use Node.js | ||||||||||||||||||||||||||||||||
| uses: actions/setup-node@v6 | ||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||
| node-version: '20.x' | ||||||||||||||||||||||||||||||||
| cache: 'pnpm' | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Setup Java for crowdin-cli | ||||||||||||||||||||||||||||||||
| uses: actions/setup-java@v5 | ||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||
| distribution: 'temurin' | ||||||||||||||||||||||||||||||||
| java-version: '17' | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Install gettext | ||||||||||||||||||||||||||||||||
| run: sudo apt-get update && sudo apt-get install -y gettext | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Install JavaScript dependencies | ||||||||||||||||||||||||||||||||
| run: pnpm install --frozen-lockfile | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| - name: Extract and upload strings to Crowdin | ||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||
| CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_API_KEY }} | ||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||
| make i18n-upload | ||||||||||||||||||||||||||||||||
| make i18n-pretranslate-approve-all | ||||||||||||||||||||||||||||||||
|
Comment on lines
+8
to
+50
Check warningCode scanning / CodeQL Workflow does not contain permissions Medium
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
Copilot AutofixAI about 21 hours ago Add an explicit In
No additional imports, methods, or definitions are needed (YAML workflow config only).
Suggested changeset
1
.github/workflows/i18n-upload.yml
Copilot is powered by AI and may make mistakes. Always verify output.
Refresh and try again.
|
||||||||||||||||||||||||||||||||
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium
Copilot Autofix
AI about 1 month ago
To fix this, explicitly declare
permissionsfor the job (or globally) so theGITHUB_TOKENis limited to the least privileges needed. Since this workflow only delegates to a reusable workflow and does not itself perform any repository writes, a safe, minimal default is read-only access to repository contents. That both satisfies CodeQL and avoids unintentionally granting write access via inherited defaults.The best fix, without changing existing functionality, is to add a
permissionsblock under thecall-workflowjob, e.g.:Placing it at the job level ensures the restriction applies specifically to this job, and avoids assumptions about other jobs (there are none currently, but this keeps the change tightly scoped). No imports or additional definitions are needed; this is a pure YAML configuration change within
.github/workflows/call-contributor-pr-reply.yml. Insert the newpermissionsblock betweencall-workflow:andname:with correct indentation.