From 958c5950b3bce7b7fea2c45b261f313acb1f0661 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:13:04 +0000 Subject: [PATCH 1/5] Initial plan From 1aa02aea24fbfdc40cc5cf92a5907616f4d9c706 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:21:44 +0000 Subject: [PATCH 2/5] fix(mobile): add missing assets and EAS workflow for automatic builds - Add mobile/assets/ directory with all required Expo/EAS asset files: - icon.png (1024x1024 branded app icon) - adaptive-icon.png (1024x1024 transparent fg for Android) - splash.png (1284x2778 branded splash screen) - favicon.png (48x48 web favicon) - notification-icon.png (96x96 white-on-transparent for Android) - notification-sound.wav (0.1s silent WAV, 44100 Hz mono) - Add mobile/.eas/workflows/create-builds.yml for automatic production builds triggered on every push to main (per Expo EAS Workflows docs) The Xcode image pin (macos-sequoia-15.1-xcode-16.2) was already present in eas.json from the prior fix resolving the XCode 15.4 vs >=16.1 error. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- mobile/.eas/workflows/create-builds.yml | 21 +++++++++++++++++++++ mobile/assets/adaptive-icon.png | Bin 0 -> 6803 bytes mobile/assets/favicon.png | Bin 0 -> 259 bytes mobile/assets/icon.png | Bin 0 -> 6635 bytes mobile/assets/notification-icon.png | Bin 0 -> 425 bytes mobile/assets/notification-sound.wav | Bin 0 -> 8864 bytes mobile/assets/splash.png | Bin 0 -> 17273 bytes 7 files changed, 21 insertions(+) create mode 100644 mobile/.eas/workflows/create-builds.yml create mode 100644 mobile/assets/adaptive-icon.png create mode 100644 mobile/assets/favicon.png create mode 100644 mobile/assets/icon.png create mode 100644 mobile/assets/notification-icon.png create mode 100644 mobile/assets/notification-sound.wav create mode 100644 mobile/assets/splash.png diff --git a/mobile/.eas/workflows/create-builds.yml b/mobile/.eas/workflows/create-builds.yml new file mode 100644 index 00000000..ba587e6e --- /dev/null +++ b/mobile/.eas/workflows/create-builds.yml @@ -0,0 +1,21 @@ +name: Create builds + +on: + push: + branches: + - main + +jobs: + build_android: + name: Build Android app + type: build + params: + platform: android + profile: production + + build_ios: + name: Build iOS app + type: build + params: + platform: ios + profile: production diff --git a/mobile/assets/adaptive-icon.png b/mobile/assets/adaptive-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c7612a0335b7e0d09ac12975cf3544ade2823d68 GIT binary patch literal 6803 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 OLs&>;aN%6>&i?=&Rq)dQ literal 0 HcmV?d00001 diff --git a/mobile/assets/notification-icon.png b/mobile/assets/notification-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..868ad5457ca6cb1fd432e31dec8750ff531d5913 GIT binary patch literal 425 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 X#(iNfe#=%PLP4==O;XGA{LcRZgF^Jk literal 0 HcmV?d00001 From 4f38075de4b6647b41f776517ff6499fb616b6e6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:26:51 +0000 Subject: [PATCH 3/5] fix(mobile): use org.docuelevate.mobile as app identifier Update iOS bundleIdentifier and Android package from com.christianlouis.docuelevatemobile to org.docuelevate.mobile. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- mobile/app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mobile/app.json b/mobile/app.json index 2945e80d..4bb63838 100644 --- a/mobile/app.json +++ b/mobile/app.json @@ -14,7 +14,7 @@ "assetBundlePatterns": ["**/*"], "ios": { "supportsTablet": true, - "bundleIdentifier": "com.docuelevate.app", + "bundleIdentifier": "org.docuelevate.mobile", "infoPlist": { "NSCameraUsageDescription": "DocuElevate uses the camera to capture documents for upload.", "NSPhotoLibraryUsageDescription": "DocuElevate accesses your photo library to select documents for upload.", @@ -22,14 +22,14 @@ "UIBackgroundModes": ["fetch", "remote-notification"], "ITSAppUsesNonExemptEncryption": false }, - "buildNumber": "1" + "buildNumber": "3" }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#1e40af" }, - "package": "com.docuelevate.app", + "package": "org.docuelevate.mobile", "permissions": [ "CAMERA", "READ_EXTERNAL_STORAGE", @@ -66,7 +66,7 @@ "owner": "christian-krakau-louis", "extra": { "eas": { - "projectId": "8455f39d-ef0d-4850-98e4-f79e388642c1" + "projectId": "16925679-cb94-411c-83b5-a62c9addb872" } } } From 7633cdf4e49277612a830ef9c6aaf9c5ed783648 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:28:52 +0000 Subject: [PATCH 4/5] fix(mobile): sync app.json slug and owner to expo.dev project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slug: docuelevate → docuelevate-mobile - owner: christian-krakau-louis → christianlouis - projectId 16925679-cb94-411c-83b5-a62c9addb872 already correct Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- mobile/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/app.json b/mobile/app.json index 4bb63838..1ca08689 100644 --- a/mobile/app.json +++ b/mobile/app.json @@ -1,7 +1,7 @@ { "expo": { "name": "DocuElevate", - "slug": "docuelevate", + "slug": "docuelevate-mobile", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", @@ -63,7 +63,7 @@ "expo-secure-store" ], "scheme": "docuelevate", - "owner": "christian-krakau-louis", + "owner": "christianlouis", "extra": { "eas": { "projectId": "16925679-cb94-411c-83b5-a62c9addb872" From 5f3d134d7ef42380b6f99fa70f8fdf71bed9391b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:31:35 +0000 Subject: [PATCH 5/5] fix(mobile): sync app.json and eas.json to expo.dev project credentials Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- mobile/app.json | 1 + mobile/eas.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mobile/app.json b/mobile/app.json index 1ca08689..97d8dfd9 100644 --- a/mobile/app.json +++ b/mobile/app.json @@ -15,6 +15,7 @@ "ios": { "supportsTablet": true, "bundleIdentifier": "org.docuelevate.mobile", + "appleTeamId": "975U2ZESBM", "infoPlist": { "NSCameraUsageDescription": "DocuElevate uses the camera to capture documents for upload.", "NSPhotoLibraryUsageDescription": "DocuElevate accesses your photo library to select documents for upload.", diff --git a/mobile/eas.json b/mobile/eas.json index 9cf863d4..e618ae18 100644 --- a/mobile/eas.json +++ b/mobile/eas.json @@ -33,7 +33,7 @@ "ios": { "appleId": "YOUR_APPLE_ID", "ascAppId": "YOUR_APP_STORE_CONNECT_APP_ID", - "appleTeamId": "YOUR_APPLE_TEAM_ID" + "appleTeamId": "975U2ZESBM" }, "android": { "serviceAccountKeyPath": "./google-play-service-account.json",