Compare commits

..

17 Commits

Author SHA1 Message Date
Alex The Bot
b1d17302bc Version v1.52.1 2023-03-29 17:37:33 +00:00
Alex
cc3ffcbb84 fix(server): incorrect video file path to serve for mobile vs web (#2118) 2023-03-29 12:36:18 -05:00
Michel Heusschen
eda9e580c9 fix(server): add paused property to JobCountsDto (#2112) 2023-03-29 10:33:03 -05:00
Alex Tran
76a07a3ebc chore: add change logs 2023-03-28 17:19:10 -05:00
Alex Tran
abe87686a2 chore: post release openapi update 2023-03-28 15:49:21 -05:00
Alex Tran
6371c11fc5 Merge branch 'main' of github.com:immich-app/immich 2023-03-28 15:48:50 -05:00
Alex Tran
2f64af9cb2 Merge branch 'main' of github.com:immich-app/immich 2023-03-28 15:07:53 -05:00
Alex Tran
0c61521521 Merge branch 'main' of github.com:immich-app/immich 2023-03-28 14:47:51 -05:00
Alex Tran
10ccbeab35 Merge branch 'main' of github.com:immich-app/immich 2023-03-28 13:45:53 -05:00
Alex Tran
6f3f8b0a48 Merge branch 'main' of github.com:immich-app/immich 2023-03-28 09:57:08 -05:00
Alex Tran
5e207aa7c1 Merge branch 'main' of github.com:immich-app/immich 2023-03-27 22:07:15 -05:00
Alex Tran
97bbe42599 Merge branch 'main' of github.com:immich-app/immich 2023-03-27 10:41:24 -05:00
Alex Tran
833c099025 Merge branch 'main' of github.com:immich-app/immich 2023-03-27 08:45:12 -05:00
Alex Tran
75d28d3c58 Merge branch 'main' of github.com:immich-app/immich 2023-03-26 10:43:52 -05:00
Alex Tran
2f9fcd96c7 Merge branch 'main' of github.com:immich-app/immich 2023-03-25 21:51:10 -05:00
Alex Tran
193dd01e06 Merge branch 'main' of github.com:immich-app/immich 2023-03-25 10:15:48 -05:00
Alex Tran
c0ed623d26 chore: fix api 2023-03-24 23:17:40 -05:00
22 changed files with 69 additions and 83 deletions

View File

@@ -36,7 +36,7 @@ platform :android do
build_type: 'Release',
properties: {
"android.injected.version.code" => 75,
"android.injected.version.name" => "1.52.0",
"android.injected.version.name" => "1.52.1",
}
)
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')

View File

@@ -0,0 +1,8 @@
* refactor: migrate all Hive boxes to Isar database.
* feat: Use new search API and GridView for Places / Locations.
* refactor: store backup settings on device.
* feat: Explore favorites, recently added, videos, and motion photos.
* fix: Fixed mobile app not reporting webm MIME type.
* feature: Hardening synchronization mechanism + Pull to refresh.
* feat: improve explore page and allow metadata search.
* feat: Allow headers to upload large file in chunk.

View File

@@ -5,19 +5,17 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000232">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000285">
</testcase>
<testcase classname="fastlane.lanes" name="1: bundleRelease" time="70.685298">
<testcase classname="fastlane.lanes" name="1: bundleRelease" time="168.230955">
</testcase>
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="33.624781">
<failure message="/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/actions/actions_helper.rb:67:in `execute_action&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:229:in `chdir&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing&apos;&#10;Fastfile:42:in `block (2 levels) in parsing_binding&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/lane.rb:33:in `call&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:45:in `chdir&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/runner.rb:45:in `execute&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/commands_generator.rb:110:in `block (2 levels) in run&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/commander-4.6.0/lib/commander/command.rb:187:in `call&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/commander-4.6.0/lib/commander/command.rb:157:in `run&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/commander-4.6.0/lib/commander/runner.rb:444:in `run_active_command&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:124:in `run!&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/commander-4.6.0/lib/commander/delegates.rb:18:in `run!&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/commands_generator.rb:354:in `run&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/commands_generator.rb:43:in `start&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/fastlane/lib/fastlane/cli_tools_distributor.rb:123:in `take_off&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/gems/fastlane-2.212.0/bin/fastlane:23:in `&lt;top (required)&gt;&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/bin/fastlane:25:in `load&apos;&#10;/opt/homebrew/Cellar/fastlane/2.212.0/libexec/bin/fastlane:25:in `&lt;main&gt;&apos;&#10;&#10;Google Api Error: Invalid request - The release created has notes in language en-US with length 508, which is too long (max: 500)." />
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="43.975952">
</testcase>

View File

@@ -19,7 +19,7 @@ platform :ios do
desc "iOS Beta"
lane :beta do
increment_version_number(
version_number: "1.52.0"
version_number: "1.52.1"
)
increment_build_number(
build_number: latest_testflight_build_number + 1,

View File

@@ -3,7 +3,7 @@ Immich API
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.51.2
- API version: 1.52.0
- Build package: org.openapitools.codegen.languages.DartClientCodegen
## Requirements

View File

@@ -13,6 +13,7 @@ Name | Type | Description | Notes
**failed** | **int** | |
**delayed** | **int** | |
**waiting** | **int** | |
**paused** | **int** | |
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -18,6 +18,7 @@ class JobCountsDto {
required this.failed,
required this.delayed,
required this.waiting,
required this.paused,
});
int active;
@@ -30,13 +31,16 @@ class JobCountsDto {
int waiting;
int paused;
@override
bool operator ==(Object other) => identical(this, other) || other is JobCountsDto &&
other.active == active &&
other.completed == completed &&
other.failed == failed &&
other.delayed == delayed &&
other.waiting == waiting;
other.waiting == waiting &&
other.paused == paused;
@override
int get hashCode =>
@@ -45,10 +49,11 @@ class JobCountsDto {
(completed.hashCode) +
(failed.hashCode) +
(delayed.hashCode) +
(waiting.hashCode);
(waiting.hashCode) +
(paused.hashCode);
@override
String toString() => 'JobCountsDto[active=$active, completed=$completed, failed=$failed, delayed=$delayed, waiting=$waiting]';
String toString() => 'JobCountsDto[active=$active, completed=$completed, failed=$failed, delayed=$delayed, waiting=$waiting, paused=$paused]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
@@ -57,6 +62,7 @@ class JobCountsDto {
json[r'failed'] = this.failed;
json[r'delayed'] = this.delayed;
json[r'waiting'] = this.waiting;
json[r'paused'] = this.paused;
return json;
}
@@ -84,6 +90,7 @@ class JobCountsDto {
failed: mapValueOfType<int>(json, r'failed')!,
delayed: mapValueOfType<int>(json, r'delayed')!,
waiting: mapValueOfType<int>(json, r'waiting')!,
paused: mapValueOfType<int>(json, r'paused')!,
);
}
return null;
@@ -138,6 +145,7 @@ class JobCountsDto {
'failed',
'delayed',
'waiting',
'paused',
};
}

View File

@@ -41,6 +41,11 @@ void main() {
// TODO
});
// int paused
test('to test the property `paused`', () async {
// TODO
});
});

