* Create base shared instance migration and initial routes
* Fix build
* Add version uploads
* Add permissions field for shared instance users
* Actually use permissions field
* Add "public" flag to shared instances that allow GETing them without authorization
* Add the ability to get and list shared instance versions
* Add the ability to delete shared instance versions
* Fix build after merge
* Secured file hosting (#3784)
* Remove Backblaze-specific file-hosting backend
* Added S3_USES_PATH_STYLE_BUCKETS
* Remove unused file_id parameter from delete_file_version
* Add support for separate public and private buckets in labrinth::file_hosting
* Rename delete_file_version to delete_file
* Add (untested) get_url_for_private_file
* Remove url field from shared instance routes
* Remove url field from shared instance routes
* Use private bucket for shared instance versions
* Make S3 environment variables fully separate between public and private buckets
* Change file host expiry for shared instances to 180 seconds
* Fix lint
* Merge shared instance migrations into a single migration
* Replace shared instance owners with Ghost instead of deleting the instance
* feat(labrinth): rework v3 side types to a single `environment` field
This field is meant to be able to represent the existing v2 side type
information and beyond, in a way that may also be slightly easier to
comprehend.
* chore(labrinth/migrations): use proper val for `HAVING` clause
* feat(labrinth): add `side_types_migration_review_status` field to projects
* fix(labrinth): return version artifact size exceeded error eagerly
Now we don't wait until the result memory buffer has grown to a size
greater than the maximum allowed, and instead we return such an error
before the buffer is grown with the current chunk, which should reduce
memory usage.
* fix(labrinth): proper supported game versions range for datapacks
* feat(labrinth): allow protected resource and data packs to pass validation
* fix(labrinth): ensure versions get removed from search indexes before ending route execution
* chore: run `sqlx prepare`
* chore(labrinth): simplify `remove_documents` a little
* chore: tweak new comment
When a payment for a subscription fails, we continue to try to re-attempt retrieving payment for 30 days.
Sometimes making it fail is an intentional choice on the user's part (e.g. Privacy.com card) or other times the user just doesn't want their subscription anymore after it fails.
This PR allows users with a failed payment to simply cancel instead of waiting for the 30-day timer to set in.
* chore(clippy): enable and fix many stricter lints
These ensure that the codebase uses more idiomatic, performant, and
concise language constructions.
* chore: make non-Clippy compiler warnings also deny by default
* refactor: inherit Clippy lint config and Rust edition from workspace
This also ensures developers running `clippy lint` locally get the same
lints as during CI, especially when the Rust toolchain version is fixed
through a `rust-toolchain.toml` file.
* chore(clippy.toml): bump MSRV to 1.87
* perf(ci): use Turbo to schedule both `lint` and `test` tasks at once
* fix(ci): wait until service containers are initialized for tests
This is achieved by adding a health check to the containers, and
instructing the CI workflow to wait until the containers are healthy.
Not doing this wait risks spurious CI failures due to DB migrations
being applied before the DB even starts.
* chore(turbo): use locally installed schema in new Turbo override file
On the latest versions of Turbo, this ensures that the used schema is
always in sync with what's available in the installed Turbo version,
which is something that has already caused confusion to me before.
* feat: Organisations are now sorted alphabetically in dashboard and on user pages
* Use computed ref
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Fix random_projects route not returning the requested number of projects
* fix(labrinth): further improve random project route SQL query
* chore: fix typo in comment
* tweak(labrinth): more apparent and fast randomness for `random_projects_get`
* tweak(labrinth): even better random projects query
* chore: address formatting review
---------
Co-authored-by: Alejandro González <me@alegon.dev>
* fix(frontend): remove fixed height from ManySelect
Frontend development is not my passion, there might be a better fix.
I've tested my changes in all places that I found using the chganed components (ManySelect, ScrollablePanel):
- Changelog filters
- Version filters
- Download dialog
- Search filters
Fixes#2334
* Revert incorrect merge
* fix merge conflict