* Create shared link modal for individual asset
* Added API to create asset shared link
* Added viewer for individual shared link
* Added multiselection app bar
* Refactor gallery viewer to its own component
* Refactor
* Refactor
* Add and remove asset from shared link
* Fixed test
* Fixed notification card doesn't wrap
* Add check asset access when created asset shared link
* pr feedback
* chore(web,server): run code coverage reports
* chore(tests): fail test check if coverage drops
* chore: disable e2e until they are fixed
* chore(web): coverage threshold
* refactor: user repository
* refactor: user module
* refactor: move database into infra
* refactor(cli): use user core
* chore: import path
* chore: tests
* feat(server): support providers without support for custom schemas
* chore: unit tests
* chore: test mobile override
* chore: add details to the docs
- Refactor user business logic from `user.service` into `user.domain`
Make user business logic reusable by using `user.domain` from other services than `user.service`
- Add `jest-when` lib to make testing easier and use it in `userService`
Using when helps from coupling tests to order of mock implementations execution
- Move all user business logic from user-repository to user.service
- Fix user.service tests not awaiting promises leaking state between tests
- Presentation logic for `getUserProfileImage` moved from UserService to UserController
- Fix `user.e2e` test logic. Pending fixing the configuration of the test itself
* refactor(server): device info service
* use upsertDeviceInfo in mobile app
* fix: return types and dedupe code
Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
* Add generated openapi docs to website
* Uppercase API link in navbar
* fix(docs): open api empty summary (#1069)
* feat(docs): Use /docs/api path for swagger docs
* Sync api version to be the same as the server
* Update version
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Limit asset access to owner
* Check public albums for asset
* Clean up
* Fix test
* Rename repository method
* Simplify control flow
* Revert "Simplify control flow"
This reverts commit 7bc3cbf687.
* Revert Makefile change
* feat(mobile): use cached asset info if unchanged instead of downloading all assets
This adds an HTTP ETag to the getAllAssets endpoint and client-side support in the app.
If locally cache content is identical to the content on the server, the potentially large list of all assets does not need to be downloaded.
* use ts import instead of require
* Added return type for oauth/callback
* Remove console.log
* Redirect app
* Wording
* Added loading state change
* Added OAuth login on mobile
* Return correct status for correct redirection
* Auto discovery OAuth Login
* feat: add admin config module for user configured config, uses it for ffmpeg
* feat: add api endpoint to retrieve admin config settings and values
* feat: add settings panel to admin page on web (wip)
* feat: add api endpoint to update the admin config
* chore: re-generate openapi spec after rebase
* refactor: move from admin config to system config naming
* chore: move away from UseGuards to new @Authenticated decorator
* style: dark mode styling for lists and fix conflicting colors
* wip: 2 column design, no edit button
* refactor: system config
* chore: generate open api
* chore: rm broken test
* chore: cleanup types
* refactor: config module names
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Zack Pollard <zack.pollard@moonpig.com>
* Add proxy changes
* Add web changes
* Add microservices changes
* Add examples
* Add header comment to nginx config
* Use URLs instead of host and port
* delete and restore user from admin UI
* addressed review comments and fix e2e test
* added cron job to delete user, and some formatting changes
* addressed review comments
* adding missing queue registration
* Add new query parameter to API endpoint that allows adding assets to albums which potentially contain assets that are already part of this album.
* Change API endpoint
* Generate new APIs
* Fixed test
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(docker) revert ubuntu base image
This PR reverts the base image for immich-server back to alpine
Adds LICENSE to all Images
Quiets apt-get commands when building
ensures write-permission for root group on app folders
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
* Test build old Docker content
* Revert and retry
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
this changes the base-image for immich-server from
`node:16-alpine3.14`
to
`node:16-slim`
There is an open issue with alpine DNS resolving which
breaks immich-microservice when deployed on
kubernetes.
This fixes https://github.com/immich-app/immich-charts/issues/4
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
* add docker volumes to services
this change adds the volume definitions for
/usr/src/app/upload
/usr/src/app/.reverse-geocoding-dump
to the `immich-server` docker-compose files
as /usr/src/app/upload should always be a volume for the containers
I also added it to the `Dockerfile`
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
* remove geocoding-dump volume from docker-compose
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
Implemented a mechanism to extract the correct time zone from the GPS coordinate if presented in the file's EXIF, and to convert the timestamp to the correct UTC time so that the time will show correctly based on the mobile/web local time zone.
* Get asset and album count
* Generate APIs
* Added asset count for each type
* Added api on the web
* Added info button for asset and album count to trigger getting info on hover
* Remove websocket event from photo page
* Add route to query albums for a specific asset
* Update API and add to detail-panel
* Fix tests
* Refactor API endpoint
* Added alt attribute to img tag
Co-authored-by: Alex <alex.tran1502@gmail.com>
* build endpoint to get asset count by month
* Added asset repository
* Added create asset
* get asset by device ID
* Added test for existing methods
* Refactor additional endpoint
* Refactor database api to get curated locations and curated objects
* Refactor get search properties
* Fixed cookies parsing for websocket
* Added API to get asset count by time group
* Remove unused code
* feat(server): preserve caption fields and extract mediainfo for video
* Fixed Geocoding missing info leads to fail EXIF extraction for the whole file
Co-authored-by: Alex <alex.tran1502@gmail.com>
* styling light and dark theme
* Icon topbar
* Fixed app bar title dark theme
* Fixed issue with getting thumbnail for things
* Refactor sharing page
* Refactor scroll thumb
* Refactor chip in auto backup indiation button
* Refactor sharing page
* Added theme toggle
* Up version for testflight build
* Refactor backup controller page
* Refactor album selection page
* refactor album pages
* Refactor gradient color profile header
* Added theme switcher
* Register app theme correctly
* Added locale to the app
* Added translation key
* Styling for bottomsheet colors
* up server version
* Fixed font size
* Fixed overlapsed sliverappbar on photos screen
* Change API to return assets count and change web behavior accordingly
* Refactor assets.length
* Explicitly declare type of assetCount so Dart SDK understand it
* Finished refactoring on mobile
* Move backend api to its own instance
* Remove external fetch hook
* Added endpoint for album
* Added endpoint for admin page
* Make request directly to immich-server
* Refactor unsued code
* Added context menu for album opionts
* choose asset for album thumbnail
* Refactor UpdateAlbumDto to accept albumThumbnailAssetId
* implemented changing album cover on web
* Fixed api change on mobile app
* Added stores to get album assetId
* Upload assets and add to album
* Added comments
* resolve conflict when add assets from upload directly
* Filtered out duplicate asset before adding to the album
* Use cookie for frontend request
* Remove api helper to use SDK
* Added error handling to status box
* Remove additional places that check for session.user
* Refactor sending password
* prettier clean up
* remove deadcode
* Move all authentication requests to the client
* refactor upload panel to only fetch assets after the upload panel disappear
* Added keydown to remove focus on title change on album viewer
* Added interaction to select multiple thumbnail
* Fixed stutter transition
* Return AlbumResponseDto after removing an asset from album
* Render correctly when an array of thumbnail is updated
* Fixed wording
* Added native dialog for removing users from album
* Fixed rendering incorrect profile image on share user select dialog
* Added album creation button functionality
* Added input for album title
* Added select photos button
* Added page to select assets
* Show photo selection timeline
* Implemented update album name mechanism:
* Added selection mechanism
* Added selection mechanism with existing assets in album
* Refactored and added comments
* Refactored and added comments - 2
* Refactor album app bar
* Added modal for select user
* Implemented choose users
* Added additional share user button
* Added rule to show add users button
* Rename asset viewer folder
* Refactor AssetViewer to be able to user with different component
* Refactor AssetViewer to be able to user with different component
* Added viewer for album and sharing
* Added album page
* Refactor sidebar
* Added album assets count info
* Added album viewer page
* Refactor album sorting
* Fixed incorrectly showing selected asset in album selection
* Improve fetching speed with prefetch
* Refactor to use ImmichThubmnail component for all
* Update to the latest version of Svelte
* Implement fixed app bar in album viewer
* Added shared user avatar
* Correctly get all owned albums, including shared
* Added swagger bearer auth method authentication accordingly
* Update Auth endpoint
* Added additional api information for authentication
* Added Swagger CLI pluggin
* Added DTO for /user endpoint
* Added /device-info reponse DTOs
* Implement server version
* Added DTOs for /server-info
* Added DTOs for /assets
* Added album to Swagger group
* Added generated specs file
* Add Client API generator for web
* Remove incorrectly placed node_modules
* Created class to handle access token
* Remove password and hash when getting all user
* PR feedback
* Fixed video from CLI doesn't get metadata extracted
* Fixed issue with TSConfig to work with generated openAPI
* PR feedback
* Remove console.log
* fix: remove config parameter from typeorm cli and update config
the config parameter is no longer supported since version 0.3
the config now needs to export a DataSource object to work with the 0.3 cli
* fix: update all typeorm entities and migrations to be aligned with database structure
* Fixed test-util import databaseConfig
* Fixed column mismatch in raw query with new migration
* Remove dist build directory when starting dev server
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Remove thumbnail generation on mobile
* Remove tconditions for missing thumbnail on the backend
* Remove console.log
* Refactor queue systems
* Convert queue and processor name to constant
* Added corresponding interface to job queue
* Fixed issue with generating thumbnail for video with 0 length cause undefined file and crash the server
* Added all file error handling operation
* Temporarily disabled WebSocket on the web because receiving a new upload event doesn't put the new file in the correct place.
* Cosmetic fixed on the info panel
* infra: switch port to 3003 for machine learning container
fixes#289
* Changed port of machine-learning-endpoint to match with new port
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Deprecate login scenarios that support pre-web era
* refactor and simplify setup
* Added user info to change password form
* change isFistLogin column to shouldChangePassword
* Implemented change user password
* Implement the change password page for mobile
* Change label
* Added changes log and up minor version
* Fixed typo in the release note
* Up server version