Commit Graph

2605 Commits (f107cb044a087d53bc0de30b60cb2d74bc03f9e5)

Author SHA1 Message Date
Brandon Wees 1c50e19894
fix: use icons instead of toggles for admin user features view (#19369)
* fix: use icons instead of toggles for admin user features view

* fix: use red for X icon
2025-06-20 14:48:18 +07:00
Jason Rasmussen dd8969cb7d
fix: container padding (#19316) 2025-06-19 21:33:12 +07:00
Jason Rasmussen 5cdbb65d28
feat: better contrast for checkmark indicator (#19312)
feat: better constrast
2025-06-19 13:20:57 +07:00
github-actions 3434544864 chore: version v1.135.1 2025-06-19 17:37:39 +07:00
Zack Pollard f9435a538b
revert: fix(web): wrap long names with textarea (#19305)
Revert "fix(web): wrap long names with textarea (#19301)"

This reverts commit 747a72120e.
2025-06-19 16:28:10 +07:00
Jin Xuan 747a72120e
fix(web): wrap long names with textarea (#19301) 2025-06-19 15:57:54 +07:00
Alex c8a135a7ae
fix: .find() iterator api combat (#19293)
* fix: .find() iterator api combar

* Update web/src/lib/managers/timeline-manager/month-group.svelte.ts

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

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-06-19 14:59:14 +07:00
xCJPECKOVERx 08d1cf5bde
fix(web): Stack assets in asset-viewer cut off on the left (#19253)
* - move overflow and scrollbar to stack-slideshow inner div

* - format
2025-06-19 09:20:25 +07:00
Dag Stuan 38e68d16f9
fix(web): exit slideshow when exiting fullscreen. (#19247)
Exit slideshow when exiting fullscreen.

Browsers do not send a keyboard event when exiting fullscreen, so if
the user exits fullscreen with the escape key, the slideshow
remains open, requiring another escape key press to close it. Fix this
by listening for the fullscreenchange event and closing the slideshow
when exiting fullscreen.
2025-06-19 14:10:10 +07:00
Daniel Dietzler caf11fbb96
fix: album asset viewer (#19252) 2025-06-19 09:09:23 +07:00
Paul Larsen e29103b69f
fix album list CSS margins (#19262) 2025-06-19 14:03:14 +07:00
Daniel Dietzler 07aa51638c
fix: panning interrupted while moving around the map (#19276) 2025-06-19 11:28:53 +07:00
Daniel Dietzler de81006367
fix: album share modal navigation (#19245) 2025-06-18 16:10:35 +07:00
github-actions 65e8d75e82 chore: version v1.135.0 2025-06-18 13:45:07 +07:00
Jason Rasmussen 91cbd56c1c
revert: service worker changes (#19227) 2025-06-17 17:07:54 +07:00
Zack Pollard 4c69511225
revert: "feat(web): wasm justified layout" (#19226) 2025-06-17 16:01:40 +07:00
Mert bc062da11b
feat(web): wasm justified layout (#19150)
* wasm justified layout

* fix tests

* redundant layout generation

* raw position
2025-06-17 09:20:14 +07:00
xCJPECKOVERx 8038ae1e7a
fix(web): Asset viewer stack thumbnails overflow on top of asset (#19088)
* - create constants for thet asset-viewer stack thumbnail sizes
- use 2x selected thumbnail size to set the max-height of the stack-slideshow container.

* - increase the stack-slideshow max-height as it's scrolled

* Revert "- increase the stack-slideshow max-height as it's scrolled"

This reverts commit da4614547a.

* change asset stack veritcal scroll to horizontal scroll
2025-06-17 09:19:30 +07:00
Dag Stuan bd70824961
fix(web): more refactoring and tweaking of the memory viewer. (#19214)
* Fix fade in for video-native-viewer.

The previous implementation never actually faded in the video element.
Fix this by ensuring the video element is only added to the DOM after
mounting, so Svelte can handle the fade-in transition correctly.

* Refactor asset viewing in memory page.

Split photo and video viewing into separate components to ensure they
work similarly to the assets viewer. The previous implementation faded
out the assets, while the assets-viewer only fades assets in. For
images, add a spinner while waiting for the image to load, before adding
the image to the DOM. For videos, add the video to the DOM after
mounting the component. In both cases, the assets fade in smoothly, like
the regular assets viewer.

* fix: styling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-17 14:09:34 +07:00
Zack Pollard 864fe3d0d6
fix: disable map fly animation when switching between assets (#19223) 2025-06-17 12:45:48 +07:00
Zack Pollard 176d53c1b3
chore: bump browserlists version and load tscompat browserlist from file (#19212)
* chore: bump browserlists version to include latest edge browsers

* chore: load tscompat browser list from the .browserslistrc file
2025-06-16 10:03:46 +07:00
Mert 5fc448bc97
chore(web): passive events (#19179) 2025-06-16 11:03:23 +07:00
Brandon Wees 32b57bcbfc
chore: remove warning on storage template onboarding (#19200)
chore: remove warning on storage template
2025-06-15 16:43:34 +07:00
Dag Stuan 189442e9c4
fix(web): small issues with the memory viewer. (#19184)
* Match fade transition timing between photo-viewer and memory-viewer.

* Fix blank page after refreshing memory page.

If the user refreshed in the browser while on the memory page, the page
would show a blank page. This was caused by skipping initialization in
afterNavigate. Fix by always initializing the memory page in
afterNavigate.
2025-06-15 10:04:33 +07:00
Daniel Dietzler 523fe5bef7
refactor: album options modal (#19177) 2025-06-14 18:10:33 +07:00
Daimolean 004c2f2496
fix(web): OAuth quota size (#18526)
fix(server): oauth quota size
2025-06-13 10:57:29 +07:00
Zack Pollard e2dfbd66c3
ci: browser compatibility linting (#19132) 2025-06-13 10:54:59 +07:00
Min Idzelis ed5b260eeb
feat: service worker cache static app resources, and all entry points (#18043)
* feat: service worker cache static app resources, and all entry points

* review comments

* review

* lint

* minor tweaks

* review comments

* optimize disabled cache

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-12 19:33:29 +07:00
Jason Rasmussen 8923d5b0a3
refactor: css variables (#19146) 2025-06-12 23:06:38 +07:00
Jason Rasmussen 2f3d4e15d2
refactor: duplicate button controls (#19143) 2025-06-12 17:48:53 +07:00
Jason Rasmussen c9bcae813b
feat: duplicate delete groups api (#19142) 2025-06-12 17:48:43 +07:00
Alex 144cc8ab6d
chore: custom impl for set.difference api (#19135) 2025-06-12 11:41:19 +07:00
Robin Brisa 0322a8b1d9
fix(web): properly update activityManager when browsing assets (#18909) 2025-06-12 12:13:35 +07: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 +07:00
Daniel Dietzler 22eef5f3c5
chore: more flexible modal manager types (#19123)
* fix: required argument in onClose modal function

* chore: more flexible modal manager types
2025-06-11 22:32:49 +07:00
Daniel Dietzler 5179c5badf
fix: required argument in onClose modal function (#19122) 2025-06-11 18:25:36 +07:00
Daniel Dietzler 4c5cd14270
refactor: map modal (#19120) 2025-06-11 15:08:36 +07:00
Jason Rasmussen 38ad15af4c
refactor: user avatar (#19121) 2025-06-11 15:08:11 +07:00
Daniel Dietzler 7a001d27a5
refactor: email template preview modal (#19119) 2025-06-11 18:18:46 +07:00
Min Idzelis 4b4ee5abf3
refactor: timeline manager renames (#19007)
* refactor: timeline manager renames

* refactor(web): improve timeline manager naming consistency

- Rename AddContext → GroupInsertionCache for clearer purpose
- Rename TimelineDay → DayGroup for better clarity
- Rename TimelineMonth → MonthGroup for better clarity
- Replace all "bucket" references with "monthGroup" terminology
- Update all component props, method names, and variable references
- Maintain consistent naming patterns across TypeScript and Svelte files

* refactor(web): rename buckets to months in timeline manager

- Rename TimelineManager.buckets property to months
- Update all store.buckets references to store.months
- Use 'month' shorthand for monthGroup arguments (not method names)
- Update component templates and test files for consistency
- Maintain API-related 'bucket' terminology (bucketHeight, getTimeBucket)

* refactor(web): rename assetStore to timelineManager and update types

- Rename assetStore variables to timelineManager in all .svelte files
- Update parameter names in actions.ts and asset-utils.ts functions
- Rename AssetStoreLayoutOptions to TimelineManagerLayoutOptions
- Rename AssetStoreOptions to TimelineManagerOptions
- Move assets-store.spec.ts to timeline-manager.spec.ts

* refactor(web): rename intersectingAssets to viewerAssets and fix property references

- Rename intersectingAssets to viewerAssets in DayGroup and MonthGroup classes
- Update arrow function parameters to use viewerAsset/viewAsset shorthand
- Rename topIntersectingBucket to topIntersectingMonthGroup
- Fix dateGroups references to dayGroups in asset-utils.ts and album page
- Update template loops and variable names in Svelte components

* refactor(web): rename #initializeTimeBuckets to #initializeMonthGroups and bucketDateFormatted to monthGroupTitle

* refactor(web): rename monthGroupHeight to height

* refactor(web): rename bucketCount to assetsCount, bucketsIterator to monthGroupIterator, and related properties

* refactor(web): rename count to assetCount in TimelineManager

* refactor(web): rename LiteBucket to ScrubberMonth and update scrubber variables

- Rename LiteBucket type to ScrubberMonth
- Rename bucketDateFormattted to title in ScrubberMonth type
- Rename bucketPercentY to monthGroupPercentY in scrubber component
- Rename scrubBucket to scrubberMonth and scrubBucketPercent to scrubberMonthPercent

* fix remaining refs to bucket

* reset submodule to correct commit

* reset submodule to correct commit

* refactor(web): extract TimelineManager internals into separate modules

- Move search-related functions to internal/search-support.svelte.ts
- Extract websocket event handling into WebsocketSupport class
- Move utility functions (updateObject, isMismatched) to internal/utils.svelte.ts
- Update imports in tests to use new module structure

* refactor(web): extract intersection logic from TimelineManager

- Create intersection-support.svelte.ts with updateIntersection and calculateIntersecting functions
- Remove private intersection methods from TimelineManager
- Export findMonthGroupForAsset from search-support for reuse
- Update TimelineManager to use the extracted intersection functions

* refactor(web): rename a few methods in intersecting

* refactor(web): rename a few methods in intersecting

* refactor(web): extract layout logic from TimelineManager

- Create layout-support.svelte.ts with updateGeometry and layoutMonthGroup functions
- Remove private layout methods from TimelineManager
- Update TimelineManager to use the extracted layout functions
- Remove unused UpdateGeometryOptions import

* refactor(web): extract asset operations from TimelineManager

- Create operations-support.svelte.ts with addAssetsToMonthGroups and runAssetOperation functions
- Remove private asset operation methods from TimelineManager
- Update TimelineManager to use extracted operation functions with proper AssetOrder handling
- Rename getMonthGroupIndexByAssetId to getMonthGroupByAssetId for consistency
- Move utility functions from utils.svelte.ts to internal/utils.svelte.ts
- Fix method name references in asset-grid.svelte and tests

* refactor(web): extract loading logic from TimelineManager

- Create load-support.svelte.ts with loadFromTimeBuckets function
- Extract time bucket loading, album asset handling, and error logging
- Simplify TimelineManager's loadMonthGroup method to use extracted function

* refresh timeline after archive keyboard shortcut

* remove debugger

* rename

* Review comments - remove shadowed var

* reduce indents - early return

* review comment

* refactor: simplify asset filtering in addAssets method

Replace for loop with filter operation for better readability

* fix: bad merge

* refactor(web): simplify timeline layout algorithm

- Replace rowSpaceRemaining array with direct cumulative width tracking
- Invert logic from tracking remaining space to tracking used space
- Fix spelling: cummulative to cumulative
- Rename lastRowHeight to currentRowHeight for clarity
- Remove confusing lastRow variable and simplify final height calculation
- Add explanatory comments for clarity
- Rename loop variable assetGroup to dayGroup for consistency

* simplify assetsIterator usage

* merge/lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-10 09:30:13 +07:00
xCJPECKOVERx 16745e77d4
fix(web): Remove tag buttons in search and modal missing tooltip translations (#19087)
* - use translations for "remove tag" text on the search-tags-section and the AssetTagModal

* include new translations

* - fix i18n
2025-06-10 04:49:34 +07:00
renovate[bot] 9380625762
chore(deps): update dependency rollup-plugin-visualizer to v6 (#19051)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:19:50 +07:00
renovate[bot] 16f83c0aa9
chore(deps): update dependency eslint-plugin-unicorn to v59 (#19048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:26:32 +07:00
Mert 74f79cae69
refactor(web): tree data structure for folder and tag views (#18980)
* refactor folder view

inline link

* improved tree collapsing

* handle tags

* linting

* formatting

* simplify

* .from is faster

* simplify

* add key
2025-06-09 10:02:16 +07:00
SGT 7b2237b86b
fix(web): handling historical timezones in web client (#18905)
* fix handling historical timezones in web client

* honor dst when calculating the timezone offset

* fix variable used to construct timezones list to honor dst

* remove unused variable. fix lint
2025-06-08 21:58:52 +07:00
xCJPECKOVERx 526206b2a5
feat(web): Focus on combo box input when opening add tag modal (#18923)
- Add forceFocus prop to ComboBox (optional, false)
- Set forceFocus on AssetTagModal combobox
2025-06-08 21:36:34 +07:00
xCJPECKOVERx de2115d11e
feat(web): Change the primary asset of a stack (#18913)
* - Add set primary primary asset button to asset viewer

* - Cleanup
- change AssetAction to contain a StackResponseDto
- Properly update displayed stack at bottom of the asset viewer

* - update the assetStore with the changed stack

* - Cleanup
2025-06-08 21:35:41 +07:00
xCJPECKOVERx 0c965ae2ea
fix(web): add tag button tooltip not using translation (#18921)
* - Fix add tag button to use proper translation

* - formatting

* Update button tooltip to also use translations
2025-06-09 02:35:04 +07:00
Jin Xuan 28e05537bd
fix(web): improve asset name readability in dark mode (#19012) 2025-06-08 10:43:05 +07:00
xCJPECKOVERx 737fedd527
fix(web): Update add to album notification to better announce errors (#18955)
* Update add to album notification to better announce errors

* fix i18n

---------

Co-authored-by: wuzihao051119 <wuzihao051119@outlook.com>
2025-06-06 08:36:28 +07:00
Daimolean b557f3b7f2
fix(web): play motion photo color (#18959)
fix: play motion photo color
2025-06-06 08:34:59 +07:00
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 +07: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 +07:00
Min Idzelis 90c8fdba96
fix: thumbnail fade in (#18935) 2025-06-04 21:29:58 +07:00
Min Idzelis e2ffc9d5a1
refactor: asset-store (#18938)
* refactor: asset-store

* Potential fix for code scanning alert no. 152: Prototype-polluting function

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-06-05 02:27:54 +07: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 +07:00
xCJPECKOVERx 19ff39c2b9
feat(web): undo delete (#18729)
* feat(web): Undo asset delete

* - lints and checks
- Update English translation

* Update delete-assets.svelte

Make onUndoDelete optional in Props interface

* - Ensure undo button not available on permanent delete, or trash disabled.
- Enforce lint requirement for no-negated-condition

* Fix formatting

* fix: lint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-04 15:46:07 +07:00
xCJPECKOVERx 2da94439c7
fix(web): add tag button not using translation (#18910) 2025-06-04 09:52:07 +07:00
Daimolean daf1bee7ac
fix(web): persisted store (#18385)
* fix(web): persisted store

* fix: translation

* fix: test

* fix: test

* revert i18n changes

* fix blank locale
2025-06-03 19:27:23 +07:00
xCJPECKOVERx 6b4d5e3beb
fix(web): asset-viewer error when selecting a stacked asset (#18881)
* Clear out the previewStackedAsset when selecting.

* undo package-lock update
2025-06-03 14:24:20 +07:00
Alex 6b9233c71a
fix(deps): revert update typescript-projects (#18908) 2025-06-03 21:13:56 +07:00
renovate[bot] 393e8d50b2
fix(deps): update typescript-projects (#18889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 11:39:55 +07:00
Brandon Wees 74438f5bd8
feat(web): improved user onboarding (#18782)
* wip

* added user metadata key

* wip

* restructure onboarding system and add initial locale

* update language card and fix translation updating

* remove prints

* new card formattings

* fix cursed unmount effect

* add OAuth route onboarding

* remove required admin auth for onboarding

* delete the hotwire button

* update open-api files

* delete import

* fix failing oauth onboarding fields

* fix e2e test

* fix web e2e test

* add onboarding to user registration e2e test

* remove todo

this was a holdover during dev and didn't get deleted

* fix server small tests

* use onDestroy to save settings rather than a bind:this

* change to false for isOnboarded

* fix other auth small test

* provide type annotation in user factory metadata field

* remove onboardingCompelted from UserDto

* move translations to onboarding steps array and mark as derived so they update

* break language selector out into its own component as per @danieldietzler suggestion

* remove hello header on card

* fix flixkering on server privacy card

* label/id fixes

* openapi

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-02 21:09:13 +07:00
Daniel Dietzler e7d7886f44
chore: move slideshow settings modal to modals folder (#18869) 2025-06-02 14:22:22 +07:00
Daniel Dietzler 97e86e409a
refactor: asset tag modal (#18867) 2025-06-02 12:41:28 +07:00
Leonardo 72401aa6b1
fix: translation in the tag people window (#18777) 2025-06-02 16:08:31 +07:00
Brandon Wees a02e1f5e7c
chore(web): migrate CircleIconButton to @immich/ui IconButton (#18486)
* remove import and referenced file

* first pass at replacing all CircleIconButtons

* fix linting issues

* fix combobox formatting issues

* fix button context menu coloring

* remove circle icon button from search history box

* use theme switcher from UI lib

* dark mode force the asset viewer icons

* fix forced dark mode icons

* dark mode memory viewer icons

* fix: back button in memory viewer

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-02 14:47:23 +07:00
Dag Stuan d544053c67
feat(web): improve slideshow quality of life (#18778)
* Add a new setting to toggle autoplay when showing the slideshow.
* Fix an issue where the slideshow would restart automatically when
navigating after it was paused.
* Add a keyboard shortcut 's' to start the slideshow from the asset
viewer.
* Add a keyboard shortcut ' ' to toggle the slideshow play/paused.
* Change the timeout for hiding the slideshow controls from 10 to 2.5
seconds.
* Add English translation for the 'autoplay_slideshow' setting.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-02 14:45:39 +07:00
Arno b5c3a675b2
feat: upload assets to locked folder (#18806)
* feat: upload assets to locked folder

* chore: refactor params
2025-06-01 21:45:39 +07:00
Dag Stuan 5589616921
fix(web): Improve zoom behavior in photo-viewer. (#18803)
* Fix an issue where clicking the zoom-button after having zoomed in
would not zoom completely out, but leave the image in the zoomed-in
state. The new behavior properly zoomes the image completely out after
clicking the zoom-button.
* Revert to the default setting for `wheelZoomRatio` as the previous
setting of 0.2 was borderline unusable on a trackpad. This could
probably be moved to a user setting if needed.
* Add a keyboard shortcut 'z' to toggle image zoom.
2025-06-01 21:06:48 +07:00
Daniel Dietzler d118b46c3f
chore: remove postcss (#18831) 2025-06-01 20:52:17 +07:00
Arno 9c18fef9b2
chore: Refactor external library modals (#18655) 2025-05-31 15:30:08 +07:00
Frank de Lange e2defbc49a
feat: start oauth with `autoLaunch=1` (#18763)
* Add automatic OpenID Connect login by using parameter `autoLaunch=1`

By launching Immich with `/auth/login?autoLaunch=1` an OpenID Connect login attempt is directly initated on installations where OAuth Auto Launch is not enabled. The intended use for this parameter is to enable Immich to be launched from e.g. Nextcloud using the _External sites_ app and the _oids_ OpenID Connect provider app so as to enable the user to directly interact with Immich without the need to press the `Login with ...` button.

* Add documentation for autolaunch by navigating to `/auth/login?autoLaunch=1`

* Look ma, no braces!

_This could be a single line_

And now it is, as is its predecessor.

* Change formatting to satisfy _prettier_

* if (condition) return true -> return condition

* More _prettier_ reformatting

* Look ma, braces!
2025-05-30 22:12:53 +07:00
Yaros 97503d11c5
fix(web): datetime in storage template example (#18784)
fix: datetime in storage template example
2025-05-30 14:18:22 +07:00
Brandon Wees cbf68b006e
chore: add google cast feature switch to user admin pane (#18783)
add gogole cast feature switch to user admin pane
2025-05-30 14:17:32 +07:00
Thien Dang 0f42babb6b
fix: Update locked folder text and improve translations (#18622)
* Update locked folder text and remove unused translations

* uppercase Locked folder in Menu

* convert some translates to icu and improve

* add iOS debug info translations for background processes

* fix lint

---------

Co-authored-by: dvbthien <dvbthien@gmail.com>
2025-05-29 15:06:08 +07:00
Arno 2b1b20ab0b
refactor: library-exclusion-pattern-form modal (#18654)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-05-29 16:50:11 +07:00
Daimolean 1f18a09061
fix(web): hide map button when disable (#18743) 2025-05-29 09:13:44 +07:00
Daimolean 6f39a706b2
fix: missing permissions and optional update (#18735)
* fix: missing permissions

* fix: test
2025-05-29 08:48:44 +07:00
Arno 10181defb1
chore: Refactor Edit Album Modal (#18653) 2025-05-29 12:30:25 +07:00
Brandon Wees 78224961d1
feat(web): make google cast opt in (#18514)
* add setting switch

this isnt bound to anything yet

* make google casting opt-in

* doc updates

* lint docs

* remove unneeded translation items

* update mobile openai defs

* fix failing test

we need to mock user prefs since CastButton uses it
2025-05-28 15:57:36 +07:00
Daimolean b054e9dc2c
feat(web): granular api access controls (#18179)
* feat: api access control

* feat(web): granular api access controls

* fix test

* fix e2e test

* fix: lint

* pr feedback

* merge main + new design

* finalize styling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-28 13:16:43 +07:00
Daimolean e9f8d68f62
feat(web): tag shortcut (#18711)
* feat(web): tag shortcut

* fix: lint
2025-05-28 09:42:04 +07:00
Min Idzelis f029910dc7
feat: keyboard navigation to timeline (#17798)
* feat: improve focus

* feat: keyboard nav

* feat: improve focus

* typo

* test

* fix test

* lint

* bad merge

* lint

* inadvertent

* lint

* fix: flappy e2e test

* bad merge and fix tests

* use modulus in loop

* tests

* react to modal dialog refactor

* regression due to deferLayout

* Review comments

* Re-use change-date instead of new component

* bad merge

* Review comments

* rework moveFocus

* lint

* Fix outline

* use Date

* Finish up removing/reducing date parsing

* lint

* title

* strings

* Rework dates, rework earlier/later algorithm

* bad merge

* fix tests

* Fix race in scroll comp

* consolidate scroll methods

* Review comments

* console.log

* Edge cases in scroll compensation

* edge case, optimizations

* review comments

* lint

* lint

* More edge cases

* lint

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-28 08:55:14 +07:00
Ben McCann b5593823a2
chore(web): bump `eslint-plugin-svelte` in the `package.json` (#18695) 2025-05-28 15:40:43 +07:00
renovate[bot] a40d35555f
chore(deps): update typescript-projects (#18697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 13:09:44 +07:00
Brandon Wees a231d7be64
chore: allow overriding dark mode to light mode with the .light class (#18687)
* allow overriding dark mode to light mode with the .light class

* light and dark are in the same block, dont use .light here
2025-05-27 14:42:22 +07:00
github-actions 58ae77ec92 chore: version v1.134.0 2025-05-27 16:47:49 +07:00
renovate[bot] 724a081bb5
fix(deps): update typescript-projects (#18681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 18:00:45 +07:00
Daimolean 4e332db2fb
fix(web): update after delete (#18684) 2025-05-27 15:42:08 +07:00
Zack Pollard 0712183a18
fix: replace edit user button with view button for user details screen (#18683) 2025-05-27 15:38:16 +07:00
Alex d004c03990
fix: z-index search bar (#18685) 2025-05-27 15:36:03 +07:00
Alex fff651f8a5
fix(web): handle nullable assets duration (#18679)
* fix(web): handle nullable assets duration

* Update web/src/lib/components/assets/thumbnail/thumbnail.svelte

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* fix: format

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2025-05-27 10:24:17 +07:00
renovate[bot] a3404cf420
fix(deps): update typescript-projects (#18671)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-27 17:00:29 +07:00
Brandon Wees a9851df8d1
fix(web): move support & feedback button to user modal (#18651)
* move support & feedback button to user modal

* cleanup styling of link

* update sign out button to use immich/ui

* revise sign out button to match design from @alextran1502

* more margin on support/feedback
2025-05-27 09:26:40 +07:00
bo0tzz 369d3dfa38
fix: use single bulkTagAssets call instead of loop (#18672) 2025-05-27 10:35:22 +07:00
renovate[bot] 93e53f6d74
chore(deps): update node.js to v22.16.0 (#18662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 12:13:30 +07:00
renovate[bot] d8f0a69dc8
chore(deps): update node (#18661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 12:12:37 +07:00
Alex 118dc8cf5a
fix: meta+click on thumbnail (#18648) 2025-05-26 14:58:46 +07:00
Alex a5d63d6953
fix(web): modal anchor (#18621)
fix: modal anchor
2025-05-25 20:38:46 +07:00
Arno c3aeb6c497
chore: refactor slide-show-settings modal (#18570)
* chore: refactor slide-show-settings modal

* fix: dropdown getting clipped in modals

* Revert "fix: dropdown getting clipped in modals"

This reverts commit 0120932a49.

* fix: changed to show method
2025-05-25 14:38:13 +07:00
Xuan Binh d22fb2d5db
fix(web): enhance face tagging confirmation and fix #18605 (#18610)
* Fix: enhance face tagging confirmation and fix double label in checkboxes

* fix code formatting

---------

Co-authored-by: dvbthien <dvbthien@gmail.com>
2025-05-25 14:34:12 +07:00
Lukas c4df96bd72
fix(web): center memory lane buttons (#18613)
* fix(web): center memory lane buttons

* format
2025-05-25 19:33:25 +07:00
Alex 4743a085f1
fix: more z-index issue (#18598)
* fix: search suggestion

* fix: play icon lay on top of the search bar
2025-05-25 14:31:24 +07:00
github-actions 54bafccbf9 chore: version v1.133.1 2025-05-23 17:37:44 +07:00
Daniel Dietzler e61c575b01
fix: tailwind issues (#18528)
fix: tailwind issues (maybe)
2025-05-23 12:34:24 +07:00
Alex 4878c500a5
fix: hard link navigation (#18489) 2025-05-23 08:21:37 +07:00
Alex 8fcf47e5cb
chore: more padding (#18507) 2025-05-23 00:52:45 +07:00
Daimolean c7dc31151d
fix(web): multi-select (#18485) 2025-05-22 15:17:34 +07:00
Alex 065f7c7d5d
fix: more z-index issue (#18493) 2025-05-22 15:17:14 +07:00
Daimolean b194aee754
fix(web): pin code input (#18456) 2025-05-22 11:34:03 +07:00
Daimolean 91b961642a
feat(web): add to locked folder in album and search (#18488)
* feat(web): add to locked folder in album and search

* feat(web): add to locked folder in favorite and archive

* fix: lint

* feat: add to person page

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-22 16:26:19 +07:00
Daniel Dietzler c278bb0e5b
fix: avatar selection z-index issues (#18425) 2025-05-22 14:48:07 +07:00
github-actions 55adc136c8 chore: version v1.133.0 2025-05-21 19:47:42 +07:00
Arno 188188a844
fix: Change shortcut listeners from window to document (#18416)
* fix: Change shortcut listeners to document

* fix: split into window and document

* chore: upgrade ui package
2025-05-21 11:12:00 +07:00
Alex b2ef8ea7dd
fix: onboarding styling (#18417) 2025-05-21 15:59:28 +07:00
renovate[bot] 98e998e814
fix(deps): update typescript-projects (#18402)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-21 11:42:41 +07:00
renovate[bot] b83b28cd73
fix(deps): update typescript-projects (#18390)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-20 22:40:30 +07:00
Brandon Wees 86db0aafe5
feat(web): add support for casting (#18231)
* recreate #13966

* gcast button works

* rewrote gcast-player to be GCastDestination and CastManager manages the interface between UI and casting destinations

* remove unneeded imports

* add "Connected to" translation

* Remove css for cast launcher

* fix tests

* fix doc tests

* fix the receiver application ID

* remove casting app ID

* remove cast button from nav bar

It is now present at the following locations:

- shared link album and single asset views
- asset viewer (normal user)
- album view (normal user)

* part 1 of fixes from @danieldietzler code review

* part 2 of code review changes from @danieldietzler and @jsram91

* cleanup documentation

* onVideoStarted missing callback

* add token expiry validation

* cleanup logic and logging

* small cleanup

* rename to ICastDestination

* cast button changes
2025-05-20 16:08:23 +07:00
Daniel Dietzler 12b7a079c1
fix: map (#18399) 2025-05-20 12:52:23 +07:00
Alex 53420b7c02
chore: notification panel style tweak (#18398) 2025-05-20 16:30:27 +07:00
Alex c05aa445d8
fix: location search result z-index (#18379) 2025-05-20 11:22:30 +07:00
Alex bdf19ce331
fix: TimelineAsset visibility (#18395)
* fix: TimelineAsset visibility

* fix enum values
2025-05-20 15:53:34 +07:00
Alex 895e0eacfe
refactor: slide-show settings (#18394) 2025-05-20 10:37:10 +07:00
renovate[bot] 965498d19b
chore(deps): update node.js to v22.15.1 (#18388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 15:14:59 +07:00
Daimolean 495a959879
fix(web): slide show in blurred background (#18384)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-20 09:00:20 +07:00
Min Idzelis e7edbcdf04
feat(server): lighter buckets (#17831)
* feat(web): lighter timeline buckets

* GalleryViewer

* weird ssr

* Remove generics from AssetInteraction

* ensure keys on getAssetInfo, alt-text

* empty - trigger ci

* re-add alt-text

* test fix

* update tests

* tests

* missing import

* feat(server): lighter buckets

* fix: flappy e2e test

* lint

* revert settings

* unneeded cast

* fix after merge

* Adapt web client to consume new server response format

* test

* missing import

* lint

* Use nulls, make-sql

* openapi battle

* date->string

* tests

* tests

* lint/tests

* lint

* test

* push aggregation to query

* openapi

* stack as tuple

* openapi

* update references to description

* update alt text tests

* update sql

* update sql

* update timeline tests

* linting, fix expected response

* string tuple

* fix spec

* fix

* silly generator

* rename patch

* minimize sorting

* review

* lint

* lint

* sql

* test

* avoid abbreviations

* review comment - type safety in test

* merge conflicts

* lint

* lint/abbreviations

* remove unncessary code

* review comments

* sql

* re-add package-lock

* use booleans, fix visibility in openapi spec, less cursed controller

* update sql

* no need to use sql template

* array access actually doesn't seem to matter

* remove redundant code

* re-add sql decorator

* unused type

* remove null assertions

* bad merge

* Fix test

* shave

* extra clean shave

* use decorator for content type

* redundant types

* redundant comment

* update comment

* unnecessary res

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-19 16:40:48 +07:00
Alex 59f666b115
chore: back button in pin verification form (#18378) 2025-05-19 21:33:42 +07:00
Alex c8641d24f6
chore: tailwindcss v4 and z-war clean up (#18358)
* chore: styling tweak

* replace full-screen-modal, update docs

* scrubber

* fix: control app bar in memory viewer

* face lift

* pr feedback

* clean up
2025-05-19 14:32:23 +07:00
Daniel Dietzler adb17c4d58
fix: supporter badge (#18357) 2025-05-18 18:26:24 +07:00
Daniel Dietzler 56156b97e7
chore: upgrade to tailwind v4 (#18353) 2025-05-18 13:51:33 +07:00
Min Idzelis 0bbe70e6a3
feat(web): lighter timeline buckets (#17719)
* feat(web): lighter timeline buckets

* GalleryViewer

* weird ssr

* Remove generics from AssetInteraction

* ensure keys on getAssetInfo, alt-text

* empty - trigger ci

* re-add alt-text

* test fix

* update tests

* tests

* missing import

* fix: flappy e2e test

* lint

* revert settings

* unneeded cast

* fix after merge

* missing import

* lint

* review

* lint

* avoid abbreviations

* review comment - type safety in test

* merge conflicts

* lint

* lint/abbreviations

* fix: left-over migration

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-18 02:57:08 +07:00
Dhaval Javia a65c905621
fix: delay settings apply for slideshow popup (#18028)
* fix: fixed slideshow values to apply on done.

* chore: linting error fixes

* feat: added cancel button and changed text from done to confirm
2025-05-17 21:09:15 +07:00
Snowknight26 61d784f4e7
fix(web): Make QR code colors solid (#18340) 2025-05-17 09:05:23 +07:00
koostamas b63d6cdcd6
feat: bulk change description (#18288)
Co-authored-by: Tamas Koos <ext_tamas.koos@btrl.ro>
2025-05-17 12:17:00 +07:00
Jason Rasmussen fa45a26cff
refactor: checkbox (#18337)
refactor: checkboxes
2025-05-16 18:13:39 +07:00
Jason Rasmussen 5353658114
refactor: convert slider to switch (#18334) 2025-05-16 13:59:47 +07:00
Daniel Dietzler 21880aec14
fix: z-index issues on search page (#18336) 2025-05-16 17:54:37 +07:00
Jason Rasmussen 8ab5040351
fix(web): modal colors (#18332)
* feat(web): clear person birthdate

* fix(web): modal colors
2025-05-16 12:58:17 +07:00
Sebastian Schneider 1219fd82a0
fix(web): format dates with the locale preference (#18259)
fix: Format dates in settings according to user setting
2025-05-16 12:03:54 +07:00
Jason Rasmussen 28d8357cc5
feat(web): clear person birthdate (#18330) 2025-05-16 11:56:25 +07:00
Daniel Dietzler a9e7d0388b
fix: people edit ui (#18320) 2025-05-15 18:32:01 +07:00
Jason Rasmussen 86d64f3483
refactor: buttons (#18317)
* refactor: buttons

* fix: woopsie

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-05-15 18:31:33 +07:00
Jason Rasmussen c1150fe7e3
feat: lock auth session (#18322) 2025-05-15 18:08:31 +07:00
Jason Rasmussen ecb66fdb2c
fix: check i18n are sorted (#18324) 2025-05-15 17:55:16 +07:00
Jason Rasmussen c046651f23
feat(web): continue after login (#18302) 2025-05-15 14:45:23 +07:00
Brandon Wees 6117329057
feat: add session creation endpoint (#18295) 2025-05-15 13:34:33 +07:00
Daniel Dietzler 585997d46f
fix: person edit sidebar cursedness (#18318) 2025-05-15 18:28:20 +07:00
Jason Rasmussen 7146ec99b1
chore: use default theme config (#18314) 2025-05-15 10:44:10 +07:00
Alex b7b0b9b6d8
feat: locked/private view (#18268)
* feat: locked/private view

* feat: locked/private view

* pr feedback

* fix: redirect loop

* pr feedback
2025-05-15 15:35:21 +07:00
Daniel Dietzler cd03d0c0f2
refactor: person merge suggestion modal (#18287) 2025-05-14 20:30:24 +07:00
Jason Rasmussen 117b263887
refactor: sidebar (#18293) 2025-05-14 15:11:31 +07:00
Jason Rasmussen f357f3324f
refactor: default border color (#18292) 2025-05-14 13:12:57 +07:00
Jason Rasmussen 7d95bad5cb
refactor: user settings container (#18291) 2025-05-14 12:30:55 +07:00
Jason Rasmussen 77b0505006
refactor: layout components (#18290) 2025-05-14 12:30:47 +07:00
Jason Rasmussen fac1beb7d8
refactor: buy immich (#18289)
* refactor: buy container

* refactor: buy immich
2025-05-14 12:09:10 +07:00
Daniel Dietzler 3944f5d73b
fix: mobile sidebar (#18286) 2025-05-14 12:02:25 +07:00
Jason Rasmussen 4445288758
refactor: admin sidebar (#18276) 2025-05-14 11:23:57 +07:00
Daniel Dietzler 4efc41d5d9
refactor: date of birth modal (#18283) 2025-05-14 08:20:22 +07:00
Daniel Dietzler c9d45eee86
refactor: duplicates information modal (#18282) 2025-05-14 07:52:04 +07:00
Daniel Dietzler b3b774cfe5
fix: memory lane memory title (#18277) 2025-05-13 21:52:56 +07:00
Daniel Dietzler 15e894b9b5
fix: z-index issues (#18275) 2025-05-13 22:25:57 +07:00
Daniel Dietzler 0cd51ae9c5
fix: detail panel background (#18269) 2025-05-13 17:32:34 +07:00
Daniel Dietzler 668288ca20
refactor: album users modal (#18266) 2025-05-13 13:20:44 +07:00
Jason Rasmussen 3fdc1df89c
fix(web): handle deleted user on details page (#18264) 2025-05-13 09:40:50 +07:00
Daniel Dietzler 989d9dbe51
fix: z-index overuse (#18192) 2025-05-13 16:10:05 +07:00
Daniel Dietzler 48112d84a3
refactor: confirm modal in album users modal (#18241) 2025-05-13 15:39:21 +07:00
Jason Rasmussen ce90a2ec1a
refactor(web): disable login confirm modal (#18261) 2025-05-13 09:16:05 +07:00
Daimolean dccbe0b3ed
fix(web): user details (#18253)
fix(server, web): user details
2025-05-13 07:55:58 +07:00
renovate[bot] c0ad12f279
fix(deps): update typescript-projects (#18251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-13 13:31:33 +07:00
renovate[bot] d271e6a3ae
chore(deps): update node.js to v22.15.0 (#18250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 12:09:41 +07:00
Jason Rasmussen 81d959a27e
refactor: remove unused props (#18240) 2025-05-12 22:31:37 +07:00
Jason Rasmussen bb775110ef
refactor: password reset success modal (#18239) 2025-05-12 18:18:13 +07:00
Jason Rasmussen 7280331b76
refactor: confirm modal (#18238) 2025-05-12 22:02:49 +07:00
Jason Rasmussen 93ee6ee0a5
refactor: dialog controller (#18235) 2025-05-12 17:48:05 +07:00
Daniel Dietzler 7544a678ec
refactor: remove unnecessary bg-color attributes and move to ui lib vars (#18234) 2025-05-12 17:17:01 +07:00
Jason Rasmussen 3066c8198c
feat(web): user detail page (#18230)
feat: user detail page
2025-05-12 16:50:26 +07:00
Jason Rasmussen eb8dfa283e
fix(web): no rounded map on /map page (#18232) 2025-05-12 14:15:15 +07:00
Daniel Dietzler 41a127e2ab
refactor: avatar selector modal (#18228) 2025-05-12 10:56:36 +07:00
Daniel Dietzler feb475561e
fix: missing translation in pin settings (#18203) 2025-05-10 15:27:42 +07:00
Alex 4c4c67f0d2
chore(web): color tuning (#18193) 2025-05-10 20:55:06 +07:00
Daimolean 381b66bf70
fix(web): IconButton size in user restore (#18194) 2025-05-10 07:28:37 +07:00
renovate[bot] a89f3ad97c
fix(deps): update typescript-projects (#18133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 13:07:20 +07:00
Jason Rasmussen c473511133
feat(web): stat card tweaks (#18189)
feat: stat card tweaks
2025-05-09 17:56:41 +07:00
Ben McCann 0d66a6b51f
chore(web): upgrade enhanced-img (#18186) 2025-05-09 16:05:07 +07:00
Jason Rasmussen 66400b2e8e
fix(web): user restore (#18188) 2025-05-09 21:05:01 +07:00
Alex 3f719bd8d7
feat: user pin-code (#18138)
* feat: user pincode

* pr feedback

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-05-09 17:00:58 +07:00
Daniel Dietzler 55af925ab3
refactor: shared link url (#18185) 2025-05-09 15:23:00 +07:00
Daniel Dietzler f21fe8716c
refactor: shortcuts modal (#18175) 2025-05-09 13:24:36 +07:00
Daniel Dietzler 6a69dafd31
refactor: share modals (#18183) 2025-05-09 16:59:29 +07:00
Daniel Dietzler 47b1938f17
fix: search filter modal close (#18180) 2025-05-09 10:10:10 +07:00
Daniel Dietzler 89551edee5
fix: z-index war in the asset viewer (#18091) 2025-05-09 10:17:26 +07:00
luzpaz b1e1362246
fix: various typos (grouped in to separate commits) (#18177) 2025-05-09 13:10:34 +07:00
Alex ccc2b191dd
fix: notification text's color (#18170) 2025-05-08 19:07:12 +07:00
Alex bb7010b2bb
chore: rounded map corner when needed (#18163) 2025-05-09 00:49:16 +07:00
Daniel Dietzler 8db666bc38
refactor: search filter modal (#18159) 2025-05-08 15:36:05 +07:00
Daimolean eace0f716d
fix(web): add photos to album (#18166) 2025-05-08 20:24:51 +07:00
Daimolean 0cd5960007
fix(web): ui (#18160)
* fix(web): ui

* fix(web): ui

* lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-08 19:32:45 +07:00
Alex 3a1e3e82e7
fix: notification text's color (#18151) 2025-05-08 12:15:11 +07:00
Daniel Dietzler 894545aeed
refactor: modal manager types (#18150) 2025-05-07 22:08:19 +07:00