Compare commits

...

6 Commits

Author SHA1 Message Date
Immich Release Bot
08b221c270 Version v1.48.1 2023-02-22 03:53:56 +00:00
Alex
3102c3128f hotfix(server): getAlbumByAssetId alters album content (#1828) 2023-02-21 21:53:00 -06:00
Alex
9ebed3c1b4 fix(server): Object detection query and get server stats (#1823)
* fix(server): Object detection query has incorrect value

* fix: get stats for user using the wrong property id from response

* chore: update openapi version
2023-02-21 21:51:04 -06:00
bo0tzz
24d672a0ff chore: Remove stale values from docker-compose.yml (#1822) 2023-02-21 16:55:36 -06:00
bo0tzz
e9f99302c1 fix(ci): Shake up prepare-release concurrency group (#1820) 2023-02-21 16:55:05 -06:00
Alex Tran
5cdf7671ed chore: changelog 2023-02-21 11:45:28 -06:00
22 changed files with 40 additions and 37 deletions

View File

@@ -18,7 +18,7 @@ on:
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.ref }}-root
cancel-in-progress: true
jobs:

View File

@@ -42,8 +42,6 @@ services:
- .env
environment:
- NODE_ENV=production
depends_on:
- database
restart: always
immich-web:

View File

@@ -36,7 +36,7 @@ platform :android do
build_type: 'Release',
properties: {
"android.injected.version.code" => 71,
"android.injected.version.name" => "1.48.0",
"android.injected.version.name" => "1.48.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,6 @@
* Scroll to top when tapping photos while already on photo page.
* Delete goes to next page instead of popping back to the main timeline.
* Improve date formatting.
* Styling and linter.
* User get logged out upon clicking on any thing after logging in.
* Improve reliability of asset loading and indexing.

View File

@@ -5,17 +5,17 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000209">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000284">
</testcase>
<testcase classname="fastlane.lanes" name="1: bundleRelease" time="79.840593">
<testcase classname="fastlane.lanes" name="1: bundleRelease" time="282.422814">
</testcase>
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="21.361905">
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="43.555992">
</testcase>

View File

@@ -378,7 +378,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 86;
CURRENT_PROJECT_VERSION = 87;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@@ -514,7 +514,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 86;
CURRENT_PROJECT_VERSION = 87;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@@ -542,7 +542,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 86;
CURRENT_PROJECT_VERSION = 87;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;

View File

@@ -44,11 +44,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.47.0</string>
<string>1.48.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>86</string>
<string>87</string>
<key>FLTEnableImpeller</key>
<true/>
<key>ITSAppUsesNonExemptEncryption</key>

View File

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

View File

@@ -5,32 +5,32 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000269">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000542">
</testcase>
<testcase classname="fastlane.lanes" name="1: increment_version_number" time="3.705535">
<testcase classname="fastlane.lanes" name="1: increment_version_number" time="11.028001">
</testcase>
<testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="5.23144">
<testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="5.912096">
</testcase>
<testcase classname="fastlane.lanes" name="3: increment_build_number" time="2.423549">
<testcase classname="fastlane.lanes" name="3: increment_build_number" time="1.65488">
</testcase>
<testcase classname="fastlane.lanes" name="4: build_app" time="98.940158">
<testcase classname="fastlane.lanes" name="4: build_app" time="110.93313">
</testcase>
<testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="64.950609">
<testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="80.292248">
</testcase>

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.47.3
- API version: 1.48.0
- Build package: org.openapitools.codegen.languages.DartClientCodegen
## Requirements

View File

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

View File

@@ -1,7 +1,7 @@
import { AlbumEntity, AssetEntity, UserEntity } from '@app/infra';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository, Not, IsNull, FindManyOptions } from 'typeorm';
import { Repository, Not, IsNull, FindManyOptions, In } from 'typeorm';
import { AddAssetsDto } from './dto/add-assets.dto';
import { AddUsersDto } from './dto/add-users.dto';
import { CreateAlbumDto } from './dto/create-album.dto';
@@ -121,12 +121,12 @@ export class AlbumRepository implements IAlbumRepository {
async getListByAssetId(userId: string, assetId: string): Promise<AlbumEntity[]> {
const albums = await this.albumRepository.find({
where: { ownerId: userId, assets: { id: assetId } },
where: { ownerId: userId },
relations: { owner: true, assets: true, sharedUsers: true },
order: { assets: { fileCreatedAt: 'ASC' } },
});
return albums;
return albums.filter((album) => album.assets.some((asset) => asset.id === assetId));
}
async get(albumId: string): Promise<AlbumEntity | null> {

View File

@@ -80,7 +80,7 @@ export class AssetRepository implements IAssetRepository {
.createQueryBuilder('asset')
.leftJoinAndSelect('asset.smartInfo', 'si')
.where('asset.resizePath IS NOT NULL')
.andWhere('si.id IS NULL')
.andWhere('si.assetId IS NULL')
.andWhere('asset.isVisible = true')
.getMany();
}

View File

@@ -39,7 +39,7 @@ export class ServerInfoService {
assetType: string;
assetCount: string;
totalSizeInBytes: string;
userId: string;
ownerId: string;
};
const userStatsQueryResponse: UserStatsQueryResponse[] = await this.assetRepository
@@ -56,9 +56,8 @@ export class ServerInfoService {
const tmpMap = new Map<string, UsageByUserDto>();
const getUsageByUser = (id: string) => tmpMap.get(id) || new UsageByUserDto(id);
userStatsQueryResponse.forEach((r) => {
const usageByUser = getUsageByUser(r.userId);
const usageByUser = getUsageByUser(r.ownerId);
usageByUser.photos += r.assetType === 'IMAGE' ? parseInt(r.assetCount) : 0;
usageByUser.videos += r.assetType === 'VIDEO' ? parseInt(r.assetCount) : 0;
usageByUser.usageRaw += parseInt(r.totalSizeInBytes);
@@ -68,7 +67,7 @@ export class ServerInfoService {
serverStats.videos += r.assetType === 'VIDEO' ? parseInt(r.assetCount) : 0;
serverStats.usageRaw += parseInt(r.totalSizeInBytes);
serverStats.usage = asHumanReadable(serverStats.usageRaw);
tmpMap.set(r.userId, usageByUser);
tmpMap.set(r.ownerId, usageByUser);
});
serverStats.usageByUser = Array.from(tmpMap.values());

View File

@@ -2728,7 +2728,7 @@
"info": {
"title": "Immich",
"description": "Immich API",
"version": "1.48.0",
"version": "1.48.1",
"contact": {}
},
"tags": [],

View File

@@ -1,6 +1,6 @@
{
"name": "immich",
"version": "1.48.0",
"version": "1.48.1",
"lockfileVersion": 2,
"requires": true,
"packages": {

View File

@@ -1,6 +1,6 @@
{
"name": "immich",
"version": "1.48.0",
"version": "1.48.1",
"description": "",
"author": "",
"private": true,

View File

@@ -4,7 +4,7 @@
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.47.3
* The version of the OpenAPI document: 1.48.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.47.3
* The version of the OpenAPI document: 1.48.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.47.3
* The version of the OpenAPI document: 1.48.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.47.3
* The version of the OpenAPI document: 1.48.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.47.3
* The version of the OpenAPI document: 1.48.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).