+
+## OAuth Integration 🎉
+
+I want to borrow this chance to express my gratitude to [@EnricoBilla](https://github.com/EnricoBilla), who has been the trailblazer for this feature since the beginning days of Immich. His PR has sparked ideas, suggestions, and discussion among the team member on how to integrate this feature successfully into the app. Thank you so much for your work and your time.
+
+OAuth is now integrated into the system. Please follow the guide [here](https://immich.app/docs/usage/oauth) to set up your OAuth integration
+
+After setting up the correct environment variables in the `.env` file, as shown below
+
+| Key | Type | Default | Description |
+| ------------------- | ------- | -------------------- | ------------------------------------------------------------------------- |
+| OAUTH_ENABLED | boolean | false | Enable/disable OAuth2 |
+| OAUTH_ISSUER_URL | URL | (required) | Required. Self-discovery URL for client |
+| OAUTH_CLIENT_ID | string | (required) | Required. Client ID |
+| OAUTH_CLIENT_SECRET | string | (required) | Required. Client Secret |
+| OAUTH_SCOPE | string | openid email profile | Full list of scopes to send with the request (space delimited) |
+| OAUTH_AUTO_REGISTER | boolean | true | When true, will automatically register a user the first time they sign in |
+| OAUTH_BUTTON_TEXT | string | Login with OAuth | Text for the OAuth button on the web |
+
+```bash title="Authentik Example"
+OAUTH_ENABLED=true
+OAUTH_ISSUER_URL=http://10.1.15.216:9000/application/o/immich-test/
+OAUTH_CLIENT_ID=30596v8f78a4b6a97d5985c3076b6b4c4d12ddc33
+OAUTH_CLIENT_SECRET=50f1eafdec353b95b1c638db390db4ab67ef035a51212dbec2f56175e2eb272b5d572c099176e6fe116ecf47ffdd544bgdb9e2edc588307ee0339d25eeccd88
+OAUTH_BUTTON_TEXT=Login with Authentik
+```
+
+The web will have the option to sign in with OAuth.
+
+
+
+The mobile app will check if the server has OAuth enabled before displaying the OAuth
+sign-in button.
+
+
+
+## Support
+
+
+
+If you find the project helpful and it helps you in some ways, you can support the project [one time](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or [monthly](https://github.com/sponsors/alextran1502) from GitHub Sponsor
+
+It is a great way to let me know that you want me to continue developing and working on this project for years to come.
+
+## Details
+
+For more details, please check out the [release note](https://github.com/immich-app/immich/releases/tag/v1.36.0_55-dev)
diff --git a/docs/docs/usage/img/authentik-redirect.png b/docs/docs/usage/img/authentik-redirect.png
new file mode 100644
index 0000000000..6cae28bbfe
Binary files /dev/null and b/docs/docs/usage/img/authentik-redirect.png differ
diff --git a/docs/docs/usage/oauth.md b/docs/docs/usage/oauth.md
index c8dff35908..78eb47aed5 100644
--- a/docs/docs/usage/oauth.md
+++ b/docs/docs/usage/oauth.md
@@ -28,9 +28,17 @@ Before enabling OAuth in Immich, a new client application needs to be configured
2. Configure Redirect URIs/Origins
- 1. The **Sign-in redirect URIs** should include:
+ The **Sign-in redirect URIs** should include:
- - All URLs that will be used to access the login page of the Immich web client (eg. `http://localhost:2283/auth/login`, `http://192.168.0.200:2283/auth/login`, `https://immich.example.com/auth/login`)
+ * All URLs that will be used to access the login page of the Immich web client (eg. `http://localhost:2283/auth/login`, `http://192.168.0.200:2283/auth/login`, `https://immich.example.com/auth/login`)
+ * Mobile app redirect URL `app.immich:/`
+
+:::caution
+You **MUST** include `app.immich:/` as the redirect URI for iOS and Android mobile app to work properly.
+
+**Authentik example**
+
+:::
## Enable OAuth
@@ -41,7 +49,7 @@ Once you have a new OAuth client application configured, Immich can be configure
| OAUTH_ENABLED | boolean | false | Enable/disable OAuth2 |
| OAUTH_ISSUER_URL | URL | (required) | Required. Self-discovery URL for client (from previous step) |
| OAUTH_CLIENT_ID | string | (required) | Required. Client ID (from previous step) |
-| OAUTH_CLIENT_SECRET | string | (required) | Required. Client Secret (previous step |
+| OAUTH_CLIENT_SECRET | string | (required) | Required. Client Secret (previous step) |
| OAUTH_SCOPE | string | openid email profile | Full list of scopes to send with the request (space delimited) |
| OAUTH_AUTO_REGISTER | boolean | true | When true, will automatically register a user the first time they sign in |
| OAUTH_BUTTON_TEXT | string | Login with OAuth | Text for the OAuth button on the web |
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index d1094f50aa..afb5d61b16 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -80,7 +80,7 @@ const config = {
position: "right",
label: "Documentation",
},
- // { to: "/blog", label: "Blog", position: "right" },
+ { to: "/blog", label: "Blog", position: "right" },
{
href: "https://github.com/immich-app/immich",
label: "GitHub",
diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle
index 54234e4b08..cc0de01bad 100644
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -33,7 +33,7 @@ if (keystorePropertiesFile.exists()) {
android {
- compileSdkVersion flutter.compileSdkVersion
+ compileSdkVersion 33
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -52,7 +52,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "app.alextran.immich"
minSdkVersion 23
- targetSdkVersion flutter.targetSdkVersion
+ targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml
index 36a967da6c..b6bf0b4459 100644
--- a/mobile/android/app/src/main/AndroidManifest.xml
+++ b/mobile/android/app/src/main/AndroidManifest.xml
@@ -12,21 +12,35 @@
+
+
+ - {getMegapixel(asset.exifInfo.exifImageHeight, asset.exifInfo.exifImageWidth)}MP + {getMegapixel(asset.exifInfo.exifImageHeight, asset.exifInfo.exifImageWidth)} MP
{/if}{asset.exifInfo.exifImageHeight} x {asset.exifInfo.exifImageWidth}
{/if} -{getHumanReadableString(asset.exifInfo.fileSizeInByte)}
+{getHumanReadableBytes(asset.exifInfo.fileSizeInByte)}
{asset.exifInfo.make || ''} {asset.exifInfo.model || ''}
{`f/${asset.exifInfo.fNumber}` || ''}
+{`ƒ/${asset.exifInfo.fNumber}` || ''}
{#if asset.exifInfo.exposureTime}{`1/${Math.floor(1 / asset.exifInfo.exposureTime)}`}
diff --git a/web/src/lib/components/shared-components/scrollbar/scrollbar.svelte b/web/src/lib/components/shared-components/scrollbar/scrollbar.svelte index fdddf6fcd9..38270f531f 100644 --- a/web/src/lib/components/shared-components/scrollbar/scrollbar.svelte +++ b/web/src/lib/components/shared-components/scrollbar/scrollbar.svelte @@ -94,7 +94,7 @@