1993 Commits

Author SHA1 Message Date
Alex
3e62497fd0
fix: local network permission (#19285) 2025-06-19 14:18:51 +00:00
Alex
a1bc862a32
chore: post release tasks (#19249) 2025-06-19 09:11:24 -05:00
Jason Rasmussen
e0144b4ece
feat: backfill album users (#19234) 2025-06-18 10:48:11 -04:00
github-actions
65e8d75e82 chore: version v1.135.0 2025-06-18 13:45:07 +00:00
Alex
06f1d0dc4d
fix(mobile): correct share option for local asset (#19233) 2025-06-17 20:56:42 +00:00
Brandon Wees
a0f44f147b
feat(mobile): ios widgets (#19148)
* feat: working widgets

* chore/feat: cleaned up API, added album picker to random widget

* album filtering for requests

* check album and throw if not found

* fix app IDs and project configuration

* switch to repository/service model for updating widgets

* fix: remove home widget import

* revert info.plist formatting changes

* ran swift-format on widget code

* more formatting changes (this time run from xcode)

* show memory on widget picker snapshot

* fix: dart changes from code review

* fix: swift code review changes (not including task groups)

* fix: use task groups to run image retrievals concurrently, get rid of do catch in favor of if let

* chore: cleanup widget service in dart app

* chore: format swift

* fix: remove comma

why does xcode not freak out over this >:(

* switch to preview size for thumbnail

* chore: cropped large image

* fix: properly resize widgets so we dont OOM

* fix: set app group on logout

happens on first install

* fix: stupid app ids

* fix: revert back to thumbnail

we are hitting OOM exceptions due to resizing, once we have on-the-fly resizing on server this can be upgraded

* fix: more memory efficient resizing method, remove extraneous resize commands from API call

* fix: random widget use 12 entries instead of 24 to save memory

* fix: modify duration of entries to 20 minutes and only generate 10 at a time to avoid OOM

* feat: toggle to show album name on random widget

* Podfile lock

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-17 14:43:09 +00:00
Zack Pollard
749f63e4a0
fix: partner asset and exif sync backfill (#19224)
* fix: partner asset sync backfill

* fix: add partner asset exif backfill

* ci: output content of files that have changed
2025-06-17 09:56:54 -04:00
shenlong
db68d1af9b
feat(server): add duration to SyncAssetV1 (#19196)
add duration to SyncAssetV1

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-17 08:09:50 -04:00
shenlong
3b0a803089
fix: translation util rename (#19213)
fix: translation util refactor

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-16 11:43:53 -05:00
shenlong
bcda2c6e22
feat(mobile): sqlite timeline (#19197)
* wip: timeline

* more segment extensions

* added scrubber

* refactor: timeline state

* more refactors

* fix scrubber segments

* added remote thumb & thumbhash provider

* feat: merged view

* scrub / merged asset fixes

* rename stuff & add tile indicators

* fix local album timeline query

* ignore hidden assets during sync

* ignore recovered assets during sync

* old scrubber

* add video indicator

* handle groupBy

* handle partner inTimeline

* show duration

* reduce widget nesting in thumb tile

* merge main

* chore: extend cacheExtent

* ignore touch events on scrub label when not visible

* scrub label ignore events and hide immediately

* auto reload on sync

* refactor image providers

* throttle db updates

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-16 20:37:45 +05:30
Thien Dang
3d0c851636
fix(mobile): add translate extension (#18942)
* re-write localization service and add translation extension

* Revert "re-write localization service and add translation extension"

This reverts commit fdd7386020f638b92ad4f4691667d67e8c2935fc.

* fix can't use context for easy_localization

* fix lint

* update new translate context

* handle context null

* revert main file

* Revert "revert main file"

This reverts commit 16faca46d0a36abafe41a19bb46b38fffa4940f1.

* remove fix nested MaterialApp

* change use t extenstion and remove translation utils

* update function call similar for consistently

---------

Co-authored-by: dvbthien <dvbthien@gmail.com>
2025-06-16 10:01:16 -05:00
shenlong
7f56443b24
fix(mobile): asset type mismatch from android sync (#19201)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-15 20:54:30 +00:00
Alex
5f5308631e
chore: Revert "feat(mobile): remote album sync" (#19159)
Revert "feat(mobile): remote album sync (#18876)"

This reverts commit 242817c49acff380269490c99081d13c86acf65b.
2025-06-13 16:15:39 +00:00
Daimolean
004c2f2496
fix(web): OAuth quota size (#18526)
fix(server): oauth quota size
2025-06-13 10:57:29 -04:00
Andreas Tollkötter
f54cfa7a5a
feat: improve mobile screen reader accessibility (#17876)
* WIP: adding screen reader support to mobile

* implemented getAltText

* implemented alt text solution that stores the alt text in the DB, which isn't really great

* moved alt text computation to immich_thumbnail.dart

* added unit tests

* revert unintended changes

* Added text to remaining buttons in Photo page

* fixed import

* Fixed issue of easy_localization not parsing select blocks

* Transferred the new screen reader help to web frontend

* remove unused property

* npm run format:fix

* code review

* revert unwanted change

* dart fmt

* revert web changes

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-13 10:39:59 -04:00
Jason Rasmussen
c9bcae813b
feat: duplicate delete groups api (#19142) 2025-06-12 17:48:43 -04:00
Alex
176656b5f4
feat: pass filename in body on asset upload (#19138)
* chore: get upload filename from request body

* use info from request body
2025-06-12 17:31:00 -04:00
nosajthenitram
e5219f1f31
feat(web): Added admin user config to user settings (#15380)
* feat(web): Added admin user config to user settings

* feat (web) - cleaned up the files and added tests

* feat (web) - added missing files

* feat (web) - updated per review comments

* feat (web) - e2e admin command test failures
2025-06-12 02:11:13 +00:00
JobiJoba
c03e72c1da
feat(mobile): Add Scrollbar for vertical scrolling on the actions button multi-select (#18940)
* feat(mobile): Add Scrollbar for vertical scrolling on the actions button of a selected asset.

* fixed error scroll position and add more space for the scrollbar

* revert scrollbar change and display always 5.5 icons button

* minWidth set to 5.5 and used

* fix: logic and fine tuning

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-10 10:22:42 -05:00
Alex
b50d9fa448
chore: catch migration error (#19096) 2025-06-10 15:21:36 +00:00
Jonathan Gilbert
e88bd74fd2
feat(server): add memories statistics resource (#19035) 2025-06-10 09:47:46 -04:00
Andreas Tollkötter
b890440f6b
feat(mobile): enabled DCM (#17957)
* enable DCM in CI

* chore: up version

* chore: up version

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-09 11:09:02 -05:00
Thien Dang
2572413b2b
fix(mobile): fix nested MaterialApp (#18998)
* fix nested MaterialApp

* chore

---------

Co-authored-by: dvbthien <dvbthien@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-09 15:15:31 +00:00
xCJPECKOVERx
14d785cec9
feat(server): Add album filter to search (#18985)
* - updated dtos
- added inAlbums to search builder
- only check isNotInAlbum if albumIds is blank/empty

* - consider inAlbums as OR

* - make open-api-dart

* - lint & format

* - remove inAlbums groupBy clause

* - merge main open-api

* - make open-api

* - inAlbums filter AND instead of OR
2025-06-09 11:11:43 -04:00
Daimolean
242817c49a
feat(mobile): remote album sync (#18876)
* feat(mobile): remote album sync

* fix: lint

* missing createdAt field

* lint
2025-06-09 10:09:14 -05:00
Savely Krasovsky
047c7821a3
feat(mobile): update maplibre to support PMTiles in the mobile app (#19016)
* feat(mobile): update maplibre to support PMTiles in the mobile app

* feat(mobile): update Podfile.lock
2025-06-09 09:40:12 -05:00
renovate[bot]
ccb0e711f0
chore(deps): update dependency lints to v6 (#19049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 14:17:05 +00:00
shenlong
02246cdd1f
chore: re-genenrate intl_keys.g.dart (#19031)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-09 12:01:04 +01:00
shenlong
2d05a5482f
refactor: logger service and remove dynamic (#17733)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-08 22:01:31 -05:00
shenlong
84024f6cdc
refactor(mobile): simplify local sync and hash service (#18970)
* Hash service review changes

* local album repo test

* simplify local album repo method names

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-08 21:56:44 -05:00
Brandon Wees
5574b2dd39
feat(mobile): add cast support (#18341)
* initial cast framework complete and mocked cast dialog working

* wip casting

* casting works!

just need to add session key check and remote video controls

* cleanup of classes

* add session expiration checks

* cast dialog now shows connected device at top of list with a list header. Discovered devices are also cached for app session.

* cast video player finalized

* show fullsize assets on casting

* translation already happens on the text element

* remove prints

* fix lintings

* code review changes from @shenlong-tanwen

* fix connect method override

* fix alphabetization

* remove important

* filter chromecast audio devices

* fix some disconnect command ordering issues and unawaited futures

* remove prints

* only disconnect if we are connected

* don't try to reconnect if its the current device

* add cast button to top bar

* format sessions api

* more formatting issues fixed

* add snack bar to tell user that we cannot cast an asset that is not uploaded to server

* make casting icon change to primary color when casting is active

* only show casting snackbar if we are casting

* dont show cast button if asset is remote and we are not casting

* stop playing media if we seek to an asset that is not remote

* remove https check since it works with local http IP addresses

* remove unneeded imports

* fix recasting when socket closes

* fix info plist formatting

* only show cast button if there is an active websocket connection (ie the server is accessible)

* add device capability bitmask checks

* small comment about bitmask
2025-06-08 21:55:23 -05:00
JobiJoba
e88eb44aba
fix(mobile): After editing people name, back button close the app (#18992)
* fix: update dialog to not use root navigator in multiple pages so back button won't close the app

* Remove unrelated changes to PR
2025-06-08 21:53:03 -05:00
shenlong
75c24f0023
feat(mobile): sync local asset width & height from platform (#18994)
* add width and height to sqlite entities

* sync width & height from platform

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-08 21:50:54 -05:00
JobiJoba
e376366b7b
fix(mobile): people collection page layout broken in landscape (#19004)
fix(mobile): people collection page layout broken on landscape
2025-06-08 21:49:13 -05:00
JobiJoba
48e16f0a5a
feat(mobile): Capitalize first letter when add / edit name (#19005) 2025-06-08 21:48:52 -05:00
shenlong
a932cbae38
feat(mobile): typed translation keys (#18946)
* feat(mobile): typed translation keys

* ignore lint

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-08 21:38:45 -05:00
JobiJoba
e0ac588ca8
fix(mobile): share asset back button exit application (#18919)
* fix(mobile): remove dialog wrapper around share asset

* removed from multiple share and delete share dialog class

* Revert change to ShareDialog and useRootNavigator: false for showDialog
2025-06-08 21:35:19 -05:00
Jonathan Gilbert
fb4be6e231
feat(server): add /search/statistics resource (#18885) 2025-06-06 21:12:53 -04:00
shenlong
ce6631f7e0
feat(mobile): hash assets in isolate (#18924) 2025-06-06 11:23:05 +05:30
Dag Stuan
b46e066cc2
feat(web): add a user setting for default album sort order. (#18950)
* Add a user setting for default album sort order.

Add a user setting under "Features" to control the initial sort order
when creating an album. Default to the existing behavior of
"newest first".

* chore: patch openapi

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-05 23:31:34 -05:00
Min Idzelis
55f4e93456
fix: regression: sort day by fileCreatedAt again (#18732)
* fix: regression: sort day by fileCreatedAt again

* lint

* e2e test

* inline function

* e2e

* Address comments. Drop dayGroup and timezone in favor of localOffsetMinutes

* lint and some api-doc

* lint, more api-doc

* format

* Move minutes to fractional hours

* make sql

* merge/conflict

* merge fallout, review comments

* spelling

* drop offset from returned date

* move description into decorator where possible, regen api
2025-06-05 20:56:32 -05:00
shenlong
81423420c8
chore(mobile): patch isOnboarded (#18949)
fix: patch isOnboarded

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-05 17:23:45 +00:00
Alex
f64a3003af
chore: album's header styling (#18930) 2025-06-04 21:09:53 -05:00
Robin Brisa
a26d703335
feat(web): display number of likes in asset viewer (#18911)
* feat: display number of likes

* fix: properly decrement like count on unlike

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

* chore: pr feedback

* chore: updated related test

* chore: formatter run

* chore: force numberOfLikes to null in album context to pass lint

* chore: open-api updated

* fix: use undefined, not null

* styling tweaks

* chore: updated sql

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-04 12:41:50 -05:00
JobiJoba
5d0ad853f4
feat(mobile): add album description functionality (#18886)
* feat(mobile): add album description functionality

- Introduced a new optional `description` field in the `Album` entity.
- Updated `AlbumViewerPageState` to manage `editDescriptionText`.
- Created `AlbumDescription` and `AlbumViewerEditableDescription` widgets for displaying and editing album descriptions.
- Enhanced `CreateAlbumPage` to include a description input field.
- Implemented backend support for updating album descriptions in `AlbumApiRepository` and `AlbumService`.
- Updated sync logic to handle album descriptions during data synchronization.
- Adjusted UI components to accommodate the new description feature.

* fix dart analysis error

* remove comment that shouldn't be there

* Album header styling

* fix: disable edit after album creation

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-04 17:41:28 +00:00
JobiJoba
8733d1e554
feat(mobile): add bulk download functionality (#18878)
* feat(mobile): add bulk download functionality and update UI messages

- Added `downloadAll` method to `IDownloadRepository` and its implementation in `DownloadRepository` to handle multiple asset downloads.
- Implemented `downloadAllAsset` in `DownloadStateNotifier` to trigger bulk downloads.
- Updated `DownloadService` to create download tasks for all selected assets.
- Enhanced UI with new download success and failure messages in `en.json`.
- Added download button to `ControlBottomAppBar` and integrated download functionality in `MultiselectGrid`.

* translations use i18n method t()

* Update mobile/lib/services/download.service.dart

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>

* fix(mobile): update download logic in DownloadService

- Changed the download method to utilize downloadAll for handling multiple tasks.
- Simplified remoteId check by removing unnecessary condition.

* sort i18n keys

* remove the download signature from interface and logic as we use the downloadAll now

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2025-06-04 09:49:43 -05:00
JobiJoba
1fb8861e35
fix(mobile): prevent upload intent replacement in splash screen and reset upload button when minimize app (#18914)
fix(mobile): prevent upload intent replacement in splash screen

- Added a check in the SplashScreenPage to ensure that the route is only replaced when it's not a share intent
- Added lifecycle event to reset the isUpload.value when minimize the app
2025-06-04 08:30:23 -05:00
shenlong
70b9a4c8f1
chore: add missing api properties on sync enums (#18916)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-04 08:21:34 -05:00
Jin Xuan
3d3e5dc547
chore(server): cleanup unused query parameters in time bucket (#18893)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-03 19:29:11 +00:00
shenlong
b4a798c39f
feat(mobile): remote asset & exif sync (#18756)
* feat(mobile): remote asset & exif sync

* add visibility and update constraints

* chore: generate drifts

* update ids to be strings

* clear remote entities on logout

* reset sqlite button

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-03 11:01:50 -05:00