diff --git a/.github/actions/composite/setupGitForOSBotifyApp/action.yml b/.github/actions/composite/setupGitForOSBotifyApp/action.yml
new file mode 100644
index 000000000000..bd5b5139bc6b
--- /dev/null
+++ b/.github/actions/composite/setupGitForOSBotifyApp/action.yml
@@ -0,0 +1,53 @@
+# This is a duplicate for setupGitForOSBotify except we are using a Github App now for Github Authentication.
+# GitHub Apps have higher rate limits. The reason this is being duplicated is because the existing action is still in use
+# in open PRs/branches that aren't up to date with main and it ends up breaking action workflows as a result.
+name: "Setup Git for OSBotify"
+description: "Setup Git for OSBotify"
+
+inputs:
+ GPG_PASSPHRASE:
+ description: "Passphrase used to decrypt GPG key"
+ required: true
+ OS_BOTIFY_APP_ID:
+ description: "Application ID for OS Botify"
+ required: true
+ OS_BOTIFY_PRIVATE_KEY:
+ description: "OS Botify's private key"
+ required: true
+
+outputs:
+ # Do not try to use this for committing code. Use `secrets.OS_BOTIFY_COMMIT_TOKEN` instead
+ OS_BOTIFY_API_TOKEN:
+ description: Token to use for GitHub API interactions.
+ value: ${{ steps.generateToken.outputs.token }}
+
+runs:
+ using: composite
+ steps:
+ - name: Decrypt OSBotify GPG key
+ run: cd .github/workflows && gpg --quiet --batch --yes --decrypt --passphrase=${{ inputs.GPG_PASSPHRASE }} --output OSBotify-private-key.asc OSBotify-private-key.asc.gpg
+ shell: bash
+
+ - name: Import OSBotify GPG Key
+ shell: bash
+ run: cd .github/workflows && gpg --import OSBotify-private-key.asc
+
+ - name: Set up git for OSBotify
+ shell: bash
+ run: |
+ git config user.signingkey 367811D53E34168C
+ git config commit.gpgsign true
+ git config user.name OSBotify
+ git config user.email infra+osbotify@expensify.com
+
+ - name: Enable debug logs for git
+ shell: bash
+ if: runner.debug == '1'
+ run: echo "GIT_TRACE=true" >> "$GITHUB_ENV"
+
+ - name: Generate a token
+ id: generateToken
+ uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
+ with:
+ app_id: ${{ inputs.OS_BOTIFY_APP_ID }}
+ private_key: ${{ inputs.OS_BOTIFY_PRIVATE_KEY }}
diff --git a/.github/actions/javascript/bumpVersion/index.js b/.github/actions/javascript/bumpVersion/index.js
index 830dbf626548..da08d1a060b6 100644
--- a/.github/actions/javascript/bumpVersion/index.js
+++ b/.github/actions/javascript/bumpVersion/index.js
@@ -298,6 +298,9 @@ function getPreviousVersion(currentVersion, level) {
if (patch === 0) {
return getPreviousVersion(currentVersion, SEMANTIC_VERSION_LEVELS.MINOR);
}
+ if (major === 1 && minor === 3 && patch === 83) {
+ return getVersionStringFromNumber(major, minor, patch - 2, 0);
+ }
return getVersionStringFromNumber(major, minor, patch - 1, 0);
}
diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js
index 561b8e61bc21..22ad59ed9588 100644
--- a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js
+++ b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js
@@ -998,6 +998,9 @@ function getPreviousVersion(currentVersion, level) {
if (patch === 0) {
return getPreviousVersion(currentVersion, SEMANTIC_VERSION_LEVELS.MINOR);
}
+ if (major === 1 && minor === 3 && patch === 83) {
+ return getVersionStringFromNumber(major, minor, patch - 2, 0);
+ }
return getVersionStringFromNumber(major, minor, patch - 1, 0);
}
diff --git a/.github/actions/javascript/getDeployPullRequestList/index.js b/.github/actions/javascript/getDeployPullRequestList/index.js
index e42f97508bc5..3aafda798c54 100644
--- a/.github/actions/javascript/getDeployPullRequestList/index.js
+++ b/.github/actions/javascript/getDeployPullRequestList/index.js
@@ -961,6 +961,9 @@ function getPreviousVersion(currentVersion, level) {
if (patch === 0) {
return getPreviousVersion(currentVersion, SEMANTIC_VERSION_LEVELS.MINOR);
}
+ if (major === 1 && minor === 3 && patch === 83) {
+ return getVersionStringFromNumber(major, minor, patch - 2, 0);
+ }
return getVersionStringFromNumber(major, minor, patch - 1, 0);
}
diff --git a/.github/actions/javascript/getPreviousVersion/index.js b/.github/actions/javascript/getPreviousVersion/index.js
index 37db08db93e9..6770ba99ba69 100644
--- a/.github/actions/javascript/getPreviousVersion/index.js
+++ b/.github/actions/javascript/getPreviousVersion/index.js
@@ -148,6 +148,9 @@ function getPreviousVersion(currentVersion, level) {
if (patch === 0) {
return getPreviousVersion(currentVersion, SEMANTIC_VERSION_LEVELS.MINOR);
}
+ if (major === 1 && minor === 3 && patch === 83) {
+ return getVersionStringFromNumber(major, minor, patch - 2, 0);
+ }
return getVersionStringFromNumber(major, minor, patch - 1, 0);
}
diff --git a/.github/libs/versionUpdater.js b/.github/libs/versionUpdater.js
index 78e8085621bd..b78178f443e6 100644
--- a/.github/libs/versionUpdater.js
+++ b/.github/libs/versionUpdater.js
@@ -118,6 +118,9 @@ function getPreviousVersion(currentVersion, level) {
if (patch === 0) {
return getPreviousVersion(currentVersion, SEMANTIC_VERSION_LEVELS.MINOR);
}
+ if (major === 1 && minor === 3 && patch === 83) {
+ return getVersionStringFromNumber(major, minor, patch - 2, 0);
+ }
return getVersionStringFromNumber(major, minor, patch - 1, 0);
}
diff --git a/.github/workflows/cherryPick.yml b/.github/workflows/cherryPick.yml
index b6558b049647..75f46e68fe5a 100644
--- a/.github/workflows/cherryPick.yml
+++ b/.github/workflows/cherryPick.yml
@@ -41,15 +41,17 @@ jobs:
token: ${{ secrets.OS_BOTIFY_TOKEN }}
- name: Set up git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Get previous app version
id: getPreviousVersion
uses: Expensify/App/.github/actions/javascript/getPreviousVersion@main
with:
- SEMVER_LEVEL: 'PATCH'
+ SEMVER_LEVEL: "PATCH"
- name: Fetch history of relevant refs
run: |
@@ -119,7 +121,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
- - name: 'Announces a CP failure in the #announce Slack room'
+ - name: "Announces a CP failure in the #announce Slack room"
uses: 8398a7/action-slack@v3
if: ${{ failure() }}
with:
diff --git a/.github/workflows/createNewVersion.yml b/.github/workflows/createNewVersion.yml
index ba907334c595..c9c97d5355fb 100644
--- a/.github/workflows/createNewVersion.yml
+++ b/.github/workflows/createNewVersion.yml
@@ -26,12 +26,18 @@ on:
LARGE_SECRET_PASSPHRASE:
description: Passphrase used to decrypt GPG key
required: true
- OS_BOTIFY_TOKEN:
- description: Token for the OSBotify user
- required: true
SLACK_WEBHOOK:
description: Webhook used to comment in slack
required: true
+ OS_BOTIFY_COMMIT_TOKEN:
+ description: OSBotify personal access token, used to workaround committing to protected branch
+ required: true
+ OS_BOTIFY_APP_ID:
+ description: Application ID for OS Botify App
+ required: true
+ OS_BOTIFY_PRIVATE_KEY:
+ description: OSBotify private key
+ required: true
jobs:
validateActor:
@@ -43,7 +49,7 @@ jobs:
id: getUserPermissions
run: echo "PERMISSION=$(gh api /repos/${{ github.repository }}/collaborators/${{ github.actor }}/permission | jq -r '.permission')" >> "$GITHUB_OUTPUT"
env:
- GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
createNewVersion:
runs-on: macos-latest
@@ -65,18 +71,23 @@ jobs:
uses: actions/checkout@v3
with:
ref: main
- token: ${{ secrets.OS_BOTIFY_TOKEN }}
+ # The OS_BOTIFY_COMMIT_TOKEN is a personal access token tied to osbotify
+ # This is a workaround to allow pushes to a protected branch
+ token: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
- name: Setup git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
+ id: setupGitForOSBotify
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Generate version
id: bumpVersion
uses: Expensify/App/.github/actions/javascript/bumpVersion@main
with:
- GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
+ GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
SEMVER_LEVEL: ${{ inputs.SEMVER_LEVEL }}
- name: Commit new version
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index f2ff67680940..78040f237689 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -14,11 +14,13 @@ jobs:
with:
ref: staging
token: ${{ secrets.OS_BOTIFY_TOKEN }}
-
- - name: Setup git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+
+ - uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
+ id: setupGitForOSBotify
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Tag version
run: git tag "$(npm run print-version --silent)"
@@ -30,16 +32,18 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/production'
steps:
- - name: Checkout
- uses: actions/checkout@v3
+ - uses: actions/checkout@v3
+ name: Checkout
with:
ref: production
token: ${{ secrets.OS_BOTIFY_TOKEN }}
- - name: Setup git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ - uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
+ id: setupGitForOSBotify
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Get current app version
run: echo "PRODUCTION_VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV"
@@ -49,7 +53,7 @@ jobs:
uses: Expensify/App/.github/actions/javascript/getDeployPullRequestList@main
with:
TAG: ${{ env.PRODUCTION_VERSION }}
- GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
+ GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
IS_PRODUCTION_DEPLOY: true
- name: Generate Release Body
@@ -64,4 +68,4 @@ jobs:
tag_name: ${{ env.PRODUCTION_VERSION }}
body: ${{ steps.getReleaseBody.outputs.RELEASE_BODY }}
env:
- GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
+ GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
diff --git a/.github/workflows/finishReleaseCycle.yml b/.github/workflows/finishReleaseCycle.yml
index e2323af2486e..4fe6249edacc 100644
--- a/.github/workflows/finishReleaseCycle.yml
+++ b/.github/workflows/finishReleaseCycle.yml
@@ -12,6 +12,19 @@ jobs:
outputs:
isValid: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) && !fromJSON(steps.checkDeployBlockers.outputs.HAS_DEPLOY_BLOCKERS) }}
steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: main
+ token: ${{ secrets.OS_BOTIFY_TOKEN }}
+
+ - uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
+ id: setupGitForOSBotify
+ with:
+ GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
+
- name: Validate actor is deployer
id: isDeployer
run: |
@@ -70,9 +83,12 @@ jobs:
token: ${{ secrets.OS_BOTIFY_TOKEN }}
- name: Setup Git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ id: setupGitForOSBotify
+ uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Update production branch
run: |
@@ -109,9 +125,11 @@ jobs:
token: ${{ secrets.OS_BOTIFY_TOKEN }}
- name: Setup Git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Update staging branch to trigger staging deploy
run: |
diff --git a/.github/workflows/preDeploy.yml b/.github/workflows/preDeploy.yml
index 186490c7baaf..d7d372aa7948 100644
--- a/.github/workflows/preDeploy.yml
+++ b/.github/workflows/preDeploy.yml
@@ -92,9 +92,11 @@ jobs:
token: ${{ secrets.OS_BOTIFY_TOKEN }}
- name: Setup Git for OSBotify
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
+ uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@8c19d6da4a3d7ce3b15c9cd89a802187d208ecab
with:
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+ OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
+ OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
- name: Update staging branch from main
run: |
diff --git a/.storybook/fonts.css b/.storybook/fonts.css
index bbbcf3839000..906490c3a9d9 100644
--- a/.storybook/fonts.css
+++ b/.storybook/fonts.css
@@ -40,6 +40,13 @@
src: url('../assets/fonts/web/ExpensifyMono-Bold.woff2') format('woff2'), url('../assets/fonts/web/ExpensifyMono-Bold.woff') format('woff');
}
+@font-face {
+ font-family: ExpensifyNewKansas-Medium;
+ font-weight: 400;
+ font-style: normal;
+ src: url('../assets/fonts/web/ExpensifyNewKansas-Medium.woff2') format('woff2'), url('../assets/fonts/web/ExpensifyNewKansas-Medium.woff') format('woff');
+}
+
* {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
diff --git a/README.md b/README.md
index daf9ddfae1ff..9aad797ebb51 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 7d895bf752ad..1125b1e8c345 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -90,8 +90,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1001038106
- versionName "1.3.81-6"
+ versionCode 1001038304
+ versionName "1.3.83-4"
}
flavorDimensions "default"
diff --git a/assets/images/MCCGroupIcons/MCC-Airlines.svg b/assets/images/MCCGroupIcons/MCC-Airlines.svg
index 9d7924cff407..b707faf9857e 100644
--- a/assets/images/MCCGroupIcons/MCC-Airlines.svg
+++ b/assets/images/MCCGroupIcons/MCC-Airlines.svg
@@ -1,3 +1,6 @@
-