Commit Graph

46 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] a7b993ad42 fix: resolve merge conflict markers in mobile/app.json
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 18:28:15 +00:00
Christian Krakau-Louis 89b3a6a3c0 fix: resolve conflicts in mobile app config 2026-03-16 17:47:16 +00:00
copilot-swe-agent[bot] b6af39c567 refactor(mobile): address code review feedback
Extract APP_SCHEME_PREFIX constant for the custom URL scheme string,
and derive the photo library fallback filename extension from the
asset's MIME type instead of always using .jpg.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 17:26:28 +00:00
copilot-swe-agent[bot] acfba4b58c fix(mobile): handle iOS share sheet custom scheme URLs and add photo library picker
On iOS the Share Sheet / "Open In" action may deliver the file path
under the app's custom docuelevate:// scheme instead of a file:// URL,
causing an "Unmatched Route" error.  The URL handler now detects this
and rewrites the URL to file:// before processing.

Also adds a Photo Library button to the Upload screen so users can
select existing photos from their device library, not just capture
new ones with the camera.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 17:25:03 +00:00
copilot-swe-agent[bot] 4c8926a1fa fix(mobile): switch to remote appVersionSource for auto-incrementing build numbers
Change `appVersionSource` from `"local"` to `"remote"` in `eas.json` so EAS
tracks build numbers on its servers. This ensures every CI build gets a
unique, ever-increasing version without needing to commit bumps back to
the repo — fixing the App Store Connect "bundle version already used"
rejection.

Also bump `ios.buildNumber` to "7" and `android.versionCode` to 7 in
`app.json` (above the previously uploaded version "6") so the remote
version initializes correctly.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 16:57:52 +00:00
copilot-swe-agent[bot] 0e144710b5 fix(mobile): sync package-lock.json with package.json to fix npm ci failure
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 16:40:37 +00:00
copilot-swe-agent[bot] 04c6823079 fix(mobile): rename notification sound for Android, add LSSupportsOpeningDocumentsInPlace, update deps
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 16:21:06 +00:00
Christian Krakau-Louis 6d48976bc5 Merge pull request #739 from christianlouis/copilot/optimize-mobile-build-trigger
ci(mobile): add path filter and auto-submit to Apple for EAS workflow
2026-03-16 17:07:10 +01:00
copilot-swe-agent[bot] bebeab3191 ci(mobile): add path filter and auto-submit to Apple for EAS workflow
- Add paths filter so builds only trigger when mobile/ files change
- Add submit_ios job to automatically submit iOS builds to App Store Connect
- Update docs/MobileApp.md and mobile/README.md with CI/CD documentation

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 15:55:36 +00:00
copilot-swe-agent[bot] 4de6b439ce fix(mobile): iOS share sheet, empty files tab, and stuck upload status
- app.json: add CFBundleDocumentTypes to iOS infoPlist so the app
  appears in the iOS Share Sheet; add ACTION_SEND/SEND_MULTIPLE
  intentFilters for Android share intent support

- src/context/ShareContext.tsx (new): React context that queues files
  received from the share sheet and delivers them to UploadScreen

- app/_layout.tsx: wrap in ShareProvider; add Linking handler
  (makeUrlHandler factory + getInitialURL cold-start + addEventListener
  warm-start) to capture file:// and content:// URLs

- src/services/api.ts: fix FileRecord interface (original_filename,
  nested ProcessingStatus, mime_type); fix UploadResponse interface;
  fix listFiles() (per_page param, unwrap data.files); add
  getFileStatus(fileId) for single-file status polling

- src/screens/FilesScreen.tsx: use file.original_filename and
  file.processing_status.status; fix statusEmoji to use actual backend
  status values (completed/pending/duplicate)

- src/screens/UploadScreen.tsx: consume ShareContext for auto-upload of
  shared files; add 5-second polling loop (search by filename → file_id
  → getFileStatus) to show real-time server processing status;
  uploadFile wrapped in useCallback; proper effect dependency arrays

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 15:52:54 +00:00
copilot-swe-agent[bot] dd02ff5677 fix(mobile): suppress Node.js url.parse() deprecation and document Apple session fix
- Add NODE_NO_WARNINGS=1 to all eas.json build profiles (development,
  preview, production) to suppress [DEP0169] url.parse() deprecation
  warnings emitted by EAS CLI when the build image's system Node is 22+
- Add NODE_NO_WARNINGS=1 env to both EAS Cloud Workflow jobs
  (.eas/workflows/create-builds.yml) with explanatory comments
