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: with:
channel: 'stable' channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml flutter-version-file: ./mobile/pubspec.yaml
- name: Generate translation file
run: make translation
working-directory: ./mobile
- name: Run tests - name: Run tests
working-directory: ./mobile working-directory: ./mobile
run: flutter test -j 1 run: flutter test -j 1

View file

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

View file

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

View file

@ -55,7 +55,7 @@
}; };
</script> </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} {#if showTime}
<span class="pt-2"> <span class="pt-2">
{#if remainingSeconds < 60} {#if remainingSeconds < 60}

View file

@ -564,12 +564,9 @@
return; return;
} }
// Select/deselect assets in range (start,end] // Select/deselect assets in range (start,end)
let started = false; let started = false;
for (const bucket of assetStore.buckets) { for (const bucket of assetStore.buckets) {
if (bucket === startBucket) {
started = true;
}
if (bucket === endBucket) { if (bucket === endBucket) {
break; break;
} }
@ -583,27 +580,31 @@
} }
} }
} }
if (bucket === startBucket) {
started = true;
}
} }
// Update date group selection // Update date group selection in range [start,end]
started = false; started = false;
for (const bucket of assetStore.buckets) { for (const bucket of assetStore.buckets) {
if (bucket === startBucket) { if (bucket === startBucket) {
started = true; 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) { if (bucket === endBucket) {
break; 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} {/if}
</section> </section>
{#if isEditingName} {#if isEditingName}
<div class="absolute w-64 sm:w-96"> <div class="absolute w-64 sm:w-96 z-1">
{#if isSearchingPeople} {#if isSearchingPeople}
<div <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" 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"