diff --git a/apps/app-frontend/src/components/ui/screenshots-page/index.vue b/apps/app-frontend/src/components/ui/screenshots-page/index.vue
index 5a85ed6918..d845fe8b68 100644
--- a/apps/app-frontend/src/components/ui/screenshots-page/index.vue
+++ b/apps/app-frontend/src/components/ui/screenshots-page/index.vue
@@ -429,10 +429,10 @@ const groupedScreenshots = computed((): ScreenshotGroupData[] => {
screenshotGroups.set(screenshot.instance_id, group)
}
- const syncedInstances = (instancesQuery.data.value ?? [])
- .filter((instance) => instance.synced_options.screenshots)
- .sort((a, b) => a.name.localeCompare(b.name))
- const groups = syncedInstances.flatMap((instance) => {
+ const instances = [...(instancesQuery.data.value ?? [])].sort((a, b) =>
+ a.name.localeCompare(b.name),
+ )
+ const groups = instances.flatMap((instance) => {
const instanceScreenshots = screenshotGroups.get(instance.id)
return instanceScreenshots
? [
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 d52c4404a6..43ce220e5b 100644
--- a/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue
+++ b/apps/app-frontend/src/components/ui/settings/display/BehaviorSettings.vue
@@ -7,6 +7,7 @@ import {
useSavable,
useVIntl,
} from '@modrinth/ui'
+import { useQueryClient } from '@tanstack/vue-query'
import { inject, onBeforeUnmount, onMounted, ref } from 'vue'
import {
@@ -14,7 +15,13 @@ import {
type FeatureFlag,
useAppSettings,
} from '@/composables/use-app-settings.ts'
+import {
+ get_global_synced_options,
+ type GlobalSyncedOptions,
+ set_global_synced_option,
+} from '@/helpers/instance.ts'
import { type AppSettings, get, set } from '@/helpers/settings.ts'
+import { screenshotKeys } from '@/pages/instance/query-options.ts'
import { appSettingsModalContextKey } from '@/providers/app-settings-modal'
const appSettings = useAppSettings()
@@ -22,6 +29,7 @@ const { formatMessage } = useVIntl()
const auth = injectAuth()
const { updatePreferences } = injectUserPreferences()
const settingsModal = inject(appSettingsModalContextKey, null)
+const queryClient = useQueryClient()
const worldsInHomeFlag: FeatureFlag = 'worlds_in_home'
const compactInstanceCardsFlag: FeatureFlag = 'compact_instance_cards'
@@ -51,6 +59,14 @@ const messages = defineMessages({
id: 'app.behavior-settings.content.title',
defaultMessage: 'Home and content',
},
+ showAllScreenshotsTitle: {
+ id: 'app.behavior-settings.show-all-screenshots.title',
+ defaultMessage: 'Show all screenshots together',
+ },
+ showAllScreenshotsDescription: {
+ id: 'app.behavior-settings.show-all-screenshots.description',
+ defaultMessage: 'View screenshots from all your instances on the Screenshots page.',
+ },
confirmationsTitle: {
id: 'app.behavior-settings.confirmations.title',
defaultMessage: 'Confirmations',
@@ -137,6 +153,7 @@ type BehaviorSettingsState = {
minimizeApp: boolean
hideRightSidebar: boolean
showJumpIn: boolean
+ showAllScreenshots: boolean
compactInstanceCards: boolean
showPlayTime: boolean
hideNametag: boolean
@@ -144,14 +161,23 @@ type BehaviorSettingsState = {
skipNonEssentialWarnings: boolean
}
-const persistedSettings = ref(await get())
+const [initialSettings, initialGlobalSyncedOptions] = await Promise.all([
+ get(),
+ get_global_synced_options(),
+])
+const persistedSettings = ref(initialSettings)
+const persistedGlobalSyncedOptions = ref(initialGlobalSyncedOptions)
-function getBehaviorSettingsState(settings: AppSettings): BehaviorSettingsState {
+function getBehaviorSettingsState(
+ settings: AppSettings,
+ globalSyncedOptions: GlobalSyncedOptions,
+): BehaviorSettingsState {
return {
syncBehaviorAcrossDevices: settings.sync_behavior_across_devices,
minimizeApp: settings.hide_on_process_start,
hideRightSidebar: settings.toggle_sidebar,
showJumpIn: settings.feature_flags[worldsInHomeFlag] ?? DEFAULT_FEATURE_FLAGS[worldsInHomeFlag],
+ showAllScreenshots: globalSyncedOptions.screenshots,
compactInstanceCards:
settings.feature_flags[compactInstanceCardsFlag] ??
DEFAULT_FEATURE_FLAGS[compactInstanceCardsFlag],
@@ -169,7 +195,7 @@ function getBehaviorSettingsState(settings: AppSettings): BehaviorSettingsState
}
const { saved, current, changes, saving, hasChanges, reset, save } = useSavable(
- () => getBehaviorSettingsState(persistedSettings.value),
+ () => getBehaviorSettingsState(persistedSettings.value, persistedGlobalSyncedOptions.value),
async () => {
const value = current.value
@@ -204,8 +230,20 @@ const { saved, current, changes, saving, hasChanges, reset, save } = useSavable(
},
}
- await set(nextSettings)
+ const screenshotsChanged =
+ value.showAllScreenshots !== persistedGlobalSyncedOptions.value.screenshots
+ const [, updatedGlobalSyncedOptions] = await Promise.all([
+ set(nextSettings),
+ screenshotsChanged
+ ? set_global_synced_option('screenshots', value.showAllScreenshots)
+ : Promise.resolve(persistedGlobalSyncedOptions.value),
+ ])
persistedSettings.value = nextSettings
+ persistedGlobalSyncedOptions.value = updatedGlobalSyncedOptions
+ queryClient.setQueryData(['global-synced-options'], updatedGlobalSyncedOptions)
+ if (screenshotsChanged) {
+ await queryClient.invalidateQueries({ queryKey: screenshotKeys.all })
+ }
appSettings.setBehaviorSyncAcrossDevices(value.syncBehaviorAcrossDevices)
appSettings.toggleSidebar = value.hideRightSidebar
appSettings.hideNametagSkinsPage = value.hideNametag
@@ -302,6 +340,18 @@ onBeforeUnmount(() => {
{{ formatMessage(messages.contentTitle) }}
+
+
+
+ {{ formatMessage(messages.showAllScreenshotsTitle) }}
+
+
+ {{ formatMessage(messages.showAllScreenshotsDescription) }}
+
+
+
+
+
diff --git a/apps/app-frontend/src/components/ui/settings/instances/InstancesSyncedSettings.vue b/apps/app-frontend/src/components/ui/settings/instances/InstancesSyncedSettings.vue
index ecef91748c..f96b836b53 100644
--- a/apps/app-frontend/src/components/ui/settings/instances/InstancesSyncedSettings.vue
+++ b/apps/app-frontend/src/components/ui/settings/instances/InstancesSyncedSettings.vue
@@ -2,11 +2,15 @@
import {
EditIcon,
// FolderOpenIcon,
+ RefreshCwIcon,
SaveIcon,
+ SearchIcon,
XIcon,
} from '@modrinth/assets'
import {
+ Avatar,
Button,
+ CheckCircleButton,
commonMessages,
defineMessages,
IconButton,
@@ -26,7 +30,9 @@ import useMemorySlider from '@/composables/useMemorySlider'
import {
get_command_history,
get_global_synced_options,
+ getInstanceIconUrl,
type GlobalSyncedOptions,
+ list as listInstances,
list_synced_servers,
// open_synced_options_folder,
remove_synced_server,
@@ -43,7 +49,7 @@ import {
type ServerData,
type ServerWorld,
} from '@/helpers/worlds.ts'
-import { instanceKeys, screenshotKeys } from '@/pages/instance/query-options'
+import { instanceKeys } from '@/pages/instance/query-options'
const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()
@@ -83,13 +89,33 @@ const messages = defineMessages({
id: 'app.settings.synced-options.creative-hotbars.description',
defaultMessage: 'Sync saved creative hotbars across your instances.',
},
- screenshots: {
- id: 'app.settings.synced-options.screenshots',
- defaultMessage: 'Screenshots',
+ chooseSyncSourceTitle: {
+ id: 'app.settings.synced-options.choose-sync-source.title',
+ defaultMessage: 'Choose a sync source',
},
- screenshotsDescription: {
- id: 'app.settings.synced-options.screenshots.description',
- defaultMessage: 'View screenshots from your instances in one place.',
+ multiplayerServersSyncSourceDescription: {
+ id: 'app.settings.synced-options.choose-sync-source.multiplayer-servers-description',
+ defaultMessage: 'Pick the instance whose multiplayer servers become the shared copy.',
+ },
+ commandHistorySyncSourceDescription: {
+ id: 'app.settings.synced-options.choose-sync-source.command-history-description',
+ defaultMessage: 'Pick the instance whose command history becomes the shared copy.',
+ },
+ creativeHotbarsSyncSourceDescription: {
+ id: 'app.settings.synced-options.choose-sync-source.creative-hotbars-description',
+ defaultMessage: 'Pick the instance whose saved creative hotbars become the shared copy.',
+ },
+ searchInstance: {
+ id: 'app.settings.synced-options.choose-sync-source.search-placeholder',
+ defaultMessage: 'Search instance',
+ },
+ noInstancesFound: {
+ id: 'app.settings.synced-options.choose-sync-source.no-instances-found',
+ defaultMessage: 'No instances found',
+ },
+ syncButton: {
+ id: 'app.settings.synced-options.choose-sync-source.sync',
+ defaultMessage: 'Sync',
},
commandHistoryEditorTitle: {
id: 'app.settings.synced-options.command-history.editor-title',
@@ -285,11 +311,6 @@ const globalRows: Array<{
title: 'creativeHotbars',
description: 'creativeHotbarsDescription',
},
- {
- option: 'screenshots',
- title: 'screenshots',
- description: 'screenshotsDescription',
- },
]
const globalSyncedOptionsQueryKey = ['global-synced-options'] as const
@@ -306,6 +327,11 @@ const globalOptionsQuery = useQuery({
queryFn: get_global_synced_options,
})
const globalOptions = computed(() => globalOptionsQuery.data.value ?? defaultGlobalOptions)
+const instances = ref(await listInstances().catch(() => []))
+const baseOption = ref(null)
+const baseInstanceId = ref(instances.value[0]?.id ?? '')
+const baseInstanceSearch = ref('')
+const baseModal = ref | null>(null)
const commandHistoryModal = ref | null>(null)
const serverEditorModal = ref | null>(null)
const editServerModal = ref | null>(null)
@@ -340,24 +366,43 @@ const syncedServerCards = computed(() =>
})),
)
+const baseInstanceDescription = computed(() => {
+ switch (baseOption.value) {
+ case 'multiplayer_servers':
+ return formatMessage(messages.multiplayerServersSyncSourceDescription)
+ case 'command_history':
+ return formatMessage(messages.commandHistorySyncSourceDescription)
+ case 'creative_hotbars':
+ return formatMessage(messages.creativeHotbarsSyncSourceDescription)
+ default:
+ return ''
+ }
+})
+
+const filteredBaseInstances = computed(() => {
+ const search = baseInstanceSearch.value.trim().toLowerCase()
+ if (!search) return instances.value
+ return instances.value.filter((instance) => instance.name.toLowerCase().includes(search))
+})
+
async function invalidateSyncedOptions() {
await Promise.all([
queryClient.invalidateQueries({ queryKey: instanceKeys.all }),
queryClient.invalidateQueries({ queryKey: ['instance-synced-options'] }),
queryClient.invalidateQueries({ queryKey: globalSyncedOptionsQueryKey }),
- queryClient.invalidateQueries({ queryKey: screenshotKeys.all }),
])
}
type GlobalOptionMutationVariables = {
option: SyncedOption
enabled: boolean
+ baseInstanceId?: string
}
const globalOptionMutation = useMutation({
mutationKey: globalSyncedOptionsMutationKey,
- mutationFn: ({ option, enabled }: GlobalOptionMutationVariables) =>
- set_global_synced_option(option, enabled),
+ mutationFn: ({ option, enabled, baseInstanceId }: GlobalOptionMutationVariables) =>
+ set_global_synced_option(option, enabled, baseInstanceId),
onMutate: async ({ option, enabled }) => {
await queryClient.cancelQueries({ queryKey: globalSyncedOptionsQueryKey })
const previous = globalOptions.value[option]
@@ -376,6 +421,15 @@ const globalOptionMutation = useMutation({
}))
handleError(error)
},
+ onSuccess: async (_options, { option, enabled }) => {
+ if (enabled) baseModal.value?.hide()
+ if (enabled && option === 'multiplayer_servers') {
+ syncedServers.value = await list_synced_servers().catch((error) => {
+ handleError(error)
+ return []
+ })
+ }
+ },
onSettled: async () => {
if (queryClient.isMutating({ mutationKey: globalSyncedOptionsMutationKey }) === 1) {
await invalidateSyncedOptions()
@@ -383,12 +437,25 @@ const globalOptionMutation = useMutation({
},
})
-function applyGlobalOption(option: SyncedOption, enabled: boolean) {
- globalOptionMutation.mutate({ option, enabled })
+function applyGlobalOption(option: SyncedOption, enabled: boolean, baseInstanceId?: string) {
+ globalOptionMutation.mutate({ option, enabled, baseInstanceId })
}
function toggleGlobalOption(option: SyncedOption, enabled: boolean) {
- applyGlobalOption(option, enabled)
+ if (!enabled) {
+ applyGlobalOption(option, false)
+ return
+ }
+
+ baseOption.value = option
+ baseInstanceId.value = instances.value[0]?.id ?? ''
+ baseInstanceSearch.value = ''
+ baseModal.value?.show()
+}
+
+function confirmBaseInstance() {
+ if (!baseOption.value || !baseInstanceId.value) return
+ applyGlobalOption(baseOption.value, true, baseInstanceId.value)
}
async function openCommandHistoryEditor() {
@@ -502,6 +569,79 @@ watch(
+
+
+ {{ baseInstanceDescription }}
+
+
+
+
+
+
+ {{ formatMessage(messages.noInstancesFound) }}
+
+
+
+
+
+
+ {{ instance.name }}
+
+
+
+
+
+
+
+
+
+
+
export async function set_global_synced_option(
option: SyncedOption,
enabled: boolean,
+ baseInstanceId?: string,
): Promise {
return await invoke('plugin:instance|instance_set_global_synced_option', {
option,
enabled,
+ baseInstanceId,
})
}
diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json
index 0f06178e09..4dc1854696 100644
--- a/apps/app-frontend/src/locales/en-US/index.json
+++ b/apps/app-frontend/src/locales/en-US/index.json
@@ -215,6 +215,12 @@
"app.behavior-settings.content.title": {
"message": "Home and content"
},
+ "app.behavior-settings.show-all-screenshots.description": {
+ "message": "View screenshots from all your instances on the Screenshots page."
+ },
+ "app.behavior-settings.show-all-screenshots.title": {
+ "message": "Show all screenshots together"
+ },
"app.behavior-settings.startup-and-navigation.title": {
"message": "Startup and navigation"
},
@@ -1691,6 +1697,27 @@
"app.settings.sidebar.label.instances": {
"message": "Instances"
},
+ "app.settings.synced-options.choose-sync-source.command-history-description": {
+ "message": "Pick the instance whose command history becomes the shared copy."
+ },
+ "app.settings.synced-options.choose-sync-source.creative-hotbars-description": {
+ "message": "Pick the instance whose saved creative hotbars become the shared copy."
+ },
+ "app.settings.synced-options.choose-sync-source.multiplayer-servers-description": {
+ "message": "Pick the instance whose multiplayer servers become the shared copy."
+ },
+ "app.settings.synced-options.choose-sync-source.no-instances-found": {
+ "message": "No instances found"
+ },
+ "app.settings.synced-options.choose-sync-source.search-placeholder": {
+ "message": "Search instance"
+ },
+ "app.settings.synced-options.choose-sync-source.sync": {
+ "message": "Sync"
+ },
+ "app.settings.synced-options.choose-sync-source.title": {
+ "message": "Choose a sync source"
+ },
"app.settings.synced-options.command-history": {
"message": "Command history"
},
@@ -1727,12 +1754,6 @@
"app.settings.synced-options.multiplayer-servers.none-synced-yet": {
"message": "No servers synced yet"
},
- "app.settings.synced-options.screenshots": {
- "message": "Screenshots"
- },
- "app.settings.synced-options.screenshots.description": {
- "message": "View screenshots from your instances in one place."
- },
"app.settings.tabs.appearance": {
"message": "Appearance"
},
@@ -2678,8 +2699,8 @@
"instance.settings.tabs.synced-options.command-history.disabled-in-app": {
"message": "Command history syncing is turned off in app settings."
},
- "instance.settings.tabs.synced-options.command-history.exclude-description": {
- "message": "Exclude this instance from command history syncing."
+ "instance.settings.tabs.synced-options.command-history.override-description": {
+ "message": "Keep this instance's command history separate from synced command history."
},
"instance.settings.tabs.synced-options.creative-hotbars": {
"message": "Saved creative hotbars"
@@ -2687,8 +2708,8 @@
"instance.settings.tabs.synced-options.creative-hotbars.disabled-in-app": {
"message": "Saved creative hotbar syncing is turned off in app settings."
},
- "instance.settings.tabs.synced-options.creative-hotbars.exclude-description": {
- "message": "Exclude this instance from saved creative hotbar syncing."
+ "instance.settings.tabs.synced-options.creative-hotbars.override-description": {
+ "message": "Keep this instance's saved creative hotbars separate from synced hotbars."
},
"instance.settings.tabs.synced-options.hotbars-conflict.backup-description": {
"message": "The version being replaced will be backed up before anything changes."
@@ -2711,23 +2732,14 @@
"instance.settings.tabs.synced-options.multiplayer-servers.disabled-in-app": {
"message": "Multiplayer server syncing is turned off in app settings."
},
- "instance.settings.tabs.synced-options.multiplayer-servers.exclude-description": {
- "message": "Exclude this instance from multiplayer server syncing."
+ "instance.settings.tabs.synced-options.multiplayer-servers.override-description": {
+ "message": "Keep this instance's multiplayer servers separate from synced servers."
},
"instance.settings.tabs.synced-options.open-app-settings": {
- "message": "Open synced settings"
- },
- "instance.settings.tabs.synced-options.screenshots": {
- "message": "Screenshots"
- },
- "instance.settings.tabs.synced-options.screenshots.disabled-in-app": {
- "message": "Screenshots are turned off in app settings."
- },
- "instance.settings.tabs.synced-options.screenshots.exclude-description": {
- "message": "Exclude this instance’s screenshots from the Screenshots page."
+ "message": "Manage synced settings"
},
"instance.settings.tabs.synced-options.shared-settings.description": {
- "message": "Game settings can be shared between instances. Choose what to share in app settings."
+ "message": "Enable an override to keep a synced setting separate for this instance."
},
"instance.settings.tabs.window": {
"message": "Window"
diff --git a/apps/app-frontend/src/pages/instance/components/settings-modal/hooks-settings.vue b/apps/app-frontend/src/pages/instance/components/settings-modal/hooks-settings.vue
index b7f83911cb..8e214fdf31 100644
--- a/apps/app-frontend/src/pages/instance/components/settings-modal/hooks-settings.vue
+++ b/apps/app-frontend/src/pages/instance/components/settings-modal/hooks-settings.vue
@@ -7,7 +7,6 @@ import { get } from '@/helpers/settings.ts'
import type { AppSettings } from '../../../../helpers/types'
import { injectInstanceSettings } from './instance-settings-context'
-import SettingsOptionsTransition from './settings-options-transition.vue'
const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()
@@ -28,6 +27,16 @@ const hooks = ref({
post_exit: hooksRaw.post_exit ?? '',
})
+watch(overrideHooks, (enabled) => {
+ if (!enabled) {
+ hooks.value = {
+ pre_launch: globalSettings.hooks.pre_launch ?? '',
+ wrapper: globalSettings.hooks.wrapper ?? '',
+ post_exit: globalSettings.hooks.post_exit ?? '',
+ }
+ }
+})
+
const editInstanceObject = computed(() => ({
hooks: overrideHooks.value
? {
@@ -139,62 +148,63 @@ const messages = defineMessages({
-
-
-
- {{ formatMessage(messages.preLaunch) }}
-
-
-
- {{ formatMessage(messages.preLaunchDescription) }}
-
+
+
+ {{ formatMessage(messages.preLaunch) }}
+
+
+
+ {{ formatMessage(messages.preLaunchDescription) }}
+
-
- {{ formatMessage(messages.wrapper) }}
-
-
-
- {{ formatMessage(messages.wrapperDescription) }}
-
+
+ {{ formatMessage(messages.wrapper) }}
+
+
+
+ {{ formatMessage(messages.wrapperDescription) }}
+
-
- {{ formatMessage(messages.postExit) }}
-
-
-
- {{ formatMessage(messages.postExitDescription) }}
-
+
+ {{ formatMessage(messages.postExit) }}
+
+
+
+ {{ formatMessage(messages.postExitDescription) }}
+
-
- {{ formatMessage(messages.hookVariablesDescription) }}
-
-
- - {{ formatMessage(messages.instanceNameDescription) }}
- - {{ formatMessage(messages.instanceIdDescription) }}
- - {{ formatMessage(messages.instanceDirDescription) }}
- - {{ formatMessage(messages.instanceMcDirDescription) }}
- - {{ formatMessage(messages.instanceJavaDescription) }}
- - {{ formatMessage(messages.instanceJavaArgsDescription) }}
-
+
+ {{ formatMessage(messages.hookVariablesDescription) }}
-
+
+ - {{ formatMessage(messages.instanceNameDescription) }}
+ - {{ formatMessage(messages.instanceIdDescription) }}
+ - {{ formatMessage(messages.instanceDirDescription) }}
+ - {{ formatMessage(messages.instanceMcDirDescription) }}
+ - {{ formatMessage(messages.instanceJavaDescription) }}
+ - {{ formatMessage(messages.instanceJavaArgsDescription) }}
+
+
diff --git a/apps/app-frontend/src/pages/instance/components/settings-modal/java-settings.vue b/apps/app-frontend/src/pages/instance/components/settings-modal/java-settings.vue
index 09e1f43b81..64402d3030 100644
--- a/apps/app-frontend/src/pages/instance/components/settings-modal/java-settings.vue
+++ b/apps/app-frontend/src/pages/instance/components/settings-modal/java-settings.vue
@@ -28,7 +28,6 @@ import { get, parseEnvVars, serializeEnvVars } from '@/helpers/settings.ts'
import type { AppSettings } from '../../../../helpers/types'
import { injectInstanceSettings } from './instance-settings-context'
-import SettingsOptionsTransition from './settings-options-transition.vue'
const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()
@@ -42,11 +41,14 @@ const optimalJava = readonly(await get_optimal_jre_key(instance.value.id).catch(
const overrideJavaInstall = ref(!!instance.value.java_path)
const javaPath = ref(instance.value.java_path ?? optimalJava?.path ?? '')
-const activePath = computed(() => (overrideJavaInstall.value ? javaPath.value : ''))
+const activePath = computed(() => javaPath.value)
+const javaTestPath = computed(() => (overrideJavaInstall.value ? javaPath.value : ''))
watch(overrideJavaInstall, (enabled) => {
if (enabled && !javaPath.value) {
javaPath.value = optimalJava?.path ?? ''
+ } else if (!enabled) {
+ javaPath.value = optimalJava?.path ?? ''
}
})
@@ -57,7 +59,7 @@ const hoveringTest = ref(false)
let hasInitialized = false
watch(
- activePath,
+ javaTestPath,
(newPath) => {
if (newPath && optimalJava?.parsed_version) {
if (!hasInitialized) {
@@ -95,12 +97,30 @@ const envVars = ref(
)
const overrideMemorySettings = ref(!!instance.value.memory)
-const memory = ref(instance.value.memory ?? globalSettings.memory)
+const memory = ref(instance.value.memory ?? { ...globalSettings.memory })
const { maxMemory, snapPoints } = (await useMemorySlider().catch(handleError)) as unknown as {
maxMemory: number
snapPoints: number[]
}
+watch(overrideJavaArgs, (enabled) => {
+ if (!enabled) {
+ javaArgs.value = globalSettings.extra_launch_args.join(' ')
+ }
+})
+
+watch(overrideEnvVars, (enabled) => {
+ if (!enabled) {
+ envVars.value = serializeEnvVars(globalSettings.custom_env_vars)
+ }
+})
+
+watch(overrideMemorySettings, (enabled) => {
+ if (!enabled) {
+ memory.value = { ...globalSettings.memory }
+ }
+})
+
const editInstanceObject = computed(() => {
return {
java_path:
@@ -198,90 +218,89 @@ const messages = defineMessages({
-
-
-
-
@@ -294,20 +313,19 @@ const messages = defineMessages({
-
-
-
-
-
+
+
+
@@ -320,17 +338,16 @@ const messages = defineMessages({
-
-
-
-
-
+
+
+
diff --git a/apps/app-frontend/src/pages/instance/components/settings-modal/synced-options-settings.vue b/apps/app-frontend/src/pages/instance/components/settings-modal/synced-options-settings.vue
index f4458d87bc..2c61cc712a 100644
--- a/apps/app-frontend/src/pages/instance/components/settings-modal/synced-options-settings.vue
+++ b/apps/app-frontend/src/pages/instance/components/settings-modal/synced-options-settings.vue
@@ -1,11 +1,5 @@