Daniel Dietzler
8125af4859
chore: migrate web imports from .js to .ts ( #32742 )
...
(cherry picked from commit f97c2243fbe5f64a4e1bf96128b82a37cc481506)
2026-10-27 23:11:20 +03:00
Daniel Dietzler
e5b4dd1041
feat: sveltekit 3 ( #32737 )
...
(cherry picked from commit 2576ee28cfb790e99ddf401a129e1d9a18713121)
2026-10-27 23:11:06 +03:00
immich-push-o-matic[bot] and Jason Rasmussen
b20bc5ed82
feat: auto-sync name changes to connected users ( #31931 )
...
feat: auto-sync name changes to connected users (#31923 )
* feat: auto-sync name changes to connected users
* fix: rename to faceId
* fix: pr feedback
* fix: mobile build
(cherry picked from commit aec7c0d97bd6679b2b300e72e870b83c5ef13c85)
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-09-30 07:53:02 +00:00
c12d5e6d35
feat: people management ( #31620 )
...
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-09-28 21:29:15 +02:00
351be95769
feat: memories view ( #28675 )
...
* wip web memories view
* paginate searchMemories
* improve memories ui
* feat(mobile): memories view
* improve memories web ui
* fix(web): avoid unnecessary memory refreshes
* refactor(web): move timline memory manager filter
* fix(web): memories infinitely loading on 0 results
* fix(web): memories resetting
* feat(web): animated memory previews
* feat(web): memory page dark styling
* chore(mobile): fix failing memory lane tests
* chore(mobile): remove old import
* chore(e2e): fix failing memory lane tests
* chore(server): revert searchMemories changes
* chore(server): lint
* chore(mobile): fix bad merge
* chore(e2e): fix memory ui tests
* chore(web): rename /memory to /memories
* chore(mobile): linting
* chore(web): linting
* fix(web): prevent duplicate memory page loading
* fix(web): lint
* fix(web): memories page improvements
* chore(mobile): lint
* fix(mobile): fix translations
* fix(mobile): build errors
* fix(web): prevent memories from infinitely loading
* chore(e2e)): fix failng memory viewer test
* chore(web): clean up types in memory manager
* chore(web): lint
* feat: update list and detail memory page layouts
* onlyFavorites through drift
* rename to get all
* mobile: use widgetWhen in memory list page
* remove redundant check
* fix: e2e
---------
Co-authored-by: Timon <mail@timonrieger.de >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-24 19:16:33 -05:00
Jason Rasmussen and Daniel Dietzler
11b1aa5ecf
feat: cluster groups ( #30739 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-08-20 20:03:00 +02:00
Jason Rasmussen
b19c4a591e
chore(web): remove unused code ( #30768 )
2026-08-14 16:04:12 -04:00
renovate[bot] and Daniel Dietzler
df970da59e
chore(deps): update dependency eslint-plugin-unicorn to v70 - abandoned ( #29684 )
...
* chore(deps): update dependency eslint-plugin-unicorn to v70
* fix: linting
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-07-20 23:47:14 -04:00
Ben Beckford
237734bb26
feat(web): recently added link in sidebar ( #29039 )
...
* feat(web): recently added link in sidebar
* chore(mobile): update openapi patches
2026-07-01 23:12:50 +00:00
Daniel Dietzler
452e88267a
fix: strip metadata from timeline responses for shared links without exif sharing ( #28644 )
2026-05-27 17:29:37 +02:00
Ben Beckford and Alex
e142e3aca7
feat: recently added assets page ( #28272 )
...
* feat(server): add ordering date option to time buckets
* feat(web): add recently added page
* feat(server): recently created assets in explore data
* feat(web): recently added in explore tab
* fix: recently added assets ordering
* fix(server): failing bucket test
* feat(web): improve recently added preview
* chore: update e2e explore/timeline tests
* chore: rename and refactor timeline ordering dates
* fix(web): invalid timeline option
* feat(mobile): recently added page
* fix(server): sync tests
* fix(mobile): resync assets to get uploadedAt column
* chore: rename assetorderby enum
* chore(mobile): formatting
* minor fixes
* stylings
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-11 21:35:10 +00:00
Sky
ad0d01005e
fix(web): migrate people management component to page, enabling tooltips ( #26971 )
2026-05-06 13:25:59 +02:00
4bfb8b36c2
chore!: migrate album owner to album_user ( #27467 )
...
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-22 16:52:23 +02:00
Jason Rasmussen
a16d233a0c
chore(web): sort imports ( #27922 )
...
* feat: sort imports
* fix: something?
2026-04-21 14:51:38 -04:00
Mees Frensel
7d181f0686
fix!: set duration to null when not present ( #26982 )
2026-04-17 11:57:10 +02:00
Jason Rasmussen and Daniel Dietzler
a69eecf3bc
chore!: remove without assets ( #27835 )
...
* chore!: remove without assets
* fix: linting and e2e
---------
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-15 18:34:22 -04:00
Daniel Dietzler
8ee5d3039a
chore!: remove deviceId and deviceAssetId ( #27818 )
...
chore: remove deviceId and deviceAssetId
2026-04-15 15:00:33 -04:00
Jason Rasmussen
5f5e3344d5
chore!: remove unused token response param ( #27805 )
2026-04-15 00:58:00 -04:00
Michel Heusschen
45eff1c663
fix(web): prevent unrelated assets from appearing in tag view ( #26816 )
2026-03-10 17:43:30 +01:00
Daniel Dietzler
3c476b1987
chore: vitest 4 for web, cli, and e2e ( #26668 )
2026-03-04 14:19:13 +00:00
Daniel Dietzler and bwees
07675a2de4
feat: download original asset ( #25302 )
...
Co-authored-by: bwees <brandonwees@gmail.com >
2026-01-16 19:05:13 +00:00
Brandon Wees
e8c80d88a5
feat: image editing ( #24155 )
2026-01-09 17:59:52 -05:00
Mees Frensel
9cc88ed2a6
feat: make memories slideshow duration configurable ( #22783 )
2025-11-08 17:46:43 -05:00
Mert
3f03a88767
feat(web): wasm justified layout, sync edition ( #23194 )
...
* the invisible wasm
use npm version
* deterministic tests
* add todo
* linting
* bump library, add helpers
* use target height for unfilled rows
* update tests
2025-10-25 00:06:05 -05:00
renovate[bot] and Daniel Dietzler
ea610760ee
fix(deps): update typescript-projects ( #22809 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2025-10-10 00:50:48 +02:00
Wingy
5fb8d651ec
feat: expose createdAt in getAssetInfo ( #21184 )
...
* Expose createdAt in getAssetInfo
* Add missing createdAt fields
2025-08-25 10:27:21 -05:00
Jed-Giblin and Jason Rasmussen
9b3718120b
feat: shared links custom URL ( #19999 )
...
* feat: custom url for shared links
* feat: use a separate route and query param
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2025-07-28 14:16:55 -04:00
Zack Pollard
4c69511225
revert: "feat(web): wasm justified layout" ( #19226 )
2025-06-17 16:01:40 +00: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 -05:00
Dag Stuan and Alex
b46e066cc2
feat(web): add a user setting for default album sort order. ( #18950 )
...
* Add a user setting for default album sort order.
Add a user setting under "Features" to control the initial sort order
when creating an album. Default to the existing behavior of
"newest first".
* chore: patch openapi
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-06-05 23:31:34 -05:00
Min Idzelis
55f4e93456
fix: regression: sort day by fileCreatedAt again ( #18732 )
...
* fix: regression: sort day by fileCreatedAt again
* lint
* e2e test
* inline function
* e2e
* Address comments. Drop dayGroup and timezone in favor of localOffsetMinutes
* lint and some api-doc
* lint, more api-doc
* format
* Move minutes to fractional hours
* make sql
* merge/conflict
* merge fallout, review comments
* spelling
* drop offset from returned date
* move description into decorator where possible, regen api
2025-06-05 20:56:32 -05:00
Min Idzelis and Copilot Autofix powered by AI
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 +00: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 -05:00
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 -05:00
Alex
bdf19ce331
fix: TimelineAsset visibility ( #18395 )
...
* fix: TimelineAsset visibility
* fix enum values
2025-05-20 15:53:34 +00:00
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 -05:00
Min Idzelis and Alex
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 +00: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 +00:00
Jason Rasmussen
038a82c4f1
refactor: theme manager ( #17976 )
2025-04-29 17:44:09 -04:00
Jason Rasmussen
caa9b1a041
fix(web): asset grid with invalid asset id (at) ( #12772 )
...
fix(web): asset grid
2024-09-18 15:22:34 -04:00
martin and Jason Rasmussen
c468da589a
fix: update the profile picture in the navigation-bar ( #12723 )
...
* fix: update the profile picture in the navigation-bar
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2024-09-17 01:48:15 +00:00
Jason Rasmussen
7fbf50a75e
fix: remove asset.resized ( #11983 )
...
fix: remove resized
2024-08-22 23:24:49 -04:00
Jason Rasmussen and Alex
8338657eaa
refactor(server): stacks ( #11453 )
...
* refactor: stacks
* mobile: get it built
* chore: feedback
* fix: sync and duplicates
* mobile: remove old stack reference
* chore: add primary asset id
* revert change to asset entity
* mobile: refactor mobile api
* mobile: sync stack info after creating stack
* mobile: update timeline after deleting stack
* server: update asset updatedAt when stack is deleted
* mobile: simplify action
* mobile: rename to match dto property
* fix: web test
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2024-08-19 12:37:15 -05:00
Michel Heusschen
30aa2c9b82
fix(web): use fallback image if shared asset isn't resized ( #11704 )
...
* fix(web): use fallback image if shared asset isn't resized
* remove test-data index file
2024-08-11 15:43:07 -04:00
Michel Heusschen
e9683b326a
refactor(web): show & hide people ( #10933 )
2024-07-07 20:33:59 -05:00
Zack Pollard
3b37b70626
feat(server): user and server license endpoints ( #10682 )
...
* feat: user license endpoints
* feat: server license endpoints
* chore: pr feedback
* chore: add more test cases
* chore: add prod license public keys
* chore: open-api generation
2024-07-01 17:43:16 +00:00
Alex and Jason Rasmussen
e2a2c86a31
chore(server): optional originalMimeType in asset response payload ( #10272 )
...
* chore(server): optional originalMimeType in asset response payload
* lint
* Update web/src/lib/utils/asset-utils.ts
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com >
* fix permission of shared link
* test
* test
* test
* test server
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com >
2024-06-13 09:21:47 -05:00
Michel Heusschen
a54e01ef2f
fix: load original image for gifs ( #10252 )
2024-06-13 05:57:46 -05:00
Robert Schäfer
d8d64ecc45
fix: prevent trashing of trashed assets ( #10028 )
...
* fix: prevent trashing of trashed assets
Motivation
----------
This will improve user experience by hiding a pointless action.
You can not trash a trashed asset again. It won't get any trashier than it already is.
How to test
-----------
1. Visit route `/trash`
2. Click on an asset
3. Press "Delete" on your keyboard
4. Nothing happens
5. Try to find the trash button in the top right
6. You can't find it
* refactor: follow @michelheusschen's review
See:
https://github.com/immich-app/immich/pull/10028#pullrequestreview-2105296755
* refactor: follow @michelheusschen's 2nd review
See: https://github.com/immich-app/immich/pull/10028#discussion_r1632057833
2024-06-08 15:03:39 -05:00
Michel Heusschen
d5f3d98dfc
chore(web): use development lang for tests ( #10025 )
2024-06-07 16:12:39 +01:00