add better CGO warnings

This commit is contained in:
KingKDot
2026-07-15 23:29:12 -05:00
parent 5136a63e69
commit bdb8bda678
2 changed files with 35 additions and 1 deletions
+18 -1
View File
@@ -52,6 +52,8 @@ const macosSdkRightsInput = document.getElementById("macos-sdk-rights");
const macosSdkFileStatus = document.getElementById("macos-sdk-file-status"); const macosSdkFileStatus = document.getElementById("macos-sdk-file-status");
const macosSdkHostWarning = document.getElementById("macos-sdk-host-warning"); const macosSdkHostWarning = document.getElementById("macos-sdk-host-warning");
const macosSdkHostPlatform = document.getElementById("macos-sdk-host-platform"); const macosSdkHostPlatform = document.getElementById("macos-sdk-host-platform");
const disableCgoInput = document.querySelector('input[name="disable-cgo"]');
const disableCgoWarning = document.getElementById("disable-cgo-warning");
let currentServerVersion = null; let currentServerVersion = null;
let currentUserRole = null; let currentUserRole = null;
@@ -88,6 +90,10 @@ function updateMacosSdkVisibility() {
if (macosSdkHostPlatform && unsupportedHost) macosSdkHostPlatform.textContent = macosSdkServerHost; if (macosSdkHostPlatform && unsupportedHost) macosSdkHostPlatform.textContent = macosSdkServerHost;
} }
function updateDisableCgoWarning() {
disableCgoWarning?.classList.toggle("hidden", !disableCgoInput?.checked);
}
async function uploadMacosSdk() { async function uploadMacosSdk() {
const file = macosSdkFileInput?.files?.[0]; const file = macosSdkFileInput?.files?.[0];
if (!file) throw new Error("Select a macOS SDK archive for this Darwin CGO build"); if (!file) throw new Error("Select a macOS SDK archive for this Darwin CGO build");
@@ -705,6 +711,8 @@ function applyFormSettings(settings) {
updateIosSectionVisibility(); updateIosSectionVisibility();
updatePersistenceSettingsVisibility(); updatePersistenceSettingsVisibility();
updateShellcodeCheckboxVisibility(); updateShellcodeCheckboxVisibility();
updateDisableCgoWarning();
updateMacosSdkVisibility();
if (solMemoCheckbox && solSettings) { if (solMemoCheckbox && solSettings) {
solSettings.classList.toggle("hidden", !solMemoCheckbox.checked); solSettings.classList.toggle("hidden", !solMemoCheckbox.checked);
} }
@@ -955,6 +963,7 @@ loadBuildPlugins();
loadMacosSdkStatus(); loadMacosSdkStatus();
updateWindowsSectionVisibility(); updateWindowsSectionVisibility();
updateShellcodeCheckboxVisibility(); updateShellcodeCheckboxVisibility();
updateDisableCgoWarning();
init(); init();
if (solMemoCheckbox && solSettings) { if (solMemoCheckbox && solSettings) {
@@ -1134,7 +1143,8 @@ platformInputs.forEach((input) => {
input.addEventListener("change", updateMacosSdkVisibility); input.addEventListener("change", updateMacosSdkVisibility);
}); });
document.querySelector('input[name="disable-cgo"]')?.addEventListener("change", updateMacosSdkVisibility); disableCgoInput?.addEventListener("change", updateMacosSdkVisibility);
disableCgoInput?.addEventListener("change", updateDisableCgoWarning);
macosSdkFileInput?.addEventListener("change", () => { macosSdkFileInput?.addEventListener("change", () => {
const file = macosSdkFileInput.files?.[0]; const file = macosSdkFileInput.files?.[0];
if (macosSdkFileStatus && file) macosSdkFileStatus.textContent = `${file.name} selected (${formatFileSize(file.size)}).`; if (macosSdkFileStatus && file) macosSdkFileStatus.textContent = `${file.name} selected (${formatFileSize(file.size)}).`;
@@ -1803,6 +1813,13 @@ form?.addEventListener("submit", async (e) => {
return; return;
} }
if (disableCgoInput?.checked && !confirm(
"CGO is disabled. Native features such as voice/audio, macOS keystroke capture and permission checks, native Linux/macOS plugins, and Windows GPU encoder integrations may not work.\n\nContinue with a limited CGO-disabled build?"
)) {
disableCgoInput.focus();
return;
}
if (needsMacosSdkUpload() && (!macosSdkFileInput?.files?.[0] || !macosSdkRightsInput?.checked)) { if (needsMacosSdkUpload() && (!macosSdkFileInput?.files?.[0] || !macosSdkRightsInput?.checked)) {
alert(!macosSdkFileInput?.files?.[0] alert(!macosSdkFileInput?.files?.[0]
? "Select a macOS SDK archive for this Darwin CGO build." ? "Select a macOS SDK archive for this Darwin CGO build."
+17
View File
@@ -593,6 +593,23 @@
</span> </span>
</label> </label>
<div id="disable-cgo-warning" class="hidden p-4 bg-amber-950/40 border border-amber-600/60 rounded-lg text-amber-200">
<div class="flex items-start gap-3">
<i class="fa-solid fa-triangle-exclamation text-amber-400 mt-0.5"></i>
<div class="min-w-0">
<p class="text-sm font-semibold">CGO disabled — native features will be unavailable</p>
<p class="mt-1 text-xs text-amber-200/80">The binary can still build, but features that depend on native platform libraries may be missing or fall back to limited implementations, including:</p>
<ul class="mt-2 ml-4 list-disc text-xs text-amber-200/80 space-y-1">
<li>Native voice/audio support</li>
<li>macOS keystroke capture and native permission checks</li>
<li>Native plugin loading on Linux and macOS</li>
<li>Windows GPU encoder integrations such as NVENC, AMF, and QSV</li>
</ul>
<p class="mt-2 text-xs font-medium">Only disable CGO when portability is more important than full functionality.</p>
</div>
</div>
</div>
<label class="flex items-center gap-2 p-3 bg-slate-800/60 border border-slate-700 rounded-lg cursor-pointer hover:border-sky-500 transition-colors"> <label class="flex items-center gap-2 p-3 bg-slate-800/60 border border-slate-700 rounded-lg cursor-pointer hover:border-sky-500 transition-colors">
<input type="checkbox" name="no-printing" class="w-4 h-4" /> <input type="checkbox" name="no-printing" class="w-4 h-4" />
<div class="flex flex-col"> <div class="flex flex-col">