add better CGO warnings
This commit is contained in:
@@ -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."
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
Reference in New Issue
Block a user