diff --git a/.github/workflows/createNewVersion.yml b/.github/workflows/createNewVersion.yml
index ca9a128e848d..93fe07be9298 100644
--- a/.github/workflows/createNewVersion.yml
+++ b/.github/workflows/createNewVersion.yml
@@ -101,3 +101,92 @@ jobs:
uses: ./.github/actions/composite/announceFailedWorkflowInSlack
with:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
+
+ createNewHybridVersion:
+ runs-on: macos-latest
+ needs: [validateActor, createNewVersion]
+ if: ${{ fromJSON(needs.validateActor.outputs.HAS_WRITE_ACCESS) }}
+ defaults:
+ run:
+ working-directory: Mobile-Expensify
+ steps:
+ - name: Run turnstyle
+ uses: softprops/turnstyle@49108bdfa571e62371bd2c3094893c547ab3fc03
+ with:
+ poll-interval-seconds: 10
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+
+ - name: Check out `App` repo
+ uses: actions/checkout@v4
+ with:
+ ref: main
+ # 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: Check out `Mobile-Expensify` repo
+ uses: actions/checkout@v4
+ with:
+ repository: 'Expensify/Mobile-Expensify'
+ submodules: true
+ path: 'Mobile-Expensify'
+ token: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
+
+ - name: Update submodule
+ run: |
+ cd react-native
+ git submodule update --init
+
+ - name: Setup git for OSBotify
+ uses: ./.github/actions/composite/setupGitForOSBotify
+ id: setupGitForOSBotify
+ with:
+ GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
+
+ - name: Generate HybridApp version
+ run: |
+ # Generate all flavors of the version
+ SHORT_APP_VERSION=$(echo "$NEW_VERSION" | awk -F'-' '{print $1}')
+ BUILD_NUMBER=$(echo "$NEW_VERSION" | awk -F'-' '{print $2}')
+ FULL_APP_VERSION="$SHORT_APP_VERSION.$BUILD_NUMBER"
+ ANDROID_VERSION_CODE=$(echo "$FULL_APP_VERSION" | ruby -e "puts '05%02d%02d%02d%02d' % STDIN.read.split('.')")
+
+ # File paths to update
+ ANDROID_MANIFEST_FILE="Android/AndroidManifest.xml"
+ IOS_INFO_PLIST_FILE="iOS/Expensify/Expensify-Info.plist"
+ IOS_SHARE_EXTENSION_PLIST_FILE="iOS/SmartScanExtension/Info.plist"
+ JS_CONFIG_FILE="app/config/config.json"
+
+ # Update Android HybridApp Version
+ sed -i .bak -E "s/versionName=\"([0-9\.]*)\"/versionName=\"$FULL_APP_VERSION\"/" $ANDROID_MANIFEST_FILE
+ sed -i .bak -E "s/versionCode=\"([0-9]*)\"/versionCode=\"$ANDROID_VERSION_CODE\"/" $ANDROID_MANIFEST_FILE
+
+ # Update iOS HybridApp Version
+ /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $SHORT_APP_VERSION" $IOS_INFO_PLIST_FILE
+ /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $FULL_APP_VERSION" $IOS_INFO_PLIST_FILE
+ /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $SHORT_APP_VERSION" $IOS_SHARE_EXTENSION_PLIST_FILE
+ /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $FULL_APP_VERSION" $IOS_SHARE_EXTENSION_PLIST_FILE
+
+ # Update JS HybridApp Version
+ sed -i .bak -E "s/\"version\": \"([0-9\.]*)\"/\"version\": \"$FULL_APP_VERSION\"/" $JS_CONFIG_FILE
+ env:
+ NEW_VERSION: ${{ needs.createNewVersion.outputs.NEW_VERSION }}
+
+ - name: Commit new version
+ run: |
+ git add \
+ ./Android/AndroidManifest.xml \
+ ./app/config/config.json \
+ ./iOS/Expensify/Expensify-Info.plist\
+ ./iOS/SmartScanExtension/Info.plist
+ git commit -m "Update version to ${{ needs.createNewVersion.outputs.NEW_VERSION }}"
+
+ - name: Update main branch
+ run: git push origin main
+
+ - name: Announce failed workflow in Slack
+ if: ${{ failure() }}
+ uses: ./.github/actions/composite/announceFailedWorkflowInSlack
+ with:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 231ba9a785cf..14da2c7bbc35 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -110,8 +110,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1009005402
- versionName "9.0.54-2"
+ versionCode 1009005406
+ versionName "9.0.54-6"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index e5ad4e9f40d2..56caf16a8c63 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -40,7 +40,7 @@
CFBundleVersion
- 9.0.54.2
+ 9.0.54.6
FullStory
OrgId
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index c82616c080fd..fc9a1020441f 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -19,6 +19,6 @@
CFBundleSignature
????
CFBundleVersion
- 9.0.54.2
+ 9.0.54.6
diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist
index 1cd87dc0f8b3..eea1da350d7d 100644
--- a/ios/NotificationServiceExtension/Info.plist
+++ b/ios/NotificationServiceExtension/Info.plist
@@ -13,7 +13,7 @@
CFBundleShortVersionString
9.0.54
CFBundleVersion
- 9.0.54.2
+ 9.0.54.6
NSExtension
NSExtensionPointIdentifier
diff --git a/package-lock.json b/package-lock.json
index a2c09593e4f7..dae1014a5486 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "new.expensify",
- "version": "9.0.54-2",
+ "version": "9.0.54-6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "new.expensify",
- "version": "9.0.54-2",
+ "version": "9.0.54-6",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index 2cbcdad7815f..2e3844743c9b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "9.0.54-2",
+ "version": "9.0.54-6",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",