Commit Graph

2824 Commits (ca4fd076564c5771791b9530dd4ce33be69003fc)

Author SHA1 Message Date
bo0tzz 48be10e48b
fix: don't exclude .github folder from make install-all (#19534)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-25 20:37:40 +07:00
Daimolean 4621ec5ea2
fix(web): load day group in asset viewer (#19523)
* fix(web): load day group in asset viewer

* fix: lint
2025-06-25 11:18:11 +07:00
Jason Rasmussen ebcf133bea
fix(web): consistent merge people icons (#19473)
fix(web): consistent merge icons
2025-06-23 16:39:20 +07:00
Daimolean ce14324c97
fix(web): oauth quota display (#19417)
* fix(web): oauth quota display

* fix(web): oauth quota display
2025-06-23 11:00:41 +07:00
Daimolean 6a309129b7
fix(web): timeline timezone (#19418) 2025-06-23 09:06:26 +07:00
Daimolean 7f89999abe
fix(web): toggle favorite (#19453) 2025-06-23 08:36:30 +07:00
Daimolean 813186e618
fix(web): undefined release (#19455)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-06-23 12:13:08 +07:00
Daniel Dietzler ecc58a8971
chore: migrate version announcement modal (#19381) 2025-06-22 21:56:41 +07:00
Yaros c705a7b280
fix(web): map broken after redirect from details (#19424)
* fix(web): map broken after redirect from details

* chore: use globalThis instead of window
2025-06-22 21:55:21 +07:00
Brandon Wees ef278b4fb0
fix: storage template onboarding save (#19405)
* fix: storage template onboarding save

* no need for async/await
2025-06-22 21:54:29 +07:00
Daimolean 4cd633dc68
fix(web): download icon color (#19427) 2025-06-22 21:52:19 +07:00
Daimolean 90aa0dc14d
fix(web): map cluster (#19433) 2025-06-22 15:06:45 +07:00
Daniel Dietzler 698d3004b4
refactor: tag create/update modal (#19389)
refactor: tag modals
2025-06-21 12:28:21 +07:00
Daniel Dietzler fe4d6edbdc
refactor: album picker modal (#19383)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-06-21 08:18:54 +07:00
github-actions 6563fa608a chore: version v1.135.3 2025-06-20 19:48:18 +07:00
Daniel Dietzler 373b654156
chore: migrate profile picture cropper modal (#19378) 2025-06-20 18:16:10 +07:00
Daniel Dietzler a5d84ba552
chore: consistent modal footer spacing (#19377) 2025-06-20 18:05:39 +07:00
Daniel Dietzler 1dc8fa2979
chore: rename edit album form modal (#19375) 2025-06-20 13:51:14 +07:00
github-actions a04c6ed80d chore: version v1.135.2 2025-06-20 14:52:47 +07:00
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
Daniel Dietzler 5250269fa4
refactor: user page modals (#18147) 2025-05-07 17:58:46 +07:00
Daniel Dietzler a169fb6a79
refactor: map (#18143) 2025-05-07 17:39:50 +07:00
Daniel Dietzler 09ced9a171
refactor: help modal (#18145) 2025-05-07 17:31:38 +07:00
Daniel Dietzler bbd8de177b
refactor: side bar modals (#18134) 2025-05-07 09:01:51 +07:00
Alex d33ce13561
feat(server): visibility column (#17939)
* feat: private view

* pr feedback

* sql generation

* feat: visibility column

* fix: set visibility value as the same as the still part after unlinked live photos

* fix: test

* pr feedback
2025-05-06 12:12:48 +07:00
renovate[bot] 30822fcd10
fix(deps): update typescript-projects (#18124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 14:50:22 +07:00
Alex c578273e7a
chore: modal shenanigan (#18116) 2025-05-06 08:47:58 +07:00
Daniel Dietzler 1138f6dcce
refactor: job create modal (#18106)
* refactor: job create modal

* chore: better modal manager types (#18107)
2025-05-06 08:44:44 +07:00
Alex df2cf5d106
refactor: use UI library variable for table (#18105) 2025-05-05 22:39:52 +07:00
Daniel Dietzler 52975eadb3
refactor: all user admin page modals (#18097) 2025-05-05 23:54:42 +07:00
renovate[bot] 2b3efa02d8
chore(deps): update dependency vite to v6.3.4 [security] (#18003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 07:26:32 +07:00
David 7d61ed7ce4
feat(web): Map in albums & shared albums (#17906)
* add btn, map and marker

* Fix bug in navigation assetviewer

* Correct bug on main Viewer

* Add to user album the map of his pictures

* change icon to outline

* lint & format

* with manager instead of variable

* remove duplicate

* chore: minor styling change

* formatting

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-05-05 02:58:44 +07:00
Daniel Dietzler 8f7baf8336
chore: add language requests from weblate (#18050) 2025-05-04 21:04:53 +07:00
Alex 8801ae5821
fix(web): text dim in darkmode (#18072) 2025-05-04 08:30:21 +07:00
Daniel Dietzler 62fc5b3c7d
refactor: introduce modal manager (#18039) 2025-05-02 18:41:42 +07:00
Daniel Dietzler 15d431ba6a
refactor: dialog callbacks (#18034) 2025-05-02 13:34:53 +07:00
Daniel Dietzler 436cff72b5
refactor: activity manager (#17943) 2025-04-30 15:50:38 +07:00
Jason Rasmussen 094a41ac9a
chore: remove audit file report (#17994) 2025-04-30 11:17:23 +07:00
Daniel Dietzler ebad6a008f
fix: add missing translations to face editor (#17993) 2025-04-30 10:07:21 +07:00
Jason Rasmussen 6df6103c67
chore: better immich-web logging (#17992) 2025-04-30 09:48:24 +07:00
Min Idzelis 4b1ced439b
feat: improve/refactor focus handling (#17796)
* feat: improve focus

* test

* lint

* use modulus in loop
2025-04-30 00:19:38 +07:00
Jason Rasmussen 038a82c4f1
refactor: theme manager (#17976) 2025-04-29 17:44:09 +07:00
Jason Rasmussen d89e88bb3f
feat: configure token endpoint auth method (#17968) 2025-04-29 15:17:48 +07:00
Min Idzelis 0e4cf9ac57
feat(web): responsive date group header height (#17944)
* feat: responsive date group header height

* update tests

* feat(web): improve perf when changing mobile orientation (#17945)

fix: improve perf when changing mobile orientation
2025-04-29 13:59:06 +07:00
Min Idzelis 07290580a6
feat: improve semantic nav/main tags (#17800)
feat: nav/main elements

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-29 13:51:39 +07:00
AverageHelper d9ce74b896
chore: add security.txt (#17952)
* feat: Create .well-known/security.txt

* feat: Add another security.txt for the main website

* fix: deploy hidden files

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-29 13:48:06 +07:00
Jason Rasmussen 4c0f79b162
fix: use lint:p in checkall script (#17969) 2025-04-29 17:34:36 +07:00
renovate[bot] 3d042cc7f1
fix(deps): update typescript-projects (#17961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 13:00:37 +07:00
renovate[bot] fb52ac0f5b
chore(deps): update node.js to v22.15.0 (#17956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:32 +07:00
Jason Rasmussen 7f69abbf0d
refactor: app init event (#17937) 2025-04-28 14:48:33 +07:00
Jason Rasmussen 895b2bf5cd
refactor: download manager (#17935) 2025-04-28 14:21:24 +07:00
Jason Rasmussen f64e6f5dc3
refactor: auth login event (#17934) 2025-04-28 14:13:14 +07:00
Luke Towers 64e738f79d
feat(web): move duplicates controls above preview of duplicate images (#17837)
Move duplicates controls above preview of duplicate images
2025-04-28 16:10:40 +07:00
Daniel Dietzler a17390a422
refactor: move managers to new folder (#17929) 2025-04-28 16:56:04 +07:00
Jason Rasmussen 1b5fc9c665
feat: notifications (#17701)
* feat: notifications

* UI works

* chore: pr feedback

* initial fetch and clear notification upon logging out

* fix: merge

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-04-28 10:36:14 +07:00
Min Idzelis 2fd05e8447
feat: preload and cancel images with a service worker (#16893)
* feat: Service Worker to preload/cancel images and other resources

* Remove caddy configuration, localhost is secure if port-forwarded

* fix e2e tests

* Cache/return the app.html for all web entry points

* Only handle preload/cancel

* fix e2e

* fix e2e

* e2e-2

* that'll do it

* format

* fix test

* lint

* refactor common code to conditionals

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-28 14:23:05 +07:00
Jason Rasmussen ad272333db
refactor: user avatar color (#17753) 2025-04-28 08:54:51 +07:00
Jason Rasmussen e6c575c33e
feat: rtl (#17860) 2025-04-28 08:53:53 +07:00
Andreas Tollkötter 85ac0512a6
fix(web): Make date-time formatting follow locale (#17899)
* fixed missing $locale parameter to .toLocaleString

* Remove unused types and functions in timeline-util

* remove unused export

* re-enable export because it is needed for tests

* format
2025-04-28 08:53:26 +07:00
github-actions 02994883fe chore: version v1.132.3 2025-04-25 19:44:05 +07:00
Jason Rasmussen d0014bdf94
refactor: event manager (#17862)
* refactor: event manager

* refactor: event manager
2025-04-25 08:36:31 +07:00
github-actions 0d60be3d87 chore: version v1.132.2 2025-04-25 03:07:06 +07:00
github-actions 37f5e6e2cb chore: version v1.132.1 2025-04-23 21:43:47 +07:00
github-actions f659ef4b7a chore: version v1.132.0 2025-04-23 16:44:47 +07:00
Alex be1062474b
chore: memory spacing (#17813)
chore(web): memory spacing
2025-04-23 16:02:49 +07:00
Zack Pollard bc5875ba8d
chore: multithreaded web linting (#17809) 2025-04-23 13:05:31 +07:00
renovate[bot] 0426b574fe
fix(deps): update typescript-projects (#17625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-04-23 11:45:38 +07:00
Alex fda68f972f
fix(web): forceDark control app bar doesn't work (#17759) 2025-04-22 09:25:27 +07:00
Bonne Eggleston fe8c5e8107
feat: add album start and end dates for storage template (#17188) 2025-04-21 19:54:33 +07:00
Yaros c70140e707
fix(web): map marker positioning in details pane (#17754)
fix: map marker positioning in details pane
2025-04-21 13:01:38 +07:00
Jason Rasmussen 488dc4efbd
refactor: notification-admin controller (#17748) 2025-04-21 10:49:26 +07:00
Min Idzelis 5e68f8c519
fix: longpress triggers contextmenu (#17602) 2025-04-16 19:24:26 +07:00
Min Idzelis 26f0ea4cb5
feat: responsive controlbar (#17601) 2025-04-15 14:39:30 +07:00
Daniel Dietzler 309528c807
chore: upgrade package locks (#17626) 2025-04-15 11:34:21 +07:00
renovate[bot] b3371e16f2
fix(deps): update typescript-projects (#17611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 15:55:03 +07:00
renovate[bot] 72f6d7791e
chore(deps): update dependency @sveltejs/kit to v2.20.6 [security] (#17603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:47:30 +07:00
Aamir Azad e3f3baadb0
fix(web): improve mobile web album viewer padding (#17575)
Reduce margin on mobile web album viewer
2025-04-14 13:46:53 +07:00
Min Idzelis 5a51ad3622
fix: responsive: timeline glitch and keyboard-accessible scrubber (#17556)
* fix: responsive: timeline glitch

* lint

* fix margin-right on mobile

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-14 11:56:40 +07:00
Ben 79d4ce2d6d
fix(web): search bar deactivates when focus exits (#17549)
* fix(web): search bar deactivates when focus exits

* fix: disable search bar on destroy

For example, on the search page. If the escape key is pressed while the advanced filters button is focused, the search page will close but the search bar will remain activated.
2025-04-13 22:43:50 +07:00
Min Idzelis 983f656a6b
fix: in dev, delay web server start until api server is started (#17563) 2025-04-13 10:06:35 +07:00
Min Idzelis 1f18fe31f0
fix: occasional empty buckets, after canceled loads (#17552) 2025-04-13 07:50:24 +07:00
Min Idzelis 8309b73a02
fix: responsive: long press while scroll (#17555) 2025-04-11 18:28:36 +07:00
Min Idzelis e440cbe353
feat: responsive-web: shrink mem-lane (#17550) 2025-04-11 17:10:58 +07:00
Min Idzelis 3bec8dc337
refactor: responsive: device units (#17551) 2025-04-11 17:09:10 +07:00
Min Idzelis 5bcb58c3e7
feat: responsive: skeleton (#17553)
feature: responsive: skeleton
2025-04-11 17:04:48 +07:00
Min Idzelis c62fc155c8
feat: show thumbhash behind load error, if possible (#17554)
* feat: show thumbhash behind load error, if possible

* forgot this
2025-04-11 17:01:51 +07:00
Jason Rasmussen ae6653392e
feat: view qr code from share modal (#17544) 2025-04-11 14:02:07 +07:00
renovate[bot] 08b5952c87
chore(deps): update dependency vite to v6.2.6 [security] (#17541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-11 13:56:01 +07:00
Ben 92f0973a46
fix(web): reset search history after logout (#17534)
fix(web): reset search suggestions after logout
2025-04-10 20:34:45 +07:00
Alex abde0fbe60
fix(web): mobile view double scroll layer (#17528) 2025-04-10 13:50:05 +07:00
Ben e3995fb5f4
fix(web): increase sidebar breakpoint (#17436) 2025-04-10 12:00:30 +07:00
Alex 6d3f3d8616
refactor: convert download manager into a state class (#17491)
* fix(web): download progress bar not functioning

* remove unused method
2025-04-10 16:48:21 +07:00
Rudhra Raveendran 9e49783e49
feat: use browser download manager for single file downloads (#17507)
* Fix download panel reactivity

* Directly download individual files without buffering in memory

* Fix shared link e2e download tests
2025-04-10 09:13:50 +07:00
renovate[bot] 3e372500b0
fix(deps): update typescript-projects (#17456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-04-09 14:47:29 +07:00
snek 6ae24fbbd4
feat(web): improve individual share ux (#17430) 2025-04-08 09:11:37 +07:00
renovate[bot] 51c2c60231
chore(deps): update dependency vite to v6.2.5 [security] (#17391)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-07 16:35:29 +07:00
Ruben Hensen 99cddf1fd6
feat: allow accounts with a quota of 0 GiB (#17413)
* Allow 0GiB quotas in user create/edit form, remove unused translations

* Make requireQuota check for null or 0

* Add unlimited quota change to the docs

* Fix user dto formatting

* Fix formating edit-user-form

* Regenerate open-api files

* Revert unnecessary i18n file changes

* Re-add newline en.json

* Resolve linting issues

* Fix formatting edit-user-form

* Re-add manifest
2025-04-07 09:22:56 +07:00
Ben McCann 31ee19181a
chore(web): switch to writable derived one more place (#17399) 2025-04-06 22:05:47 +07:00
Zlendy b87ba6865b
fix(web): Video memories are played at 100% volume instead of respecting user preference (#17424) 2025-04-06 22:03:19 +07:00
Daniel Dietzler a3c3f9cfcb
fix: reset memories on logout (#17405) 2025-04-05 13:09:56 +07:00
martin 720189e2c2
fix: improve initial loading time (#17379) 2025-04-04 17:04:52 +07:00
Mert e8b4ac0522
fix(web): use original image if web compatible (#17347)
* use original image if web compatible

* add e2e

* fix shared link handling

* handle redirect in e2e

* fix size not being passed to thumbnail url

* test fullsize in e2e
2025-04-03 09:01:41 +07:00
Snowknight26 4336afd6bf
fix(web): fix thumbnail hover link position (#16762)
* fix(web): don't show a scrollbar when hovering over the last row of images on the search page

* Format code

* Fix asset selection z-index

* Remove anchor overlay on mouseover

* Fix a test

* Fix merge

* Fix overlays

* fix merge

* fix stack thumbs in asset viewer

* fix dimmed bounds, animation

* lint

---------

Co-authored-by: Min Idzelis <min123@gmail.com>
2025-04-02 10:30:41 +07:00
Alex 95e3b15776
fix(web): padding (#17320) 2025-04-01 23:32:54 +07:00
Ben 50335dc363
fix(web): menu button size (#17321)
Adjusting the menu button size, to match match the other buttons in the navigation bar.
2025-04-01 22:25:17 +07:00
Ben 6e62c09d84
feat(web): expand/collapse sidebar (#16768)
* feat: expand/collapse sidebar

* fix: general PR cleanup

- add skip link unit test
- remove unused tailwind styles
- adjust asset grid spacing
- fix event propogation

* fix: cleaning up event listeners

* fix: purchase modal and button on small screens

* fix: explicit tailwind classes

* fix: no animation on initial page load

* fix: sidebar spacing and reactivity

* chore: reverting changes to icons in nav and account info panel

* fix: remove left margin from the asset grid after merging in new timeline

* chore: extract search-bar changes for a separate PR

* fix: add margin to memories
2025-04-01 21:12:04 +07:00
github-actions 00d3b8d83a chore: version v1.131.3 2025-04-01 22:27:52 +07:00
Daimolean e4b0c00885
fix(web): select all button displays incorrectly (#17305)
* fix(web): select all show incorrectly

* fix: lint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-04-01 19:00:48 +07:00
Alex 946507231d
fix(web): blank locale cause blank timeline to render (#17284)
* fix(web): blank locale cause blank timeline to render

* correct fix

* newline

* pr feedback
2025-04-01 18:58:11 +07:00
Alex 20ba800a50
fix(web): date time change reactivity (#17306)
* fix(web): date time change reactivity

* remove logs
2025-04-01 18:57:53 +07:00
github-actions 9aa3850769 chore: version v1.131.2 2025-04-01 11:41:56 +07:00
renovate[bot] 628dcdeebf
fix(deps): update typescript-projects (#17294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 10:58:55 +07:00
renovate[bot] 69b1ac47ea
fix(deps): update typescript-projects (#17287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 12:32:09 +07:00
renovate[bot] 3428a876c7
chore(deps): update dependency vite to v6.2.4 [security] (#17259)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 00:36:54 +07:00
github-actions 7729fe80fa chore: version v1.131.1 2025-03-31 20:36:48 +07:00
github-actions 5b63b9fc8b chore: version v1.131.0 2025-03-31 18:41:13 +07:00
Eli Gao 5c80e8734b
feat: original-sized previews for non-web-friendly images (#14446)
* feat(server): extract full-size previews from RAW images

* feat(web): load fullsize preview for RAW images when zoomed in

* refactor: tweaks for code review

* refactor: rename "converted" preview/assets to "fullsize"

* feat(web/server): fullsize preview for non-web-friendly images

* feat: tweaks for code review

* feat(server): require ASSET_DOWNLOAD premission for fullsize previews

* test: fix types and interfaces

* chore: gen open-api

* feat(server): keep only essential exif in fullsize preview

* chore: regen openapi

* test: revert unnecessary timeout

* feat: move full-size preview config to standalone entry

* feat(i18n): update en texts

* fix: don't return fullsizePath when disabled

* test: full-size previews

* test(web): full-size previews

* chore: make open-api

* feat(server): redirect to preview/original URL when fullsize thumbnail not available

* fix(server): delete fullsize preview image on thumbnail regen after fullsize preview turned off

* refactor(server): AssetRepository.deleteFiles with Kysely

* fix(server): type of MediaRepository.writeExif

* minor simplification

* minor styling changes and condensed wording

* simplify

* chore: reuild open-api

* test(server): fix media.service tests

* test(web): fix photo-viewer test

* fix(server):  use fullsize image when requested

* fix file path extension

* formatting

* use fullsize when zooming back out or when "display original photos" is enabled

* simplify condition

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-03-31 13:24:28 +07:00
Mert 6789c2ac19
feat(ml): better multilingual search with nllb models (#13567) 2025-03-31 11:06:57 +07:00
PathToLife 838a8dd9a6
feat(web): increase album collapse click area (#17213) 2025-03-31 09:45:30 +07:00
Ben McCann b25914c2a5
chore: use writable derived in more places (#17248)
chore(web): use writable derived in more places
2025-03-31 09:15:52 +07:00
Daniel Dietzler 74f7fd4b53
chore: add language requests from weblate (#17236) 2025-03-31 10:48:41 +07:00
Ben McCann 9f0dbfc150
chore(web): update to newer persisted store package name (#17094) 2025-03-28 20:40:57 +07:00
Ben McCann 3fde5a8328
feat: map globe view, style hot reloading and load lag fixed (#17079)
* chore: upgrade svelte-maplibre and enforce runes

* feat: maplibre-gl 5, globe view, style hot reloading, fast map markers

* fix: remove location-pin class that wasn't being used

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-03-28 14:08:54 +07:00
Ben McCann 431cf281da
chore(web): update typescript-eslint (#17093) 2025-03-28 00:04:31 +07:00
Alex 8f786fd7dd
fix(web): form reactivity (#17183) 2025-03-27 19:58:49 +07:00
Alex 3e73765375
fix(web): don't show newly uploaded asset in inapplicable views (#17184) 2025-03-27 19:45:50 +07:00
renovate[bot] e163808348
fix(deps): update typescript-projects (#17080)
* fix(deps): update typescript-projects

* fix: otel

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-03-27 22:33:58 +07:00
Ben McCann 411772123f
chore(web): remove unused props (#17141) 2025-03-27 23:12:14 +07:00
github-actions 43f8f473e9 chore: version v1.130.3 2025-03-27 15:54:30 +07:00
Alex 6341962de4
fix(web): better touch device detection (#17144)
* fix(web): better touch device detection

* variable name
2025-03-27 10:43:56 +07:00
Min Idzelis c26b28f6a4
fix: bug with svelte gestures (#17154)
* fix: bug with svelte gestures

* lint
2025-03-27 08:51:52 +07:00
Jason Rasmussen fd4a5f71b5
fix: broken album page (#17149) 2025-03-26 18:59:23 +07:00
github-actions 2f8725c66f chore: version v1.130.2 2025-03-26 15:34:54 +07:00
Snowknight26 c547d849d9
fix(web): prevent comb box dropdowns from staying open when clicking on labels (#17119)
fix(web): prevent combobox dropdowns from staying open when clicking on label
2025-03-26 08:58:00 +07:00
Alex dfb0626c91
fix(web): default search to context (#17118)
* fix(web): default search to context

* one liner

* Refactor
2025-03-25 17:57:12 +07:00
Alex 392ce7deb2
fix(web): albums display order again (#17117) 2025-03-25 22:14:00 +07:00
github-actions 4cf7c55680 chore: version v1.130.1 2025-03-25 20:25:01 +07:00
Alex 37eb70c1eb
fix(web): albums display order (#17106)
* fix(web): albums display order

* ergonomic

* perf ergonomic

* miss 1
2025-03-25 20:21:38 +07:00
Alex ae447542a4
fix(web): asset navigation (#17104) 2025-03-25 15:00:30 +07:00
renovate[bot] 567a92fe77
chore(deps): update dependency vite to v6.2.3 [security] (#17092)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-25 18:07:25 +07:00
github-actions 42b1efb679 chore: version v1.130.0 2025-03-25 13:48:45 +07:00
Snowknight26 b8bc11b0d9
fix(web): fix escape key not closing video player after seeking (#16860)
Co-authored-by: Yaros <thedj.launchpadder.dmx512@gmail.com>
2025-03-25 13:42:23 +07:00
Ben McCann 91065db3ff
chore: migrate previously missed file to Svelte 5 (#17074) 2025-03-24 19:44:05 +07:00
Yaros 9757f70064
fix(web): not autoplay after moving playhead on paused video (#17038)
fix(web): prevent autoplay after moving playhead
2025-03-24 16:55:46 +07:00
Min Idzelis 4a0045db44
feat(web): support long-press selection on mobile web (#16906)
* feat(web): max grid row height responsive

* also gallery-viewer

* lint

* feat(web): support long-press selection on mobile web

* use svelte-gestures

* fix test

* Bug fix

* globalThis

* format

* revert generator

* Testing

* bad merge

* Fix typo/tap on thumbnail

* feat: shrink header on small screens (#16909)

* feat(web): shrink header on small screens

* fix test

* test

* Fix test

* Revert user-page-layout chagne

* Restore icons sizes, make consistent, improve logo responsiveness

* remove 4 more pix, lint

* lint

* chore

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>

* Revert "Testing"

This reverts commit 442f11c9e1.

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-24 16:36:36 +07:00
Min Idzelis 55b52ecbec
feat: mobile-web improvements - scrubber (#16856)
* feat: mobile-web improvements - scrubber

* lint

* cruft

* lint

* fix: thumb style

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-21 18:00:24 +07:00
Alex b5d5c40c69
fix(web): update stack state in timeline (#17021)
* fix(web): update stack state in timeline

* js docs

* fix: handle state update from unstack action from gallery viewer

* use navigate in View Stack notification

---------

Co-authored-by: Snowknight26 <Snowknight26@users.noreply.github.com>
2025-03-21 12:42:36 +07:00
Snowknight26 b00da18e84
fix(web): timeline renders nothing with an invalid asset scroll target (#16994)
* fix(web): fix asset grid showing nothing with an invalid asset target

* Deduplicate

* Scroll to position where appropriate

* a bit cleaner

* fix: lint

---------

Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-03-21 08:40:57 +07:00
Ben 3c87341902
fix(web): clicking away closes context menu (#16989)
* fix(web): clicking away closes context menu

* fix: use pointerdown event instead

* Revert "fix: use pointerdown event instead"

This reverts commit 0d2cf47194.
2025-03-21 08:39:41 +07:00
Alex bcd9248b43
fix(web): timeline regression 2 (#16982)
* fix(web): timeline renders nothing after archiving in asset viewer

* fix(web): timeline renders nothing after archiving in asset viewer

* fix: ensure geometry updated when performing bulk action on all

* fix: album assets selection
2025-03-20 22:30:27 +07:00
Alex dbc279f843
fix: gallery viewer sliding window offload assets (#17016)
* fix: gallery viewer sliding window offload assets

* fix: update bottom sliding window

* do not use negative

* Calculate offset before gallery

---------

Co-authored-by: Min Idzelis <min123@gmail.com>
2025-03-20 22:30:01 +07:00
Snowknight26 1820c0aa0d
fix(web): fix View in Timeline not working for stacked assets (#16993)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-03-20 13:17:14 +07:00
Yaros 0d805a1f5b
fix(web): removed merge person with itself (#16987)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-03-20 15:25:42 +07:00
Min Idzelis 7075c5b393
feat(web): make asset grid row height responsive (#16970)
* feat(web): max grid row height responsive

* also gallery-viewer

* lint
2025-03-19 10:57:44 +07:00
Min Idzelis 9398b0d4b3
fix: regression in select-all (#16969)
* bug: select-all

* set->[] in interaction store, clear select-all on cancel

* feedback

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-19 15:55:50 +07:00
Dmitry Vakhnenko ce456709b5
fix(web): reset selection state when adding assets to a album (#16880)
* fix(web): cancel multiselect before adding assets to album

* chore: format with prettier

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-03-19 00:11:58 +07:00
Yaros 62ba8c3e71
fix(web): date alignment on timeline (#16961) 2025-03-18 21:55:36 +07:00
renovate[bot] db8155f738
fix(deps): update typescript-projects (#16945)
* fix(deps): update typescript-projects

* fix: very weird variables

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-03-18 20:29:21 +07:00
Andreas fe19f9ba84
fix(web): asset selection on memories page is broken (#16759)
* 16712: Proper intialisation of the memory store to avoid loading up duplicate object refs of the same asset.

* 16712: Add auth to memory mapping so isFavorite is actually return correctly from the server.

* 16712: Move logic that belongs in the store into the store.

* 16712: Cleanup.

* 16712: Fix init behaviour.

* 16712: Add comment.

* 16712: Make method private.

* 16712: Fix import.

* 16712: Fix format.

* 16712: Cleaner if/else and fix typo.

* fix: icon size mismatch

* 16712: Fixed up state machine managing memory playback:
* Updated to `Tween` (`tweened` was deprecated)
* Removed `resetPromise`. Setting progressController to 0 had the same effect, so not really sure why it was there?
* Removed the many duplicate places the `handleAction` method was called. Now we just called it on `afterNavigate` as well as when `galleryInView` or `$isViewing` state changes.

* 16712: Add aria tag.

* 16712: Fix memory player duplicate invocation bugs. Now we should only call 'reset' and 'play' once, after navigate/page load. This should hopefully fix all the various bugs around playback.

* 16712: Cleanup

* 16712: Cleanup

* 16712: Cleanup

* 16712: Cleanup

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-18 11:34:09 +07:00
Min Idzelis e96ffd43e7
feat: timeline performance (#16446)
* Squash - feature complete

* remove need to init assetstore

* More optimizations. No need to init. Fix tests

* lint

* add missing selector for e2e

* e2e selectors again

* Update: fully reactive store, some transitions, bugfixes

* merge fallout

* Test fallout

* safari quirk

* security

* lint

* lint

* Bug fixes

* lint/format

* accidental commit

* lock

* null check, more throttle

* revert long duration

* Fix intersection bounds

* Fix bugs in intersection calculation

* lint, tweak scrubber ui a tiny bit

* bugfix - deselecting asset doesnt work

* fix not loading bucket, scroll off-by-1 error, jsdoc, naming
2025-03-18 09:14:46 +07:00
Jason Rasmussen 9a4495eb5b
refactor: use more immich ui buttons (#16840) 2025-03-14 09:38:06 +07:00
Jason Rasmussen 8ad95b368b
feat: use immich ui components for dialog component (#16839) 2025-03-14 09:37:56 +07:00
Jason Rasmussen a65ce2ac55
refactor: immich logo assets (#16850) 2025-03-13 18:05:08 +07:00
Jason Rasmussen f69d7e7bad
chore: web cleanup (#16849) 2025-03-13 18:04:21 +07:00
renovate[bot] a1a61f19eb
chore(deps): update typescript-projects (#16795)
* chore(deps): update typescript-projects

* fix: aria

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-03-12 23:20:26 +07:00
Jason Rasmussen 996ffed5eb
fix: immich ui toggles and switches (#16834)
* fix: immich ui toggles and switches

* Update web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-03-12 16:25:27 +07:00
Jason Rasmussen 2d7a94ce23
feat: better library rename UX (#16837) 2025-03-12 16:00:16 +07:00
Jason Rasmussen 72a7be26c0
refactor: use immich/ui button component in user settings (#16836) 2025-03-12 15:56:55 +07:00
Yaros 52d90a8280
fix(web): fixed formatting of video length (#16829)
* fix(web): fixed formatting of video time

* shortened the condition
2025-03-12 09:18:43 +07:00
Snowknight26 a75718ce99
fix(web): update search results when searching from info panel (#16729)
* fix(web): update search results when searching from info panel

* Prevent double search when using search bar

* Format/lint

* Fix infinite loading on intersect

* Remove redundant function
2025-03-11 17:23:25 +07:00
Andreas b8acae2f21
feat(web): Add keyboard shortcut selection on grid (#16713)
* 15712: Added keyboard shortcuts for opening add to album modal and highlighting/selecting an album to add to.

* 15712: Re-factored logic from template code into script. Extracted new album button into separate cmponent.

* 15712: Document new keyboard shortucts now that they work everywhere.

* 15712: Extract some constants/helper functions.

* 15712: Missing comma.

* 15712: Pulled logic out into separate unit testable class.

* 15712: Added a unit test.

* 15712: Move the modal back up to keep the github PR happy.

* 15712: PR feedback - renamed typescript files and switch to class bind directive.

* 15712:Move selection modal into correct package.

* 15712: Better naming of module and files.

* 15712: Add asset highlight using arrow keys.

* 15172: Add escape behaviour everywhere.

* 15712: Don't allow highlighting past start or end.

* 15712: Clear the highlight on changes to the component state.

* 15712: Use focus to track highlighted element.

* 15712: Rename highlight -> focussed.

* 15712: Better naming.

* 15712: Cleanup.

* 15712: Cleanup & simplify.

* 15712: bugfix for clicking on button.

* 15712: Cleanup.

* 15712: Rollback unnecessary changes.

* 15712: Add unit test.

* 15712: Add thumbnail unit test.

* 15712: Prettier.

* 15712: Fix merge issue.

* 15712: Add shortcut info.

* 15712: Fix linter.
2025-03-11 10:18:14 +07:00
Alex c80afea468
feat(web): better person naming interface (#16631)
* feat(web): better person naming interface

* feat(web): better person naming interface

* feat(web): better person naming interface

* feat(web): better person naming interface

* feat(web): better person naming interface

* feat(web): better person naming interface

* feat(web): better person naming interface
2025-03-11 10:08:52 +07:00
Lorenzo Montanari d7e0f0e70e
feat(web): exposed a job to manually trigger database backup procedures (#16622)
* feat(web): exposed a new job to create a manual database backup

* chore(server): added a new test case

* chore(server): moved job to backup db into the create job popup

* remove irrelevant change

* openapi

* chore: formatting

* docs: trigger backup documentation

---------

Co-authored-by: Lorenzo Montanari <13736036+l0ll098@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Zack Pollard <zack@futo.org>
2025-03-11 11:30:43 +07:00
Snowknight26 decc878267
feat(web): show full date when hovering over photos date groups (#16561)
* fix(web): Update asset grid date group titles to show full date

* Fix formatting
2025-03-11 11:18:29 +07:00
Nicholas Flamy 5d86e6d2d3
fix(web): update old discord logo to new one (#16789)
* fix: update discord svg path and add viewbox

* fix formatting
2025-03-10 22:46:32 +07:00
Yaros f794c3e0df
feat(web): show birthdate on person page (#16772)
* feat(web): show birthdate on person page

* shorten null check

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* directly use birthDate

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-03-10 14:47:44 +07:00
Adam O'neill 70a08707d2
feat(web): remember search context (#16614)
* Retain search context in LocalStorage.

* Remove debug logging

* Prettier

* Added QueryType and VALID_QUERY_TYPES to $lib/constants

* Prettier

* Renamed VALID_QUERY_TYPES to fit the codestyle.

Ran prettier

* show current search type on search bar

* fix: linting

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-09 22:20:25 +07:00
Lukas 097749d872
fix(web): add labels to memory lane buttons (#16664)
* fix(web): add labels to memory lane buttons

* use generic button labels
2025-03-09 21:31:55 +07:00
Corentin Hatte 2aac679185
fix(web): Update people-card favorite position (#16746)
Update people-card favorite position

Move heart icon a bit more inward to mak it more visible
2025-03-10 01:32:32 +07:00
renovate[bot] 086d8a448a
fix(deps): update typescript-projects (#16597)
* fix(deps): update typescript-projects

* chore: update server lock file

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-03-07 21:20:45 +07:00
Lukas fdf2331c82
fix(web): hide scroll right button when scrolled to the right in memory lane (#16656)
fix(web): hide scroll right button when scrolled to the right
2025-03-06 20:50:56 +07:00
Lukas e03d7f888e
fix(web): remove margin on last memory item (#16665) 2025-03-07 02:50:16 +07:00
Yaros d01b7a0d67
feat(web): aspect ratio of memory cards (#16652)
Fix aspect ratio of memory cards
2025-03-06 15:24:01 +07:00
Lukas 2875303b4c
feat(web): allow horizontal scrolling in memory lane (#16647) 2025-03-06 08:37:11 +07:00
Savely Krasovsky 69b5365965
feat: enable PMTiles protocol support (#16629)
This patch enables PMTiles protocol for MapLibre-GL. Protocol allows to fetch tiles from a single file.  This drastically simplifies the process to self-host own tiles.
2025-03-06 10:50:14 +07:00
github-actions 31dd15ce8a chore: version v1.129.0 2025-03-05 19:47:50 +07:00
Alex 6108587c8b
fix(web): show tags timeline (#16617)
* fix(web): show tags timeline

* fix(web): show tags timeline
2025-03-05 13:36:56 +07:00
Min Idzelis 56b85f7479
fix(web): fix lost scrollpos on deep link to timeline asset, scrub stop (#16305)
* Work in progress - super quick asset store->state

* bugfix: deep linking to timeline, on scrub stop

* format, remove stale

* disable test, todo: fix test

* remove unused import

* Fix merge

* lint

* lint

* lint

* Default to non-wasm layout

* lint

* intobs fix

* fix rejected promise

* Review comments, static import wasm

* Back to dynamic

* try top-level-await

* back to the first solution, with more finesse

* comment out wasm for now

* back out the wasm/thumbhash/thumbnail changes

* lint

* Fully remove wasm

* lockfile

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-03-04 20:34:53 +07:00
Jonathan Jogenfors 4ada28ac99
fix(server): check updateLibraryIndex for zero (#16585)
* fix(server): check updateLibraryIndex for zero

* Update web/src/routes/admin/library-management/+page.svelte

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-03-04 20:00:10 +07:00
Snowknight26 867eec86f5
fix(web): Update menu titles to be more consistent (#16558) 2025-03-04 12:55:54 +07:00
Jonathan Jogenfors 49d393216a
fix(server): fix import path truthiness check (#16570) 2025-03-04 12:54:12 +07:00
renovate[bot] 75c9f63757
chore(deps): update typescript-projects (#16573)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-04 12:53:28 +07:00
renovate[bot] 0dcfc43461
chore(deps): update node (#16538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 14:31:34 +07:00
Zack Pollard ff19502035
feat: qr code for new shared link (#16543) 2025-03-03 13:40:41 +07:00
Alessandro Baroni f89e74181b
fix(web): delete action closes asset viewer in asset view (#15469)
fixes #14647
2025-03-03 18:24:37 +07:00
Yaros 7bbc1d9f68
feat(web): Video memories on web (#16500)
* Video memories on web

* switched mixed up strings
2025-03-03 09:54:26 +07:00
renovate[bot] 8b24c31d20
fix(deps): update typescript-projects (#16540)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 09:38:24 +07:00
renovate[bot] 3d6a6f77a8
chore(deps): update dependency eslint-plugin-svelte to v3 (#16532)
* chore(deps): update dependency eslint-plugin-svelte to v3

* chore: linting

* chore: rebase

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-03-03 14:24:26 +07:00
renovate[bot] eb74fafb00
chore(deps): update dependency globals to v16 (#16534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 14:11:44 +07:00
renovate[bot] a99bd94717
fix(deps): update dependency ua-parser-js to v2 (#14301)
* fix(deps): update dependency ua-parser-js to v2

* fix: breaking changes from ua-parsed-js major update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-03-03 12:01:40 +07:00
Jonathan Jogenfors 869839f642
feat(server): library cleanup from ui (#16226)
* feat(server,web): scan all libraries from frontend

* feat(server,web): scan all libraries from frontend

* Add button text
2025-03-02 21:29:02 +07:00