From 171a19985b36cb5994ce6e17b455de46e209424f Mon Sep 17 00:00:00 2001 From: Disy Date: Mon, 14 Sep 2026 22:59:16 +0800 Subject: [PATCH] feat: add approved modpack sync and StarLight instance modes --- .../components/instance/HostedModpacks.vue | 214 +++++ .../instance/InstanceModeOptions.vue | 59 ++ .../instance/InstanceModeSettings.vue | 64 ++ .../instance/ModManagementSwitch.vue | 73 ++ .../ui/instance_settings/GeneralSettings.vue | 2 + .../ui/onboarding/onboardingConfig.ts | 18 +- .../src/composables/useInstanceMode.ts | 27 + apps/app-frontend/src/helpers/hosted-packs.ts | 33 + apps/app-frontend/src/helpers/install.ts | 1 + .../app-frontend/src/locales/en-US/index.json | 28 + .../app-frontend/src/locales/zh-CN/index.json | 28 + .../app-frontend/src/locales/zh-TW/index.json | 28 + apps/app-frontend/src/pages/Create.vue | 14 +- apps/app-frontend/src/pages/instance/Mods.vue | 430 ++++----- .../src/providers/setup/creation-modal.ts | 17 +- apps/app/build.rs | 5 + apps/app/src/api/install.rs | 63 +- apps/app/src/api/instance.rs | 1 + packages/app-lib/src/api/instance/run.rs | 2 + packages/app-lib/src/api/mod.rs | 2 +- packages/app-lib/src/api/pack/hosted.rs | 884 ++++++++++++++++++ .../app-lib/src/api/pack/import/axolotl.rs | 1 + packages/app-lib/src/api/pack/mod.rs | 1 + packages/app-lib/src/launcher/mod.rs | 7 +- .../instances/commands/create_instance.rs | 4 +- .../state/instances/commands/edit_instance.rs | 4 + .../src/state/instances/model/launch.rs | 51 + .../app-lib/src/state/legacy_converter.rs | 1 + standards/hosted-modpacks.md | 54 ++ 29 files changed, 1891 insertions(+), 225 deletions(-) create mode 100644 apps/app-frontend/src/components/instance/HostedModpacks.vue create mode 100644 apps/app-frontend/src/components/instance/InstanceModeOptions.vue create mode 100644 apps/app-frontend/src/components/instance/InstanceModeSettings.vue create mode 100644 apps/app-frontend/src/components/instance/ModManagementSwitch.vue create mode 100644 apps/app-frontend/src/composables/useInstanceMode.ts create mode 100644 apps/app-frontend/src/helpers/hosted-packs.ts create mode 100644 packages/app-lib/src/api/pack/hosted.rs create mode 100644 standards/hosted-modpacks.md diff --git a/apps/app-frontend/src/components/instance/HostedModpacks.vue b/apps/app-frontend/src/components/instance/HostedModpacks.vue new file mode 100644 index 0000000..3ed031f --- /dev/null +++ b/apps/app-frontend/src/components/instance/HostedModpacks.vue @@ -0,0 +1,214 @@ + + diff --git a/apps/app-frontend/src/components/instance/InstanceModeOptions.vue b/apps/app-frontend/src/components/instance/InstanceModeOptions.vue new file mode 100644 index 0000000..274ee2e --- /dev/null +++ b/apps/app-frontend/src/components/instance/InstanceModeOptions.vue @@ -0,0 +1,59 @@ + + diff --git a/apps/app-frontend/src/components/instance/InstanceModeSettings.vue b/apps/app-frontend/src/components/instance/InstanceModeSettings.vue new file mode 100644 index 0000000..737f7b3 --- /dev/null +++ b/apps/app-frontend/src/components/instance/InstanceModeSettings.vue @@ -0,0 +1,64 @@ + + diff --git a/apps/app-frontend/src/components/instance/ModManagementSwitch.vue b/apps/app-frontend/src/components/instance/ModManagementSwitch.vue new file mode 100644 index 0000000..895b6a8 --- /dev/null +++ b/apps/app-frontend/src/components/instance/ModManagementSwitch.vue @@ -0,0 +1,73 @@ + + + diff --git a/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue b/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue index 7561487..7159ab6 100644 --- a/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue +++ b/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue @@ -17,6 +17,7 @@ import { computed, type Ref, ref, watch } from 'vue' import { useRouter } from 'vue-router' import InstanceIcon from '@/components/ui/InstanceIcon.vue' +import InstanceModeSettings from '@/components/instance/InstanceModeSettings.vue' import ConfirmDeleteInstanceModal from '@/components/ui/modal/ConfirmDeleteInstanceModal.vue' import { install_duplicate_instance } from '@/helpers/install' import { edit, edit_icon, get_full_path, remove } from '@/helpers/instance' @@ -379,6 +380,7 @@ const messages = defineMessages({