From 47aeca9b2070819fad702a68fac20cfd7537c725 Mon Sep 17 00:00:00 2001 From: Felitendo Date: Tue, 29 Sep 2026 09:14:48 +0200 Subject: [PATCH] build: rebase patches onto v0.21.6 --- ...-Rename-the-app-to-Modrinth-Enhanced.patch | 2 +- ...ove-advertising-and-Modrinth-upsells.patch | 8 +- patches/0003-Remove-telemetry.patch | 8 +- patches/0004-Add-offline-accounts.patch | 10 +- patches/0005-Make-the-sidebars-foldable.patch | 91 +- patches/0006-Add-Ely.by-accounts.patch | 6 +- ...icrosoft-in-the-player-s-own-browser.patch | 2 +- ...08-Round-the-window-corners-on-Linux.patch | 2 +- ...-Scroll-with-the-middle-mouse-button.patch | 2 +- ...nage-Ely.by-skins-from-the-skin-page.patch | 2 +- ...ery-player-s-skin-on-offline-servers.patch | 44 +- ...ng-instance-again-on-another-account.patch | 46 +- ...hat-went-wrong-when-the-game-crashed.patch | 2 +- ...m-Ely.by-NameMC-laby.net-and-crafty..patch | 2 +- ...-in-the-title-bar-when-the-sidebar-i.patch | 4 +- ...rom-Modrinth-Enhanced-s-own-releases.patch | 6 +- ...-from-other-authlib-injector-servers.patch | 8 +- ...-in-to-custom-servers-in-the-browser.patch | 2 +- ...023-Browse-LittleSkin-s-skin-library.patch | 2 +- ...chers-instances-can-be-imported-from.patch | 6 +- patches/0025-Arrange-the-left-sidebar.patch | 12 +- ...-group-from-the-library-s-free-space.patch | 4 +- ...in-the-language-the-system-is-set-to.patch | 4 +- ...anslate-Modrinth-Enhanced-s-own-text.patch | 926 ++++++++++-------- ...n-menu-off-the-interface-s-own-image.patch | 4 +- ...game-while-another-instance-is-runni.patch | 19 +- ...translations-off-the-text-this-fork-.patch | 102 +- patches/base.txt | 2 +- upstream.txt | 2 +- 29 files changed, 733 insertions(+), 597 deletions(-) diff --git a/patches/0001-Rename-the-app-to-Modrinth-Enhanced.patch b/patches/0001-Rename-the-app-to-Modrinth-Enhanced.patch index 573d1e6..4209189 100644 --- a/patches/0001-Rename-the-app-to-Modrinth-Enhanced.patch +++ b/patches/0001-Rename-the-app-to-Modrinth-Enhanced.patch @@ -49,7 +49,7 @@ index 5f863d5..32a86a3 100644 macos: { id: 'app.settings.operating-system.macos', diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json -index 09f98ec..b03a35d 100644 +index 8f3a5d0..721dd32 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -1626,7 +1626,7 @@ diff --git a/patches/0002-Remove-advertising-and-Modrinth-upsells.patch b/patches/0002-Remove-advertising-and-Modrinth-upsells.patch index aa96e6d..1240071 100644 --- a/patches/0002-Remove-advertising-and-Modrinth-upsells.patch +++ b/patches/0002-Remove-advertising-and-Modrinth-upsells.patch @@ -27,7 +27,7 @@ ads and these prompts were shown, and nothing more. 2 files changed, 29 insertions(+), 91 deletions(-) diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index 5faea7c..447f636 100644 +index 564be92..4cd09f9 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -9,7 +9,6 @@ import { @@ -102,7 +102,7 @@ index 5faea7c..447f636 100644 news: { id: 'app.news.title', defaultMessage: 'News', -@@ -1529,16 +1513,6 @@ const modrinthAccountMenuOptions = computed(() => [ +@@ -1548,16 +1532,6 @@ const modrinthAccountMenuOptions = computed(() => [ icon: UserIcon, action: () => router.push(`/user/${encodeURIComponent(credentials.value.user.username)}`), }, @@ -119,7 +119,7 @@ index 5faea7c..447f636 100644 { id: 'add-friend', label: formatMessage(messages.addFriend), -@@ -2484,13 +2458,11 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2503,13 +2477,11 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
diff --git a/patches/0003-Remove-telemetry.patch b/patches/0003-Remove-telemetry.patch index 0c310d0..c9f68d9 100644 --- a/patches/0003-Remove-telemetry.patch +++ b/patches/0003-Remove-telemetry.patch @@ -108,7 +108,7 @@ index 8773f8f..d31e8c5 100644
diff --git a/apps/app-frontend/src/helpers/analytics.ts b/apps/app-frontend/src/helpers/analytics.ts -index b3d2c0a..c9f4846 100644 +index 6118ac3..5ba7d5d 100644 --- a/apps/app-frontend/src/helpers/analytics.ts +++ b/apps/app-frontend/src/helpers/analytics.ts @@ -1,4 +1,16 @@ @@ -129,7 +129,7 @@ index b3d2c0a..c9f4846 100644 interface InstanceProperties { loader: string -@@ -43,72 +55,13 @@ type AnalyticsEventMap = { +@@ -42,72 +54,13 @@ type AnalyticsEventMap = { export type AnalyticsEvent = keyof AnalyticsEventMap @@ -206,7 +206,7 @@ index b3d2c0a..c9f4846 100644 type OptionalArgs = Record extends T ? [properties?: T] : [properties: T] -@@ -116,10 +69,6 @@ export const trackEvent = ( +@@ -115,10 +68,6 @@ export const trackEvent = ( eventName: E, ...args: OptionalArgs ) => { @@ -302,7 +302,7 @@ index bb20aa9..46a9749 100644 + void router } diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json -index b03a35d..2a589bd 100644 +index 721dd32..6c48b86 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -2745,7 +2745,7 @@ diff --git a/patches/0004-Add-offline-accounts.patch b/patches/0004-Add-offline-accounts.patch index 4be3930..dfa8ff1 100644 --- a/patches/0004-Add-offline-accounts.patch +++ b/patches/0004-Add-offline-accounts.patch @@ -50,10 +50,10 @@ which offered Microsoft and nothing else: create mode 100644 apps/app-frontend/src/components/ui/OfflineAccountModal.vue diff --git a/Cargo.lock b/Cargo.lock -index 28231e3..f94d0fe 100644 +index a3ffa8f..e17ace5 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -12361,6 +12361,7 @@ dependencies = [ +@@ -12376,6 +12376,7 @@ dependencies = [ "indicatif", "itertools 0.14.0", "json5", @@ -62,10 +62,10 @@ index 28231e3..f94d0fe 100644 "notify", "notify-debouncer-mini", diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index 447f636..d750a5f 100644 +index 4cd09f9..c5d4703 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue -@@ -2467,15 +2467,17 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2486,15 +2486,17 @@ provideAppUpdateDownloadProgress(appUpdateDownload) > } diff --git a/apps/app/build.rs b/apps/app/build.rs -index 926cab4..68a02aa 100644 +index 653f423..7806b4b 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -14,6 +14,7 @@ fn main() { diff --git a/patches/0005-Make-the-sidebars-foldable.patch b/patches/0005-Make-the-sidebars-foldable.patch index 69731c4..df59e22 100644 --- a/patches/0005-Make-the-sidebars-foldable.patch +++ b/patches/0005-Make-the-sidebars-foldable.patch @@ -32,13 +32,13 @@ bar button - so nothing there promises anything. --- apps/app-frontend/src/App.vue | 180 ++++++++++++++++-- .../ui/settings/display/BehaviorSettings.vue | 18 -- - .../ui/settings/display/FeaturesSettings.vue | 28 +++ + .../ui/settings/display/FeaturesSettings.vue | 38 +++- .../src/composables/use-app-settings.ts | 4 + packages/app-lib/src/state/settings.rs | 4 + - 5 files changed, 201 insertions(+), 33 deletions(-) + 5 files changed, 210 insertions(+), 34 deletions(-) diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index d750a5f..76da736 100644 +index c5d4703..f9dd80a 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -10,6 +10,8 @@ import { @@ -160,7 +160,7 @@ index d750a5f..76da736 100644 updateDownloadMissingVersion: { id: 'app.update.download-error.missing-version', defaultMessage: 'Failed to download update: no version available', -@@ -2252,6 +2320,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2271,6 +2339,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
@@ -220,7 +220,7 @@ index d750a5f..76da736 100644
-@@ -2502,10 +2597,18 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2521,10 +2616,18 @@ provideAppUpdateDownloadProgress(appUpdateDownload) class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid" />
@@ -242,7 +242,7 @@ index d750a5f..76da736 100644 @@ -264,7 +264,7 @@ index d750a5f..76da736 100644 -@@ -2743,6 +2861,38 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2762,6 +2880,38 @@ provideAppUpdateDownloadProgress(appUpdateDownload) display: contents; } @@ -304,10 +304,10 @@ index d750a5f..76da736 100644 .nav-button-animated-enter-active { transition: all 0.5s cubic-bezier(0.15, 1.4, 0.64, 0.96); diff --git a/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue b/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue -index 55622d7..6c6ba20 100644 +index db502ad..c433de6 100644 --- a/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue -@@ -80,14 +80,6 @@ const messages = defineMessages({ +@@ -79,14 +79,6 @@ const messages = defineMessages({ id: 'app.appearance-settings.default-landing-page.library', defaultMessage: 'Library', }, @@ -322,9 +322,9 @@ index 55622d7..6c6ba20 100644 compactModeTitle: { id: 'app.appearance-settings.compact-mode.title', defaultMessage: 'Compact mode', -@@ -288,16 +280,6 @@ onBeforeUnmount(() => { -
- +@@ -298,16 +290,6 @@ onBeforeUnmount(() => { + aria-describedby="refocus-on-game-close-description" + />
- -
@@ -340,18 +340,32 @@ index 55622d7..6c6ba20 100644
diff --git a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue -index 1d3e379..ae88550 100644 +index 6ba67a9..2edfeb8 100644 --- a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue -@@ -43,6 +43,7 @@ const quickInstances = useQuickInstanceLimit() +@@ -12,7 +12,11 @@ import { + import { useMutation, useQuery, useQueryClient } from '@tanstack/vue-query' + import { inject, onBeforeUnmount, onMounted } from 'vue' + +-import { useAppSettings } from '@/composables/use-app-settings.ts' ++import { ++ DEFAULT_FEATURE_FLAGS, ++ type FeatureFlag, ++ useAppSettings, ++} from '@/composables/use-app-settings.ts' + import { + QUICK_INSTANCE_LIMIT_MAX, + useQuickInstanceLimit, +@@ -38,6 +42,8 @@ const settingsModal = inject(appSettingsModalContextKey, null) + const quickInstances = useQuickInstanceLimit() const queryClient = useQueryClient() - const showJumpInFlag: FeatureFlag = 'worlds_in_home' +const showHostingFlag: FeatureFlag = 'show_hosting_in_sidebar' - ++ const messages = defineMessages({ syncAcrossDevicesTitle: { -@@ -95,6 +96,15 @@ const messages = defineMessages({ + id: 'app.features-settings.sync-across-devices.title', +@@ -89,6 +95,15 @@ const messages = defineMessages({ id: 'app.features-settings.show-skin-selector.description', defaultMessage: 'Show a button in the left sidebar to open the skin selector.', }, @@ -367,7 +381,7 @@ index 1d3e379..ae88550 100644 quickInstancesTitle: { id: 'app.features-settings.quick-instances.title', defaultMessage: 'Quick instances in sidebar', -@@ -125,6 +135,7 @@ type FeaturesSettingsState = { +@@ -119,6 +134,7 @@ type FeaturesSettingsState = { showScreenshotsTab: boolean showAllScreenshots: boolean showSkinSelector: boolean @@ -375,31 +389,34 @@ index 1d3e379..ae88550 100644 quickInstanceCount: number showJumpIn: boolean } -@@ -144,6 +155,7 @@ function getFeaturesSettingsState( +@@ -138,6 +154,7 @@ function getFeaturesSettingsState( showScreenshotsTab: settings.show_screenshots_tab_in_instances, showAllScreenshots: globalSyncedOptions.screenshots, showSkinSelector: settings.show_skin_selector_in_sidebar, + showHosting: settings.feature_flags[showHostingFlag] ?? DEFAULT_FEATURE_FLAGS[showHostingFlag], quickInstanceCount: quickInstances.limit.value ?? QUICK_INSTANCE_LIMIT_MAX, - showJumpIn: settings.feature_flags[showJumpInFlag] ?? DEFAULT_FEATURE_FLAGS[showJumpInFlag], + showJumpIn: settings.show_jump_in, } -@@ -184,6 +196,7 @@ const settingsMutation = useMutation({ - feature_flags: { - ...latestSettings.feature_flags, - [showJumpInFlag]: value.showJumpIn, +@@ -176,6 +193,10 @@ const settingsMutation = useMutation({ + show_screenshots_tab_in_instances: value.showScreenshotsTab, + show_skin_selector_in_sidebar: value.showSkinSelector, + show_jump_in: value.showJumpIn, ++ feature_flags: { ++ ...latestSettings.feature_flags, + [showHostingFlag]: value.showHosting, - }, ++ }, } -@@ -206,6 +219,7 @@ const settingsMutation = useMutation({ + const screenshotsChanged = +@@ -197,6 +218,7 @@ const settingsMutation = useMutation({ appSettings.showScreenshotsTabInInstances = value.showScreenshotsTab appSettings.showSkinSelectorInSidebar = value.showSkinSelector - appSettings.featureFlags[showJumpInFlag] = value.showJumpIn + appSettings.showJumpIn = value.showJumpIn + appSettings.featureFlags[showHostingFlag] = value.showHosting if (updateQuickInstanceCount) { quickInstances.setLimit(value.quickInstanceCount) -@@ -366,6 +380,20 @@ onBeforeUnmount(() => { +@@ -357,6 +379,20 @@ onBeforeUnmount(() => { /> @@ -421,12 +438,12 @@ index 1d3e379..ae88550 100644

{{ formatMessage(messages.quickInstancesTitle) }} diff --git a/apps/app-frontend/src/composables/use-app-settings.ts b/apps/app-frontend/src/composables/use-app-settings.ts -index 0d58903..28c78c3 100644 +index dceec83..bce1f20 100644 --- a/apps/app-frontend/src/composables/use-app-settings.ts +++ b/apps/app-frontend/src/composables/use-app-settings.ts -@@ -24,6 +24,10 @@ export const DEFAULT_FEATURE_FLAGS = { - friends_pending_collapsed: true, - dismissed_photosensitivity_filter_warning: false, +@@ -11,6 +11,10 @@ export const DEFAULT_FEATURE_FLAGS = { + pride_fundraiser: true, + i18n_debug: false, localhost_sign_in: false, + show_hosting_in_sidebar: true, + news_collapsed: false, @@ -436,12 +453,12 @@ index 0d58903..28c78c3 100644 export type FeatureFlag = keyof typeof DEFAULT_FEATURE_FLAGS diff --git a/packages/app-lib/src/state/settings.rs b/packages/app-lib/src/state/settings.rs -index 20601b8..b5f2ec6 100644 +index 47490ad..7797e78 100644 --- a/packages/app-lib/src/state/settings.rs +++ b/packages/app-lib/src/state/settings.rs -@@ -88,6 +88,10 @@ pub enum FeatureFlag { - FriendsPendingCollapsed, - DismissedPhotosensitivityFilterWarning, +@@ -104,6 +104,10 @@ pub enum FeatureFlag { + ServerProjectQa, + I18nDebug, LocalhostSignIn, + ShowHostingInSidebar, + NewsCollapsed, diff --git a/patches/0006-Add-Ely.by-accounts.patch b/patches/0006-Add-Ely.by-accounts.patch index 2119577..511364e 100644 --- a/patches/0006-Add-Ely.by-accounts.patch +++ b/patches/0006-Add-Ely.by-accounts.patch @@ -403,7 +403,7 @@ index cb7319a..57580ff 100644 * Retrieves the default user * @return {Promise} diff --git a/apps/app/build.rs b/apps/app/build.rs -index 68a02aa..0f62dd8 100644 +index 7806b4b..24db197 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -15,6 +15,7 @@ fn main() { @@ -488,10 +488,10 @@ index a7fac4a..2d18da3 100644 pub async fn get_default_user() -> crate::Result> { let state = State::get().await?; diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs -index 17d20af..93cfd20 100644 +index 0d5c08d..fd11a46 100644 --- a/packages/app-lib/src/launcher/mod.rs +++ b/packages/app-lib/src/launcher/mod.rs -@@ -1072,6 +1072,22 @@ pub async fn launch_minecraft( +@@ -1133,6 +1133,22 @@ pub async fn launch_minecraft( command.arg("--add-opens=jdk.internal/jdk.internal.misc=ALL-UNNAMED"); } diff --git a/patches/0007-Sign-in-to-Microsoft-in-the-player-s-own-browser.patch b/patches/0007-Sign-in-to-Microsoft-in-the-player-s-own-browser.patch index 729afca..987f375 100644 --- a/patches/0007-Sign-in-to-Microsoft-in-the-player-s-own-browser.patch +++ b/patches/0007-Sign-in-to-Microsoft-in-the-player-s-own-browser.patch @@ -420,7 +420,7 @@ index 57580ff..9b2408e 100644 * Adds an offline account with the given username and makes it the active one. * diff --git a/apps/app/build.rs b/apps/app/build.rs -index 0f62dd8..919c91a 100644 +index 24db197..3dbf3dc 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -14,6 +14,8 @@ fn main() { diff --git a/patches/0008-Round-the-window-corners-on-Linux.patch b/patches/0008-Round-the-window-corners-on-Linux.patch index ad9cb91..e5b3b2d 100644 --- a/patches/0008-Round-the-window-corners-on-Linux.patch +++ b/patches/0008-Round-the-window-corners-on-Linux.patch @@ -11,7 +11,7 @@ Subject: [PATCH] Round the window corners on Linux 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index 76da736..dcae1f1 100644 +index f9dd80a..288549d 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -543,6 +543,16 @@ watch([os, isFullscreen], ([osName, fullscreen]) => { diff --git a/patches/0009-Scroll-with-the-middle-mouse-button.patch b/patches/0009-Scroll-with-the-middle-mouse-button.patch index 0b600e4..174b99c 100644 --- a/patches/0009-Scroll-with-the-middle-mouse-button.patch +++ b/patches/0009-Scroll-with-the-middle-mouse-button.patch @@ -11,7 +11,7 @@ Subject: [PATCH] Scroll with the middle mouse button create mode 100644 apps/app-frontend/src/helpers/autoscroll.ts diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index dcae1f1..e18904b 100644 +index 288549d..4283ebd 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -126,6 +126,7 @@ import { diff --git a/patches/0010-Manage-Ely.by-skins-from-the-skin-page.patch b/patches/0010-Manage-Ely.by-skins-from-the-skin-page.patch index d1ec0c5..18b6549 100644 --- a/patches/0010-Manage-Ely.by-skins-from-the-skin-page.patch +++ b/patches/0010-Manage-Ely.by-skins-from-the-skin-page.patch @@ -844,7 +844,7 @@ index 8240b8b..bcd79ec 100644
{ +@@ -412,6 +447,40 @@ onBeforeUnmount(() => {
@@ -187,10 +187,10 @@ index ae88550..9a9e8ef 100644

{{ formatMessage(messages.playPageTitle) }} diff --git a/apps/app-frontend/src/composables/use-app-settings.ts b/apps/app-frontend/src/composables/use-app-settings.ts -index 28c78c3..e0c0a89 100644 +index bce1f20..8d6e6f7 100644 --- a/apps/app-frontend/src/composables/use-app-settings.ts +++ b/apps/app-frontend/src/composables/use-app-settings.ts -@@ -28,6 +28,7 @@ export const DEFAULT_FEATURE_FLAGS = { +@@ -15,6 +15,7 @@ export const DEFAULT_FEATURE_FLAGS = { news_collapsed: false, sidebar_fold_explained: false, right_sidebar_collapsed: false, @@ -214,10 +214,10 @@ index f6e99d3..f06e812 100644 export async function showInstanceInFolder(instanceId) { const fullPath = await get_full_path(instanceId) diff --git a/apps/app/build.rs b/apps/app/build.rs -index 1e44522..f5af028 100644 +index c1f27a4..ab19b6c 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs -@@ -399,6 +399,7 @@ fn main() { +@@ -400,6 +400,7 @@ fn main() { "open_path", "show_launcher_logs_folder", "show_app_db_backups_folder", @@ -2493,10 +2493,10 @@ index a482f66..76bedc7 100644 if !arg.is_empty() { parsed_arguments.push(arg); diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs -index 93cfd20..5378b99 100644 +index fd11a46..ed4c789 100644 --- a/packages/app-lib/src/launcher/mod.rs +++ b/packages/app-lib/src/launcher/mod.rs -@@ -1031,6 +1031,28 @@ pub async fn launch_minecraft( +@@ -1092,6 +1092,28 @@ pub async fn launch_minecraft( let rpc_server = RpcServerBuilder::new().launch().await?; @@ -2525,7 +2525,7 @@ index 93cfd20..5378b99 100644 command.args( args::get_jvm_arguments( args.get(&d::minecraft::ArgumentType::Jvm) -@@ -1057,6 +1079,7 @@ pub async fn launch_minecraft( +@@ -1118,6 +1140,7 @@ pub async fn launch_minecraft( .as_ref() .and_then(|x| x.get(&LoggingSide::Client)), rpc_server.address(), @@ -2560,7 +2560,7 @@ index b4fb7e2..fe37974 100644 #[inline] pub fn instance_logs_dir(&self, instance_path: &str) -> PathBuf { diff --git a/packages/app-lib/src/state/dirs/move_app_directory.rs b/packages/app-lib/src/state/dirs/move_app_directory.rs -index 7418675..a25a7fd 100644 +index 3d0abc7..352336d 100644 --- a/packages/app-lib/src/state/dirs/move_app_directory.rs +++ b/packages/app-lib/src/state/dirs/move_app_directory.rs @@ -11,13 +11,14 @@ use sqlx::SqlitePool; @@ -2580,10 +2580,10 @@ index 7418675..a25a7fd 100644 pub(crate) async fn relocate_tree(from: &Path, to: &Path) -> crate::Result<()> { if !fs::try_exists(from).await? { diff --git a/packages/app-lib/src/state/settings.rs b/packages/app-lib/src/state/settings.rs -index b5f2ec6..69fc7ff 100644 +index 7797e78..2a86714 100644 --- a/packages/app-lib/src/state/settings.rs +++ b/packages/app-lib/src/state/settings.rs -@@ -92,6 +92,7 @@ pub enum FeatureFlag { +@@ -108,6 +108,7 @@ pub enum FeatureFlag { NewsCollapsed, SidebarFoldExplained, RightSidebarCollapsed, diff --git a/patches/0012-Launch-a-running-instance-again-on-another-account.patch b/patches/0012-Launch-a-running-instance-again-on-another-account.patch index e17e9c2..fd2a3b3 100644 --- a/patches/0012-Launch-a-running-instance-again-on-another-account.patch +++ b/patches/0012-Launch-a-running-instance-again-on-another-account.patch @@ -206,10 +206,10 @@ index 977bf82..c390c4c 100644 + */ +process_uuid: string, } & ({ "type": "log4j" } & Log4jEvent | { "type": "legacy", message: string, }); diff --git a/apps/app-frontend/src/generated/app-events/postcard/index.d.ts b/apps/app-frontend/src/generated/app-events/postcard/index.d.ts -index e763358..149f9ef 100644 +index 9fd4962..8f632c9 100644 --- a/apps/app-frontend/src/generated/app-events/postcard/index.d.ts +++ b/apps/app-frontend/src/generated/app-events/postcard/index.d.ts -@@ -50,7 +50,7 @@ export type FriendPayload = { tag: "friend_request", value: { from: string } } | +@@ -48,7 +48,7 @@ export type FriendPayload = { tag: "friend_request", value: { from: string } } | export type FriendStatusPayload = { user_id: string, profile_name: string | undefined, last_update: string } export type SharedInstanceUnavailableReason = { tag: "deleted" } | { tag: "access_revoked" } | { tag: "quarantined" } export type LogEvent = { tag: "log4j", value: Log4jEvent } | { tag: "legacy", value: { message: string } } @@ -219,10 +219,10 @@ index e763358..149f9ef 100644 export type Log4jEvent = { timestamp_millis: i64 | undefined, logger_name: string | undefined, level: string | undefined, thread_name: string | undefined, message: string | undefined, throwable: string | undefined } export type ModLoader = { tag: "vanilla" } | { tag: "forge" } | { tag: "fabric" } | { tag: "quilt" } | { tag: "neoforge" } diff --git a/apps/app-frontend/src/generated/app-events/postcard/index.js b/apps/app-frontend/src/generated/app-events/postcard/index.js -index 2407d7d..1b343a0 100644 +index 1393f04..e69e456 100644 --- a/apps/app-frontend/src/generated/app-events/postcard/index.js +++ b/apps/app-frontend/src/generated/app-events/postcard/index.js -@@ -475,6 +475,7 @@ function deserialize_LOG_EVENT(d) { +@@ -434,6 +434,7 @@ function deserialize_LOG_EVENT(d) { function deserialize_LOG_PAYLOAD(d) { return { instance_id: d.deserialize_string(), @@ -231,7 +231,7 @@ index 2407d7d..1b343a0 100644 }; } diff --git a/apps/app-frontend/src/helpers/instance.ts b/apps/app-frontend/src/helpers/instance.ts -index a0c0b56..817a63c 100644 +index 46de853..c0162e2 100644 --- a/apps/app-frontend/src/helpers/instance.ts +++ b/apps/app-frontend/src/helpers/instance.ts @@ -601,11 +601,13 @@ export async function get_pack_export_candidates( @@ -311,7 +311,7 @@ index ce4b436..31a6ded 100644 settings: [] openFolder: [] diff --git a/apps/app-frontend/src/pages/instance/layout.vue b/apps/app-frontend/src/pages/instance/layout.vue -index 7ec73ca..fcd5802 100644 +index 441dafe..3f8af81 100644 --- a/apps/app-frontend/src/pages/instance/layout.vue +++ b/apps/app-frontend/src/pages/instance/layout.vue @@ -46,6 +46,7 @@ @@ -322,7 +322,7 @@ index 7ec73ca..fcd5802 100644 @play-server="() => handlePlayServer()" @settings="() => settingsModal?.show()" @open-folder="() => instance && showInstanceInFolder(instance.id)" -@@ -558,6 +559,30 @@ const launchInstance = async (context: string) => { +@@ -595,6 +596,30 @@ const launchInstance = async (context: string) => { }) } @@ -427,10 +427,10 @@ index 2aacfe0..e2a59fd 100644 liveConsole.clear() invalidate() diff --git a/apps/app-frontend/src/providers/setup/app-event-codec.ts b/apps/app-frontend/src/providers/setup/app-event-codec.ts -index 638386d..3cccc8a 100644 +index c0eb80e..b9d5eeb 100644 --- a/apps/app-frontend/src/providers/setup/app-event-codec.ts +++ b/apps/app-frontend/src/providers/setup/app-event-codec.ts -@@ -122,7 +122,7 @@ function normalizeLogPayload(value: unknown): WireObject { +@@ -112,7 +112,7 @@ function normalizeLogPayload(value: unknown): WireObject { event.timestamp_millis = number(event.timestamp_millis) } @@ -440,7 +440,7 @@ index 638386d..3cccc8a 100644 function normalizeInstallProgress(value: unknown): WireObject { diff --git a/apps/app/build.rs b/apps/app/build.rs -index f5af028..f98395e 100644 +index ab19b6c..8aff73d 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -110,7 +110,9 @@ fn main() { @@ -454,10 +454,10 @@ index f5af028..f98395e 100644 .default_permission( DefaultPermissionRule::AllowAllCommands, diff --git a/apps/app/src/api/instance.rs b/apps/app/src/api/instance.rs -index 2861594..2a512dd 100644 +index e0ba5c2..09534e2 100644 --- a/apps/app/src/api/instance.rs +++ b/apps/app/src/api/instance.rs -@@ -1324,12 +1324,19 @@ pub async fn instance_get_pack_export_candidates( +@@ -1323,12 +1323,19 @@ pub async fn instance_get_pack_export_candidates( pub async fn instance_run( instance_id: &str, server_address: Option, @@ -520,11 +520,11 @@ index e938efa..5150b00 100644 + Ok(()) +} diff --git a/packages/app-lib/src/api/instance.rs b/packages/app-lib/src/api/instance.rs -index 8a0040f..46cc47a 100644 +index 9f7b215..d750bdf 100644 --- a/packages/app-lib/src/api/instance.rs +++ b/packages/app-lib/src/api/instance.rs -@@ -59,7 +59,8 @@ pub use self::projects::{ - update_managed_modrinth_version, update_project, +@@ -58,7 +58,8 @@ pub use self::projects::{ + toggle_disable_project, update_managed_modrinth_version, update_project, }; pub use self::run::{ - QuickPlayType, kill, run, try_update_playtime_by_instance_id, @@ -636,10 +636,10 @@ index 4ce0c57..3382b5b 100644 #[tracing::instrument] diff --git a/packages/app-lib/src/event/mod.rs b/packages/app-lib/src/event/mod.rs -index 833349d..84b9a87 100644 +index 722d94f..d3a597a 100644 --- a/packages/app-lib/src/event/mod.rs +++ b/packages/app-lib/src/event/mod.rs -@@ -559,6 +559,8 @@ mod log_types { +@@ -527,6 +527,8 @@ mod log_types { #[serde_binhum::serde_binhum] pub struct LogPayload { pub instance_id: String, @@ -649,10 +649,10 @@ index 833349d..84b9a87 100644 #[cfg_attr(feature = "export-ts", ts(flatten))] pub event: LogEvent, diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs -index 5378b99..4199bff 100644 +index ed4c789..3a81499 100644 --- a/packages/app-lib/src/launcher/mod.rs +++ b/packages/app-lib/src/launcher/mod.rs -@@ -825,6 +825,9 @@ pub async fn launch_minecraft( +@@ -886,6 +886,9 @@ pub async fn launch_minecraft( post_exit_hook: Option, context: &InstanceLaunchContext, mut quick_play_type: QuickPlayType, @@ -662,7 +662,7 @@ index 5378b99..4199bff 100644 ) -> crate::Result { let instance = &context.instance; let content_set = &context.applied_content_set; -@@ -954,21 +957,27 @@ pub async fn launch_minecraft( +@@ -1015,21 +1018,27 @@ pub async fn launch_minecraft( let env_args = Vec::from(env_args); @@ -705,7 +705,7 @@ index 5378b99..4199bff 100644 } if let Some(path) = download::missing_runtime_file( -@@ -1178,7 +1187,10 @@ pub async fn launch_minecraft( +@@ -1239,7 +1248,10 @@ pub async fn launch_minecraft( let _store_lease = state.content_store.lease().await; state.content_store.recover(Some(&instance.id)).await?; // state.content_store.validate_instance(instance).await?; @@ -717,7 +717,7 @@ index 5378b99..4199bff 100644 return Err(crate::ErrorKind::LauncherError(format!( "Instance {} is already running", instance.id -@@ -1225,6 +1237,8 @@ pub async fn launch_minecraft( +@@ -1286,6 +1298,8 @@ pub async fn launch_minecraft( &instance.id, &instance.path, &instance.name, @@ -727,7 +727,7 @@ index 5378b99..4199bff 100644 post_exit_hook, env_args, diff --git a/packages/app-lib/src/state/process.rs b/packages/app-lib/src/state/process.rs -index fb09842..e9aaa3a 100644 +index 45471b9..4c9ea57 100644 --- a/packages/app-lib/src/state/process.rs +++ b/packages/app-lib/src/state/process.rs @@ -47,37 +47,74 @@ impl LogRingBuffer { diff --git a/patches/0013-Explain-what-went-wrong-when-the-game-crashed.patch b/patches/0013-Explain-what-went-wrong-when-the-game-crashed.patch index 56f0a37..334cde7 100644 --- a/patches/0013-Explain-what-went-wrong-when-the-game-crashed.patch +++ b/patches/0013-Explain-what-went-wrong-when-the-game-crashed.patch @@ -880,7 +880,7 @@ index e2a59fd..4fcddea 100644 }) diff --git a/apps/app/build.rs b/apps/app/build.rs -index f98395e..0fb53a5 100644 +index 8aff73d..85bd5b8 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -44,6 +44,17 @@ fn main() { diff --git a/patches/0014-Browse-skins-from-Ely.by-NameMC-laby.net-and-crafty..patch b/patches/0014-Browse-skins-from-Ely.by-NameMC-laby.net-and-crafty..patch index 2f024ef..c84efbd 100644 --- a/patches/0014-Browse-skins-from-Ely.by-NameMC-laby.net-and-crafty..patch +++ b/patches/0014-Browse-skins-from-Ely.by-NameMC-laby.net-and-crafty..patch @@ -976,7 +976,7 @@ index bcd79ec..9a10f0e 100644

diff --git a/apps/app/build.rs b/apps/app/build.rs -index 0fb53a5..f01ba91 100644 +index 85bd5b8..2c8f2b9 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -44,6 +44,19 @@ fn main() { diff --git a/patches/0016-Show-the-account-in-the-title-bar-when-the-sidebar-i.patch b/patches/0016-Show-the-account-in-the-title-bar-when-the-sidebar-i.patch index 7436c7e..e299241 100644 --- a/patches/0016-Show-the-account-in-the-title-bar-when-the-sidebar-i.patch +++ b/patches/0016-Show-the-account-in-the-title-bar-when-the-sidebar-i.patch @@ -22,7 +22,7 @@ menu closing. create mode 100644 apps/app-frontend/src/components/ui/TitleBarAccountSwitcher.vue diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index e18904b..4d95408 100644 +index 4283ebd..0a55cb4 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -79,6 +79,7 @@ import { computed, nextTick, onMounted, onUnmounted, provide, ref, watch } from @@ -33,7 +33,7 @@ index e18904b..4d95408 100644 import AppActionBar from '@/components/ui/AppActionBar.vue' import Breadcrumbs from '@/components/ui/Breadcrumbs.vue' import ErrorModal from '@/components/ui/ErrorModal.vue' -@@ -2505,6 +2506,13 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2524,6 +2525,13 @@ provideAppUpdateDownloadProgress(appUpdateDownload) diff --git a/patches/0018-Update-from-Modrinth-Enhanced-s-own-releases.patch b/patches/0018-Update-from-Modrinth-Enhanced-s-own-releases.patch index ce50442..18a95d6 100644 --- a/patches/0018-Update-from-Modrinth-Enhanced-s-own-releases.patch +++ b/patches/0018-Update-from-Modrinth-Enhanced-s-own-releases.patch @@ -19,10 +19,10 @@ get a notice with a button to the release on GitHub. 3 files changed, 76 insertions(+), 21 deletions(-) diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index 4d95408..6539d4a 100644 +index 0a55cb4..9679884 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue -@@ -1884,9 +1884,13 @@ const updatePopupMessages = defineMessages({ +@@ -1903,9 +1903,13 @@ const updatePopupMessages = defineMessages({ defaultMessage: `Modrinth App v{version} has finished downloading. Reload to update now, or automatically when you close Modrinth App.`, }, linuxBody: { @@ -38,7 +38,7 @@ index 4d95408..6539d4a 100644 }, reload: { id: 'app.update-popup.reload', -@@ -2061,28 +2065,47 @@ async function checkUpdates() { +@@ -2080,28 +2084,47 @@ async function checkUpdates() { ) } diff --git a/patches/0019-Add-accounts-from-other-authlib-injector-servers.patch b/patches/0019-Add-accounts-from-other-authlib-injector-servers.patch index 9e50aa6..61b2923 100644 --- a/patches/0019-Add-accounts-from-other-authlib-injector-servers.patch +++ b/patches/0019-Add-accounts-from-other-authlib-injector-servers.patch @@ -847,7 +847,7 @@ index 9b2408e..f4d24a1 100644 * Retrieves the default user * @return {Promise} diff --git a/apps/app/build.rs b/apps/app/build.rs -index f01ba91..94f7a8e 100644 +index 2c8f2b9..3726ef5 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -18,6 +18,8 @@ fn main() { @@ -1014,10 +1014,10 @@ index fba473f..fe95027 100644 #[tracing::instrument] diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs -index 4199bff..7b648b7 100644 +index 3a81499..9b40d34 100644 --- a/packages/app-lib/src/launcher/mod.rs +++ b/packages/app-lib/src/launcher/mod.rs -@@ -1104,10 +1104,11 @@ pub async fn launch_minecraft( +@@ -1165,10 +1165,11 @@ pub async fn launch_minecraft( command.arg("--add-opens=jdk.internal/jdk.internal.misc=ALL-UNNAMED"); } @@ -1033,7 +1033,7 @@ index 4199bff..7b648b7 100644 let injector = crate::util::authlib_injector::get_authlib_injector( &state.directories, ) -@@ -1116,7 +1117,7 @@ pub async fn launch_minecraft( +@@ -1177,7 +1178,7 @@ pub async fn launch_minecraft( command.arg(format!( "-javaagent:{}={}", injector.to_string_lossy(), diff --git a/patches/0022-Sign-in-to-custom-servers-in-the-browser.patch b/patches/0022-Sign-in-to-custom-servers-in-the-browser.patch index d151b8e..917e267 100644 --- a/patches/0022-Sign-in-to-custom-servers-in-the-browser.patch +++ b/patches/0022-Sign-in-to-custom-servers-in-the-browser.patch @@ -334,7 +334,7 @@ index f4d24a1..f93f4e9 100644 * Retrieves the default user * @return {Promise} diff --git a/apps/app/build.rs b/apps/app/build.rs -index 94f7a8e..507ad2f 100644 +index 3726ef5..e33a52d 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -20,6 +20,8 @@ fn main() { diff --git a/patches/0023-Browse-LittleSkin-s-skin-library.patch b/patches/0023-Browse-LittleSkin-s-skin-library.patch index 31395d8..76aca02 100644 --- a/patches/0023-Browse-LittleSkin-s-skin-library.patch +++ b/patches/0023-Browse-LittleSkin-s-skin-library.patch @@ -417,7 +417,7 @@ index ea86e86..e3c4b21 100644 return await invoke('plugin:skin-browser|skin_browser_site_skin', { site, id }) } diff --git a/apps/app/build.rs b/apps/app/build.rs -index 507ad2f..8cb21f2 100644 +index e33a52d..ac124d9 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -54,6 +54,8 @@ fn main() { diff --git a/patches/0024-Offer-the-launchers-instances-can-be-imported-from.patch b/patches/0024-Offer-the-launchers-instances-can-be-imported-from.patch index 3e5a966..f1e30ca 100644 --- a/patches/0024-Offer-the-launchers-instances-can-be-imported-from.patch +++ b/patches/0024-Offer-the-launchers-instances-can-be-imported-from.patch @@ -61,7 +61,7 @@ index 34cf250..bfc728e 100644 /// null if it can't be found or doesn't exist /// eg: get_default_launcher_path("MultiMC") diff --git a/apps/app-frontend/src/providers/setup/creation-modal.ts b/apps/app-frontend/src/providers/setup/creation-modal.ts -index 964b17c..53ba797 100644 +index 31ad5aa..f4a13ce 100644 --- a/apps/app-frontend/src/providers/setup/creation-modal.ts +++ b/apps/app-frontend/src/providers/setup/creation-modal.ts @@ -113,7 +113,12 @@ export function setupCreationModal( @@ -135,7 +135,7 @@ index 851e44d..752832c 100644 return (await get_importable_instances(launcherName, path)) ?? [] }, diff --git a/apps/app/build.rs b/apps/app/build.rs -index 8cb21f2..8e8a0f8 100644 +index ac124d9..c9eebb7 100644 --- a/apps/app/build.rs +++ b/apps/app/build.rs @@ -108,6 +108,7 @@ fn main() { @@ -173,7 +173,7 @@ index 773fcb2..cda652f 100644 /// None if it can't be found or doesn't exist #[tauri::command] diff --git a/packages/app-lib/src/api/pack/import/mod.rs b/packages/app-lib/src/api/pack/import/mod.rs -index 72f315d..15da6da 100644 +index 52707bc..62ee673 100644 --- a/packages/app-lib/src/api/pack/import/mod.rs +++ b/packages/app-lib/src/api/pack/import/mod.rs @@ -247,36 +247,130 @@ async fn import_instance_inner( diff --git a/patches/0025-Arrange-the-left-sidebar.patch b/patches/0025-Arrange-the-left-sidebar.patch index ddc25f4..1fed805 100644 --- a/patches/0025-Arrange-the-left-sidebar.patch +++ b/patches/0025-Arrange-the-left-sidebar.patch @@ -26,7 +26,7 @@ where they belong; only the number of instances stays there. create mode 100644 apps/app-frontend/src/composables/use-sidebar-layout.ts diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue -index 6539d4a..871a8b9 100644 +index 9679884..cb688fc 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -15,6 +15,7 @@ import { @@ -162,7 +162,7 @@ index 6539d4a..871a8b9 100644 createNewInstance: { id: 'app.nav.create-new-instance', defaultMessage: 'Create new instance', -@@ -2327,52 +2409,15 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2346,52 +2428,15 @@ provideAppUpdateDownloadProgress(appUpdateDownload) class="app-grid-navbar bg-bg-raised flex flex-col p-[0.5rem] pt-0 gap-[0.25rem] w-[--left-bar-width]" > -@@ -2456,6 +2501,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +@@ -2475,6 +2520,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload) @@ -293,10 +293,10 @@ index 32a86a3..e409510 100644 const { progress, version: downloadingVersion } = injectAppUpdateDownloadProgress() diff --git a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue -index 9a9e8ef..7636c46 100644 +index 4e55cdd..9bc7ce3 100644 --- a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue -@@ -83,32 +83,6 @@ const messages = defineMessages({ +@@ -82,32 +82,6 @@ const messages = defineMessages({ id: 'app.features-settings.sidebar.title', defaultMessage: 'Sidebar', }, @@ -329,7 +329,7 @@ index 9a9e8ef..7636c46 100644 quickInstancesTitle: { id: 'app.features-settings.quick-instances.title', defaultMessage: 'Quick instances in sidebar', -@@ -385,50 +359,6 @@ onBeforeUnmount(() => { +@@ -384,50 +358,6 @@ onBeforeUnmount(() => { {{ formatMessage(messages.sidebarTitle) }}

diff --git a/patches/0027-Make-an-instance-group-from-the-library-s-free-space.patch b/patches/0027-Make-an-instance-group-from-the-library-s-free-space.patch index d5ca519..6eedad0 100644 --- a/patches/0027-Make-an-instance-group-from-the-library-s-free-space.patch +++ b/patches/0027-Make-an-instance-group-from-the-library-s-free-space.patch @@ -34,7 +34,7 @@ index 20000b6..1849835 100644