* Initial fix of a race condition
* better logging
* some refactoring and graceful shutdown
* fix more potential race condition places; a better app shutdown
* add test and fix some issues
* some housekeeping
* more descriptive asserts
* Address review suggestions
* Better server shutdown logic + better message about the .env file not found
* Create context inside the shutdown goroutine; removed unnecessary shutdown from the main function
* Move HTTP server to the main process and remove unnecessary code
* log shutdown error if any
* Get back to the local `scanner` variable
* Protecting scanner with mutex
* Adding the mutex to the shutdown function
* Addressing the race condition at the init stage
---------
Co-authored-by: Konstantin Koval
* Add MagickWand perf test.
* Use MagickWand.
* Calculate the right thumbnail dimension.
* Remove magick bin file.
* Add building dependencies.
* Build images.
* Add --no-install-recommends
* Remove unused field.
* Fix typo
* Use uint in the worker.
* Add guard
* Always update apt.
* Fix EncodeJpeg() with the quality
* Rename the local error with a better name.
* Add worker.Terminate()
* Fix typo
* Rebase with master and rollback the build workflow.
* Add log package. Update worker with new log package.
* Add init error to worker.
* Init workers when binary launching.
* Add tests to cover different errors.
- Add user preferences section to settings
- Make settings page available for all users
- Move log out button to settings page
- Make it possible for each user to choose their desired language