Skip to content

Commit c3e9ed1

Browse files
Merge branch 'main' into main
2 parents 4014a82 + c34be73 commit c3e9ed1

File tree

20 files changed

+160
-29
lines changed

20 files changed

+160
-29
lines changed

cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@immich/cli",
3-
"version": "2.2.100",
3+
"version": "2.2.101",
44
"description": "Command Line Interface (CLI) for Immich",
55
"type": "module",
66
"exports": "./dist/index.js",
@@ -20,7 +20,7 @@
2020
"@types/lodash-es": "^4.17.12",
2121
"@types/micromatch": "^4.0.9",
2222
"@types/mock-fs": "^4.13.1",
23-
"@types/node": "^22.18.12",
23+
"@types/node": "^22.18.13",
2424
"@vitest/coverage-v8": "^3.0.0",
2525
"byte-size": "^9.0.0",
2626
"cli-progress": "^3.12.0",

docker/docker-compose.prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ services:
8383
container_name: immich_prometheus
8484
ports:
8585
- 9090:9090
86-
image: prom/prometheus@sha256:23031bfe0e74a13004252caaa74eccd0d62b6c6e7a04711d5b8bf5b7e113adc7
86+
image: prom/prometheus@sha256:49214755b6153f90a597adcbff0252cc61069f8ab69ce8411285cd4a560e8038
8787
volumes:
8888
- ./prometheus.yml:/etc/prometheus/prometheus.yml
8989
- prometheus-data:/prometheus

docs/static/archived-versions.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
[
2+
{
3+
"label": "v2.2.3",
4+
"url": "https://docs.v2.2.3.archive.immich.app"
5+
},
26
{
37
"label": "v2.2.2",
48
"url": "https://docs.v2.2.2.archive.immich.app"

e2e/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ services:
3535
- 2285:2285
3636

3737
redis:
38-
image: redis:6.2-alpine@sha256:77697a75da9f94e9357b61fcaf8345f69e3d9d32e9d15032c8415c21263977dc
38+
image: redis:6.2-alpine@sha256:37e002448575b32a599109664107e374c8709546905c372a34d64919043b9ceb
3939

4040
database:
4141
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:6f3e9d2c2177af16c2988ff71425d79d89ca630ec2f9c8db03209ab716542338

e2e/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "immich-e2e",
3-
"version": "2.2.2",
3+
"version": "2.2.3",
44
"description": "",
55
"main": "index.js",
66
"type": "module",
@@ -25,7 +25,7 @@
2525
"@playwright/test": "^1.44.1",
2626
"@socket.io/component-emitter": "^3.1.2",
2727
"@types/luxon": "^3.4.2",
28-
"@types/node": "^22.18.12",
28+
"@types/node": "^22.18.13",
2929
"@types/oidc-provider": "^9.0.0",
3030
"@types/pg": "^8.15.1",
3131
"@types/pngjs": "^6.0.4",

machine-learning/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "immich-ml"
3-
version = "2.2.2"
3+
version = "2.2.3"
44
description = ""
55
authors = [{ name = "Hau Tran", email = "[email protected]" }]
66
requires-python = ">=3.11,<4"

mobile/android/fastlane/Fastfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ platform :android do
3535
task: 'bundle',
3636
build_type: 'Release',
3737
properties: {
38-
"android.injected.version.code" => 3025,
39-
"android.injected.version.name" => "2.2.2",
38+
"android.injected.version.code" => 3026,
39+
"android.injected.version.name" => "2.2.3",
4040
}
4141
)
4242
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')

mobile/lib/providers/server_info.provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
6767
return;
6868
}
6969

70-
if (clientVersion < serverVersion) {
70+
if (clientVersion < serverVersion && clientVersion.differenceType(serverVersion) != SemVerType.patch) {
7171
state = state.copyWith(versionStatus: VersionStatus.clientOutOfDate);
7272
return;
7373
}

mobile/lib/repositories/asset_media.repository.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,16 @@ class AssetMediaRepository {
8989
return null;
9090
}
9191

92-
// titleAsync gets the correct original filename for some assets on iOS
93-
// otherwise using the `entity.title` would return a random GUID
94-
return await entity.titleAsync;
92+
try {
93+
// titleAsync gets the correct original filename for some assets on iOS
94+
// otherwise using the `entity.title` would return a random GUID
95+
final originalFilename = await entity.titleAsync;
96+
// treat empty filename as missing
97+
return originalFilename.isNotEmpty ? originalFilename : null;
98+
} catch (e) {
99+
_log.warning("Failed to get original filename for asset: $id. Error: $e");
100+
return null;
101+
}
95102
}
96103

97104
// TODO: make this more efficient

mobile/lib/utils/semver.dart

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
enum SemVerType { major, minor, patch }
2+
13
class SemVer {
24
final int major;
35
final int minor;
@@ -15,8 +17,20 @@ class SemVer {
1517
}
1618

1719
factory SemVer.fromString(String version) {
20+
if (version.toLowerCase().startsWith("v")) {
21+
version = version.substring(1);
22+
}
23+
1824
final parts = version.split("-")[0].split('.');
19-
return SemVer(major: int.parse(parts[0]), minor: int.parse(parts[1]), patch: int.parse(parts[2]));
25+
if (parts.length != 3) {
26+
throw FormatException('Invalid semantic version string: $version');
27+
}
28+
29+
try {
30+
return SemVer(major: int.parse(parts[0]), minor: int.parse(parts[1]), patch: int.parse(parts[2]));
31+
} catch (e) {
32+
throw FormatException('Invalid semantic version string: $version');
33+
}
2034
}
2135

2236
bool operator >(SemVer other) {
@@ -54,6 +68,20 @@ class SemVer {
5468
return other is SemVer && other.major == major && other.minor == minor && other.patch == patch;
5569
}
5670

71+
SemVerType? differenceType(SemVer other) {
72+
if (major != other.major) {
73+
return SemVerType.major;
74+
}
75+
if (minor != other.minor) {
76+
return SemVerType.minor;
77+
}
78+
if (patch != other.patch) {
79+
return SemVerType.patch;
80+
}
81+
82+
return null;
83+
}
84+
5785
@override
5886
int get hashCode => major.hashCode ^ minor.hashCode ^ patch.hashCode;
5987
}

0 commit comments

Comments
 (0)