Files
Schnappix/AGENTS.md
T

2.1 KiB

Expo HAS CHANGED

Read the exact versioned docs at https://docs.expo.dev/versions/v56.0.0/ before writing any code.

Versioning & Build Rules

Whenever a new build is triggered, the version MUST be updated in BOTH app.json and package.json.

  • version format: 23.01.X
  • versionCode: X (just the last number) Examples:
  • version 23.01.1 -> versionCode 1
  • version 23.01.3 -> versionCode 3
  • version 23.01.123 -> versionCode 123

IMPORTANT: After bumping the version in app.json, you MUST run npx expo prebuild -p android --no-install BEFORE running Gradle (.\gradlew assembleRelease). Otherwise, android/app/build.gradle will retain the old version code and the Play Store will reject the upload!

Apps must always be built as BOTH .apk and .aab. The exact naming syntax for compiled files is: Schnappix_v23.01.X.apk Schnappix_v23.01.X.aab IMPORTANT: All compiled files must be placed in the apks/ directory (e.g. apks/Schnappix_v23.01.X.apk). Do NOT place them in the root directory.

Architectural Decisions & Project Rules

  1. Kiosk Mode (Device Owner)
    • The app uses Custom Native Modules (Kotlin) for LockTask mode. It does NOT use external MDM software.
    • For LockTask to work, the app MUST be set as Device Owner via ADB (adb shell dpm set-device-owner de.orfel.schnappix/de.orfel.schnappix.KioskDeviceAdminReceiver).
  2. Photo Saving (Permissions)
    • Uses modern Android MediaStore API (writeOnly = true via expo-media-library) to save photos directly to Schnappix - <EventName> - Collagen and Schnappix - <EventName> - Originale.
    • Do NOT attempt to force legacy WRITE_EXTERNAL_STORAGE or READ_EXTERNAL_STORAGE on Android 13+, as it will fail.
  3. Package Name
    • Must strictly remain de.orfel.schnappix.

Git & Workflow Rules

  • Always Commit and Push: At the end of every interaction or when tasks are completed, ALL changes must be automatically committed and pushed to Git (git add ., git commit, git push).
  • Push Retry Bug: If git push fails with an authentication error, ALWAYS try running it a second time, as it usually succeeds on the retry.