diff --git a/.github/workflows/turbo-ci.yml b/.github/workflows/turbo-ci.yml
index 6f82db1b2..82e9f333a 100644
--- a/.github/workflows/turbo-ci.yml
+++ b/.github/workflows/turbo-ci.yml
@@ -80,4 +80,4 @@ jobs:
- name: 🔍 Verify intl:extract has been run
run: |
pnpm intl:extract
- git diff --exit-code */*/src/locales/en-US/index.json
+ git diff --exit-code --color */*/src/locales/en-US/index.json
diff --git a/apps/app-frontend/src/helpers/skins.ts b/apps/app-frontend/src/helpers/skins.ts
index 9b5953f53..e31b67b1c 100644
--- a/apps/app-frontend/src/helpers/skins.ts
+++ b/apps/app-frontend/src/helpers/skins.ts
@@ -67,9 +67,8 @@ export async function determineModelType(texture: string): Promise<'SLIM' | 'CLA
const armWidth = 2
const armHeight = 12
const imageData = context.getImageData(armX, armY, armWidth, armHeight).data
- for (let index = 1; index <= imageData.length; index++) {
- //every fourth value in RGBA is the alpha channel
- if (index % 4 == 0 && imageData[index - 1] !== 0) {
+ for (let alphaIndex = 3; alphaIndex < imageData.length; alphaIndex += 4) {
+ if (imageData[alphaIndex] !== 0) {
resolve('CLASSIC')
return
}
diff --git a/apps/app-frontend/src/pages/Browse.vue b/apps/app-frontend/src/pages/Browse.vue
index f11e2c044..16bfefac1 100644
--- a/apps/app-frontend/src/pages/Browse.vue
+++ b/apps/app-frontend/src/pages/Browse.vue
@@ -220,7 +220,7 @@ async function refreshSearch() {
}
}
results.value = rawResults.result
- currentPage.value = Math.max(1, Math.min(pageCount.value, currentPage.value))
+ currentPage.value = 1
const persistentParams: LocationQuery = {}
@@ -266,6 +266,7 @@ async function onSearchChangeToTop() {
function clearSearch() {
query.value = ''
+ currentPage.value = 1
}
watch(
diff --git a/apps/frontend/src/pages/admin/billing/[id].vue b/apps/frontend/src/pages/admin/billing/[id].vue
index 40ba9da61..fbbaae9c6 100644
--- a/apps/frontend/src/pages/admin/billing/[id].vue
+++ b/apps/frontend/src/pages/admin/billing/[id].vue
@@ -150,9 +150,26 @@
+
+ Ended:
+
+ Ends:
+ Issued:
+ Due:
{{ dayjs(charge.due).format("MMMM D, YYYY [at] h:mma") }}
({{ formatRelativeTime(charge.due) }})
+
+ Last attempt:
+ Charged:
+ {{ dayjs(charge.last_attempt).format("MMMM D, YYYY [at] h:mma") }}
+ ({{ formatRelativeTime(charge.last_attempt) }})
+
+
{{ charge.status }}
⋅
diff --git a/apps/frontend/src/pages/servers/index.vue b/apps/frontend/src/pages/servers/index.vue
index 1d11bd55f..2ac52cbe8 100644
--- a/apps/frontend/src/pages/servers/index.vue
+++ b/apps/frontend/src/pages/servers/index.vue
@@ -45,8 +45,9 @@
- Modrinth Servers is the easiest way to host your own Minecraft server. Seamlessly install
- and play your favorite mods and modpacks, all within the Modrinth platform.
+ Modrinth Servers is the easiest way to host your own Minecraft: Java Edition server.
+ Seamlessly install and play your favorite mods and modpacks, all within the Modrinth
+ platform.
-
+
@@ -480,7 +481,7 @@
-
+
@@ -491,6 +492,24 @@
All prices are listed in United States Dollars (USD).
+
+
+
+
+
+
+ What Minecraft versions and loaders can be used?
+
+
+ Modrinth Servers can run any version of Minecraft: Java Edition going all the way
+ back to version 1.2.5, including snapshot versions.
+
+
+ We also support a wide range of mod and plugin loaders, including Fabric, Quilt,
+ Forge, and NeoForge for mods, as well as Paper and Purpur for plugins. Availability
+ depends on whether the mod or plugin loader supports the selected Minecraft version.
+
+
diff --git a/apps/labrinth/.sqlx/query-99cca53fd3f35325e2da3b671532bf98b8c7ad8e7cb9158e4eb9c5bac66d20b2.json b/apps/labrinth/.sqlx/query-cf020daa52a1316e5f60d197196b880b72c0b2a576e470d9fd7182558103d055.json
similarity index 94%
rename from apps/labrinth/.sqlx/query-99cca53fd3f35325e2da3b671532bf98b8c7ad8e7cb9158e4eb9c5bac66d20b2.json
rename to apps/labrinth/.sqlx/query-cf020daa52a1316e5f60d197196b880b72c0b2a576e470d9fd7182558103d055.json
index c7e1c1a3c..47805a8b3 100644
--- a/apps/labrinth/.sqlx/query-99cca53fd3f35325e2da3b671532bf98b8c7ad8e7cb9158e4eb9c5bac66d20b2.json
+++ b/apps/labrinth/.sqlx/query-cf020daa52a1316e5f60d197196b880b72c0b2a576e470d9fd7182558103d055.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n id, user_id, price_id, amount, currency_code, status, due, last_attempt,\n charge_type, subscription_id,\n -- Workaround for https://github.com/launchbadge/sqlx/issues/3336\n subscription_interval AS \"subscription_interval?\",\n payment_platform,\n payment_platform_id AS \"payment_platform_id?\",\n parent_charge_id AS \"parent_charge_id?\",\n net AS \"net?\"\n FROM charges\n WHERE subscription_id = $1 AND (status = 'open' OR status = 'cancelled')",
+ "query": "\n SELECT\n id, user_id, price_id, amount, currency_code, status, due, last_attempt,\n charge_type, subscription_id,\n -- Workaround for https://github.com/launchbadge/sqlx/issues/3336\n subscription_interval AS \"subscription_interval?\",\n payment_platform,\n payment_platform_id AS \"payment_platform_id?\",\n parent_charge_id AS \"parent_charge_id?\",\n net AS \"net?\"\n FROM charges\n WHERE subscription_id = $1 AND (status = 'open' OR status = 'cancelled' OR status = 'failed')",
"describe": {
"columns": [
{
@@ -102,5 +102,5 @@
true
]
},
- "hash": "99cca53fd3f35325e2da3b671532bf98b8c7ad8e7cb9158e4eb9c5bac66d20b2"
+ "hash": "cf020daa52a1316e5f60d197196b880b72c0b2a576e470d9fd7182558103d055"
}
diff --git a/apps/labrinth/src/auth/mod.rs b/apps/labrinth/src/auth/mod.rs
index e2dc16ff8..a22fd65cf 100644
--- a/apps/labrinth/src/auth/mod.rs
+++ b/apps/labrinth/src/auth/mod.rs
@@ -43,7 +43,9 @@ pub enum AuthenticationError {
InvalidAuthMethod,
#[error("GitHub Token from incorrect Client ID")]
InvalidClientId,
- #[error("User email/account is already registered on Modrinth")]
+ #[error(
+ "User email is already registered on Modrinth. Try 'Forgot password' to access your account."
+ )]
DuplicateUser,
#[error("Invalid state sent, you probably need to get a new websocket")]
SocketError,
diff --git a/apps/labrinth/src/database/models/charge_item.rs b/apps/labrinth/src/database/models/charge_item.rs
index 5acf4c69d..2ca8b9edb 100644
--- a/apps/labrinth/src/database/models/charge_item.rs
+++ b/apps/labrinth/src/database/models/charge_item.rs
@@ -197,7 +197,7 @@ impl DBCharge {
) -> Result