diff --git a/static/index.html b/static/index.html
index ac21e69..5048904 100644
--- a/static/index.html
+++ b/static/index.html
@@ -1623,7 +1623,7 @@
Clear downloaded images
Open firmware console
-
Use Browser USB Flash for new satellites, recovery, or devices older than Tater firmware 3.0.3. Chrome or Edge must be used on localhost or HTTPS.
+ Use Browser USB Flash for new satellites, recovery, or devices older than Tater firmware 3.0.3. Chrome or Edge must be used on localhost or HTTPS. In the macOS app, open http://127.0.0.1:8789 in Chrome or Edge; port 3232 is only for OTA updates after firmware is installed.
@@ -2789,82 +2789,7 @@
function renderFirmwareFields() {
resetWakeSoundPreview();
- const template = selectedFirmwareTemplate();
- if (!template) {
- $("firmwareFields").innerHTML = `Choose a firmware family to see image details.
`;
- return;
- }
- const prebuilt = template.prebuilt_firmware || {};
- const artifacts = prebuilt.artifacts || {};
- const ota = artifacts.ota || {};
- const factory = artifacts.factory || {};
- const statusClass = prebuilt.available ? "ok" : "warn";
- const statusText = prebuilt.available ? "OTA image available" : (prebuilt.error || "Prebuilt image unavailable");
- $("firmwareFields").innerHTML = `
-
-
-
Firmware Details
- ${escapeHtml(statusText)}
-
-
-
- Latest Version
- ${escapeHtml(prebuilt.version || template.firmware_version || "Unknown")}
-
-
- OTA Image
- ${escapeHtml(ota.path || "Not available")}
- ${ota.size_bytes ? `${Number(ota.size_bytes).toLocaleString()} bytes` : "Downloaded when you flash."}
-
-
- USB Factory Image
- ${escapeHtml(factory.path || "Not available")}
- Use a USB flash once if the satellite is new or older than 3.0.3.
-
-
- Manifest
- ${escapeHtml(prebuilt.manifest_url || template.source_url || "Unavailable")}
-
-
-
- `;
- return;
-
- const fields = Array.isArray(template?.fields) ? template.fields : [];
- if (!fields.length) {
- $("firmwareFields").innerHTML = `No editable settings were found for this firmware template. You can continue with the selected template and target device.
`;
- return;
- }
-
- const groups = new Map();
- fields.forEach((field) => {
- const section = String(field.section || "Firmware");
- if (!groups.has(section)) groups.set(section, []);
- groups.get(section).push(field);
- });
-
- const orderedGroups = Array.from(groups.entries());
- const wakeSoundIndex = orderedGroups.findIndex(([section]) => section === "Wake Sound");
- const microWakeWordIndex = orderedGroups.findIndex(([section]) => section === "Micro Wake Word");
- if (wakeSoundIndex >= 0 && microWakeWordIndex >= 0 && wakeSoundIndex !== microWakeWordIndex + 1) {
- const [wakeSoundGroup] = orderedGroups.splice(wakeSoundIndex, 1);
- const targetIndex = orderedGroups.findIndex(([section]) => section === "Micro Wake Word");
- orderedGroups.splice(targetIndex + 1, 0, wakeSoundGroup);
- }
-
- $("firmwareFields").innerHTML = orderedGroups.map(([section, rows]) => `
-
-
-
${escapeHtml(section)}
-
-
- ${rows.map((field) => renderFirmwareField(field)).join("")}
- ${section === "Wake Sound" ? renderWakeSoundPreviewControl() : ""}
-
-
- `).join("");
- syncRenderedWakeWordSelection();
- syncRenderedWakeSoundSelection();
+ $("firmwareFields").innerHTML = "";
}
function renderFirmwareField(field) {