Skip to content

Commit 3c47b37

Browse files
committed
Merge branch 'main' into feat/15712-add-keyboard-shortcut-selection-on-grid
* main: (22 commits) feat: add album keyboard shortcuts (immich-app#16442) fix(web): Default to context search on web (immich-app#16485) fix(mobile): Updated formatting of server address in networking (immich-app#16483) chore(mobile): rename log enum to lowercase (immich-app#16476) fix(web): Open huggingface.co link on settings page in new tab (immich-app#16470) fix(web): fix typos (immich-app#16466) fix(web): Fixed people list overflowing in advanced search (immich-app#16457) fix(web): unable to download live photo as anonymous user (immich-app#16455) fix(mobile): fix typos (immich-app#16456) chore: add 'not duplicate' checkbox to issue template (immich-app#16462) chore(mobile): post release task (immich-app#16437) feat(server): Shortened asset ID in storage template (immich-app#16433) chore: version v1.128.0 fix: memories off by one (immich-app#16434) fix(server): stringify error log parameter to ensure correct overload (immich-app#16422) fix: duplicate memories (immich-app#16432) chore(server): trash e2e cleanup (immich-app#16423) fix(server): include deleted assets if searching offline assets (immich-app#16417) fix: user delete sync query sort by id (immich-app#16420) fix(mobile): background backup failing due to store (immich-app#16418) ...
2 parents 36f180b + 6bf2e8d commit 3c47b37

File tree

66 files changed

+224
-212
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+224
-212
lines changed

.github/ISSUE_TEMPLATE/bug_report.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
name: Report an issue with Immich
22
description: Report an issue with Immich
33
body:
4+
- type: checkboxes
5+
attributes:
6+
label: I have searched the existing issues to make sure this is not a duplicate report.
7+
options:
8+
- label: "Yes"
9+
required: true
10+
411
- type: markdown
512
attributes:
613
value: |

cli/package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@immich/cli",
3-
"version": "2.2.51",
3+
"version": "2.2.52",
44
"description": "Command Line Interface (CLI) for Immich",
55
"type": "module",
66
"exports": "./dist/index.js",

docs/docs/guides/database-queries.md

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
3131
SELECT * FROM "assets" WHERE "id" = '9f94e60f-65b6-47b7-ae44-a4df7b57f0e9';
3232
```
3333

34+
```sql title="Find by partial ID"
35+
SELECT * FROM "assets" WHERE "id"::text LIKE '%ab431d3a%';
36+
```
37+
3438
:::note
3539
You can calculate the checksum for a particular file by using the command `sha1sum <filename>`.
3640
:::

docs/static/archived-versions.json

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
[
2+
{
3+
"label": "v1.128.0",
4+
"url": "https://v1.128.0.archive.immich.app"
5+
},
26
{
37
"label": "v1.127.0",
48
"url": "https://v1.127.0.archive.immich.app"

e2e/package-lock.json

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "immich-e2e",
3-
"version": "1.127.0",
3+
"version": "1.128.0",
44
"description": "",
55
"main": "index.js",
66
"type": "module",

e2e/src/api/specs/trash.e2e-spec.ts

+13-18
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import { LoginResponseDto, getAssetInfo, getAssetStatistics, scanLibrary } from '@immich/sdk';
1+
import { LoginResponseDto, getAssetInfo, getAssetStatistics } from '@immich/sdk';
22
import { existsSync } from 'node:fs';
33
import { Socket } from 'socket.io-client';
44
import { errorDto } from 'src/responses';
55
import { app, asBearerAuth, testAssetDir, testAssetDirInternal, utils } from 'src/utils';
66
import request from 'supertest';
77
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
88

9-
const scan = async (accessToken: string, id: string) => scanLibrary({ id }, { headers: asBearerAuth(accessToken) });
10-
119
describe('/trash', () => {
1210
let admin: LoginResponseDto;
1311
let ws: Socket;
@@ -81,17 +79,15 @@ describe('/trash', () => {
8179

8280
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
8381

84-
await scan(admin.accessToken, library.id);
85-
await utils.waitForQueueFinish(admin.accessToken, 'library');
82+
await utils.scan(admin.accessToken, library.id);
8683

8784
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
8885
expect(assets.items.length).toBe(1);
8986
const asset = assets.items[0];
9087

9188
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] });
9289

93-
await scan(admin.accessToken, library.id);
94-
await utils.waitForQueueFinish(admin.accessToken, 'library');
90+
await utils.scan(admin.accessToken, library.id);
9591

9692
const assetBefore = await utils.getAssetInfo(admin.accessToken, asset.id);
9793
expect(assetBefore).toMatchObject({ isTrashed: true, isOffline: true });
@@ -116,17 +112,15 @@ describe('/trash', () => {
116112

117113
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
118114

119-
await scan(admin.accessToken, library.id);
120-
await utils.waitForQueueFinish(admin.accessToken, 'library');
115+
await utils.scan(admin.accessToken, library.id);
121116

122117
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
123118
expect(assets.items.length).toBe(1);
124119
const asset = assets.items[0];
125120

126121
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] });
127122

128-
await scan(admin.accessToken, library.id);
129-
await utils.waitForQueueFinish(admin.accessToken, 'library');
123+
await utils.scan(admin.accessToken, library.id);
130124

131125
const assetBefore = await utils.getAssetInfo(admin.accessToken, asset.id);
132126
expect(assetBefore).toMatchObject({ isTrashed: true, isOffline: true });
@@ -180,18 +174,15 @@ describe('/trash', () => {
180174

181175
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
182176

183-
await scan(admin.accessToken, library.id);
184-
await utils.waitForQueueFinish(admin.accessToken, 'library');
177+
await utils.scan(admin.accessToken, library.id);
185178

186179
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
187180
expect(assets.count).toBe(1);
188181
const assetId = assets.items[0].id;
189182

190183
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] });
191184

192-
await scan(admin.accessToken, library.id);
193-
194-
await utils.waitForQueueFinish(admin.accessToken, 'library');
185+
await utils.scan(admin.accessToken, library.id);
195186

196187
const before = await getAssetInfo({ id: assetId }, { headers: asBearerAuth(admin.accessToken) });
197188
expect(before).toStrictEqual(expect.objectContaining({ id: assetId, isOffline: true }));
@@ -201,6 +192,8 @@ describe('/trash', () => {
201192

202193
const after = await getAssetInfo({ id: assetId }, { headers: asBearerAuth(admin.accessToken) });
203194
expect(after).toStrictEqual(expect.objectContaining({ id: assetId, isOffline: true }));
195+
196+
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
204197
});
205198
});
206199

@@ -238,7 +231,7 @@ describe('/trash', () => {
238231

239232
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
240233

241-
await scan(admin.accessToken, library.id);
234+
await utils.scan(admin.accessToken, library.id);
242235
await utils.waitForQueueFinish(admin.accessToken, 'library');
243236

244237
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
@@ -247,7 +240,7 @@ describe('/trash', () => {
247240

248241
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] });
249242

250-
await scan(admin.accessToken, library.id);
243+
await utils.scan(admin.accessToken, library.id);
251244
await utils.waitForQueueFinish(admin.accessToken, 'library');
252245

253246
const before = await utils.getAssetInfo(admin.accessToken, assetId);
@@ -261,6 +254,8 @@ describe('/trash', () => {
261254

262255
const after = await utils.getAssetInfo(admin.accessToken, assetId);
263256
expect(after.isTrashed).toBe(true);
257+
258+
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
264259
});
265260
});
266261
});

machine-learning/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "machine-learning"
3-
version = "1.127.0"
3+
version = "1.128.0"
44
description = ""
55
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
66
readme = "README.md"

mobile/android/fastlane/Fastfile

+2-2
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" => 185,
39-
"android.injected.version.name" => "1.127.0",
38+
"android.injected.version.code" => 186,
39+
"android.injected.version.name" => "1.128.0",
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/ios/Runner.xcodeproj/project.pbxproj

+6-6
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@
541541
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
542542
CODE_SIGN_IDENTITY = "Apple Development";
543543
CODE_SIGN_STYLE = Automatic;
544-
CURRENT_PROJECT_VERSION = 195;
544+
CURRENT_PROJECT_VERSION = 196;
545545
CUSTOM_GROUP_ID = group.app.immich.share;
546546
DEVELOPMENT_TEAM = 2F67MQ8R79;
547547
ENABLE_BITCODE = NO;
@@ -685,7 +685,7 @@
685685
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
686686
CODE_SIGN_IDENTITY = "Apple Development";
687687
CODE_SIGN_STYLE = Automatic;
688-
CURRENT_PROJECT_VERSION = 195;
688+
CURRENT_PROJECT_VERSION = 196;
689689
CUSTOM_GROUP_ID = group.app.immich.share;
690690
DEVELOPMENT_TEAM = 2F67MQ8R79;
691691
ENABLE_BITCODE = NO;
@@ -715,7 +715,7 @@
715715
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
716716
CODE_SIGN_IDENTITY = "Apple Development";
717717
CODE_SIGN_STYLE = Automatic;
718-
CURRENT_PROJECT_VERSION = 195;
718+
CURRENT_PROJECT_VERSION = 196;
719719
CUSTOM_GROUP_ID = group.app.immich.share;
720720
DEVELOPMENT_TEAM = 2F67MQ8R79;
721721
ENABLE_BITCODE = NO;
@@ -748,7 +748,7 @@
748748
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
749749
CODE_SIGN_IDENTITY = "Apple Development";
750750
CODE_SIGN_STYLE = Automatic;
751-
CURRENT_PROJECT_VERSION = 195;
751+
CURRENT_PROJECT_VERSION = 196;
752752
CUSTOM_GROUP_ID = group.app.immich.share;
753753
DEVELOPMENT_TEAM = 2F67MQ8R79;
754754
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -791,7 +791,7 @@
791791
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
792792
CODE_SIGN_IDENTITY = "Apple Development";
793793
CODE_SIGN_STYLE = Automatic;
794-
CURRENT_PROJECT_VERSION = 195;
794+
CURRENT_PROJECT_VERSION = 196;
795795
CUSTOM_GROUP_ID = group.app.immich.share;
796796
DEVELOPMENT_TEAM = 2F67MQ8R79;
797797
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -831,7 +831,7 @@
831831
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
832832
CODE_SIGN_IDENTITY = "Apple Development";
833833
CODE_SIGN_STYLE = Automatic;
834-
CURRENT_PROJECT_VERSION = 195;
834+
CURRENT_PROJECT_VERSION = 196;
835835
CUSTOM_GROUP_ID = group.app.immich.share;
836836
DEVELOPMENT_TEAM = 2F67MQ8R79;
837837
ENABLE_USER_SCRIPT_SANDBOXING = YES;

mobile/ios/Runner/BackgroundSync/BackgroundServicePlugin.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class BackgroundServicePlugin: NSObject, FlutterPlugin {
160160
}
161161
}
162162

163-
// Called by the flutter code when enabled so that we can turn on the backround services
163+
// Called by the flutter code when enabled so that we can turn on the background services
164164
// and save the callback information to communicate on this method channel
165165
public func handleBackgroundEnable(call: FlutterMethodCall, result: FlutterResult) {
166166

@@ -249,7 +249,7 @@ class BackgroundServicePlugin: NSObject, FlutterPlugin {
249249
result(true)
250250
}
251251

252-
// Returns the number of currently scheduled background processes to Flutter, striclty
252+
// Returns the number of currently scheduled background processes to Flutter, strictly
253253
// for debugging
254254
func handleNumberOfProcesses(call: FlutterMethodCall, result: @escaping FlutterResult) {
255255
BGTaskScheduler.shared.getPendingTaskRequests { requests in
@@ -355,7 +355,7 @@ class BackgroundServicePlugin: NSObject, FlutterPlugin {
355355
let isExpensive = wifiMonitor.currentPath.isExpensive
356356
if (isExpensive) {
357357
// The network is expensive and we have required Wi-Fi
358-
// Therfore, we will simply complete the task without
358+
// Therefore, we will simply complete the task without
359359
// running it
360360
task.setTaskCompleted(success: true)
361361
return

mobile/ios/Runner/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
<key>CFBundlePackageType</key>
7979
<string>APPL</string>
8080
<key>CFBundleShortVersionString</key>
81-
<string>1.127.0</string>
81+
<string>1.128.0</string>
8282
<key>CFBundleSignature</key>
8383
<string>????</string>
8484
<key>CFBundleURLTypes</key>
@@ -93,7 +93,7 @@
9393
</dict>
9494
</array>
9595
<key>CFBundleVersion</key>
96-
<string>195</string>
96+
<string>196</string>
9797
<key>FLTEnableImpeller</key>
9898
<true/>
9999
<key>ITSAppUsesNonExemptEncryption</key>

mobile/ios/fastlane/Fastfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ platform :ios do
1919
desc "iOS Release"
2020
lane :release do
2121
increment_version_number(
22-
version_number: "1.127.0"
22+
version_number: "1.128.0"
2323
)
2424
increment_build_number(
2525
build_number: latest_testflight_build_number + 1,

mobile/lib/domain/models/log.model.dart

+10-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
1-
// ignore_for_file: constant_identifier_names
2-
3-
import 'package:logging/logging.dart';
4-
51
/// Log levels according to dart logging [Level]
62
enum LogLevel {
7-
ALL,
8-
FINEST,
9-
FINER,
10-
FINE,
11-
CONFIG,
12-
INFO,
13-
WARNING,
14-
SEVERE,
15-
SHOUT,
16-
OFF,
3+
all,
4+
finest,
5+
finer,
6+
fine,
7+
config,
8+
info,
9+
warning,
10+
severe,
11+
shout,
12+
off,
1713
}
1814

1915
class LogMessage {

0 commit comments

Comments
 (0)