diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml
new file mode 100644
index 0000000000..bf85137072
--- /dev/null
+++ b/.github/workflows/build-mobile.yml
@@ -0,0 +1,55 @@
+name: Build Mobile
+
+on:
+ workflow_dispatch:
+ pull_request:
+ push:
+ branches: [main]
+
+
+jobs:
+ build-sign-android:
+ name: Build and sign Android
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: "12.x"
+ cache: 'gradle'
+
+ - name: Setup Flutter SDK
+ uses: subosito/flutter-action@v2
+ with:
+ channel: 'stable'
+ flutter-version: '3.3.10'
+ cache: true
+
+ - name: Create the Keystore
+
+ env:
+ KEYSTORE_BASE64: ${{ secrets.ANDROID_SIGN_KEY_CONTENT }}
+ run: |
+ # import keystore from secrets
+ echo $KEYSTORE_BASE64 | base64 -d > $RUNNER_TEMP/my_production.keystore
+
+ - name: Restore packages
+ working-directory: ./mobile
+ run: flutter pub get
+
+ - name: Build Android App Bundle
+ working-directory: ./mobile
+ run: flutter build apk --release
+
+ - name: Sign Android App Bundle
+ working-directory: ./mobile
+ run: jarsigner -keystore $RUNNER_TEMP/my_production.keystore -storepass ${{ secrets.ANDROID_KEY_PASSWORD }} -keypass ${{ secrets.ANDROID_STORE_PASSWORD }} -sigalg SHA256withRSA -digestalg SHA-256 -signedjar build/app/outputs/apk/release/app-release-signed.apk build/app/outputs/apk/release/*.apk ${{ secrets.ALIAS }}
+
+ - name: Publish Android Artifact
+ uses: actions/upload-artifact@v1
+ with:
+ name: release-apk-signed
+ path: mobile/build/app/outputs/apk/release/app-release-signed.apk
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 22480f94ab..32ef7ed927 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@ uploads
coverage
mobile/gradle.properties
+mobile/openapi/pubspec.lock
\ No newline at end of file
diff --git a/docs/docs/install/docker-compose.md b/docs/docs/install/docker-compose.md
index 1241cec421..b32cf9919a 100644
--- a/docs/docs/install/docker-compose.md
+++ b/docs/docs/install/docker-compose.md
@@ -13,11 +13,11 @@ Download [`docker-compose.yml`][compose-file] [`example.env`][env-file].
From a directory of your choice (e.g. `./immich-app`) run the following commands:
```bash title="Get docker-compose.yml file"
-wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
+wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
```
```bash title="Get .env file"
-wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env
+wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
```
### Step 2 - Populate the .env file with custom values
@@ -116,6 +116,6 @@ docker-compose pull && docker-compose up -d # Or `docker compose`
Immich is currently under heavy development, which means you can expect breaking changes and bugs. Therefore, we recommend reading the release notes prior to updating and to take special care when using automated tools like [Watchtower][watchtower].
:::
-[compose-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
-[env-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env
+[compose-file]: https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
+[env-file]: https://github.com/immich-app/immich/releases/latest/download/example.env
[watchtower]: https://containrrr.dev/watchtower/
diff --git a/docs/docs/install/portainer.md b/docs/docs/install/portainer.md
index 09c5917f3d..1d9b9b4fce 100644
--- a/docs/docs/install/portainer.md
+++ b/docs/docs/install/portainer.md
@@ -9,7 +9,7 @@ Install Immich using Portainer's Stack feature.
1. Go to "**Stacks**" in the left sidebar.
2. Click on "**Add stack**".
3. Give the stack a name (i.e. Immich), and select "**Web Editor**" as the build method.
-4. Copy the content of the `docker-compose.yml` file from the [GitHub repository](https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml).
+4. Copy the content of the `docker-compose.yml` file from the [GitHub repository](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml).
5. Replace `.env` with `stack.env` for all containers that need to use environment variables in the web editor.
-9. Copy the content of the `example.env` file from the [GitHub repository](https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env) and paste into the editor.
+9. Copy the content of the `example.env` file from the [GitHub repository](https://github.com/immich-app/immich/releases/latest/download/example.env) and paste into the editor.
10. Switch back to "**Simple Mode**".
3. Select the cog ⚙️ next to Immich then click "**Edit Stack**"
-4. Click "**Compose File**" and then paste the entire contents of the [Immich Docker Compose](https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml) file into the Unraid editor
+4. Click "**Compose File**" and then paste the entire contents of the [Immich Docker Compose](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) file into the Unraid editor
Using an existing Postgres container? Click me! Otherwise proceed to step 5.
@@ -53,7 +71,7 @@ alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich"
5. Click "**Save Changes**", you will be promoted to edit stack UI labels, just leave this blank and click "**Ok**"
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
-7. Past the entire contents of the [Immich example.env](https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env) file into the Unraid editor, then **before saving** edit the following:
+7. Past the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following:
- `UPLOAD_LOCATION`: Create a folder in your Images Unraid share and place the **absolute** location here > For example my _"images"_ share has a folder within it called _"immich"_. If I browse to this directory in the terminal and type `pwd` the output is `/mnt/user/images/immich`. This is the exact value I need to enter as my `UPLOAD_LOCATION`
diff --git a/misc/release/pump-version.sh b/misc/release/pump-version.sh
index c9fcf0f7e8..3faf98c7ae 100755
--- a/misc/release/pump-version.sh
+++ b/misc/release/pump-version.sh
@@ -63,6 +63,7 @@ if [ "$CURRENT_SERVER" != "$NEXT_SERVER" ]; then
sed -i "s/^ \"version\": \"$CURRENT_SERVER\",$/ \"version\": \"$NEXT_SERVER\",/" server/package.json
sed -i "s/^ \"version\": \"$CURRENT_SERVER\",$/ \"version\": \"$NEXT_SERVER\",/" server/package-lock.json
sed -i "s/\"android\.injected\.version\.name\" => \"$CURRENT_SERVER\",/\"android\.injected\.version\.name\" => \"$NEXT_SERVER\",/" mobile/android/fastlane/Fastfile
+ sed -i "s/version_number: \"$CURRENT_SERVER\"$/version_number: \"$NEXT_SERVER\"/" mobile/ios/fastlane/Fastfile
fi
diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle
index cc0de01bad..da8ed20712 100644
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -57,20 +57,21 @@ android {
versionName flutterVersionName
}
- signingConfigs {
- release {
- keyAlias keystoreProperties['keyAlias']
- keyPassword keystoreProperties['keyPassword']
- storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
- storePassword keystoreProperties['storePassword']
- }
- }
+ // signingConfigs {
+ // release {
+ // keyAlias keystoreProperties['keyAlias']
+ // keyPassword keystoreProperties['keyPassword']
+ // storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
+ // storePassword keystoreProperties['storePassword']
+ // }
+ // }
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.release
+ // signingConfig signingConfigs.release
+ signingConfig null
}
}
}
diff --git a/mobile/android/app/src/main/res/drawable-hdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-hdpi/android12splash.png
new file mode 100644
index 0000000000..50ad4fe6e8
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-hdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-mdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-mdpi/android12splash.png
new file mode 100644
index 0000000000..9bffdc36cd
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-mdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-night-hdpi/android12splash.png
new file mode 100644
index 0000000000..50ad4fe6e8
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-night-hdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-night-mdpi/android12splash.png
new file mode 100644
index 0000000000..9bffdc36cd
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-night-mdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
new file mode 100644
index 0000000000..141ed6e87d
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-night-xhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
new file mode 100644
index 0000000000..3f9ee2b4b0
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
new file mode 100644
index 0000000000..5147fd261d
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-v21/background.png b/mobile/android/app/src/main/res/drawable-v21/background.png
new file mode 100644
index 0000000000..d4e7085f12
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-v21/background.png differ
diff --git a/mobile/android/app/src/main/res/drawable-v21/launch_background.xml b/mobile/android/app/src/main/res/drawable-v21/launch_background.xml
index f74085f3f6..f88598cf6c 100644
--- a/mobile/android/app/src/main/res/drawable-v21/launch_background.xml
+++ b/mobile/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -1,12 +1,6 @@
-
-
-
-
-
+ -
+
+
diff --git a/mobile/android/app/src/main/res/drawable-xhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-xhdpi/android12splash.png
new file mode 100644
index 0000000000..141ed6e87d
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-xhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-xxhdpi/android12splash.png
new file mode 100644
index 0000000000..3f9ee2b4b0
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-xxhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/mobile/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
new file mode 100644
index 0000000000..5147fd261d
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable-xxxhdpi/android12splash.png differ
diff --git a/mobile/android/app/src/main/res/drawable/background.png b/mobile/android/app/src/main/res/drawable/background.png
new file mode 100644
index 0000000000..d4e7085f12
Binary files /dev/null and b/mobile/android/app/src/main/res/drawable/background.png differ
diff --git a/mobile/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/mobile/android/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000000..6452c29baa
--- /dev/null
+++ b/mobile/android/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/drawable/ic_launcher_monochrome.xml b/mobile/android/app/src/main/res/drawable/ic_launcher_monochrome.xml
new file mode 100644
index 0000000000..d98b89c74a
--- /dev/null
+++ b/mobile/android/app/src/main/res/drawable/ic_launcher_monochrome.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/drawable/launch_background.xml b/mobile/android/app/src/main/res/drawable/launch_background.xml
index 304732f884..f88598cf6c 100644
--- a/mobile/android/app/src/main/res/drawable/launch_background.xml
+++ b/mobile/android/app/src/main/res/drawable/launch_background.xml
@@ -1,12 +1,6 @@
-
-
-
-
-
+ -
+
+
diff --git a/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000000..1084c24082
--- /dev/null
+++ b/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mobile/android/app/src/main/res/values-night-v31/styles.xml b/mobile/android/app/src/main/res/values-night-v31/styles.xml
new file mode 100644
index 0000000000..8597414ae1
--- /dev/null
+++ b/mobile/android/app/src/main/res/values-night-v31/styles.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/values-v31/styles.xml b/mobile/android/app/src/main/res/values-v31/styles.xml
new file mode 100644
index 0000000000..2c04230b69
--- /dev/null
+++ b/mobile/android/app/src/main/res/values-v31/styles.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/values/colors.xml b/mobile/android/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..c5d5899fdf
--- /dev/null
+++ b/mobile/android/app/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/mobile/android/app/src/main/res/values/styles.xml b/mobile/android/app/src/main/res/values/styles.xml
index d460d1e921..0d15186673 100644
--- a/mobile/android/app/src/main/res/values/styles.xml
+++ b/mobile/android/app/src/main/res/values/styles.xml
@@ -5,6 +5,9 @@
- @drawable/launch_background
+ - false
+ - false
+ - shortEdges