Merge branch 'main' of github.com:immich-app/immich

This commit is contained in:
Alex 2025-05-22 15:43:41 -05:00
commit 127901c389
No known key found for this signature in database
GPG key ID: 53CD082B3A5E1082
6 changed files with 27 additions and 21 deletions
.github/workflows
docs/src/pages
mobile/lib/services
web/src
lib/components
assets/thumbnail
photos-page
routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]

View file

@ -504,6 +504,11 @@ jobs:
with:
channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml
- name: Generate translation file
run: make translation
working-directory: ./mobile
- name: Run tests
working-directory: ./mobile
run: flutter test -j 1

View file

@ -218,7 +218,7 @@ const roadmap: Item[] = [
iconColor: 'indianred',
title: 'Stable release',
description: 'Immich goes stable',
getDateLabel: () => 'Planned for early 2025',
getDateLabel: () => 'Planned for 2025',
},
{
done: false,

View file

@ -1,10 +1,10 @@
// ignore_for_file: implementation_imports
import 'package:flutter/foundation.dart';
import 'package:easy_localization/src/asset_loader.dart';
import 'package:easy_localization/src/easy_localization_controller.dart';
import 'package:easy_localization/src/localization.dart';
import 'package:flutter/foundation.dart';
import 'package:immich_mobile/constants/locales.dart';
import 'package:immich_mobile/generated/codegen_loader.g.dart';
/// Workaround to manually load translations in another Isolate
Future<bool> loadTranslations() async {
@ -14,7 +14,7 @@ Future<bool> loadTranslations() async {
supportedLocales: locales.values.toList(),
useFallbackTranslations: true,
saveLocale: true,
assetLoader: const RootBundleAssetLoader(),
assetLoader: const CodegenLoader(),
path: translationsPath,
useOnlyLangCode: false,
onLoadError: (e) => debugPrint(e.toString()),

View file

@ -55,7 +55,7 @@
};
</script>
<div class="absolute end-0 top-0 flex place-items-center gap-1 text-xs font-medium text-white">
<div class="absolute end-0 top-0 z-1 flex place-items-center gap-1 text-xs font-medium text-white">
{#if showTime}
<span class="pt-2">
{#if remainingSeconds < 60}

View file

@ -564,12 +564,9 @@
return;
}
// Select/deselect assets in range (start,end]
// Select/deselect assets in range (start,end)
let started = false;
for (const bucket of assetStore.buckets) {
if (bucket === startBucket) {
started = true;
}
if (bucket === endBucket) {
break;
}
@ -583,27 +580,31 @@
}
}
}
if (bucket === startBucket) {
started = true;
}
}
// Update date group selection
// Update date group selection in range [start,end]
started = false;
for (const bucket of assetStore.buckets) {
if (bucket === startBucket) {
started = true;
}
if (started) {
// Split bucket into date groups and check each group
for (const dateGroup of bucket.dateGroups) {
const dateGroupTitle = dateGroup.groupTitle;
if (dateGroup.getAssets().every((a) => assetInteraction.hasSelectedAsset(a.id))) {
assetInteraction.addGroupToMultiselectGroup(dateGroupTitle);
} else {
assetInteraction.removeGroupFromMultiselectGroup(dateGroupTitle);
}
}
}
if (bucket === endBucket) {
break;
}
// Split bucket into date groups and check each group
for (const dateGroup of bucket.dateGroups) {
const dateGroupTitle = dateGroup.groupTitle;
if (dateGroup.getAssets().every((a) => assetInteraction.hasSelectedAsset(a.id))) {
assetInteraction.addGroupToMultiselectGroup(dateGroupTitle);
} else {
assetInteraction.removeGroupFromMultiselectGroup(dateGroupTitle);
}
}
}
}

View file

@ -452,7 +452,7 @@
{/if}
</section>
{#if isEditingName}
<div class="absolute w-64 sm:w-96">
<div class="absolute w-64 sm:w-96 z-1">
{#if isSearchingPeople}
<div
class="flex border h-14 rounded-b-lg border-gray-400 dark:border-immich-dark-gray place-items-center bg-gray-200 p-2 dark:bg-gray-700"