- Fix outdated Node.js prerequisite in docs/MobileApp.md (was "18 or
  later", now "20.19.4 or later" with nvm guidance)
- Add troubleshooting sections in docs/MobileApp.md and mobile/README.md
  covering both the "Session expired Local session" error (Apple ID
  session expiry + App Store Connect API key recommendation) and the
  [DEP0169] Node.js deprecation warning

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 21:06:07 +00:00
copilot-swe-agent[bot] 14285567d5 fix(auth): Expo Go support via Linking.createURL; safe token URL construction; clean up return type annotation
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 17:42:36 +00:00
copilot-swe-agent[bot] 5c373e7224 fix(auth): store mobile_redirect_uri in session and redirect to deep-link after SSO; fix SafeAreaView deprecation
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 17:35:49 +00:00
copilot-swe-agent[bot] 073627884c fix(mobile): align React version with react-native-renderer to fix version mismatch crash
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 16:28:36 +00:00
copilot-swe-agent[bot] c5b08e778d chore: initial plan placeholder
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 16:26:15 +00:00
copilot-swe-agent[bot] 82d90b48e2 fix(mobile): correct asset logo path depth and add expo-router app/ routes for web support
- Fix fatal crash: require('../../../assets/logo.png') in LoginScreen and
  WelcomeScreen resolved 3 levels above mobile/src/screens/ — outside the
  mobile/ directory. Changed to ../../assets/logo.png which correctly
  resolves to the existing mobile/assets/logo.png.
- Add expo-router app/ directory (root cause of missing welcome screen and
  web support): app/_layout.tsx, (auth)/, (tabs)/ with all route files
- Add WelcomeScreen.tsx: branded intro screen with feature highlights
- Update LoginScreen/WelcomeScreen to use useRouter() (expo-router style)
- Add react-native-web ~0.20.0 and react-dom 19.2.4 for web channel
- Add expo-device ~7.0.3 (was imported but missing from package.json)
- Remove android.googleServicesFile from app.json (file is gitignored;
  README documents how to restore it for Android FCM builds)
- Add web.bundler: metro and web.output: single to app.json
- Fix aria-hidden to explicit boolean value in WelcomeScreen

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 16:02:02 +00:00
copilot-swe-agent[bot] a2de72ab72 wip: tracking plan
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 15:54:00 +00:00
copilot-swe-agent[bot] 9d5b1e25e2 wip: plan
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 15:49:32 +00:00
copilot-swe-agent[bot] b4b50e8340 fix(mobile): update Node.js minimum requirement to 20.19.4
metro-config@0.83.3 uses Array.prototype.toReversed() which was added
in Node.js 20.0.0. The README incorrectly stated "Node.js 18+" causing
users to run `npx expo start` with Node 18 and hit:
  TypeError: configs.toReversed is not a function

- Update README.md to say "Node.js 20.19.4+" with nvm hint
- Update package.json engines from >=20.16.0 to >=20.19.4 to match
  metro-config's exact minimum (as declared in package-lock.json)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 15:34:12 +00:00
copilot-swe-agent[bot] ca962f8040 fix(mobile): add missing react@19.2.4 integrity hash to package-lock.json
EAS builds run `npm ci` which validates integrity hashes for every package.
The react entry was updated to 19.2.4 but its integrity hash was removed,
causing the EAS iOS build to fail at the Install dependencies phase.

- Runs npm install --package-lock-only to regenerate full lockfile
  (also adds react-dom@19.2.4 entry with its integrity hash)
- Patches node_modules/react entry with canonical integrity hash from
  the npm registry: sha512-9nfp...
- Verified with npm ci --dry-run: 938 packages, exit 0

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 14:02:25 +00:00
copilot-swe-agent[bot] 01811438dc chore: initial plan for npm install lockfile fix
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 14:00:03 +00:00
copilot-swe-agent[bot] f983b20a8f fix(mobile): fix iOS TurboModule crash and npm install peer dep conflict
- UploadScreen.tsx: replace deprecated ImagePicker.MediaTypeOptions.Images
  with new array syntax ['images'] — the old enum is not accepted by the
  expo-image-picker v17 TurboModule on iOS, causing SIGABRT on Thread 2
- package.json: bump react 19.1.0 → 19.2.4 so react-dom@19.2.4 (peerOptional
  of @expo/metro-runtime) no longer conflicts; update @types/react to ~19.2.0
- package-lock.json: update react entry to 19.2.4 (integrity removed, will be
  regenerated by npm install on the next EAS build)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 13:53:27 +00:00
copilot-swe-agent[bot] 69664ec6cd chore(mobile): update iOS build image to Xcode 26 for iOS 26 SDK compliance
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-15 11:57:30 +00:00
Christian Krakau-Louis d2ec99e7d5 Update eas.json 2026-03-15 11:23:07 +01:00
Christian Krakau-Louis d352324f58 Merge pull request #672 from christianlouis/copilot/debug-build-archive-error
fix(mobile): resolve iOS build failures caused by Expo SDK 54 precompiled XCFrameworks
2026-03-15 11:10:31 +01:00
copilot-swe-agent[bot] 3372a93f71 fix(mobile): resolve iOS build errors by enabling buildReactNativeFromSource for Expo SDK 54
Expo SDK 54 switched to precompiled React Native XCFrameworks by default
for faster iOS builds. However, the precompiled frameworks do not expose
legacy bridge headers (RCTBridge, RCTViewManager, RCTSurfaceHostingProxyRootView,
RCTPackagerConnection, RCTDevSettings.isDebuggingRemotely, rootViewFactory)
that some native modules (e.g. expo-dev-client) still reference.

Add expo-build-properties (v1.0.10, the SDK 54-compatible version) and
configure buildReactNativeFromSource: true for iOS. This compiles React
Native from source, making all native headers available to linked modules
and resolving the Xcode compilation errors seen in the EAS production build.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 22:50:29 +00:00
Christian Krakau-Louis d60c3cd303 Merge pull request #671 from christianlouis/copilot/update-logos-and-ux
[WIP] Update mobile app to use DocuElevate's original UX and logos
2026-03-14 23:41:52 +01:00
copilot-swe-agent[bot] 971e578dd7 feat(mobile): update DocuElevate mobile app branding with original logo and UX
- Regenerate all app icons (icon.png, adaptive-icon.png, splash.png,
  favicon.png, notification-icon.png) using the DocuElevate folder+gear
  SVG logo on brand blue (#1e40af) background
- Add assets/logo.png (200×200 circular logo) for the login screen
- Update LoginScreen.tsx to display the DocuElevate logo image above
  the brand name text instead of plain text only
- Replace emoji tab bar icons (⬆️📄👤) with Ionicons vector icons
  (cloud-upload-outline, document-text-outline, person-circle-outline)
  from the already-installed @expo/vector-icons package

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 22:41:02 +00:00
copilot-swe-agent[bot] f6e955acce fix(mobile): fix expo doctor dependency version mismatches for SDK 54
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 20:45:03 +00:00
copilot-swe-agent[bot] fe66e51996 fix(mobile): update iOS build image from macos-sequoia-15.1-xcode-16.2 to macos-sequoia-15.3-xcode-16.2
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 20:35:50 +00:00
copilot-swe-agent[bot] 5f3d134d7e fix(mobile): sync app.json and eas.json to expo.dev project credentials
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 20:31:35 +00:00
copilot-swe-agent[bot] 7633cdf4e4 fix(mobile): sync app.json slug and owner to expo.dev project
- 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>
2026-03-14 20:28:52 +00:00
copilot-swe-agent[bot] 4f38075de4 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>
2026-03-14 20:26:51 +00:00
copilot-swe-agent[bot] 1aa02aea24 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>
2026-03-14 20:21:44 +00:00
copilot-swe-agent[bot] 3bf9589462 fix(mobile): resolve EAS CI build failures – wrap app.json, update deps, pin Xcode image
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 15:02:08 +00:00
copilot-swe-agent[bot] 8653247e44 fix(mobile): update react to 19.2.4 and add package-lock.json to fix npm ERESOLVE build failure
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 14:32:18 +00:00
copilot-swe-agent[bot] 0cb2f6c362 chore: initial plan for mobile npm peer dep fix
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 14:30:38 +00:00
copilot-swe-agent[bot] 4c6596b561 fix(mobile): bump Node to 20.19.4 and fix react-navigation peer dependency
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 14:06:52 +00:00
copilot-swe-agent[bot] 492b2c643c fix(mobile): add owner field to app.json to match EAS project owner
EAS was failing because the projectId belongs to 'christian-krakau-louis'
but the 'owner' field was not set, causing a mismatch with the logged-in
user. Adding 'owner': 'christian-krakau-louis' resolves the error.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 13:56:57 +00:00
copilot-swe-agent[bot] 6834f3ef1b fix(mobile): add expo-dev-client, pin Node version, and fix EAS build config
- Add expo-dev-client ~5.0.0 to dependencies (required for developmentClient:true profile)
- Add node: 18.19.1 to all EAS build profiles (matches .nvmrc, silences version warning)
- Add appVersionSource: local to cli section in eas.json (silences future-required warning)
- Add ITSAppUsesNonExemptEncryption: false to ios.infoPlist in app.json (eliminates App Store Connect manual config warning)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 13:51:50 +00:00
copilot-swe-agent[bot] f148785079 fix(mobile): upgrade Expo SDK from 51 to 54 and fix EAS project ID
- Update mobile/app.json: replace YOUR_EAS_PROJECT_ID placeholder with
  the real EAS project ID (8455f39d-ef0d-4850-98e4-f79e388642c1)
- Update mobile/package.json: upgrade all dependencies to Expo SDK 54
  compatible versions (react 19.1.0, react-native 0.81.5, expo ~54.0.0,
  all expo-* packages, react-navigation v6 → v7, @types/react ~19.1.10)
- Update mobile/README.md: remove outdated eas init step, document that
  the EAS project ID is already configured and explain when to update it

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 13:28:01 +00:00
copilot-swe-agent[bot] 8f9405b5ac fix(mobile): remove expo-sharing from plugins and align .nvmrc with Node 18 LTS
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 13:11:58 +00:00
copilot-swe-agent[bot] fb5d494e42 fix(mobile): relax Node.js engine constraint to >=18.0.0
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 13:05:02 +00:00
copilot-swe-agent[bot] 8717538967 fix(mobile): fix EAS build Node.js version incompatibility for iOS and Android
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-14 12:28:06 +00:00
copilot-swe-agent[bot] 4eb04bd7f6 fix(mobile): address code review findings in mobile app config and tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-10 09:57:58 +00:00
copilot-swe-agent[bot] d538c0879d feat(mobile): add iOS/Android mobile app with SSO login, camera upload, and push notifications
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-10 09:52:02 +00:00