From f1c8377ca046ffc88f8c5316b488afda2ba756e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 12:23:52 +0100 Subject: [PATCH 1/7] chore(deps): update dependency @types/node to ^24.10.3 (#24605) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- cli/package.json | 2 +- e2e/package.json | 2 +- open-api/typescript-sdk/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ server/package.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cli/package.json b/cli/package.json index e74425eb41..3c65605330 100644 --- a/cli/package.json +++ b/cli/package.json @@ -20,7 +20,7 @@ "@types/lodash-es": "^4.17.12", "@types/micromatch": "^4.0.9", "@types/mock-fs": "^4.13.1", - "@types/node": "^24.10.1", + "@types/node": "^24.10.3", "@vitest/coverage-v8": "^3.0.0", "byte-size": "^9.0.0", "cli-progress": "^3.12.0", diff --git a/e2e/package.json b/e2e/package.json index 70669a8546..07d02f0cbc 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -26,7 +26,7 @@ "@playwright/test": "^1.44.1", "@socket.io/component-emitter": "^3.1.2", "@types/luxon": "^3.4.2", - "@types/node": "^24.10.1", + "@types/node": "^24.10.3", "@types/oidc-provider": "^9.0.0", "@types/pg": "^8.15.1", "@types/pngjs": "^6.0.4", diff --git a/open-api/typescript-sdk/package.json b/open-api/typescript-sdk/package.json index 56520b0efe..b033fdfd7b 100644 --- a/open-api/typescript-sdk/package.json +++ b/open-api/typescript-sdk/package.json @@ -19,7 +19,7 @@ "@oazapfts/runtime": "^1.0.2" }, "devDependencies": { - "@types/node": "^24.10.1", + "@types/node": "^24.10.3", "typescript": "^5.3.3" }, "repository": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4831601dec..27c6c3f290 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,7 +63,7 @@ importers: specifier: ^4.13.1 version: 4.13.4 '@types/node': - specifier: ^24.10.1 + specifier: ^24.10.3 version: 24.10.4 '@vitest/coverage-v8': specifier: ^3.0.0 @@ -214,7 +214,7 @@ importers: specifier: ^3.4.2 version: 3.7.1 '@types/node': - specifier: ^24.10.1 + specifier: ^24.10.3 version: 24.10.4 '@types/oidc-provider': specifier: ^9.0.0 @@ -299,7 +299,7 @@ importers: version: 1.1.0 devDependencies: '@types/node': - specifier: ^24.10.1 + specifier: ^24.10.3 version: 24.10.4 typescript: specifier: ^5.3.3 @@ -615,7 +615,7 @@ importers: specifier: ^2.0.0 version: 2.0.0 '@types/node': - specifier: ^24.10.1 + specifier: ^24.10.3 version: 24.10.4 '@types/nodemailer': specifier: ^7.0.0 @@ -16567,7 +16567,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 5.1.0 '@types/node': 24.10.4 '@types/connect@3.4.38': @@ -16813,7 +16813,7 @@ snapshots: '@types/pg-pool@2.0.6': dependencies: - '@types/pg': 8.15.6 + '@types/pg': 8.16.0 '@types/pg@8.15.6': dependencies: diff --git a/server/package.json b/server/package.json index ae12ee8e61..045bc950bd 100644 --- a/server/package.json +++ b/server/package.json @@ -134,7 +134,7 @@ "@types/luxon": "^3.6.2", "@types/mock-fs": "^4.13.1", "@types/multer": "^2.0.0", - "@types/node": "^24.10.1", + "@types/node": "^24.10.3", "@types/nodemailer": "^7.0.0", "@types/picomatch": "^4.0.0", "@types/pngjs": "^6.0.5", From cb2bd4781634c20cd3f18a13b7ba234e053ed2c5 Mon Sep 17 00:00:00 2001 From: Ben <45583362+ben-basten@users.noreply.github.com> Date: Tue, 16 Dec 2025 09:59:17 -0500 Subject: [PATCH 2/7] fix(web): immich logo in shared links (#24618) * fix(web): immich logo in shared links * chore: apply changes for individual shared link as well --------- Co-authored-by: Alex Tran --- web/src/lib/components/album-page/album-viewer.svelte | 5 +++-- .../components/share-page/individual-shared-viewer.svelte | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/web/src/lib/components/album-page/album-viewer.svelte b/web/src/lib/components/album-page/album-viewer.svelte index 168637e134..d5fdb36822 100644 --- a/web/src/lib/components/album-page/album-viewer.svelte +++ b/web/src/lib/components/album-page/album-viewer.svelte @@ -12,6 +12,8 @@ import { AssetInteraction } from '$lib/stores/asset-interaction.svelte'; import { assetViewingStore } from '$lib/stores/asset-viewing.store'; import { dragAndDropFilesStore } from '$lib/stores/drag-and-drop-files.store'; + import { mobileDevice } from '$lib/stores/mobile-device.svelte'; + import { SlideshowNavigation, SlideshowState, slideshowStore } from '$lib/stores/slideshow.store'; import { handlePromiseError } from '$lib/utils'; import { cancelMultiselect } from '$lib/utils/asset-utils'; import { fileUploadHandler, openFileUploadDialog } from '$lib/utils/file-uploader'; @@ -22,7 +24,6 @@ import ControlAppBar from '../shared-components/control-app-bar.svelte'; import ThemeButton from '../shared-components/theme-button.svelte'; import AlbumSummary from './album-summary.svelte'; - import { SlideshowNavigation, SlideshowState, slideshowStore } from '$lib/stores/slideshow.store'; interface Props { sharedLink: SharedLinkResponseDto; @@ -110,7 +111,7 @@ {#snippet leading()} - + {/snippet} diff --git a/web/src/lib/components/share-page/individual-shared-viewer.svelte b/web/src/lib/components/share-page/individual-shared-viewer.svelte index b7d9e548df..eb25d102fb 100644 --- a/web/src/lib/components/share-page/individual-shared-viewer.svelte +++ b/web/src/lib/components/share-page/individual-shared-viewer.svelte @@ -9,6 +9,7 @@ import type { Viewport } from '$lib/managers/timeline-manager/types'; import { AssetInteraction } from '$lib/stores/asset-interaction.svelte'; import { dragAndDropFilesStore } from '$lib/stores/drag-and-drop-files.store'; + import { mobileDevice } from '$lib/stores/mobile-device.svelte'; import { handlePromiseError } from '$lib/utils'; import { cancelMultiselect, downloadArchive } from '$lib/utils/asset-utils'; import { fileUploadHandler, openFileUploadDialog } from '$lib/utils/file-uploader'; @@ -108,7 +109,7 @@ goto(AppRoute.PHOTOS)} backIcon={mdiArrowLeft} showBackButton={false}> {#snippet leading()} - + {/snippet} From 997aec24413c2cee25f5e499af3ef702a549c503 Mon Sep 17 00:00:00 2001 From: idubnori Date: Wed, 17 Dec 2025 00:27:09 +0900 Subject: [PATCH 3/7] feat: replace heart icons to thumbs-up across activity (#24590) * feat: replace heart icons to thumbs-up across activity * fix: update thumb_up icon color to use primaryColor in activity components * chore: web colors * chore: modify colors --------- Co-authored-by: Alex --- .../like_activity_action_button.widget.dart | 4 ++-- mobile/lib/widgets/activities/activity_text_field.dart | 5 +++-- mobile/lib/widgets/activities/activity_tile.dart | 2 +- mobile/lib/widgets/activities/comment_bubble.dart | 8 ++++---- .../test/modules/activity/activity_text_field_test.dart | 8 ++++---- mobile/test/modules/activity/activity_tile_test.dart | 8 ++++---- .../lib/components/asset-viewer/activity-status.svelte | 4 ++-- .../lib/components/asset-viewer/activity-viewer.svelte | 6 +++--- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/mobile/lib/presentation/widgets/action_buttons/like_activity_action_button.widget.dart b/mobile/lib/presentation/widgets/action_buttons/like_activity_action_button.widget.dart index a61f72ea01..8c326974a7 100644 --- a/mobile/lib/presentation/widgets/action_buttons/like_activity_action_button.widget.dart +++ b/mobile/lib/presentation/widgets/action_buttons/like_activity_action_button.widget.dart @@ -47,7 +47,7 @@ class LikeActivityActionButton extends ConsumerWidget { return BaseActionButton( maxWidth: 60, - iconData: liked != null ? Icons.favorite : Icons.favorite_border, + iconData: liked != null ? Icons.thumb_up : Icons.thumb_up_off_alt, label: "like".t(context: context), onPressed: () => onTap(liked), iconOnly: iconOnly, @@ -57,7 +57,7 @@ class LikeActivityActionButton extends ConsumerWidget { // default to empty heart during loading loading: () => BaseActionButton( - iconData: Icons.favorite_border, + iconData: Icons.thumb_up_off_alt, label: "like".t(context: context), iconOnly: iconOnly, menuItem: menuItem, diff --git a/mobile/lib/widgets/activities/activity_text_field.dart b/mobile/lib/widgets/activities/activity_text_field.dart index e3958b6287..a61a284844 100644 --- a/mobile/lib/widgets/activities/activity_text_field.dart +++ b/mobile/lib/widgets/activities/activity_text_field.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/providers/activity.provider.dart'; import 'package:immich_mobile/providers/album/current_album.provider.dart'; import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart'; @@ -68,11 +69,11 @@ class ActivityTextField extends HookConsumerWidget { suffixIcon: Padding( padding: const EdgeInsets.only(right: 10), child: IconButton( - icon: Icon(liked ? Icons.favorite_rounded : Icons.favorite_border_rounded), + icon: Icon(liked ? Icons.thumb_up : Icons.thumb_up_off_alt), onPressed: liked ? removeLike : addLike, ), ), - suffixIconColor: liked ? Colors.red[700] : null, + suffixIconColor: liked ? context.primaryColor : null, hintText: !isEnabled ? 'shared_album_activities_input_disable'.tr() : 'say_something'.tr(), hintStyle: TextStyle(fontWeight: FontWeight.normal, fontSize: 14, color: Colors.grey[600]), ), diff --git a/mobile/lib/widgets/activities/activity_tile.dart b/mobile/lib/widgets/activities/activity_tile.dart index 6812d1b90c..76c0b7bf2a 100644 --- a/mobile/lib/widgets/activities/activity_tile.dart +++ b/mobile/lib/widgets/activities/activity_tile.dart @@ -37,7 +37,7 @@ class ActivityTile extends HookConsumerWidget { ? Container( width: isBottomSheet ? 30 : 44, alignment: Alignment.center, - child: Icon(Icons.favorite_rounded, color: Colors.red[700]), + child: Icon(Icons.thumb_up, color: context.primaryColor), ) : isBottomSheet ? UserCircleAvatar(user: activity.user, size: 30, radius: 15) diff --git a/mobile/lib/widgets/activities/comment_bubble.dart b/mobile/lib/widgets/activities/comment_bubble.dart index 11d5c21cec..3dd46cd92a 100644 --- a/mobile/lib/widgets/activities/comment_bubble.dart +++ b/mobile/lib/widgets/activities/comment_bubble.dart @@ -67,8 +67,8 @@ class CommentBubble extends ConsumerWidget { bottom: 6, child: Container( padding: const EdgeInsets.all(4), - decoration: BoxDecoration(color: Colors.white.withValues(alpha: 0.7), shape: BoxShape.circle), - child: Icon(Icons.favorite, color: Colors.red[600], size: 18), + decoration: BoxDecoration(color: context.colorScheme.surfaceContainer, shape: BoxShape.circle), + child: Icon(Icons.thumb_up, color: context.primaryColor, size: 18), ), ), ], @@ -81,8 +81,8 @@ class CommentBubble extends ConsumerWidget { if (isLike && !showThumbnail) { likes = Container( padding: const EdgeInsets.all(8), - decoration: BoxDecoration(color: Colors.white.withValues(alpha: 0.7), shape: BoxShape.circle), - child: Icon(Icons.favorite, color: Colors.red[600], size: 18), + decoration: BoxDecoration(color: context.colorScheme.surfaceContainer, shape: BoxShape.circle), + child: Icon(Icons.thumb_up, color: context.primaryColor, size: 18), ); } diff --git a/mobile/test/modules/activity/activity_text_field_test.dart b/mobile/test/modules/activity/activity_text_field_test.dart index 8f28b7f28e..4f4a2c7068 100644 --- a/mobile/test/modules/activity/activity_text_field_test.dart +++ b/mobile/test/modules/activity/activity_text_field_test.dart @@ -77,15 +77,15 @@ void main() { overrides: overrides, ); - expect(find.widgetWithIcon(IconButton, Icons.favorite_rounded), findsOneWidget); - expect(find.widgetWithIcon(IconButton, Icons.favorite_border_rounded), findsNothing); + expect(find.widgetWithIcon(IconButton, Icons.thumb_up), findsOneWidget); + expect(find.widgetWithIcon(IconButton, Icons.thumb_up_off_alt), findsNothing); }); testWidgets('Bordered icon if likedId == null', (tester) async { await tester.pumpConsumerWidget(ActivityTextField(onSubmit: (_) {}), overrides: overrides); - expect(find.widgetWithIcon(IconButton, Icons.favorite_border_rounded), findsOneWidget); - expect(find.widgetWithIcon(IconButton, Icons.favorite_rounded), findsNothing); + expect(find.widgetWithIcon(IconButton, Icons.thumb_up_off_alt), findsOneWidget); + expect(find.widgetWithIcon(IconButton, Icons.thumb_up), findsNothing); }); testWidgets('Adds new like', (tester) async { diff --git a/mobile/test/modules/activity/activity_tile_test.dart b/mobile/test/modules/activity/activity_tile_test.dart index 718dfcce21..538e3c0911 100644 --- a/mobile/test/modules/activity/activity_tile_test.dart +++ b/mobile/test/modules/activity/activity_tile_test.dart @@ -91,17 +91,17 @@ void main() { group('Like Activity', () { final activity = Activity(id: '1', createdAt: DateTime(100), type: ActivityType.like, user: UserStub.admin); - testWidgets('Like contains filled heart as leading', (tester) async { + testWidgets('Like contains filled thumbs-up as leading', (tester) async { await tester.pumpConsumerWidget(ActivityTile(activity), overrides: overrides); // Leading widget should not be null final listTile = tester.widget(find.byType(ListTile)); expect(listTile.leading, isNotNull); - // And should have a favorite icon - final favoIconFinder = find.widgetWithIcon(listTile.leading!.runtimeType, Icons.favorite_rounded); + // And should have a thumb_up icon + final thumbUpIconFinder = find.widgetWithIcon(listTile.leading!.runtimeType, Icons.thumb_up); - expect(favoIconFinder, findsOneWidget); + expect(thumbUpIconFinder, findsOneWidget); }); testWidgets('Like title is center aligned', (tester) async { diff --git a/web/src/lib/components/asset-viewer/activity-status.svelte b/web/src/lib/components/asset-viewer/activity-status.svelte index 39c6f20b3b..dd06cf3ed0 100644 --- a/web/src/lib/components/asset-viewer/activity-status.svelte +++ b/web/src/lib/components/asset-viewer/activity-status.svelte @@ -2,7 +2,7 @@ import { locale } from '$lib/stores/preferences.store'; import type { ActivityResponseDto } from '@immich/sdk'; import { Icon } from '@immich/ui'; - import { mdiCommentOutline, mdiHeart, mdiHeartOutline } from '@mdi/js'; + import { mdiCommentOutline, mdiThumbUp, mdiThumbUpOutline } from '@mdi/js'; interface Props { isLiked: ActivityResponseDto | null; @@ -19,7 +19,7 @@