View File

@@ -2,7 +2,7 @@ name: immich_mobile
description: Immich - selfhosted backup media file on mobile phone
publish_to: "none"
version: 1.52.0+75
version: 1.52.1+75
isar_version: &isar_version 3.0.5
environment:

View File

@@ -314,7 +314,7 @@ export class AssetService {
return new StreamableFile(videoStream);
}
return this.streamFile(asset.originalPath, res, headers, mimeType);
return this.streamFile(videoPath, res, headers, mimeType);
} catch (e) {
this.logger.error(`Error serving VIDEO asset=${asset.id}`);
throw new InternalServerErrorException(`Failed to serve video asset ${e}`, 'ServeFile');

View File

@@ -3396,7 +3396,7 @@
"info": {
"title": "Immich",
"description": "Immich API",
"version": "1.52.0",
"version": "1.52.1",
"contact": {}
},
"tags": [],
@@ -4074,6 +4074,9 @@
},
"waiting": {
"type": "integer"
},
"paused": {
"type": "integer"
}
},
"required": [
@@ -4081,7 +4084,8 @@
"completed",
"failed",
"delayed",
"waiting"
"waiting",
"paused"
]
},
"AllJobStatusResponseDto": {

View File

@@ -15,6 +15,7 @@ export interface JobCounts {
failed: number;
delayed: number;
waiting: number;
paused: number;
}
export type JobItem =

View File

@@ -23,6 +23,7 @@ describe(JobService.name, () => {
failed: 1,
delayed: 1,
waiting: 1,
paused: 1,
});
await expect(sut.getAllJobsStatus()).resolves.toEqual({
@@ -32,6 +33,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'clip-encoding-queue': {
active: 1,
@@ -39,6 +41,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'metadata-extraction-queue': {
active: 1,
@@ -46,6 +49,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'object-tagging-queue': {
active: 1,
@@ -53,6 +57,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'search-queue': {
active: 1,
@@ -60,6 +65,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'storage-template-migration-queue': {
active: 1,
@@ -67,6 +73,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'thumbnail-generation-queue': {
active: 1,
@@ -74,6 +81,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
'video-conversion-queue': {
active: 1,
@@ -81,6 +89,7 @@ describe(JobService.name, () => {
delayed: 1,
failed: 1,
waiting: 1,
paused: 1,
},
});
});

View File

@@ -12,6 +12,8 @@ export class JobCountsDto {
delayed!: number;
@ApiProperty({ type: 'integer' })
waiting!: number;
@ApiProperty({ type: 'integer' })
paused!: number;
}
export class AllJobStatusResponseDto implements Record<QueueName, JobCountsDto> {

View File

@@ -10,7 +10,7 @@ import {
} from '@app/domain';
import { InjectQueue } from '@nestjs/bull';
import { Logger } from '@nestjs/common';
import { Queue } from 'bull';
import { Queue, type JobCounts as BullJobCounts } from 'bull';
export class JobRepository implements IJobRepository {
private logger = new Logger(JobRepository.name);
@@ -54,7 +54,9 @@ export class JobRepository implements IJobRepository {
}
getJobCounts(name: QueueName): Promise<JobCounts> {
return this.queueMap[name].getJobCounts();
// Typecast needed because the `paused` key is missing from Bull's
// type definition. Can be removed once fixed upstream.
return this.queueMap[name].getJobCounts() as Promise<BullJobCounts & { paused: number }>;
}
async queue(item: JobItem): Promise<void> {

View File

@@ -1,12 +1,12 @@
{
"name": "immich",
"version": "1.52.0",
"version": "1.52.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "immich",
"version": "1.51.0",
"version": "1.52.0",
"license": "UNLICENSED",
"dependencies": {
"@babel/runtime": "^7.20.13",
@@ -60,7 +60,6 @@
"@openapitools/openapi-generator-cli": "2.5.1",
"@types/archiver": "^5.3.1",
"@types/bcrypt": "^5.0.0",
"@types/bull": "^3.15.9",
"@types/cookie-parser": "^1.4.3",
"@types/cron": "^2.0.0",
"@types/express": "^4.17.13",
@@ -2511,16 +2510,6 @@
"@types/node": "*"
}
},
"node_modules/@types/bull": {
"version": "3.15.9",
"resolved": "https://registry.npmjs.org/@types/bull/-/bull-3.15.9.tgz",
"integrity": "sha512-MPUcyPPQauAmynoO3ezHAmCOhbB0pWmYyijr/5ctaCqhbKWsjW0YCod38ZcLzUBprosfZ9dPqfYIcfdKjk7RNQ==",
"dev": true,
"dependencies": {
"@types/ioredis": "*",
"@types/redis": "^2.8.0"
}
},
"node_modules/@types/component-emitter": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
@@ -2671,15 +2660,6 @@
"@types/through": "*"
}
},
"node_modules/@types/ioredis": {
"version": "4.28.8",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.8.tgz",
"integrity": "sha512-mULOyO2smtvkE1zmzRRA4P0+1UjEqusi014kXOL1q3CY0RgqkR5/wKvv+vAJbPw2Q66wPyylKeevUy+m/FaRMg==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -2801,15 +2781,6 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
"node_modules/@types/redis": {
"version": "2.8.32",
"resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz",
"integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/semver": {
"version": "7.3.13",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
@@ -13471,16 +13442,6 @@
"@types/node": "*"
}
},
"@types/bull": {
"version": "3.15.9",
"resolved": "https://registry.npmjs.org/@types/bull/-/bull-3.15.9.tgz",
"integrity": "sha512-MPUcyPPQauAmynoO3ezHAmCOhbB0pWmYyijr/5ctaCqhbKWsjW0YCod38ZcLzUBprosfZ9dPqfYIcfdKjk7RNQ==",
"dev": true,
"requires": {
"@types/ioredis": "*",
"@types/redis": "^2.8.0"
}
},
"@types/component-emitter": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
@@ -13631,15 +13592,6 @@
"@types/through": "*"
}
},
"@types/ioredis": {
"version": "4.28.8",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.8.tgz",
"integrity": "sha512-mULOyO2smtvkE1zmzRRA4P0+1UjEqusi014kXOL1q3CY0RgqkR5/wKvv+vAJbPw2Q66wPyylKeevUy+m/FaRMg==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -13761,15 +13713,6 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
"@types/redis": {
"version": "2.8.32",
"resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz",
"integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/semver": {
"version": "7.3.13",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",

View File

@@ -1,6 +1,6 @@
{
"name": "immich",
"version": "1.52.0",
"version": "1.52.1",
"description": "",
"author": "",
"private": true,
@@ -88,7 +88,6 @@
"@openapitools/openapi-generator-cli": "2.5.1",
"@types/archiver": "^5.3.1",
"@types/bcrypt": "^5.0.0",
"@types/bull": "^3.15.9",
"@types/cookie-parser": "^1.4.3",
"@types/cron": "^2.0.0",
"@types/express": "^4.17.13",

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.51.2
* The version of the OpenAPI document: 1.52.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -1284,6 +1284,12 @@ export interface JobCountsDto {
* @memberof JobCountsDto
*/
'waiting': number;
/**
*
* @type {number}
* @memberof JobCountsDto
*/
'paused': number;
}
/**
*

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.51.2
* The version of the OpenAPI document: 1.52.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.51.2
* The version of the OpenAPI document: 1.52.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.51.2
* The version of the OpenAPI document: 1.52.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.51.2
* The version of the OpenAPI document: 1.52.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).