diff --git a/machine-learning/Dockerfile b/machine-learning/Dockerfile index 8126ff0859..46c32f3d6a 100644 --- a/machine-learning/Dockerfile +++ b/machine-learning/Dockerfile @@ -48,14 +48,14 @@ FROM python:3.13-slim-trixie@sha256:d168b8d9eb761f4d3fe305ebd04aeb7e7f2de0297cec RUN apt-get update && \ apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \ - wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.28.4/intel-igc-core-2_2.28.4+20760_amd64.deb && \ - wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.28.4/intel-igc-opencl-2_2.28.4+20760_amd64.deb && \ - wget -nv https://github.com/intel/compute-runtime/releases/download/26.05.37020.3/intel-opencl-icd_26.05.37020.3-0_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.32.7/intel-igc-core-2_2.32.7+21184_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.32.7/intel-igc-opencl-2_2.32.7+21184_amd64.deb && \ + wget -nv https://github.com/intel/compute-runtime/releases/download/26.14.37833.4/intel-opencl-icd_26.14.37833.4-0_amd64.deb && \ wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-core_1.0.17537.24_amd64.deb && \ wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-opencl_1.0.17537.24_amd64.deb && \ wget -nv https://github.com/intel/compute-runtime/releases/download/24.35.30872.36/intel-opencl-icd-legacy1_24.35.30872.36_amd64.deb && \ # TODO: Figure out how to get renovate to manage this differently versioned libigdgmm file - wget -nv https://github.com/intel/compute-runtime/releases/download/26.05.37020.3/libigdgmm12_22.9.0_amd64.deb && \ + wget -nv https://github.com/intel/compute-runtime/releases/download/26.14.37833.4/libigdgmm12_22.9.0_amd64.deb && \ dpkg -i *.deb && \ rm *.deb && \ apt-get remove wget -yqq && \ diff --git a/machine-learning/pyproject.toml b/machine-learning/pyproject.toml index 640996f54a..d61df51e38 100644 --- a/machine-learning/pyproject.toml +++ b/machine-learning/pyproject.toml @@ -9,12 +9,12 @@ dependencies = [ "aiocache>=0.12.1,<1.0", "fastapi>=0.95.2,<1.0", "gunicorn>=21.1.0", - "huggingface-hub>=0.20.1,<1.0", + "huggingface-hub>=1.0,<2.0", "insightface>=0.7.3,<1.0", "numpy<2.4.0", "opencv-python-headless>=4.7.0.72,<5.0", "orjson>=3.9.5", - "pillow>=12.2,<12.3", + "pillow>=12.2,<13", "pydantic>=2.0.0,<3", "pydantic-settings>=2.5.2,<3", "python-multipart>=0.0.6,<1.0", diff --git a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart index d7ef604718..3770c5d32d 100644 --- a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart +++ b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart @@ -2,17 +2,21 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_sheet.widget.dart'; +import 'package:immich_mobile/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart'; import 'package:immich_mobile/presentation/widgets/map/map.state.dart'; import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart'; import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart'; import 'package:immich_mobile/providers/user.provider.dart'; class MapBottomSheet extends StatelessWidget { - const MapBottomSheet({super.key}); + final Key? sheetKey; + + const MapBottomSheet({super.key, this.sheetKey}); @override Widget build(BuildContext context) { return BaseBottomSheet( + key: sheetKey, initialChildSize: 0.25, maxChildSize: 0.75, shouldCloseOnMinExtent: false, @@ -49,7 +53,7 @@ class _ScopedMapTimeline extends StatelessWidget { return timelineService; }), ], - child: const Timeline(appBar: null, bottomSheet: null, withScrubber: false), + child: const Timeline(appBar: null, bottomSheet: GeneralBottomSheet(minChildSize: 0.23), withScrubber: false), ); } } diff --git a/mobile/lib/presentation/widgets/map/map.widget.dart b/mobile/lib/presentation/widgets/map/map.widget.dart index 3f406dd551..f6c4f7d468 100644 --- a/mobile/lib/presentation/widgets/map/map.widget.dart +++ b/mobile/lib/presentation/widgets/map/map.widget.dart @@ -11,6 +11,7 @@ import 'package:immich_mobile/domain/utils/event_stream.dart'; import 'package:immich_mobile/extensions/asyncvalue_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/translate_extensions.dart'; +import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_sheet.widget.dart'; import 'package:immich_mobile/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart'; import 'package:immich_mobile/presentation/widgets/map/map.state.dart'; import 'package:immich_mobile/presentation/widgets/map/map_utils.dart'; @@ -53,6 +54,7 @@ class _DriftMapState extends ConsumerState { final _reloadMutex = AsyncMutex(); final _debouncer = Debouncer(interval: const Duration(milliseconds: 500), maxWaitTime: const Duration(seconds: 2)); final ValueNotifier bottomSheetOffset = ValueNotifier(0.25); + final GlobalKey _bottomSheetKey = GlobalKey(); StreamSubscription? _eventSubscription; @override @@ -184,7 +186,7 @@ class _DriftMapState extends ConsumerState { return Stack( children: [ _Map(initialLocation: widget.initialLocation, onMapCreated: onMapCreated, onMapReady: onMapReady), - _DynamicBottomSheet(bottomSheetOffset: bottomSheetOffset), + _DynamicBottomSheet(bottomSheetOffset: bottomSheetOffset, sheetKey: _bottomSheetKey), _DynamicMyLocationButton(onZoomToLocation: onZoomToLocation, bottomSheetOffset: bottomSheetOffset), ], ); @@ -224,8 +226,9 @@ class _Map extends StatelessWidget { class _DynamicBottomSheet extends StatefulWidget { final ValueNotifier bottomSheetOffset; + final GlobalKey sheetKey; - const _DynamicBottomSheet({required this.bottomSheetOffset}); + const _DynamicBottomSheet({required this.bottomSheetOffset, required this.sheetKey}); @override State<_DynamicBottomSheet> createState() => _DynamicBottomSheetState(); @@ -236,10 +239,13 @@ class _DynamicBottomSheetState extends State<_DynamicBottomSheet> { Widget build(BuildContext context) { return NotificationListener( onNotification: (notification) { - widget.bottomSheetOffset.value = notification.extent; - return true; + final sheet = notification.context.findAncestorWidgetOfExactType(); + if (sheet?.key == widget.sheetKey) { + widget.bottomSheetOffset.value = notification.extent; + } + return false; }, - child: const MapBottomSheet(), + child: MapBottomSheet(sheetKey: widget.sheetKey), ); } } diff --git a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart index 8d494a8452..578bd37a23 100644 --- a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart +++ b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart @@ -469,6 +469,7 @@ class _SliverTimelineState extends ConsumerState<_SliverTimeline> { ref.read(timelineStateProvider.notifier).setScrolling(true); }, child: Stack( + clipBehavior: Clip.none, children: [ timeline, if (isBottomWidgetVisible) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7fa8af285b..1704df165d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -570,8 +570,8 @@ importers: specifier: ^2.0.0 version: 2.0.9 uuid: - specifier: ^11.1.0 - version: 11.1.0 + specifier: ^14.0.0 + version: 14.0.0 validator: specifier: ^13.12.0 version: 13.15.35 @@ -12110,6 +12110,10 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -25779,6 +25783,8 @@ snapshots: uuid@11.1.0: {} + uuid@14.0.0: {} + uuid@8.3.2: {} validator@13.15.35: {} diff --git a/server/package.json b/server/package.json index 7eab3b4842..2833197dcd 100644 --- a/server/package.json +++ b/server/package.json @@ -114,7 +114,7 @@ "thumbhash": "^0.1.1", "transformation-matrix": "^3.1.0", "ua-parser-js": "^2.0.0", - "uuid": "^11.1.0", + "uuid": "^14.0.0", "validator": "^13.12.0", "zod": "^4.3.6" },