* Initial implementation
* Multiple fixes and improvemens
* Better `curl` retries timing
* Remove unused `TARGETOS` and `TARGETVARIANT` vars; add the version fetch fallback code to the build scripts
* Move the fallback code before the var usage
* Use double braces to make the code compatible with the `set -u`
---------
Co-authored-by: Konstantin Koval
* Refactored code; temp disable workflows on push
* remove printf leftovers
* A better sanitizing code
* extend auth routes tests
* more tests, fix 2 bugs in token processing
* more refactoring and fixes
* optimize video mediaURLs DB query and make testCachePath in utils thread-safe
* fix always passing test
* and more refactoring; 1 more test, but cleanup still has to be fixed
* more debug code in the test
* fix the test
* Final commit
* Adding a defer function just in case of panic
* Address some of review comments
* Protect the shared var by mutex; implement correct context-aware scanning
* Better error; better initial func wrap/capture; better log messages in `photos.go`;
* Addressing a few more review comments
* Order the query results; a better error type catch; setting the MP4 content type header explicitly
* try to fix the cancelation detection condition
* Extract a function and call it by name
---------
Co-authored-by: Konstantin Koval
* 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.
#1211
* Add benchmark magickwand.
* Enable shared magick.
* Remove MagickWand test because it can't be compiled with current dependency image.
* Enable formats explicitly.
* Include MagicWand library.
* Remove duplication.
* Limit dynamic libraries in the release build.
* Use cp -a instead of -r.
* Use bash instead of sh.
* Handle media not found issue
* temporary run workflows for master pushes only; tests
* revert temp workflow changes
---------
Co-authored-by: Konstantin Koval
* Add a preparation service to assign the correct permissions to the media cache folder
* Better docker capabilities with less privileges
* Expand the caps list
---------
Co-authored-by: Konstantin Koval
* The fix with test
* Fix test's foreign key issue
* 2 more test cases
* Fix the empty album test expectation
* Return Nil for no thumbnail case instead of an empty album, as expected by frontend. More tests for thumbnail priority choice
* Fix failed tests
---------
Co-authored-by: Konstantin Koval
* Bump golang from 1.23-bookworm to 1.24-bookworm
Bumps golang from 1.23-bookworm to 1.24-bookworm.
---
updated-dependencies:
- dependency-name: golang
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
* Update to use `go tool`, see https://go.dev/doc/go1.24#go-command.
* Update go.mod to go 1.24
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Use libmagic to identify file types.
* Fix mime array for database querying.
* go mod tidy
* Fix typo
* Another fix for the scheduled image build workflow for tag case (#1137)
* Try to fix the incorrect tag processing
* more debug code
* try with context=git
* hopefully, final debug
* the final commit with no debug code
---------
Co-authored-by: Konstantin Koval
* Add benchmark.
* rollback workflows.
* Fix AI comments.
* Build image.
* Fix AI comments.
* Fix AI comments.
* Rollback build workflow.
---------
Co-authored-by: Kostiantyn <32730812+kkovaletp@users.noreply.github.com>
Updated dependencies for improved performance and security:
- golang.org/x/crypto to version v0.31.0
- gopkg.in/vansante/go-ffprobe.v2 to version v2.2.1
- gorm.io/driver/sqlite to version v1.5.7
Co-authored-by: Konstantin Koval
* Bump several API dependencies to the latest versions
Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 in /api
Bump github.com/vektah/gqlparser/v2 from 2.5.19 to 2.5.20 in /api
Bump gorm.io/driver/postgres from 1.5.10 to 1.5.11 in /api
Bump golang.org/x/image from 0.22.0 to 0.23.0 in /api
Bump golang.org/x/crypto from 0.29.0 to 0.30.0 in /api
Bump github.com/99designs/gqlgen from 0.17.56 to 0.17.57 in /api
* Regenerate GraphQL code
---------
Co-authored-by: Konstantin Koval
* Try to fix the incorrect tag processing
* more debug code
* try with context=git
* hopefully, final debug
* the final commit with no debug code
---------
Co-authored-by: Konstantin Koval
* Define sub-projects and set coverage threshold for failure in the `codecov.yml`; make both test execution engines to generate also JUnit reports; upload these JUnit reports to Codecov for analysis
* Fix UI Vite config and add more details to the API is-generated-code script
* Add API JUnit report file to `.gitignore`
* Fix the copy issue by mounting the volume
* put the exact report name to the `docker cp` command
* Added `set -euxo pipeline` to the `test_api_coverage.sh` script; try to fix the missing report issue by setting immutable flag and report directoty
* Revert `chattr` and `set` commands, as they cause errors
* debug
* put the filename of the JUnit report to upload
* `set -euxo pipefail` in `scripts/test_api_coverage.sh`
---------
Co-authored-by: Konstantin Koval
* test putting '"' to make the resulting JSON correct
* revert the testing code and move the fixed line to its final location
---------
Co-authored-by: Konstantin Koval