Skip to content

Commit ea22c28

Browse files
committed
Merge remote-tracking branch 'upstream/main' into JKobrynski/fix/56507-inconsistent-workspace-subtitle
2 parents a4f6257 + eb89fbc commit ea22c28

File tree

836 files changed

+18831
-11527
lines changed

Some content is hidden

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

836 files changed

+18831
-11527
lines changed

.eslintrc.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,14 @@ module.exports = {
150150
{
151151
selector: ['variable', 'property'],
152152
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
153+
// This filter excludes variables and properties that start with "private_" to make them valid.
154+
//
155+
// Examples:
156+
// - "private_a" → valid
157+
// - "private_test" → valid
158+
// - "private_" → not valid
153159
filter: {
154-
regex: '^private_[a-z][a-zA-Z0-9]+$',
160+
regex: '^private_[a-z][a-zA-Z0-9]*$',
155161
match: false,
156162
},
157163
},
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: Add or remove expert contributor from the team
3+
about: In order to get access to the HybridApp setup, expert contributors need to be added to our Github Organization. They also need to be added to the necessary rooms in Slack
4+
title: "Expert Contributor Change Request - <insert-name>"
5+
labels: Daily, Task, ring0
6+
---
7+
8+
### Expert Contributor Details
9+
10+
- Name:
11+
- Github handle (or Github profile link):
12+
- Email:
13+
- Slack post in your team channel with this request for visibility:
14+
- Team (check your team):
15+
- [ ] Callstack
16+
- [ ] Margelo
17+
- [ ] Software Mansion
18+
19+
Do you want to remove this developer from the team? YES/NO
20+
21+
### Tasks for ring0 assignee
22+
23+
- [ ] Add to the appropriate GitHub child team of [external-expert-contributors](https://github.com/orgs/Expensify/teams/external-expert-contributors/teams) (each agency must have its own child team)
24+
- [ ] Add to Slack channels using Slack Connect:
25+
- [ ] [#quality](https://expensify.enterprise.slack.com/archives/C05LX9D6E07)
26+
- [ ] [#convert](https://expensify.enterprise.slack.com/archives/C07HPDRELLD)
27+
- [ ] [#retain](https://expensify.enterprise.slack.com/archives/C07NZ8B1VTQ)
28+
- [ ] [#migrate](https://expensify.enterprise.slack.com/archives/C07NMDKEFMH)
29+
- [ ] [#expense](https://expensify.enterprise.slack.com/archives/C06ML6X0W9L)
30+
- [ ] [#expensify-bugs](https://expensify.enterprise.slack.com/archives/C049HHMV9SM)
31+
- [ ] [#expensify-open-source](https://expensify.enterprise.slack.com/archives/C01GTK53T8Q)
32+
- [ ] [#expert-contributors](https://expensify.enterprise.slack.com/archives/C08CZDJFJ77)

.github/actionlint.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,13 @@ self-hosted-runner:
44
- ubuntu-latest-xl
55
- macos-15-large
66
- macos-15-xlarge
7-
- ubuntu-latest-reassure-tests
87
- macos-12
8+
- ubuntu-20.04-v4
9+
10+
paths:
11+
'**/*':
12+
ignore:
13+
# This is meant to be a temporary workaround for a bug in actionslint. Upstream:
14+
# - issue: https://github.com/rhysd/actionlint/issues/511
15+
# - PR: https://github.com/rhysd/actionlint/pull/513
16+
- '"env" is not allowed in "runs" section because .* is a Composite action.*'

.github/actions/composite/setupGitForOSBotify/action.yml

Lines changed: 0 additions & 31 deletions
This file was deleted.

.github/actions/composite/setupGitForOSBotifyApp/action.yml

Lines changed: 0 additions & 58 deletions
This file was deleted.

.github/actions/composite/setupNode/action.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ inputs:
66
description: "Indicates if node is set up for hybrid app"
77
required: false
88
default: 'false'
9+
IS_DESKTOP_BUILD:
10+
description: "Indicates if node is set up for desktop app"
11+
required: false
12+
default: 'false'
913

1014
outputs:
1115
cache-hit:
@@ -41,6 +45,7 @@ runs:
4145
key: ${{ runner.os }}-node-modules-${{ hashFiles('Mobile-Expensify/package-lock.json', 'Mobile-Expensify/patches/**') }}
4246

4347
- id: cache-desktop-node-modules
48+
if: inputs.IS_DESKTOP_BUILD == 'true'
4449
uses: actions/cache@v4
4550
with:
4651
path: desktop/node_modules
@@ -60,7 +65,7 @@ runs:
6065
command: npm ci
6166

6267
- name: Install node packages for desktop submodule
63-
if: steps.cache-desktop-node-modules.outputs.cache-hit != 'true'
68+
if: inputs.IS_DESKTOP_BUILD == 'true' && steps.cache-desktop-node-modules.outputs.cache-hit != 'true'
6469
uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847
6570
with:
6671
timeout_minutes: 30
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Validate actor
2+
description: Validate the the current actor has the permissions they need. By default, it validates that the user has write permissions.
3+
4+
inputs:
5+
# If `REQUIRE_APP_DEPLOYER` is true, we check that they're an app deployer. If not, we just check that they have write access.
6+
REQUIRE_APP_DEPLOYER:
7+
description: Should this action require the actor to be an app deployer?
8+
required: false
9+
default: 'true'
10+
OS_BOTIFY_TOKEN:
11+
description: OSBotify token. Needed to access certain API endpoints the regular github.token can't
12+
required: true
13+
14+
runs:
15+
using: composite
16+
steps:
17+
- name: Get user permissions
18+
if: ${{ !fromJSON(inputs.REQUIRE_APP_DEPLOYER) }}
19+
id: getUserPermissions
20+
shell: bash
21+
run: |
22+
PERMISSION=$(gh api /repos/${{ github.repository }}/collaborators/${{ github.actor }}/permission | jq -r '.permission')
23+
if [[ "$PERMISSION" == 'write' || "$PERMISSION" == 'admin' ]]; then
24+
echo "::notice::✅ Actor ${{ github.actor }} has write permission"
25+
else
26+
echo "::error::❌ Actor ${{ github.actor }} does not have write permission"
27+
exit 1
28+
fi
29+
env:
30+
GITHUB_TOKEN: ${{ inputs.OS_BOTIFY_TOKEN }}
31+
32+
- name: Check if user is deployer
33+
id: isUserDeployer
34+
if: fromJSON(inputs.REQUIRE_APP_DEPLOYER)
35+
shell: bash
36+
run: |
37+
if [[ "${{ github.actor }}" == "OSBotify" || "${{ github.actor }}" == "os-botify[bot]" ]] || \
38+
gh api /orgs/Expensify/teams/mobile-deployers/memberships/${{ github.actor }} --silent; then
39+
echo "::notice::✅ Actor ${{ github.actor }} is an app deployer"
40+
else
41+
echo "::error::❌ Actor ${{ github.actor }} is not an app deployer"
42+
exit 1
43+
fi
44+
env:
45+
GITHUB_TOKEN: ${{ inputs.OS_BOTIFY_TOKEN }}

.github/actions/javascript/authorChecklist/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17242,8 +17242,8 @@ exports["default"] = newComponentCategory;
1724217242
Object.defineProperty(exports, "__esModule", ({ value: true }));
1724317243
const GITHUB_BASE_URL_REGEX = new RegExp('https?://(?:github\\.com|api\\.github\\.com)');
1724417244
const GIT_CONST = {
17245-
GITHUB_OWNER: 'Expensify',
17246-
APP_REPO: 'App',
17245+
GITHUB_OWNER: process.env.GITHUB_REPOSITORY_OWNER,
17246+
APP_REPO: process.env.GITHUB_REPOSITORY.split('/').at(1) ?? '',
1724717247
};
1724817248
const CONST = {
1724917249
...GIT_CONST,
@@ -17532,7 +17532,7 @@ class GithubUtils {
1753217532
const sortedDeployBlockers = [...new Set(deployBlockers)].sort((a, b) => GithubUtils.getIssueOrPullRequestNumberFromURL(a) - GithubUtils.getIssueOrPullRequestNumberFromURL(b));
1753317533
// Tag version and comparison URL
1753417534
// eslint-disable-next-line max-len
17535-
let issueBody = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n`;
17535+
let issueBody = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/${process.env.GITHUB_REPOSITORY}/compare/production...staging\r\n`;
1753617536
// PR list
1753717537
if (sortedPRList.length > 0) {
1753817538
issueBody += '\r\n**This release contains changes from the following pull requests:**\r\n';
@@ -17570,9 +17570,9 @@ class GithubUtils {
1757017570
// eslint-disable-next-line max-len
1757117571
issueBody += `\r\n- [${isTimingDashboardChecked ? 'x' : ' '}] I checked the [App Timing Dashboard](https://graphs.expensify.com/grafana/d/yj2EobAGz/app-timing?orgId=1) and verified this release does not cause a noticeable performance regression.`;
1757217572
// eslint-disable-next-line max-len
17573-
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-chat/crashlytics/app/android:com.expensify.chat/issues?state=open&time=last-seven-days&tag=all) for **this release version** and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
17573+
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-mobile-app/crashlytics/app/ios:com.expensify.expensifylite/issues?state=open&time=last-seven-days&types=crash&tag=all&sort=eventCount) for **this release version** and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
1757417574
// eslint-disable-next-line max-len
17575-
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-chat/crashlytics/app/android:com.expensify.chat/issues?state=open&time=last-seven-days&tag=all) for **the previous release version** and verified that the release did not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
17575+
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-mobile-app/crashlytics/app/android:org.me.mobiexpensifyg/issues?state=open&time=last-seven-days&types=crash&tag=all&sort=eventCount) for **the previous release version** and verified that the release did not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
1757617576
// eslint-disable-next-line max-len
1757717577
issueBody += `\r\n- [${isGHStatusChecked ? 'x' : ' '}] I checked [GitHub Status](https://www.githubstatus.com/) and verified there is no reported incident with Actions.`;
1757817578
issueBody += '\r\n\r\ncc @Expensify/applauseleads\r\n';

.github/actions/javascript/awaitStagingDeploys/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12246,8 +12246,8 @@ exports.getStringInput = getStringInput;
1224612246
Object.defineProperty(exports, "__esModule", ({ value: true }));
1224712247
const GITHUB_BASE_URL_REGEX = new RegExp('https?://(?:github\\.com|api\\.github\\.com)');
1224812248
const GIT_CONST = {
12249-
GITHUB_OWNER: 'Expensify',
12250-
APP_REPO: 'App',
12249+
GITHUB_OWNER: process.env.GITHUB_REPOSITORY_OWNER,
12250+
APP_REPO: process.env.GITHUB_REPOSITORY.split('/').at(1) ?? '',
1225112251
};
1225212252
const CONST = {
1225312253
...GIT_CONST,
@@ -12536,7 +12536,7 @@ class GithubUtils {
1253612536
const sortedDeployBlockers = [...new Set(deployBlockers)].sort((a, b) => GithubUtils.getIssueOrPullRequestNumberFromURL(a) - GithubUtils.getIssueOrPullRequestNumberFromURL(b));
1253712537
// Tag version and comparison URL
1253812538
// eslint-disable-next-line max-len
12539-
let issueBody = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n`;
12539+
let issueBody = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/${process.env.GITHUB_REPOSITORY}/compare/production...staging\r\n`;
1254012540
// PR list
1254112541
if (sortedPRList.length > 0) {
1254212542
issueBody += '\r\n**This release contains changes from the following pull requests:**\r\n';
@@ -12574,9 +12574,9 @@ class GithubUtils {
1257412574
// eslint-disable-next-line max-len
1257512575
issueBody += `\r\n- [${isTimingDashboardChecked ? 'x' : ' '}] I checked the [App Timing Dashboard](https://graphs.expensify.com/grafana/d/yj2EobAGz/app-timing?orgId=1) and verified this release does not cause a noticeable performance regression.`;
1257612576
// eslint-disable-next-line max-len
12577-
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-chat/crashlytics/app/android:com.expensify.chat/issues?state=open&time=last-seven-days&tag=all) for **this release version** and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
12577+
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-mobile-app/crashlytics/app/ios:com.expensify.expensifylite/issues?state=open&time=last-seven-days&types=crash&tag=all&sort=eventCount) for **this release version** and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
1257812578
// eslint-disable-next-line max-len
12579-
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-chat/crashlytics/app/android:com.expensify.chat/issues?state=open&time=last-seven-days&tag=all) for **the previous release version** and verified that the release did not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
12579+
issueBody += `\r\n- [${isFirebaseChecked ? 'x' : ' '}] I checked [Firebase Crashlytics](https://console.firebase.google.com/u/0/project/expensify-mobile-app/crashlytics/app/android:org.me.mobiexpensifyg/issues?state=open&time=last-seven-days&types=crash&tag=all&sort=eventCount) for **the previous release version** and verified that the release did not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).`;
1258012580
// eslint-disable-next-line max-len
1258112581
issueBody += `\r\n- [${isGHStatusChecked ? 'x' : ' '}] I checked [GitHub Status](https://www.githubstatus.com/) and verified there is no reported incident with Actions.`;
1258212582
issueBody += '\r\n\r\ncc @Expensify/applauseleads\r\n';

0 commit comments

Comments
 (0)