* Person birth date (data layer)
* Person birth date (data layer)
* Person birth date (service layer)
* Person birth date (service layer, API)
* Person birth date (service layer, API)
* Person birth date (UI) (wip)
* Person birth date (UI) (wip)
* Person birth date (UI) (wip)
* Person birth date (UI) (wip)
* UI: Use "date of birth" everywhere
* UI: better modal dialog
Similar to the API key modal.
* UI: set date of birth from people page
* Use typed events for modal dispatcher
* Date of birth tests (wip)
* Regenerate API
* Code formatting
* Fix Svelte typing
* Fix Svelte typing
* Fix person model [skip ci]
* Minor refactoring [skip ci]
* Typed event dispatcher [skip ci]
* Refactor typed event dispatcher [skip ci]
* Fix unchanged birthdate check [skip ci]
* Remove unnecessary custom transformer [skip ci]
* PersonUpdate: call search index update job only when needed
* Regenerate API
* Code formatting
* Fix tests
* Fix DTO
* Regenerate API
* chore: verbiage and view mode
* feat: show current age
* test: person e2e
* fix: show name for birth date selection
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* refactor: add/remove album assets
* chore: open api
* feat: remove owned assets from album
* refactor: move to bulk id req/res dto
* chore: open api
* chore: merge main
* dev: mobile work
* fix: adding asset from web not sync with mobile
* remove print statement
---------
Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
* add profile-image-cropper component
* add dom-to-image library
* add store to update user profile picture when set
* dom-to-image
* remove console.logs, add svelte binding
* fix format, unused vars
* change caching of profile image
* set hash after profile image change
* remove unnecessary store
* remove unecesarry changes
* set types/dom-to-image as devDependency
* remove unecessary type declarations
use handleError
* remove error notification
which is already handled by handleError
* Revert "set types/dom-to-image as devDependency"
This reverts commit ca8b3ed1bb.
* add types do dev dependencies
* use on:close instead of on:close={()=>...}
* add newline
* sort imports
* bind photo-viewer imgElement directly, not working
* remove console.log, fix binding
* make imgElement optional
* fix element as optional prop
* fix type
* check for transparency
* small changes
* fix img.decode
* add bg, remove publicsharedkey
* fix omit publicSharedKey
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* trying to update to svelte 4
* update dependencies
* remove global transition
* suppress wrning
* chore: install from github
* revert material icon change
* Supress a11y warning
* update
* remove coverage test on web
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* chore(web): replace window.confirm by ConfirmDialogues and cleanup existing ones
* fix(web): linter and svelte-check issues
* fix(web): rephrase some confirm dialogs
* fix(web): run prettier
* fix(web): merge with last version and run prettier again
* fix(web): run prettier
* add thumbhash: server generation and web impl
* move logic to infra & use byta in db
* remove unnecesary logs
* update generated API and simplify thumbhash gen
* fix check errors
* removed unnecessary library and css tag
* style edits
* syntax mistake
* update server test, change thumbhash job name
* fix tests
* Update server/src/domain/asset/response-dto/asset-response.dto.ts
Co-authored-by: Thomas <9749173+uhthomas@users.noreply.github.com>
* add unit test, change migration date
* change to official thumbhash impl
* update call method to not use eval
* "generate missing" looks for thumbhash
* improve queue & improve syntax
* update syntax again
* update tests
* fix thumbhash generation
* consolidate queueing to avoid duplication
* cover all types of incorrect thumbnail cases
* split out jest tasks
* put back thumbnail duration loading for images without thumbhash
* Remove stray package.json
---------
Co-authored-by: Luke McCarthy <mail@lukehmcc.com>
Co-authored-by: Thomas <9749173+uhthomas@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Implement justified layout for timeline
* Add withoutThumbs field to GetTimelineLayotDto
* Back to rough estimation of initial buckets height
* Remove getTimelineLayout endpoint
* Estimate rough viewport height better
* Fix shift/jump issues while scrolling up
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat: return asset checksum
* chore: generate open api
* chore: coverage
* feat(server): support base64 hashes in bulk upload check:
* chore: generate open api
* First crude implementation of the global asset map in web
* Use single DOM element for all markers
* Minor layout changes
* Refactor
* Add asset viewer
* Add API endpoint that returns only assets with location information (Thanks @EPP100)
* Remove sidebar icon flip
* Add dark theme support
* Center map to most recent asset
* Allow cluster viewing
* Fix linter errors
* Add newlines
* Fix ts errors
* Fix eslint error
* Run prettier
* Server code style
* Fix openapi mobile code generation issues
* Map markers test
* fix: Support video thumbnails
* Update API
* Review suggestions
* Review suggestions
* Linter error
* Chage mapMarker endpoint to map-marker
* Clean up leaflet imports
* fix overlapping of asset-viewer-nav-bar
with details tab
* fix contextmenu not closing on button press
---------
Co-authored-by: faupau03 <paul.paffe@gmx.net>
* Added dto, logic to insert description and web implementation
* create text field and update on remote database
* Update description and save changes
* styling
* fix web test
* fix server test
* preserve description on metadata extraction job run
* handle exif info is null situation
* pr feedback
* format openapi spec
* update createAssetDto
* refactor logic to service
* move files
* only owner can update description
* Render description correctly in shared album
* Render description correctly in shared link
* disable description edit for not owner of asset on mobile
* localization and clean up
* fix test
* Uses providers for description text (#2244)
* uses providers for description text
* comments
* fixes initial data setting
* fixes notifier
---------
Co-authored-by: martyfuhry <martyfuhry@gmail.com>
* Duplicate photos page and rename to favorites
* Implement basic functionality to page
* Sort imports
* Add missing sharing code
* Remove unused import
* Fix formatting
* Use GalleryViewer and new api endpoint
* Merge useFavorites into page
* Run prettier
* Move favorites in side-bar
* Remove favorites when unfavorited
* Fix close shared link model
* Add favorite count to side-bar
* Add add to favorites option
* Fix formatting
* Add favorite icon to image thumbnails
* Change var to let
* Added migration files
* Added logic for shared album level
* Added permission for EXIF
* Update shared link response dto
* Added condition to show download button
* Create and edit link with new parameter:
* Remove deadcode
* PR feedback
* More refactor
* Move logic of allow original file to service
* Simplify
* Wording
* 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
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.
* 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>
* fix(web): buffering for video player
* chore(): missing file -_-
* refactor(web): using URL builder
* chore(): add semicolon
* fix(web): video player
* remove deadcode
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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
* AFixed overlay issue of modal
* Added modal with existing user
* Added custom scrollbar to all pages
* Fixed Document is not define when access document DOM node in browswer
* Added context menu
* Added api to remove user from album
* Handle user leave album
* Added share button to non-shared album
* Added padding to album viewer:
* Fixed margin top of asset selection page
* Fixed issue cannot push to dockerhub
* 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 file selector
* Extract metadata to upload files to the web
* Added request for uploading
* Generate jpeg/Webp thumbnail for asset uploaded without thumbnail data
* Added generating thumbnail for video and WebSocket broadcast after thumbnail is generated
* Added video length extraction
* Added Uploading Panel
* Added upload progress store and styling the uploaded asset
* Added condition to only show upload panel when there is upload in progress
* Remove asset from the upload list after successfully uploading
* Added WebSocket to listen to upload event on the web
* Added mechanism to check for existing assets before uploading on the web
* Added test workflow
* Update readme
* refactor microservices to machine-learning
* Update tGithub issue template with correct task syntax
* Added microservices container
* Communicate between service based on queue system
* added dependency
* Fixed problem with having to import BullQueue into the individual service
* Added todo
* refactor server into monorepo with microservices
* refactor database and entity to library
* added simple migration
* Move migrations and database config to library
* Migration works in library
* Cosmetic change in logging message
* added user dto
* Fixed issue with testing not able to find the shared library
* Clean up library mapping path
* Added webp generator to microservices
* Update Github Action build latest
* Fixed issue NPM cannot install due to conflict witl Bull Queue
* format project with prettier
* Modified docker-compose file
* Add GH Action for Staging build:
* Fixed GH action job name
* Modified GH Action to only build & push latest when pushing to main
* Added Test 2e2 Github Action
* Added Test 2e2 Github Action
* Implemented microservice to extract exif
* Added cronjob to scan and generate webp thumbnail at midnight
* Refactor to ireduce hit time to database when running microservices
* Added error handling to asset services that handle read file from disk
* Added video transcoding queue to process one video at a time
* Fixed loading spinner on web while loading covering the info panel
* Add mechanism to show new release announcement to web and mobile app (#209)
* Added changelog page
* Fixed issues based on PR comments
* Fixed issue with video transcoding run on the server
* Change entry point content for backward combatibility when starting up server
* Added announcement box
* Added error handling to failed silently when the app version checking is not able to make the request to GITHUB
* Added new version announcement overlay
* Update message
* Added messages
* Added logic to check and show announcement
* Add method to handle saving new version
* Added button to dimiss the acknowledge message
* Up version for deployment to the app store
* Added job for video conversion every 1 minute
* Handle get video as mp4 on the web
* Auto play video on web on hovered
* Added video player
* Added animation and video duration to thumbnail player
* Fixed issue with video not playing on hover
* Added animation when loading thumbnail
* Fixed not displaying default user profile picture
* Added buttons to close viewer and micro-interaction for navigating assets left, right
* Add additional buttons to the control bar
* Display EXIF info
* Added map to detail info
* Handle user input keyboard
* Fixed incorrect file name when downloading multiple files
* Implemented download panel