From 6afda48e70b786843efd9a51f5bd2c6747352bce Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Mon, 27 Apr 2026 17:27:41 +0100 Subject: [PATCH] fix: various smaller fixes (#5917) * fix: try fix email templates rendering links for variables * fix: b is not a function * fix: wording on modpack btn on setup type stage * fix: respect launcher-meta info * feat: i18n pass on creation flow modal * fix: prefetch loader manifests * fix: lint --- apps/app-frontend/src/App.vue | 2 + .../app-frontend/src/locales/en-US/index.json | 12 + apps/app-frontend/src/pages/Browse.vue | 30 +- .../src/providers/setup/creation-modal.ts | 2 + apps/frontend/src/pages/admin/emails.vue | 145 +++++++- .../account/AuthenticationMethodAdded.vue | 2 +- .../account/AuthenticationMethodRemoved.vue | 2 +- .../templates/emails/account/EmailChanged.vue | 2 +- .../emails/account/LoginNewDevice.vue | 2 +- .../templates/emails/account/PATCreated.vue | 2 +- .../emails/account/PasswordChanged.vue | 2 +- .../emails/account/PasswordRemoved.vue | 2 +- .../emails/account/PaymentFailed.vue | 2 +- .../emails/account/PayoutAvailable.vue | 2 +- .../emails/account/ResetPassword.vue | 2 +- .../emails/account/SubscriptionCredited.vue | 2 +- .../emails/account/SubscriptionTaxChange.vue | 2 +- .../emails/account/TwoFactorAdded.vue | 2 +- .../emails/account/TwoFactorRemoved.vue | 2 +- .../templates/emails/account/VerifyEmail.vue | 2 +- .../ModerationThreadMessageReceived.vue | 2 +- .../emails/moderation/ReportStatusUpdated.vue | 2 +- .../emails/moderation/ReportSubmitted.vue | 2 +- .../organization/OrganizationInvited.vue | 2 +- .../emails/project/ProjectInvited.vue | 2 +- .../emails/project/ProjectStatusApproved.vue | 2 +- .../project/ProjectStatusUpdatedNeutral.vue | 2 +- .../emails/project/ProjectTransferred.vue | 2 +- .../src/templates/shared/StyledTemplate.vue | 4 + .../components/CustomSetupStage.vue | 265 +++++++++------ .../components/FinalConfigStage.vue | 259 ++++++++++++-- .../components/ImportInstanceStage.vue | 79 ++++- .../components/ModpackStage.vue | 43 ++- .../components/SetupTypeStage.vue | 98 ++++-- .../creation-flow-context.ts | 192 ++++++++++- .../flows/creation-flow-modal/index.vue | 4 + .../stages/custom-setup-stage.ts | 25 +- .../stages/final-config-stage.ts | 27 +- .../stages/import-instance-stage.ts | 13 +- .../stages/modpack-stage.ts | 8 +- .../stages/setup-type-stage.ts | 4 +- .../environment/EnvironmentMigration.vue | 4 +- .../components/servers/ServerSetupModal.vue | 2 + .../hosting/manage/[id]/onboarding.vue | 117 +++++-- packages/ui/src/locales/en-US/index.json | 315 ++++++++++++++++++ 45 files changed, 1435 insertions(+), 261 deletions(-) diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index 653b50ae2..d2a0e7510 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -176,6 +176,7 @@ const { handleBrowseModpacks, searchModpacks, getProjectVersions, + getLoaderManifest, setModpackAlreadyInstalledModal, handleModpackDuplicateCreateAnyway, handleModpackDuplicateGoToInstance, @@ -1108,6 +1109,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload) :fetch-existing-instance-names="fetchExistingInstanceNames" :search-modpacks="searchModpacks" :get-project-versions="getProjectVersions" + :get-loader-manifest="getLoaderManifest" @create="handleCreate" @browse-modpacks="handleBrowseModpacks" /> diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json index f7f558ae6..b67cec96e 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -38,6 +38,18 @@ "app.browse.install-content-to-instance": { "message": "Install content to instance" }, + "app.browse.project-type.modpacks": { + "message": "Modpacks" + }, + "app.browse.server.install": { + "message": "Install" + }, + "app.browse.server.installed": { + "message": "Installed" + }, + "app.browse.server.installing": { + "message": "Installing" + }, "app.export-modal.description-placeholder": { "message": "Enter modpack description..." }, diff --git a/apps/app-frontend/src/pages/Browse.vue b/apps/app-frontend/src/pages/Browse.vue index dcbe48446..ccf5039a2 100644 --- a/apps/app-frontend/src/pages/Browse.vue +++ b/apps/app-frontend/src/pages/Browse.vue @@ -34,6 +34,7 @@ import { onBeforeRouteLeave, useRoute, useRouter } from 'vue-router' import ContextMenu from '@/components/ui/ContextMenu.vue' import { get_project_v3, get_search_results_v3 } from '@/helpers/cache.js' import { process_listener } from '@/helpers/events' +import { get_loader_versions as getLoaderManifest } from '@/helpers/metadata' import { get_by_profile_path } from '@/helpers/process' import { get as getInstance, @@ -441,10 +442,26 @@ const messages = defineMessages({ id: 'app.browse.install-content-to-instance', defaultMessage: 'Install content to instance', }, + installToServer: { + id: 'app.browse.server.install', + defaultMessage: 'Install', + }, + installedToServer: { + id: 'app.browse.server.installed', + defaultMessage: 'Installed', + }, + installingToServer: { + id: 'app.browse.server.installing', + defaultMessage: 'Installing', + }, modLoaderProvidedByInstance: { id: 'search.filter.locked.instance-loader.title', defaultMessage: 'Loader is provided by the instance', }, + modpacksProjectType: { + id: 'app.browse.project-type.modpacks', + defaultMessage: 'Modpacks', + }, modLoaderProvidedByServer: { id: 'search.filter.locked.server-loader.title', defaultMessage: 'Loader is provided by the server', @@ -550,7 +567,9 @@ const selectableProjectTypes = computed(() => { const suffix = queryString ? `?${queryString}` : '' if (isSetupServerContext.value) { - return [{ label: 'Modpacks', href: `/browse/modpack${suffix}` }] + return [ + { label: formatMessage(messages.modpacksProjectType), href: `/browse/modpack${suffix}` }, + ] } if (isFromWorlds.value) { @@ -730,7 +749,13 @@ function getCardActions( return [ { key: 'install', - label: isInstalling ? 'Installing' : isInstalled ? 'Installed' : 'Install', + label: formatMessage( + isInstalling + ? messages.installingToServer + : isInstalled + ? messages.installedToServer + : messages.installToServer, + ), icon: isInstalled ? CheckIcon : PlusIcon, disabled: isInstalled || isInstalling, color: 'brand', @@ -972,6 +997,7 @@ provideBrowseManager({ :on-back="onServerFlowBack" :search-modpacks="searchServerModpacks" :get-project-versions="getServerProjectVersions" + :get-loader-manifest="getLoaderManifest" @hide="() => {}" @browse-modpacks="() => {}" @create="handleServerModpackFlowCreate" diff --git a/apps/app-frontend/src/providers/setup/creation-modal.ts b/apps/app-frontend/src/providers/setup/creation-modal.ts index 4020fe8b3..a08fd4f51 100644 --- a/apps/app-frontend/src/providers/setup/creation-modal.ts +++ b/apps/app-frontend/src/providers/setup/creation-modal.ts @@ -11,6 +11,7 @@ import type ModpackAlreadyInstalledModal from '@/components/ui/modal/ModpackAlre import { trackEvent } from '@/helpers/analytics' import { get_project_versions, get_search_results } from '@/helpers/cache.js' import { import_instance } from '@/helpers/import.js' +import { get_loader_versions as getLoaderManifest } from '@/helpers/metadata.js' import { create_profile_and_install, create_profile_and_install_from_file } from '@/helpers/pack' import { create, list } from '@/helpers/profile.js' import type { InstanceLoader } from '@/helpers/types' @@ -165,6 +166,7 @@ export function setupCreationModal(notificationManager: AbstractWebNotificationM handleBrowseModpacks, searchModpacks, getProjectVersions, + getLoaderManifest, setModpackAlreadyInstalledModal, handleModpackDuplicateCreateAnyway, handleModpackDuplicateGoToInstance, diff --git a/apps/frontend/src/pages/admin/emails.vue b/apps/frontend/src/pages/admin/emails.vue index 232b77ef6..3b7674b4c 100644 --- a/apps/frontend/src/pages/admin/emails.vue +++ b/apps/frontend/src/pages/admin/emails.vue @@ -1,6 +1,6 @@ diff --git a/packages/ui/src/components/flows/creation-flow-modal/components/ImportInstanceStage.vue b/packages/ui/src/components/flows/creation-flow-modal/components/ImportInstanceStage.vue index b10cff033..1e56011c9 100644 --- a/packages/ui/src/components/flows/creation-flow-modal/components/ImportInstanceStage.vue +++ b/packages/ui/src/components/flows/creation-flow-modal/components/ImportInstanceStage.vue @@ -2,19 +2,21 @@
- Launcher instances + {{ + formatMessage(messages.launcherInstancesTitle) + }} - +