From ca03083949eb119691120be180b53aa5b56e2dfc Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 14:20:31 +0800 Subject: [PATCH 1/4] fix(OneClient-Memory): Not being able to be set to 0 --- .../frontend/src/routes/app/cluster/settings.tsx | 9 +++++++-- .../frontend/src/routes/app/settings/minecraft.tsx | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx index 9cc0692e..f44dd01a 100644 --- a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx +++ b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx @@ -100,11 +100,16 @@ function RouteComponent() {
{ + updateProfile({ mem_max: profile.mem_max ?? 0 }); + }} onChange={(e) => { - updateProfile({ mem_max: Number(e.currentTarget.value) }); + const raw = e.currentTarget.value; + updateProfile({ mem_max: raw === '' ? undefined : Math.max(0, Number(raw)), }); }} type="number" - value={profile.mem_max ?? undefined} + value={profile.mem_max ?? ''} />
diff --git a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx index 2dea66bc..cc6228fb 100644 --- a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx +++ b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx @@ -104,11 +104,15 @@ export function GameSettings() {
{ + setSetting('mem_max', gameSettings.mem_max ?? 0); + }} onChange={(e) => { - setSetting('mem_max', Number(e.currentTarget.value)); + const raw = e.currentTarget.value; + setSetting('mem_max', raw === '' ? null : Math.max(0, Number(raw))); }} type="number" - value={gameSettings.mem_max ?? undefined} + value={gameSettings.mem_max ?? ''} />
From 788660a50b923a79301359bf0e06ffba24f74d6b Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 14:29:16 +0800 Subject: [PATCH 2/4] feat(OneClient-Memory): Add units Closes: https://github.com/Polyfrost/OneLauncher/issues/450 --- apps/oneclient/frontend/src/bindings.gen.ts | 42 +++++++++---------- .../src/routes/app/cluster/settings.tsx | 9 ++-- .../src/routes/app/settings/minecraft.tsx | 7 +++- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts index 52779b34..7f97ccfd 100644 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ b/apps/oneclient/frontend/src/bindings.gen.ts @@ -303,26 +303,8 @@ export type VersionType = */ "old_beta" -const ARGS_MAP = { 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}', 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}' } -export type Router = { 'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'debug': { openDevTools: () => Promise, -isInDev: () => Promise, -getArch: () => Promise, -getFamily: () => Promise, -getLocale: () => Promise, -getType: () => Promise, -getPlatform: () => Promise, -getOsVersion: () => Promise, -getGitCommitHash: () => Promise, -getBuildTimestamp: () => Promise, -getPackageVersion: () => Promise }, -'oneclient': { getClustersGroupedByMajor: () => Promise>, -getBundlesFor: (clusterId: number) => Promise, -getVersions: () => Promise, -checkForUpdate: () => Promise, -installUpdate: () => Promise }, -'core': { getClusters: () => Promise, +const ARGS_MAP = { 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}', 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' } +export type Router = { 'core': { getClusters: () => Promise, getClusterById: (id: number) => Promise, removeCluster: (id: number) => Promise, createCluster: (options: CreateCluster) => Promise, @@ -371,9 +353,27 @@ removeCape: (accessToken: string) => Promise, convertUsernameUUID: (usernameUuid: string) => Promise, setDiscordRPCMessage: (message: string) => Promise, open: (input: string) => Promise }, +'oneclient': { getClustersGroupedByMajor: () => Promise>, +getBundlesFor: (clusterId: number) => Promise, +getVersions: () => Promise, +checkForUpdate: () => Promise, +installUpdate: () => Promise }, 'events': { ingress: (event: IngressPayload) => Promise, message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise } }; +process: (event: ProcessPayload) => Promise }, +'folders': { fromCluster: (folderName: string) => Promise, +openCluster: (folderName: string) => Promise }, +'debug': { openDevTools: () => Promise, +isInDev: () => Promise, +getArch: () => Promise, +getFamily: () => Promise, +getLocale: () => Promise, +getType: () => Promise, +getPlatform: () => Promise, +getOsVersion: () => Promise, +getGitCommitHash: () => Promise, +getBuildTimestamp: () => Promise, +getPackageVersion: () => Promise } }; export type { InferCommandOutput } diff --git a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx index f44dd01a..70aa355a 100644 --- a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx +++ b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx @@ -97,20 +97,23 @@ function RouteComponent() { title="Memory" >
-
+
{ updateProfile({ mem_max: profile.mem_max ?? 0 }); }} onChange={(e) => { const raw = e.currentTarget.value; - updateProfile({ mem_max: raw === '' ? undefined : Math.max(0, Number(raw)), }); + updateProfile({ mem_max: raw === '' ? undefined : Math.max(0, Number(raw)) }); }} type="number" value={profile.mem_max ?? ''} /> +
+

MB

