* Add i18n framework to mobile app and write simple translation generator
* Replace all texts in login_form with i18n keys
* Localization of sharing section
* Localization of asset viewer section
* Use JSON as base translation format
* Add check for missing/unused translation keys
* Add localizely
* Remove i18n directory in favour of localizely
* Backup Translation
* More translations
* Translate home page
* Translation of search page
* Translate new server version announcement
* Reformat code
* Fix typo in german translation
* Update englisch translations
* Change translation keys to match dart filenames
* Add /api to translated endpoint_urls
* Update localizely.yml
* Add languages to ios plist
* Remove unused keys
* Added script to check outdated key in other translations
* Add download key to localizely.yml
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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>
* feat: create immich-proxy container to remove default nginx config setup
* infra: make production docker-compose point at release builds for stability
* Fixed nginx config file was overriden by default.conf in nginx container; Fixed docker-compose.dev; Added additional tag 'release' for tagging after release build in Github Action
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
* Fixed app not resuming backup after closing and reopening the app
* Fixed cosmetic effect of backup button doesn't change state right away after pressing start backup
* Fixed grammar
* Fixed deep copy problem that cause incorrect asset count when backing up
* Format code
* Fix lint issues and some other TS issues
- set TypeScript in strict mode
- add npm commands to lint / check code
- fix all lint issues
- fix some TS issues
- rename User reponse DTO to make it consistent with the other ones
- override Express/User interface to use UserResponseDto interface
This is for when the accessing the `user` from a Express Request,
like in `asset-upload-config`
* Fix the rest of TS issues
- fix all the remaining TypeScript errors
- add missing `@types/mapbox__mapbox-sdk` package
* Move global.d.ts to server `src` folder
* Update AssetReponseDto duration type
This is now of type `string` that defaults to '0:00:00.00000' if not set
which is what the mobile app currently expects
* Set context when logging error in asset.service
Use `ServeFile` as the context for logging an error when
asset.resizePath is not set
* Fix wrong AppController merge conflict resolution
`redirectToWebpage` was removed in main as is no longer used.
* chore: remove UPLOAD_LOCATION as it isn't used in the server
* docker: remove network in docker compose as docker creates one by default
* nginx: update reverse proxy to put web at root and api at /api
* docker: remove unneeded exposed ports and docker network
Align dev setup with prod, but with ports exposed for direct connection
Most communication between services happens on the internal network, so we don't need to expose all these services.
With the nginx changes, the api and web panel are both server through the reverse proxy on / for web and /api for the API.
The only service that should expose ports is nginx as that is the entrypoint to the application.
* chore: remove CORS now we serve the api on /api in the default setup
* docs: update README.md to include /api
* Fixed docket-compose file for dev environment and websocket on web and mobile
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Allow zooming in image viewer
* Use thumbnailProvider as initial provider
* Set maximum zoom level to 100%
* Implement custom swipe listener in remote_photo_view
* Dart format
* Disable swipe gestures when zoomed in (prevents panning)