mirror of
https://github.com/immich-app/immich.git
synced 2026-05-22 15:02:32 -04:00
d7f05d25100e9f72310fb0401940c573f1e22df8
fix(mobile): deduplicate assets in person view timeline Previously, assets with multiple face records for the same person (e.g., manual Digikam imports and Immich ML detections) appeared multiple times in the person timeline. This was caused by an inner join on the assetFaceEntity without proper deduplication. This commit refactors the timeline queries to use a subquery approach instead of joins and grouping. This ensures: - _getPersonBucketAssets: Only unique assets are fetched, even if multiple face records exist for a single asset. - _watchPersonBucket: Asset counts in timeline headers are accurate and represent unique assets. - Performance: Database overhead is reduced by avoiding complex joins and explicit groupBy operations on large result sets. Signed-off-by: thowdev <12428285+thowdev@users.noreply.github.com>
High performance self-hosted photo and video management solution
Català Español Français Italiano 日本語 한국어 Deutsch Nederlands Türkçe 简体中文 正體中文 Українська Русский Português Brasileiro Svenska العربية Tiếng Việt ภาษาไทย
Warning
⚠️ Always follow 3-2-1 backup plan for your precious photos and videos!
Note
You can find the main documentation, including installation guides, at https://immich.app/.
Links
Demo
Access the demo here. For the mobile app, you can use https://demo.immich.app for the Server Endpoint URL.
Login credentials
| Password | |
|---|---|
| demo@immich.app | demo |
Features
| Features | Mobile | Web |
|---|---|---|
| Upload and view videos and photos | Yes | Yes |
| Auto backup when the app is opened | Yes | N/A |
| Prevent duplication of assets | Yes | Yes |
| Selective album(s) for backup | Yes | N/A |
| Download photos and videos to local device | Yes | Yes |
| Multi-user support | Yes | Yes |
| Album and Shared albums | Yes | Yes |
| Scrubbable/draggable scrollbar | Yes | Yes |
| Support raw formats | Yes | Yes |
| Metadata view (EXIF, map) | Yes | Yes |
| Search by metadata, objects, faces, and CLIP | Yes | Yes |
| Administrative functions (user management) | No | Yes |
| Background backup | Yes | N/A |
| Virtual scroll | Yes | Yes |
| OAuth support | Yes | Yes |
| API Keys | N/A | Yes |
| LivePhoto/MotionPhoto backup and playback | Yes | Yes |
| Support 360 degree image display | No | Yes |
| User-defined storage structure | Yes | Yes |
| Public Sharing | Yes | Yes |
| Archive and Favorites | Yes | Yes |
| Global Map | Yes | Yes |
| Partner Sharing | Yes | Yes |
| Facial recognition and clustering | Yes | Yes |
| Memories (x years ago) | Yes | Yes |
| Offline support | Yes | No |
| Read-only gallery | Yes | Yes |
| Stacked Photos | Yes | Yes |
| Tags | No | Yes |
| Folder View | Yes | Yes |
Translations
Read more about translations here.
Repository activity
Star history
Contributors
Description
Self-hosted photo and video backup solution directly from your mobile phone.
backup-toolfluttergoogle-photosgoogle-photos-alternativemobile-appnestjsnodejsphoto-galleryphotosself-hostedsveltesveltekitvideos
Readme
598 MiB
Languages
TypeScript
52.3%
Dart
28.8%
Svelte
13.5%
Python
1.6%
Kotlin
1.3%
Other
2.2%