From 3a9bf1b7ce690d10ebe0fb1614d5ea1d73937cab Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Sun, 2 Aug 2026 18:59:28 +0200 Subject: [PATCH 1/2] [fix](trx-frontend-http): drop the rig description from the top bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The header repeated the active rig's hardware string and mode list beside the rig picker. With a real SDR that reads SoapySDR driver=airspyhf,serial=c852eb5dd23539f8 · RX · SDR filters · LSB · USB · CW · CWR · AM · +7 modes which is longer than every other control in the bar combined, and it is already on the About tab in full, split across its Rig, Active rig, Connection, Modes and VFO rows. Remove the element and the builder behind it. Rig switching keeps its feedback through the existing hint channel rather than by briefly rewriting a permanent label, and the identity that belongs in a header — the rig's display name — stays in the left subtitle. The freed width is not spent: the tab strip now reaches Settings before it needs to scroll, where it previously faded out during Statistics. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz Signed-off-by: Stan Grams --- .../assets/web/generated/app.js | 19 +----------------- .../trx-frontend-http/assets/web/index.html | 1 - .../trx-frontend-http/assets/web/style.css | 14 ------------- .../trx-frontend-http/frontend/src/app.ts | 20 +------------------ 4 files changed, 2 insertions(+), 52 deletions(-) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/generated/app.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/generated/app.js index b851bc7d..f469756a 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/generated/app.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/generated/app.js @@ -2013,7 +2013,6 @@ var signalSplitValueEl = document.getElementById("signal-split-value"); var overviewPeakHoldEl = document.getElementById("overview-peak-hold"); var themeToggleBtn = document.getElementById("theme-toggle"); var headerRigSwitchSelect = document.getElementById("header-rig-switch-select"); -var headerRigSummary = document.getElementById("header-rig-summary"); var headerStylePickSelect = document.getElementById("header-style-pick-select"); var rdsPsOverlay = document.getElementById("rds-ps-overlay"); var tabMainEl = document.getElementById("tab-main"); @@ -2730,19 +2729,6 @@ function populateRigPicker(selectEl, rigIds, activeRigId, disabled) { } selectEl.disabled = disabled; } -function updateRigIdentitySummary(rigId, pending = false) { - if (!headerRigSummary) return; - const rig = serverRigs.find((entry) => entry?.remote === rigId); - if (!rig) { - headerRigSummary.textContent = pending ? "Switching rigs…" : "No rig details available"; - return; - } - const hardware = [rig.manufacturer, rig.model].map((value) => String(value || "").trim()).filter(Boolean).join(" ") || rig.remote; - const modes = Array.isArray(rig.supported_modes) ? rig.supported_modes.map(normalizeMode).filter(Boolean) : []; - const features = [rig.tx ? "TX" : "RX", rig.filter_controls ? "SDR filters" : null, ...modes.slice(0, 5)]; - if (modes.length > 5) features.push(`+${modes.length - 5} modes`); - headerRigSummary.textContent = `${pending ? "Switching to " : ""}${hardware} · ${features.filter(Boolean).join(" · ")}`; -} function updateRigSubtitle(activeRigId) { if (!rigSubtitle) return; const name = activeRigId && lastRigDisplayNames[activeRigId] || activeRigId || "--"; @@ -2773,7 +2759,6 @@ function applyRigList(activeRigId, rigIds, displayNames = {}) { const disableSwitch = lastRigIds.length === 0 || !authRole || authRole === "rx"; populateRigPicker(headerRigSwitchSelect, lastRigIds, lastActiveRigId, disableSwitch); updateRigSubtitle(lastActiveRigId); - updateRigIdentitySummary(lastActiveRigId); window.trxUi?.setActiveRig(lastActiveRigId); if (rigListChanged) { window.trx.modules.scheduler?.setRig(lastActiveRigId); @@ -5034,7 +5019,7 @@ async function switchRigFromSelect(selectEl) { rigSwitchInProgress = true; setControlPending(selectEl, true); selectEl.closest(".header-rig-switch")?.classList.add("is-switching"); - updateRigIdentitySummary(nextRig, true); + showHint(`Switching to ${lastRigDisplayNames[nextRig] || nextRig}…`); showHint(`Switching to ${lastRigDisplayNames[nextRig] || nextRig}…`); try { const sidParam = sseSessionId ? `&session_id=${encodeURIComponent(sseSessionId)}` : ""; @@ -5042,7 +5027,6 @@ async function switchRigFromSelect(selectEl) { lastActiveRigId = nextRig; resetDecoderStateOnRigSwitch(); updateRigSubtitle(lastActiveRigId); - updateRigIdentitySummary(lastActiveRigId); window.trxUi?.setActiveRig(lastActiveRigId); window.trx.modules.scheduler?.setRig(lastActiveRigId); window.trx.modules.backgroundDecode?.setRig(lastActiveRigId); @@ -5061,7 +5045,6 @@ async function switchRigFromSelect(selectEl) { } catch (err) { console.error("select_rig failed:", err); selectEl.value = prevRig || ""; - updateRigIdentitySummary(prevRig); window.trxUi?.notify("Rig could not be switched", { kind: "error" }); } finally { rigSwitchInProgress = false; diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html index 3f45290c..7342e141 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html @@ -85,7 +85,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
-