Modrinth Hosting rebrand (#4846)

* Modrinth Hosting rebranding

* fix capitalization issue

* fix issues
This commit is contained in:
Prospector
2025-12-03 14:15:36 -08:00
committed by GitHub
parent 79c2633011
commit 16a6f7b352
61 changed files with 212 additions and 286 deletions

View File

@@ -794,7 +794,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<NavButton
v-if="themeStore.featureFlags.servers_in_app"
v-tooltip.right="'Servers'"
to="/servers/manage"
to="/hosting/manage"
>
<ServerIcon />
</NavButton>

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:serif="http://www.serif.com/" version="1.1" viewBox="0 0 1793 199">
<g>
<g id="Layer_1">
<g id="green" fill="var(--color-brand)">
<path d="M1184.1,166.6c-8,0-15.6-1-22.9-3.1s-13.1-4.6-17.4-7.6l8.5-16.9c4.3,2.7,9.4,5,15.3,6.8,5.9,1.8,11.9,2.7,17.8,2.7s12.1-.9,15.2-2.8c3.1-1.9,4.7-4.5,4.7-7.7s-1.1-4.6-3.2-6c-2.1-1.4-4.9-2.4-8.4-3.1-3.4-.7-7.3-1.4-11.5-2-4.2-.6-8.4-1.4-12.6-2.4-4.2-1-8-2.5-11.5-4.5-3.4-2-6.2-4.6-8.4-7.9-2.1-3.3-3.2-7.7-3.2-13.2s1.7-11.3,5.2-15.8c3.4-4.5,8.3-7.9,14.5-10.3,6.2-2.4,13.6-3.7,22.2-3.7s12.9.7,19.4,2.1c6.5,1.4,11.9,3.4,16.2,6.1l-8.5,16.9c-4.5-2.7-9.1-4.6-13.6-5.6-4.6-1-9.1-1.5-13.6-1.5-6.8,0-11.8,1-15,3-3.3,2-4.9,4.6-4.9,7.7s1.1,5,3.2,6.4c2.1,1.4,4.9,2.6,8.4,3.4,3.4.8,7.3,1.5,11.5,2,4.2.5,8.4,1.3,12.6,2.4,4.2,1.1,8,2.5,11.5,4.4,3.5,1.8,6.3,4.4,8.5,7.7,2.1,3.3,3.2,7.7,3.2,13s-1.8,11.1-5.3,15.5c-3.5,4.4-8.5,7.8-14.9,10.2-6.4,2.4-14.1,3.7-23,3.7Z"/>
<path d="M1291.1,166.6c-10.6,0-19.8-2.1-27.7-6.3-7.9-4.2-14-10-18.3-17.4-4.3-7.4-6.5-15.7-6.5-25.1s2.1-17.9,6.3-25.2c4.2-7.3,10-13,17.5-17.2,7.4-4.2,15.9-6.2,25.4-6.2s17.5,2,24.8,6.1c7.2,4,12.9,9.7,17.1,17.1,4.2,7.4,6.2,16,6.2,26s0,2,0,3.2c0,1.2-.2,2.3-.3,3.4h-79.3v-14.8h67.5l-8.7,4.6c.1-5.5-1-10.3-3.4-14.4-2.4-4.2-5.6-7.4-9.7-9.8-4.1-2.4-8.8-3.6-14.2-3.6s-10.2,1.2-14.3,3.6c-4.1,2.4-7.3,5.7-9.6,9.9-2.3,4.2-3.5,9.2-3.5,14.9v3.6c0,5.7,1.3,10.7,3.9,15.1,2.6,4.4,6.3,7.8,11,10.2,4.7,2.4,10.2,3.6,16.4,3.6s10.2-.8,14.4-2.5c4.3-1.7,8.1-4.3,11.4-7.8l11.9,13.7c-4.3,5-9.6,8.8-16.1,11.5-6.5,2.7-13.9,4-22.2,4Z"/>
<path d="M1357.2,165.3v-95.1h21.2v26.2l-2.5-7.7c2.8-6.4,7.3-11.3,13.4-14.6,6.1-3.3,13.7-5,22.9-5v21.2c-1-.2-1.8-.4-2.7-.4-.8,0-1.7,0-2.5,0-8.4,0-15.1,2.5-20.1,7.4-5,4.9-7.5,12.3-7.5,22v46.1h-22.3Z"/>
<path d="M1460,165.3l-40.8-95.1h23.2l35.1,83.9h-11.4l36.3-83.9h21.4l-40.8,95.1h-23Z"/>
<path d="M1579.6,166.6c-10.6,0-19.8-2.1-27.7-6.3-7.9-4.2-14-10-18.3-17.4-4.3-7.4-6.5-15.7-6.5-25.1s2.1-17.9,6.3-25.2c4.2-7.3,10-13,17.5-17.2,7.4-4.2,15.9-6.2,25.4-6.2s17.5,2,24.8,6.1c7.2,4,12.9,9.7,17.1,17.1,4.2,7.4,6.2,16,6.2,26s0,2,0,3.2c0,1.2-.2,2.3-.3,3.4h-79.3v-14.8h67.5l-8.7,4.6c.1-5.5-1-10.3-3.4-14.4-2.4-4.2-5.6-7.4-9.7-9.8-4.1-2.4-8.8-3.6-14.2-3.6s-10.2,1.2-14.3,3.6c-4.1,2.4-7.3,5.7-9.6,9.9-2.3,4.2-3.5,9.2-3.5,14.9v3.6c0,5.7,1.3,10.7,3.9,15.1,2.6,4.4,6.3,7.8,11,10.2,4.7,2.4,10.2,3.6,16.4,3.6s10.2-.8,14.4-2.5c4.3-1.7,8.1-4.3,11.4-7.8l11.9,13.7c-4.3,5-9.6,8.8-16.1,11.5-6.5,2.7-13.9,4-22.2,4Z"/>
<path d="M1645.7,165.3v-95.1h21.2v26.2l-2.5-7.7c2.8-6.4,7.3-11.3,13.4-14.6,6.1-3.3,13.7-5,22.9-5v21.2c-1-.2-1.8-.4-2.7-.4-.8,0-1.7,0-2.5,0-8.4,0-15.1,2.5-20.1,7.4-5,4.9-7.5,12.3-7.5,22v46.1h-22.3Z"/>
<path d="M1749.9,166.6c-8,0-15.6-1-22.9-3.1s-13.1-4.6-17.4-7.6l8.5-16.9c4.3,2.7,9.4,5,15.3,6.8,5.9,1.8,11.9,2.7,17.8,2.7s12.1-.9,15.2-2.8c3.1-1.9,4.7-4.5,4.7-7.7s-1.1-4.6-3.2-6c-2.1-1.4-4.9-2.4-8.4-3.1-3.4-.7-7.3-1.4-11.5-2-4.2-.6-8.4-1.4-12.6-2.4-4.2-1-8-2.5-11.5-4.5-3.4-2-6.2-4.6-8.4-7.9-2.1-3.3-3.2-7.7-3.2-13.2s1.7-11.3,5.2-15.8c3.4-4.5,8.3-7.9,14.5-10.3,6.2-2.4,13.6-3.7,22.2-3.7s12.9.7,19.4,2.1c6.5,1.4,11.9,3.4,16.2,6.1l-8.5,16.9c-4.5-2.7-9.1-4.6-13.6-5.6-4.6-1-9.1-1.5-13.6-1.5-6.8,0-11.8,1-15,3-3.3,2-4.9,4.6-4.9,7.7s1.1,5,3.2,6.4c2.1,1.4,4.9,2.6,8.4,3.4,3.4.8,7.3,1.5,11.5,2,4.2.5,8.4,1.3,12.6,2.4,4.2,1.1,8,2.5,11.5,4.4,3.5,1.8,6.3,4.4,8.5,7.7,2.1,3.3,3.2,7.7,3.2,13s-1.8,11.1-5.3,15.5c-3.5,4.4-8.5,7.8-14.9,10.2-6.4,2.4-14.1,3.7-23,3.7Z"/>
<g>
<path d="M9.8,143l63.4-38.1-5.8-15.3,18.1-18.6,22.9-4.9,6.6,8.2-10.6,10.7-9.2,2.9-6.6,6.8,3.2,9,6.5,6.9,9.2-2.5,6.6-7.2,14.3-4.5,4.3,9.6-14.8,18.1-24.8,7.8-11.1-12.4-63.6,38.2c-3-3.9-6.5-9.4-8.8-14.7ZM192.8,65.4l-50.4,13.6c2.8,7.4,3.7,11.7,4.5,16.5l50.3-13.6c-.8-5.4-2.2-10.8-4.4-16.5Z" fill-rule="evenodd"/>
<path d="M17.3,106.5c3.6,42.1,38.9,75.2,82,75.2s60.7-18.9,74-46.3l16.4,5.7c-15.8,34.1-50.3,57.9-90.4,57.9S3.6,158.2,0,106.5h17.3ZM.3,89.4C5.3,39.2,47.8,0,99.3,0s99.5,44.6,99.5,99.5-1.1,17.4-3.3,25.5l-16.3-5.7c1.6-6.5,2.4-13.1,2.4-19.8,0-45.4-36.9-82.3-82.3-82.3S22.6,48.7,17.6,89.4H.3Z" fill-rule="evenodd"/>
<path d="M99,51.6c-26.4,0-47.9,21.5-47.9,48s21.5,48,48,48,2.7,0,4-.2l4.8,16.8c-2.9.4-5.8.6-8.8.6-36,0-65.2-29.2-65.2-65.2S63.1,34.4,99,34.4s1.8,0,2.7,0l-2.7,17.1ZM118.6,37.4c26.4,8.3,45.6,33,45.6,62.2s-16.4,50.2-39.8,60l-4.8-16.7c16.2-7.7,27.4-24.2,27.4-43.3s-13-38.1-31.1-44.9l2.7-17.2Z" fill-rule="evenodd"/>
</g>
</g>
<g id="black" fill="currentColor">
<path d="M354.8,69.2c12,0,21.7,3.4,28.6,10.4,7,7.2,10.6,17.5,10.6,31.5v54.8h-22.4v-51.9c0-8.4-1.8-14.7-5.5-19-3.8-4.1-8.9-6.3-15.9-6.3s-13.6,2.5-18.1,7.3c-4.5,5-6.8,12.2-6.8,21.3v48.5h-22.4v-51.9c0-8.4-1.8-14.7-5.5-19-3.8-4.1-8.9-6.3-15.9-6.3s-13.6,2.5-18.1,7.3c-4.5,4.8-6.8,12-6.8,21.3v48.5h-22.4v-95.6h21.3v12.2c3.6-4.3,8.1-7.5,13.4-9.8,5.4-2.3,11.3-3.4,17.9-3.4s13.6,1.3,19.2,3.9c5.5,2.9,9.8,6.8,13.1,12,3.9-5,8.9-8.9,15.2-11.8,6.3-2.7,13.1-4.1,20.6-4.1ZM466,167.2c-9.7,0-18.4-2.1-26.1-6.3-7.6-4-13.8-10.1-18.1-17.5-4.5-7.3-6.6-15.7-6.6-25.2s2.1-17.9,6.6-25.2c4.3-7.4,10.6-13.4,18.1-17.4,7.7-4.1,16.5-6.3,26.1-6.3s18.6,2.1,26.3,6.3c7.7,4.1,13.8,10,18.3,17.4,4.3,7.3,6.4,15.7,6.4,25.2s-2.1,17.9-6.4,25.2c-4.5,7.5-10.6,13.4-18.3,17.5-7.7,4.1-16.5,6.3-26.3,6.3h0ZM466,148c8.2,0,15-2.7,20.4-8.2,5.4-5.5,8.1-12.7,8.1-21.7s-2.7-16.1-8.1-21.7c-5.4-5.5-12.2-8.2-20.4-8.2s-15,2.7-20.2,8.2c-5.4,5.5-8.1,12.7-8.1,21.7s2.7,16.1,8.1,21.7c5.2,5.5,12,8.2,20.2,8.2ZM631.5,33.1v132.8h-21.5v-12.3c-3.7,4.4-8.3,7.9-13.6,10.2-5.5,2.3-11.5,3.4-18.1,3.4s-17.4-2-24.7-6.1c-7.3-4.1-13.2-9.8-17.4-17.4-4.1-7.3-6.3-15.9-6.3-25.6s2.1-18.3,6.3-25.6c4.1-7.3,10-13.1,17.4-17.2,7.3-4.1,15.6-6.1,24.7-6.1s12.2,1.1,17.4,3.2c5.2,2.1,9.8,5.4,13.4,9.7v-49h22.4ZM581.1,148c5.4,0,10.2-1.3,14.5-3.8,4.3-2.3,7.7-5.9,10.2-10.4,2.5-4.5,3.8-9.8,3.8-15.7s-1.3-11.3-3.8-15.7c-2.5-4.5-5.9-8.1-10.2-10.6-4.3-2.3-9.1-3.6-14.5-3.6s-10.2,1.3-14.5,3.6c-4.3,2.5-7.7,6.1-10.2,10.6-2.5,4.5-3.8,9.8-3.8,15.7s1.3,11.3,3.8,15.7c2.5,4.5,5.9,8.1,10.2,10.4,4.3,2.5,9.1,3.8,14.5,3.8ZM681.6,84.3c6.4-10,17.7-15,34-15v21.3c-1.7-.3-3.4-.5-5.2-.5-8.8,0-15.6,2.5-20.4,7.5-4.8,5.2-7.3,12.5-7.3,22v46.4h-22.4v-95.6h21.3v14h0ZM734.1,70.3h22.4v95.6h-22.4v-95.6ZM745.4,54.6c-4.1,0-7.5-1.3-10.2-3.9-2.7-2.4-4.2-5.9-4.1-9.5,0-3.8,1.4-7,4.1-9.7,2.7-2.5,6.1-3.8,10.2-3.8s7.5,1.3,10.2,3.6c2.7,2.5,4.1,5.5,4.1,9.3s-1.3,7.2-3.9,9.8c-2.7,2.7-6.3,4.1-10.4,4.1ZM839.5,69.2c12,0,21.7,3.6,29,10.6,7.3,7,10.9,17.5,10.9,31.3v54.8h-22.4v-51.9c0-8.4-2-14.7-5.9-19-3.9-4.1-9.5-6.3-16.8-6.3s-14.7,2.5-19.5,7.3c-4.8,5-7.2,12.2-7.2,21.5v48.3h-22.4v-95.6h21.3v12.3c3.8-4.5,8.4-7.7,14-10,5.5-2.3,12-3.4,19-3.4ZM964.8,160.7c-2.8,2.2-6,3.9-9.5,4.8-3.9,1.1-7.9,1.6-12,1.6-10.6,0-18.6-2.7-24.3-8.2-5.7-5.5-8.6-13.4-8.6-24v-46h-15.7v-17.9h15.7v-21.8h22.4v21.8h25.6v17.9h-25.6v45.5c0,4.7,1.1,8.2,3.4,10.6,2.3,2.5,5.5,3.8,9.8,3.8s9.1-1.3,12.5-3.9l6.3,15.9ZM1036.9,69.2c12,0,21.7,3.6,29,10.6,7.3,7,10.9,17.5,10.9,31.3v54.8h-22.4v-51.9c0-8.4-2-14.7-5.9-19-3.9-4.1-9.5-6.3-16.8-6.3s-14.7,2.5-19.5,7.3c-4.8,5-7.2,12.2-7.2,21.5v48.3h-22.4V33.1h22.4v48.3c3.8-3.9,8.2-7,13.8-9.1,5.4-2,11.5-3,18.1-3Z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -34,18 +34,18 @@ function updateAdPosition() {
<template>
<div ref="adsWrapper" class="ad-parent relative flex w-full justify-center cursor-pointer bg-bg">
<a
href="https://modrinth.gg/medal?from=app-placeholder"
href="https://modrinth.host/medal?from=app-placeholder"
target="_blank"
class="flex max-h-[250px] min-h-[250px] min-w-[300px] max-w-[300px] flex-col gap-4 rounded-[inherit]"
>
<img
src="https://cdn-raw.modrinth.com/medal-modrinth-servers-light-new.webp"
alt="Host your next server with Modrinth Servers"
src="https://cdn-raw.modrinth.com/modrinth-hosting-medal-light.webp"
alt="Host your next server with Modrinth Hosting"
class="hidden light-image rounded-[inherit]"
/>
<img
src="https://cdn-raw.modrinth.com/medal-modrinth-servers-dark-new.webp"
alt="Host your next server with Modrinth Servers"
src="https://cdn-raw.modrinth.com/modrinth-hosting-medal-dark.webp"
alt="Host your next server with Modrinth Hosting"
class="dark-image rounded-[inherit]"
/>
</a>

View File

@@ -29,7 +29,7 @@ export default new createRouter({
},
},
{
path: '/servers/manage/',
path: '/hosting/manage/',
name: 'Servers',
component: ServersManagePageIndex,
meta: {

View File

@@ -62,21 +62,21 @@ useHead({
const AD_PRESETS = {
medal: {
light: 'https://cdn-raw.modrinth.com/medal-modrinth-servers-light-new.webp',
dark: 'https://cdn-raw.modrinth.com/medal-modrinth-servers-dark-new.webp',
description: 'Host your next server with Modrinth Servers',
link: '/servers?plan&ref=medal',
light: 'https://cdn-raw.modrinth.com/modrinth-hosting-medal-light.webp',
dark: 'https://cdn-raw.modrinth.com/modrinth-hosting-medal-dark.webp',
description: 'Host your next server with Modrinth Hosting',
link: '/hosting?plan&ref=medal',
},
'modrinth-servers': {
light: 'https://cdn-raw.modrinth.com/modrinth-servers-placeholder-light.webp',
dark: 'https://cdn-raw.modrinth.com/modrinth-servers-placeholder-dark.webp',
description: 'Host your next server with Modrinth Servers',
link: '/servers',
'modrinth-hosting': {
light: 'https://cdn-raw.modrinth.com/modrinth-hosting-light.webp',
dark: 'https://cdn-raw.modrinth.com/modrinth-hosting-dark.webp',
description: 'Host your next server with Modrinth Hosting',
link: '/hosting',
},
}
const currentAd = computed(() =>
flags.value.enableMedalPromotion ? AD_PRESETS.medal : AD_PRESETS['modrinth-servers'],
flags.value.enableMedalPromotion ? AD_PRESETS.medal : AD_PRESETS['modrinth-hosting'],
)
onMounted(() => {

View File

@@ -208,7 +208,7 @@
the mod.
<NuxtLink
class="mt-2 flex items-center gap-1"
:to="`/servers/manage/${props.serverId}/options/loader`"
:to="`/hosting/manage/${props.serverId}/options/loader`"
target="_blank"
>
<ExternalIcon class="size-5 flex-none"></ExternalIcon> Modify modpack version

View File

@@ -135,6 +135,6 @@ const emit = defineEmits<{
const goHome = () => {
emit('cancel')
router.push({ path: '/servers/manage/' + route.params.id + '/files' })
router.push({ path: '/hosting/manage/' + route.params.id + '/files' })
}
</script>

View File

@@ -52,7 +52,7 @@
/>
<div v-if="submitted && error" class="text-red">{{ error }}</div>
</div>
<BackupWarning :backup-link="`/servers/manage/${props.server.serverId}/backups`" />
<BackupWarning :backup-link="`/hosting/manage/${props.server.serverId}/backups`" />
<div class="flex justify-start gap-2">
<ButtonStyled color="brand">
<button v-tooltip="error" :disabled="submitted || !!error" type="submit">

File diff suppressed because one or more lines are too long

View File

@@ -126,7 +126,7 @@ import { useStorage } from '@vueuse/core'
import { computed, ref } from 'vue'
import { useRouter } from 'vue-router'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
import LoadingIcon from './icons/LoadingIcon.vue'
import PanelSpinner from './PanelSpinner.vue'
@@ -214,7 +214,7 @@ const menuOptions = computed(() => [
id: 'allServers',
label: 'All servers',
icon: ServerIcon,
action: () => router.push('/servers/manage'),
action: () => router.push('/hosting/manage'),
},
{
id: 'details',

View File

@@ -69,7 +69,7 @@
</div>
</div>
<BackupWarning :backup-link="`/servers/manage/${props.server?.serverId}/backups`" />
<BackupWarning :backup-link="`/hosting/manage/${props.server?.serverId}/backups`" />
</div>
<div class="mt-4 flex justify-start gap-4">
<ButtonStyled :color="isDangerous ? 'red' : 'brand'">
@@ -133,7 +133,7 @@ import { ModrinthServersFetchError } from '@modrinth/utils'
import { onMounted, onUnmounted } from 'vue'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
const { addNotification } = injectNotificationManager()

View File

@@ -159,7 +159,7 @@
<BackupWarning
v-if="!initialSetup"
:backup-link="`/servers/manage/${props.server?.serverId}/backups`"
:backup-link="`/hosting/manage/${props.server?.serverId}/backups`"
/>
</div>
@@ -218,7 +218,7 @@ import { type Loaders, ModrinthServersFetchError } from '@modrinth/utils'
import { $fetch } from 'ofetch'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
import LoaderIcon from './icons/LoaderIcon.vue'
import LoadingIcon from './icons/LoadingIcon.vue'

View File

@@ -163,7 +163,7 @@ import { ButtonStyled, NewProjectCard } from '@modrinth/ui'
import type { Loaders } from '@modrinth/utils'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
import LoaderSelector from './LoaderSelector.vue'
import PlatformChangeModpackVersionModal from './PlatformChangeModpackVersionModal.vue'

View File

@@ -39,7 +39,7 @@ import { RightArrowIcon } from '@modrinth/assets'
import type { RouteLocationNormalized } from 'vue-router'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
const emit = defineEmits(['reinstall'])

View File

@@ -53,7 +53,7 @@
</div>
</div>
<nuxt-link
:to="loading ? undefined : `/servers/manage/${serverId}/files`"
:to="loading ? undefined : `/hosting/manage/${serverId}/files`"
class="relative isolate min-h-[156px] w-full overflow-hidden rounded-2xl bg-bg-raised p-8"
:class="loading ? '' : 'transition-transform duration-100 hover:scale-105 active:scale-100'"
>

View File

@@ -141,7 +141,7 @@ const billingMonths = computed(() => {
:ram="ram"
:storage="storage"
:cpus="cpus"
:bursting-link="'/servers#cpu-burst'"
:bursting-link="'/hosting#cpu-burst'"
@click-bursting-link="() => emit('scroll-to-faq')"
/>
</div>

View File

@@ -54,12 +54,12 @@ export class GeneralModule extends ServerModule implements ServerGeneral {
const motd = await this.getMotd()
if (motd === 'A Minecraft Server') {
await this.setMotd(
`§b${data.project?.title || data.loader + ' ' + data.mc_version} §f♦ §aModrinth Servers`,
`§b${data.project?.title || data.loader + ' ' + data.mc_version} §f♦ §aModrinth Hosting`,
)
}
data.motd = motd
} catch {
console.error('[Modrinth Servers] [General] Failed to fetch MOTD.')
console.error('[Modrinth Hosting] [General] Failed to fetch MOTD.')
data.motd = undefined
}
@@ -224,7 +224,7 @@ export class GeneralModule extends ServerModule implements ServerGeneral {
}
} catch {
console.error(
'[Modrinth Servers] [General] Failed to set MOTD due to lack of server properties file.',
'[Modrinth Hosting] [General] Failed to set MOTD due to lack of server properties file.',
)
}
}

View File

@@ -27,7 +27,7 @@ export async function useServersFetch<T>(
if (!authToken && !options.bypassAuth) {
const error = new ModrinthServersFetchError(
'[Modrinth Servers] Cannot fetch without auth',
'[Modrinth Hosting] Cannot fetch without auth',
10000,
)
throw new ModrinthServerError('Missing auth token', 401, error, module, undefined, undefined)
@@ -49,7 +49,7 @@ export async function useServersFetch<T>(
const now = Date.now()
if (failureCount.value >= 3 && now - lastFailureTime.value < 30000) {
const error = new ModrinthServersFetchError(
'[Modrinth Servers] Circuit breaker open - too many recent failures',
'[Modrinth Hosting] Circuit breaker open - too many recent failures',
503,
)
throw new ModrinthServerError(
@@ -73,7 +73,7 @@ export async function useServersFetch<T>(
if (!base) {
const error = new ModrinthServersFetchError(
'[Modrinth Servers] Cannot fetch without base url. Make sure to set a PYRO_BASE_URL in environment variables',
'[Modrinth Hosting] Cannot fetch without base url. Make sure to set a PYRO_BASE_URL in environment variables',
10001,
)
throw new ModrinthServerError(
@@ -183,12 +183,12 @@ export async function useServersFetch<T>(
console.error('Fetch error:', error)
const fetchError = new ModrinthServersFetchError(
`[Modrinth Servers] ${error.message}`,
`[Modrinth Hosting] ${error.message}`,
statusCode,
error,
)
throw new ModrinthServerError(
`[Modrinth Servers] ${message}`,
`[Modrinth Hosting] ${message}`,
statusCode,
fetchError,
module,
@@ -206,7 +206,7 @@ export async function useServersFetch<T>(
console.error('Unexpected fetch error:', error)
const fetchError = new ModrinthServersFetchError(
'[Modrinth Servers] An unexpected error occurred during the fetch operation.',
'[Modrinth Hosting] An unexpected error occurred during the fetch operation.',
undefined,
error as Error,
)

View File

@@ -407,14 +407,14 @@
<ButtonStyled
type="transparent"
:highlighted="
route.name?.startsWith('servers') ||
route.name?.startsWith('hosting') ||
(route.name?.startsWith('search-') && route.query.sid)
"
:highlighted-style="
route.name === 'servers' ? 'main-nav-primary' : 'main-nav-secondary'
route.name === 'hosting' ? 'main-nav-primary' : 'main-nav-secondary'
"
>
<nuxt-link to="/servers">
<nuxt-link to="/hosting">
<ServerIcon aria-hidden="true" />
{{ formatMessage(navMenuMessages.hostAServer) }}
</nuxt-link>
@@ -683,7 +683,7 @@
<LibraryIcon class="icon" />
{{ formatMessage(commonMessages.collectionsLabel) }}
</NuxtLink>
<NuxtLink class="iconified-button" to="/servers/manage">
<NuxtLink class="iconified-button" to="/hosting/manage">
<ServerIcon class="icon" />
{{ formatMessage(commonMessages.serversLabel) }}
</NuxtLink>
@@ -1366,7 +1366,7 @@ const userMenuOptions = computed(() => {
},
{
id: 'servers',
link: '/servers/manage',
link: '/hosting/manage',
},
{
id: 'flags',
@@ -1455,7 +1455,7 @@ const disableRandomProjects = ref(false)
const disableRandomProjectsForRoute = computed(
() =>
route.name.startsWith('servers') ||
route.name.startsWith('hosting') ||
route.name.includes('settings') ||
route.name.includes('admin'),
)
@@ -1685,11 +1685,11 @@ const footerLinks = [
),
},
{
href: '/servers',
href: '/hosting',
label: formatMessage(
defineMessage({
id: 'layout.footer.products.servers',
defaultMessage: 'Modrinth Servers',
defaultMessage: 'Modrinth Hosting',
}),
),
},

View File

@@ -1359,7 +1359,7 @@
"message": "Modrinth+"
},
"layout.footer.products.servers": {
"message": "Modrinth Servers"
"message": "Modrinth Hosting"
},
"layout.footer.resources": {
"message": "Resources"
@@ -2001,7 +2001,7 @@
"message": "Review project"
},
"project.actions.servers-promo.description": {
"message": "Modrinth Servers is the easiest way to play with your friends without hassle!"
"message": "Modrinth Hosting is the easiest way to play with your friends without hassle!"
},
"project.actions.servers-promo.pricing": {
"message": "Starting at {price}<small> / month</small>"

View File

@@ -0,0 +1,6 @@
export default defineNuxtRouteMiddleware((to) => {
if (to.path.startsWith('/servers')) {
const target = to.fullPath.replace('/servers', '/hosting')
return navigateTo(target, { redirectCode: 301 })
}
})

View File

@@ -418,7 +418,7 @@
</AutomaticAccordion>
<ServersPromo
v-if="flags.showProjectPageDownloadModalServersPromo"
:link="`/servers#plan`"
:link="`/hosting#plan`"
@close="
() => {
flags.showProjectPageDownloadModalServersPromo = false
@@ -485,7 +485,7 @@
<ButtonStyled size="large" circular>
<nuxt-link
v-tooltip="formatMessage(messages.createServerTooltip)"
:to="`/servers?project=${project.id}#plan`"
:to="`/hosting?project=${project.id}#plan`"
@click="
() => {
flags.showProjectPageCreateServersTooltip = false
@@ -1314,7 +1314,7 @@ const messages = defineMessages({
},
serversPromoDescription: {
id: 'project.actions.servers-promo.description',
defaultMessage: 'Modrinth Servers is the easiest way to play with your friends without hassle!',
defaultMessage: 'Modrinth Hosting is the easiest way to play with your friends without hassle!',
},
serversPromoPricing: {
id: 'project.actions.servers-promo.pricing',

View File

@@ -182,7 +182,7 @@
"
>
<nuxt-link
:to="`/servers/manage/${subscription.metadata.id}`"
:to="`/hosting/manage/${subscription.metadata.id}`"
target="_blank"
class="w-fit"
>

View File

@@ -122,7 +122,7 @@
<div
class="mb-6 flex items-end justify-between border-0 border-b border-solid border-divider pb-4"
>
<h1 class="m-0 text-2xl">Servers notices</h1>
<h1 class="m-0 text-2xl">Server notices</h1>
<ButtonStyled color="brand">
<button @click="openNewNoticeModal">
<PlusIcon />

View File

@@ -18,7 +18,7 @@
:customer="customer"
:payment-methods="paymentMethods"
:currency="selectedCurrency"
:return-url="`${config.public.siteUrl}/servers/manage`"
:return-url="`${config.public.siteUrl}/hosting/manage`"
:server-name="`${auth?.user?.username}'s server`"
:out-of-stock-url="outOfStockUrl"
:fetch-capacity-statuses="fetchCapacityStatuses"
@@ -40,13 +40,13 @@
{{ formatMessage(commonMessages.betaRelease) }}
</div>
<h1 class="relative m-0 max-w-3xl text-3xl font-bold !leading-[110%] md:text-6xl">
Host your next server with Modrinth Servers
Host your next server with Modrinth Hosting
</h1>
</div>
<h2
class="relative m-0 max-w-2xl text-base font-normal leading-[155%] text-secondary md:text-[1.2rem]"
>
Modrinth Servers is the easiest way to host your own Minecraft: Java Edition server.
Modrinth Hosting 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.
</h2>
@@ -61,7 +61,7 @@
</nuxt-link>
</ButtonStyled>
<ButtonStyled v-if="hasServers" type="outlined" size="large">
<nuxt-link class="w-fit" to="/servers/manage">
<nuxt-link class="w-fit" to="/hosting/manage">
<BoxIcon aria-hidden="true" /> Manage your servers
</nuxt-link>
</ButtonStyled>
@@ -110,7 +110,7 @@
<div
class="relative w-fit rounded-full bg-highlight-green px-3 py-1 text-sm font-bold text-brand backdrop-blur-lg"
>
Why Modrinth Servers?
Why Modrinth Hosting?
</div>
<h1 class="relative m-0 max-w-2xl text-4xl leading-[120%] md:text-7xl">
Find a modpack. Now it's a server.
@@ -148,7 +148,7 @@
</svg>
<h2 class="m-0 text-lg font-bold">Play where your mods are</h2>
<h3 class="m-0 text-base font-normal text-secondary">
Modrinth Servers seamlessly integrates the mod and modpack installation process into
Modrinth Hosting seamlessly integrates the mod and modpack installation process into
your server.
</h3>
</div>
@@ -213,7 +213,7 @@
</svg>
<h2 class="m-0 text-lg font-bold">Experience modern, reliable hosting</h2>
<h3 class="m-0 text-base font-normal text-secondary">
Modrinth Servers are hosted on
Modrinth Hosting servers are hosted on
<span class="text-contrast">high-performance AMD CPUs with DDR5 RAM</span>, running on
custom-built software to ensure your server performs smoothly.
</h3>
@@ -341,7 +341,7 @@
A powerful console, server properties manager, and more
</h2>
<h3 class="m-0 text-base font-normal text-secondary">
Modrinth Servers come with powerful tools to manage your server.
Modrinth Hosting comes with powerful tools to manage your server.
</h3>
</div>
<div class="relative flex flex-col gap-4 rounded-2xl bg-bg p-6 text-left md:p-12">
@@ -378,7 +378,7 @@
<TransferIcon class="size-8 text-brand" />
<h2 class="m-0 text-lg font-bold">SFTP access</h2>
<h3 class="m-0 text-base font-normal text-secondary">
Access your server files directly with SFTP built into Modrinth Servers.
Access your server's files directly with SFTP built into Modrinth Hosting.
</h3>
</div>
<div class="relative flex flex-col gap-4 rounded-2xl bg-bg p-6 text-left md:p-12">
@@ -398,11 +398,11 @@
<span class="mr-2 transition-transform duration-200 group-open:rotate-90">
<RightArrowIcon />
</span>
What kind of CPUs do Modrinth Servers run on?
What kind of CPUs do Modrinth Hosting servers run on?
</summary>
<p class="m-0 ml-6 leading-[160%]">
Modrinth Servers are powered by AMD Ryzen 7900 and 7950X3D equivalent CPUs at 5+
GHz, paired with DDR5 memory.
Modrinth Hosting servers are powered by AMD Ryzen 7900 and 7950X3D equivalent CPUs
at 5+ GHz, paired with DDR5 memory.
</p>
</details>
<details nav-hash="cpu-burst" class="group" :open="$route.hash === '#cpu-burst'">
@@ -426,11 +426,11 @@
<span class="mr-2 transition-transform duration-200 group-open:rotate-90">
<RightArrowIcon />
</span>
Do Modrinth Servers have DDoS protection?
Do Modrinth Hosting servers have DDoS protection?
</summary>
<p class="m-0 ml-6 leading-[160%]">
Yes. All Modrinth Servers come with DDoS protection, with up to 17Tbps capacity in
some locations.
Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17Tbps
capacity in some locations.
</p>
</details>
@@ -439,7 +439,7 @@
<span class="mr-2 transition-transform duration-200 group-open:rotate-90">
<RightArrowIcon />
</span>
Where are Modrinth Servers located? Can I choose a region?
Where are Modrinth Hosting servers located? Can I choose a region?
</summary>
<p class="m-0 ml-6 leading-[160%]">
We have servers available in North America, Europe, and Southeast Asia at the moment
@@ -466,13 +466,13 @@
<span class="mr-2 transition-transform duration-200 group-open:rotate-90">
<RightArrowIcon />
</span>
How fast are Modrinth Servers?
How fast are Modrinth Hosting servers?
</summary>
<p class="m-0 ml-6 leading-[160%]">
Modrinth Servers are hosted on very modern high-performance hardware, but it's tough
to say how exactly that will translate into how fast your server will run because
there are so many factors that affect it, such as the mods, data packs, or plugins
you're running on your server, and even user behavior.
Modrinth Hosting servers are hosted on very modern high-performance hardware, but
it's tough to say how exactly that will translate into how fast your server will run
because there are so many factors that affect it, such as the mods, data packs, or
plugins you're running on your server, and even user behavior.
</p>
<p class="mb-0 ml-6 mt-3 leading-[160%]">
Most performance issues that arise tend to be the fault of an unoptimized modpack,
@@ -502,8 +502,8 @@
What Minecraft versions and loaders can be used?
</summary>
<p class="m-0 ml-6 leading-[160%]">
Modrinth Servers can run any version of Minecraft: Java Edition going all the way
back to version 1.2.5, including snapshot versions.
Modrinth Hosting servers can run any version of Minecraft: Java Edition going all
the way back to version 1.2.5, including snapshot versions.
</p>
<p class="m-0 ml-6 mt-3 leading-[160%]">
We also support a wide range of mod and plugin loaders, including Fabric, Quilt,
@@ -705,7 +705,7 @@ const lowestPrice = computed(() => {
return amount ? amount / monthsInInterval[billingPeriod.value] : undefined
})
const title = 'Modrinth Servers'
const title = 'Modrinth Hosting'
const description =
'Start your own Minecraft server directly on Modrinth. Play your favorite mods, plugins, and datapacks — without the hassle of setup.'

View File

@@ -116,7 +116,7 @@
}"
>
<div>
<NuxtLink to="/servers/manage" class="breadcrumb goto-link flex w-fit items-center">
<NuxtLink to="/hosting/manage" class="breadcrumb goto-link flex w-fit items-center">
<LeftArrowIcon />
All servers
</NuxtLink>
@@ -231,7 +231,7 @@
<ul class="m-0 mt-4 p-0 pl-4">
<li>
If this version of Minecraft was released recently, please check if Modrinth
Servers supports it.
Hosting supports it.
</li>
<li>
If you've installed a modpack, it may have been packaged incorrectly or may
@@ -261,7 +261,7 @@
<div
v-if="errorMessage.toLocaleLowerCase() === 'this version is not yet supported'"
>
An error occurred while installing your server because Modrinth Servers does not
An error occurred while installing your server because Modrinth Hosting does not
support the version of Minecraft or the loader you specified. Try reinstalling
your server with a different version or loader, and if the problem persists,
please contact Modrinth Support with your server's debug information.
@@ -284,7 +284,7 @@
<ButtonStyled color="red" type="standard">
<NuxtLink
class="whitespace-pre"
:to="`/servers/manage/${serverId}/options/loader`"
:to="`/hosting/manage/${serverId}/options/loader`"
>
<RightArrowIcon />
Change Loader
@@ -501,17 +501,17 @@ const showGameLabel = computed(() => !!serverData.value?.game)
const showLoaderLabel = computed(() => !!serverData.value?.loader)
const navLinks = [
{ label: 'Overview', href: `/servers/manage/${serverId}`, subpages: [] },
{ label: 'Overview', href: `/hosting/manage/${serverId}`, subpages: [] },
{
label: 'Content',
href: `/servers/manage/${serverId}/content`,
href: `/hosting/manage/${serverId}/content`,
subpages: ['mods', 'datapacks'],
},
{ label: 'Files', href: `/servers/manage/${serverId}/files`, subpages: [] },
{ label: 'Backups', href: `/servers/manage/${serverId}/backups`, subpages: [] },
{ label: 'Files', href: `/hosting/manage/${serverId}/files`, subpages: [] },
{ label: 'Backups', href: `/hosting/manage/${serverId}/backups`, subpages: [] },
{
label: 'Options',
href: `/servers/manage/${serverId}/options`,
href: `/hosting/manage/${serverId}/options`,
subpages: ['startup', 'network', 'properties', 'info'],
},
]
@@ -1117,7 +1117,7 @@ const suspendedAction = computed(() => ({
const generalErrorAction = computed(() => ({
label: 'Go back to all servers',
onClick: () => router.push('/servers/manage'),
onClick: () => router.push('/hosting/manage'),
color: 'brand' as const,
}))
@@ -1139,7 +1139,7 @@ const copyServerDebugInfo = () => {
const openInstallLog = () => {
router.replace({
path: `/servers/manage/${serverId}/files`,
path: `/hosting/manage/${serverId}/files`,
query: { ...route.query, editing: errorLogFile.value },
})
}

View File

@@ -327,7 +327,7 @@
</ButtonStyled>
<div>or</div>
<ButtonStyled class="mt-8">
<NuxtLink :to="`/servers/manage/${props.server.serverId}/options/loader`">
<NuxtLink :to="`/hosting/manage/${props.server.serverId}/options/loader`">
<WrenchIcon />
Change platform
</NuxtLink>

View File

@@ -22,7 +22,7 @@ import { isAdmin as isUserAdmin, type User } from '@modrinth/utils'
import ServerSidebar from '~/components/ui/servers/ServerSidebar.vue'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
const route = useRoute()
const serverId = route.params.id as string
@@ -42,15 +42,15 @@ const isOwner = computed(() => (auth.value?.user as User | null)?.id === ownerId
const isAdmin = computed(() => isUserAdmin(auth.value?.user))
const navLinks = computed(() => [
{ icon: SettingsIcon, label: 'General', href: `/servers/manage/${serverId}/options` },
{ icon: WrenchIcon, label: 'Platform', href: `/servers/manage/${serverId}/options/loader` },
{ icon: TextQuoteIcon, label: 'Startup', href: `/servers/manage/${serverId}/options/startup` },
{ icon: VersionIcon, label: 'Network', href: `/servers/manage/${serverId}/options/network` },
{ icon: ListIcon, label: 'Properties', href: `/servers/manage/${serverId}/options/properties` },
{ icon: SettingsIcon, label: 'General', href: `/hosting/manage/${serverId}/options` },
{ icon: WrenchIcon, label: 'Platform', href: `/hosting/manage/${serverId}/options/loader` },
{ icon: TextQuoteIcon, label: 'Startup', href: `/hosting/manage/${serverId}/options/startup` },
{ icon: VersionIcon, label: 'Network', href: `/hosting/manage/${serverId}/options/network` },
{ icon: ListIcon, label: 'Properties', href: `/hosting/manage/${serverId}/options/properties` },
{
icon: UserIcon,
label: 'Preferences',
href: `/servers/manage/${serverId}/options/preferences`,
href: `/hosting/manage/${serverId}/options/preferences`,
},
{
icon: CardIcon,
@@ -66,6 +66,6 @@ const navLinks = computed(() => [
external: true,
shown: isAdmin.value,
},
{ icon: InfoIcon, label: 'Info', href: `/servers/manage/${serverId}/options/info` },
{ icon: InfoIcon, label: 'Info', href: `/hosting/manage/${serverId}/options/info` },
])
</script>

View File

@@ -9,7 +9,7 @@
<script setup lang="ts">
import ServerInstallation from '~/components/ui/servers/ServerInstallation.vue'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
import type { BackupInProgressReason } from '~/pages/servers/manage/[id].vue'
import type { BackupInProgressReason } from '~/pages/hosting/manage/[id].vue'
const props = defineProps<{
server: ModrinthServer

View File

@@ -6,13 +6,19 @@ import { getChangelog, type Product } from '@modrinth/utils'
import NavTabs from '~/components/ui/NavTabs.vue'
const route = useRoute()
const router = useRouter()
const filter = ref<Product | undefined>(undefined)
const allChangelogEntries = ref(getChangelog())
function updateFilter() {
if (route.query.filter) {
filter.value = route.query.filter as Product
let value = route.query.filter
if (route.query.filter === 'servers') {
router.push({ query: { ...route.query, filter: 'hosting' } })
value = 'hosting'
}
filter.value = value as Product
} else {
filter.value = undefined
}
@@ -42,8 +48,8 @@ const changelogEntries = computed(() =>
href: 'web',
},
{
label: 'Servers',
href: 'servers',
label: 'Hosting',
href: 'hosting',
},
{
label: 'App',

View File

@@ -15,7 +15,7 @@
class="flex flex-wrap items-center justify-between gap-3 border-0 border-b border-solid border-divider pb-4"
>
<nuxt-link
:to="`/servers/manage/${server.serverId}/content`"
:to="`/hosting/manage/${server.serverId}/content`"
tabindex="-1"
class="flex flex-col gap-4 text-primary"
>
@@ -40,7 +40,7 @@
</span>
</nuxt-link>
<ButtonStyled>
<nuxt-link :to="`/servers/manage/${server.serverId}/content`">
<nuxt-link :to="`/hosting/manage/${server.serverId}/content`">
<LeftArrowIcon />
Back to server
</nuxt-link>
@@ -537,7 +537,7 @@ async function serverInstall(project) {
eraseDataOnInstall.value,
)
project.installed = true
navigateTo(`/servers/manage/${server.value.serverId}/options/loader`)
navigateTo(`/hosting/manage/${server.value.serverId}/options/loader`)
} else if (projectType.value.id === 'mod') {
await server.value.content.install('mod', version.project_id, version.id)
await server.value.refresh(['content'])

View File

@@ -17,7 +17,7 @@
<span class="font-bold text-primary">
<template v-if="charge.product?.metadata?.type === 'midas'"> Modrinth Plus </template>
<template v-else-if="charge.product?.metadata?.type === 'pyro'">
Modrinth Servers
Modrinth Hosting
</template>
<template v-else> Medal Server Trial </template>
<template v-if="charge.subscription_interval">

View File

@@ -2346,7 +2346,7 @@ pub async fn stripe_webhook(
.metadata
.is_pyro()
{
"Modrinth Servers"
"Modrinth Hosting"
} else {
"a Modrinth product"
}