+
diff --git a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx index cc6228fb..d32adf97 100644 --- a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx +++ b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx @@ -101,9 +101,9 @@ export function GameSettings() { title="Memory" >
-
+
{ setSetting('mem_max', gameSettings.mem_max ?? 0); }} @@ -114,6 +114,9 @@ export function GameSettings() { type="number" value={gameSettings.mem_max ?? ''} /> +
+

MB

+
From aa9f7b8ca2ad175ecbeacf482048e6a420b35ef0 Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 14:49:05 +0800 Subject: [PATCH 3/4] fix(OneClient): Nonexistent Default Resolution Closes: https://github.com/Polyfrost/OneLauncher/issues/444 --- apps/oneclient/frontend/src/bindings.gen.ts | 38 +++++++++---------- .../src/routes/app/cluster/settings.tsx | 12 ++++-- .../src/routes/app/settings/minecraft.tsx | 12 ++++-- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts index 7f97ccfd..e526ef3d 100644 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ b/apps/oneclient/frontend/src/bindings.gen.ts @@ -303,8 +303,24 @@ export type VersionType = */ "old_beta" -const ARGS_MAP = { 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}', 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' } -export type Router = { 'core': { getClusters: () => Promise, +const ARGS_MAP = { 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}', 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}' } +export type Router = { 'debug': { openDevTools: () => Promise, +isInDev: () => Promise, +getArch: () => Promise, +getFamily: () => Promise, +getLocale: () => Promise, +getType: () => Promise, +getPlatform: () => Promise, +getOsVersion: () => Promise, +getGitCommitHash: () => Promise, +getBuildTimestamp: () => Promise, +getPackageVersion: () => Promise }, +'events': { ingress: (event: IngressPayload) => Promise, +message: (event: MessagePayload) => Promise, +process: (event: ProcessPayload) => Promise }, +'folders': { fromCluster: (folderName: string) => Promise, +openCluster: (folderName: string) => Promise }, +'core': { getClusters: () => Promise, getClusterById: (id: number) => Promise, removeCluster: (id: number) => Promise, createCluster: (options: CreateCluster) => Promise, @@ -357,23 +373,7 @@ open: (input: string) => Promise }, getBundlesFor: (clusterId: number) => Promise, getVersions: () => Promise, checkForUpdate: () => Promise, -installUpdate: () => Promise }, -'events': { ingress: (event: IngressPayload) => Promise, -message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise }, -'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'debug': { openDevTools: () => Promise, -isInDev: () => Promise, -getArch: () => Promise, -getFamily: () => Promise, -getLocale: () => Promise, -getType: () => Promise, -getPlatform: () => Promise, -getOsVersion: () => Promise, -getGitCommitHash: () => Promise, -getBuildTimestamp: () => Promise, -getPackageVersion: () => Promise } }; +installUpdate: () => Promise } }; export type { InferCommandOutput } diff --git a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx index 70aa355a..62f6553d 100644 --- a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx +++ b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx @@ -73,20 +73,24 @@ function RouteComponent() {
{ - updateProfile({ res: { height: profile.res?.height ?? 720, width: Number(e.currentTarget.value) } }); + const width = Math.max(1, Number(e.currentTarget.value)); + updateProfile({ res: { width, height: profile.res?.height ?? 720 } }); }} type="number" - value={profile.res?.width} + value={profile.res?.width ?? 1280} /> { - updateProfile({ res: { width: profile.res?.height ?? 1280, height: Number(e.currentTarget.value) } }); + const height = Math.max(1, Number(e.currentTarget.value)); + updateProfile({ res: { width: profile.res?.width ?? 1280, height } }); }} type="number" - value={profile.res?.height} + value={profile.res?.height ?? 720} />
diff --git a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx index d32adf97..6c39d98f 100644 --- a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx +++ b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx @@ -77,20 +77,24 @@ export function GameSettings() {
{ - setSetting('res', { height: gameSettings.res?.height ?? 720, width: Number(e.currentTarget.value) }); + const width = Math.max(1, Number(e.currentTarget.value)); + setSetting('res', { width, height: gameSettings.res?.height ?? 720 }); }} type="number" - value={gameSettings.res?.width} + value={gameSettings.res?.width ?? 1280} /> { - setSetting('res', { width: gameSettings.res?.height ?? 1280, height: Number(e.currentTarget.value) }); + const height = Math.max(1, Number(e.currentTarget.value)); + setSetting('res', { width: gameSettings.res?.width ?? 1280, height }); }} type="number" - value={gameSettings.res?.height} + value={gameSettings.res?.height ?? 720} />
From e0b897967a77f1e9dc561b5d3a45d96d2c66585f Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 16:46:31 +0800 Subject: [PATCH 4/4] chore(OneClient): Change Default Resolution --- .../frontend/src/routes/app/cluster/settings.tsx | 8 ++++---- .../frontend/src/routes/app/settings/minecraft.tsx | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx index 62f6553d..af878059 100644 --- a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx +++ b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx @@ -76,10 +76,10 @@ function RouteComponent() { min={1} onChange={(e) => { const width = Math.max(1, Number(e.currentTarget.value)); - updateProfile({ res: { width, height: profile.res?.height ?? 720 } }); + updateProfile({ res: { width, height: profile.res?.height ?? 480 } }); }} type="number" - value={profile.res?.width ?? 1280} + value={profile.res?.width ?? 640} /> { const height = Math.max(1, Number(e.currentTarget.value)); - updateProfile({ res: { width: profile.res?.width ?? 1280, height } }); + updateProfile({ res: { width: profile.res?.width ?? 640, height } }); }} type="number" - value={profile.res?.height ?? 720} + value={profile.res?.height ?? 480} />
diff --git a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx index 6c39d98f..24c5c26e 100644 --- a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx +++ b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx @@ -80,10 +80,10 @@ export function GameSettings() { min={1} onChange={(e) => { const width = Math.max(1, Number(e.currentTarget.value)); - setSetting('res', { width, height: gameSettings.res?.height ?? 720 }); + setSetting('res', { width, height: gameSettings.res?.height ?? 480 }); }} type="number" - value={gameSettings.res?.width ?? 1280} + value={gameSettings.res?.width ?? 640} /> { const height = Math.max(1, Number(e.currentTarget.value)); - setSetting('res', { width: gameSettings.res?.width ?? 1280, height }); + setSetting('res', { width: gameSettings.res?.width ?? 640, height }); }} type="number" - value={gameSettings.res?.height ?? 720} + value={gameSettings.res?.height ?? 480} />