Skip to content
2 changes: 1 addition & 1 deletion docs/style/aethersdr-style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ windows" lists what it keeps (the `FramelessMoveHelper` drag, Escape and
Which windows the canon covers: short-lived, informational windows (About,
Remote Access, and the candidates listed on #6239, once the maintainer picks
them), and the tool windows the maintainer has moved to it (Waveforms,
Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Connect to Radio, AGC-T Calibration). Other tool and workspace dialogs keep
Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Radio Setup, Connect to Radio, AGC-T Calibration). Other tool and workspace dialogs keep
`PersistentDialog` and `FramelessWindowTitleBar` as `docs/agents/gui.md`
describes. For windows the canon covers,
`FramelessWindowTitleBar` is deprecated: those dialogs move to
Expand Down
9 changes: 4 additions & 5 deletions docs/style/dialog-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,6 @@ replace these with a single `QSet<QPointer<PersistentDialog>>` walk.

- `src/gui/MemoryDialog.{h,cpp}`
- `src/gui/AetherDspDialog.{h,cpp}`
- `src/gui/DxClusterDialog.{h,cpp}` (SpotHub)
- `src/gui/MultiFlexDialog.{h,cpp}`
- `src/gui/MidiMappingDialog.{h,cpp}`
- `src/gui/PanLayoutDialog.{h,cpp}`
Expand All @@ -236,12 +235,12 @@ replace these with a single `QSet<QPointer<PersistentDialog>>` walk.
A window built on `CanonWindow` (`src/gui/CanonWindow.{h,cpp}`, RFC #6226)
deliberately opts out of frameless chrome integration, and by default of
geometry persistence too. About AetherSDR, Remote Access (Tailscale),
Waveforms, Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Connect to Radio (`ConnectionPanel`), AGC-T Calibration and the AetherRX / AetherTX Settings (profile library) dialogs are built on it.
Waveforms, Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Radio Setup, Connect to Radio (`ConnectionPanel`), AGC-T Calibration and the AetherRX / AetherTX Settings (profile library) dialogs are built on it.

| Concern | `CanonWindow` | Why |
|---|---|---|
| Frameless chrome integration | Always frameless; ignores `FramelessWindow` and is not tracked by `trackPersistentDialog()` | The style guide's rounded, title-bar-less window *is* the design; native chrome would put a title bar over it |
| Geometry persistence | None by default: asks to open centred on its parent every time (Wayland compositors place top-level windows themselves and may ignore it). `setGeometryKey()` opts in: size and position are saved under that AppSettings key on move and resize (in memory) and whenever the window hides (flushed — Escape and ⌘W / Ctrl+W hide it without a close event), and restored in place of the centring. Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS and SpotHub opt in. `setLaunchSize()` pins the size on every open while the position is still restored; AetherRX and AetherTX use it, for now | A short-lived window has nothing to restore; a workspace tool keeps the size its operator gave it |
| Geometry persistence | None by default: asks to open centered on its parent every time (Wayland compositors place top-level windows themselves and may ignore it). `setGeometryKey()` opts in: size and position are saved under that AppSettings key on move and resize (in memory) and whenever the window hides (flushed — Escape and ⌘W / Ctrl+W hide it without a close event), and restored in place of the centering. Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub and Radio Setup opt in. `setLaunchSize()` pins the size on every open while the position is still restored; AetherRX and AetherTX use it, for now | A short-lived window has nothing to restore; a workspace tool keeps the size its operator gave it |

What it keeps:

Expand All @@ -254,7 +253,7 @@ What it keeps:
(⌘W, Ctrl+W) all close it.
- **Kind:** `CanonWindow::Kind::Dialog` (the default) is a parented
`Qt::Dialog` that sits over its parent. `Kind::Workspace` (AetherRX,
AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub) is an independent `Qt::Window`, with its own taskbar entry, that
AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Radio Setup) is an independent `Qt::Window`, with its own taskbar entry, that
minimises on its own and does not keep the app alive (`WA_QuitOnClose`
off). In a workspace, Return and Enter never click a default button:
QDialog makes every push button an auto-default, so Return in a field would
Expand All @@ -273,7 +272,7 @@ What it keeps:
It is translucent, so the rounded corners need a compositor; an X11 session
without one shows square black corners. Use `CanonWindow` only for windows the
style guide covers: short-lived windows, and the tool windows the maintainer
has moved to it (Waveforms, Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub). A tool window on it also
has moved to it (Waveforms, Network Diagnostics, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Radio Setup). A tool window on it also
installs `FramelessResizer`, since `CanonWindow` itself only moves. Other tool
and workspace dialogs keep the persistent pattern above.

Expand Down
17 changes: 14 additions & 3 deletions docs/style/theme-style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,23 @@ a widget subtree (for example, the `applet/tx` scope turns the
checked-toggle accent red where the root theme has it blue — scope
paths are slash-joined, and a widget opts in by carrying the path in
its `themeContainer` property). The `canon` scope does the same for
whole windows: AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Connect to
Radio and AGC-T Calibration sit under `canon/aetherRx`, `canon/aetherTx`, `canon/aetherModem`,
`canon/aetherMap`, `canon/aetherGps`, `canon/spotHub`, `canon/connection` and `canon/agcCalibration`, and it maps the base tokens onto the canon palette
whole windows: AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, SpotHub, Radio Setup,
Connect to Radio and AGC-T Calibration sit under `canon/aetherRx`, `canon/aetherTx`, `canon/aetherModem`,
`canon/aetherMap`, `canon/aetherGps`, `canon/spotHub`, `canon/radioSetup`, `canon/connection` and `canon/agcCalibration`, and it maps the base tokens onto the canon palette
there (see [`aethersdr-style-guide.md`](aethersdr-style-guide.md)). The
widget-aware accessors below resolve scope automatically — prefer them
inside applets and anything painted inside a scoped window.

A large canon window styles its pages from one sheet on its body rather than
a sheet per widget. Radio Setup's widgets carry a role the sheet selects on
(`RadioSetupDialogCommon.h`): a label's tone (`rsTone`: caption, value, hint,
heading, title, accent for a status in progress, and ok, warn, error), a status chip (`rsChip`) and a button role
(`rsButton`: select, mute, danger, success). A plain checkable button is an
on/off toggle, filled `color.toggle.success.*` when on; a Select button is one
of a set, filled canon cyan when chosen. A disabled control takes
`color.control.unavailable`, checked or not. Changing a role on a live widget
re-polishes it, so a status that turns to an error restyles at once.

### Consuming tokens

```cpp
Expand Down Expand Up @@ -87,6 +97,7 @@ a token for a role it does not name.
|---|---|
| **Error / fault / danger / destructive action** | `color.accent.danger` (foreground); `color.button.danger.*.disabled` for a destructive button's disabled state — enabled-state button colours are not tokenised yet, so an enabled destructive button takes its colour from `color.accent.danger` |
| **Warning / caution / approaching a limit** | `color.accent.warning` (foreground); `color.background.warning` (panel tint); `color.toggle.warning.*` (checked warning toggles) |
| **A link that is down, not failed (a peripheral OFFLINE)** | `color.accent.offline` — orange, apart from the warning amber and from red, which reads as transmit |
| **Success / OK / enabled-and-healthy** | `color.accent.success` (foreground); `color.background.success` (panel tint); `color.toggle.success.*` (checked success toggles) |
| **Notification / message / attention ping** | `color.highlight.message`, with `color.highlight.fg` for text drawn on top |
| **Transmit-active** | `color.background.tx` + `color.border.tx` (panel), `color.highlight.tx` (marker), `color.slice.tx` (slice flag), `color.tx.mox.*` (MOX button) |
Expand Down
2 changes: 1 addition & 1 deletion docs/user/docs/aetherial-audio.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ compact companion to the two windows:
- The chain strip shows each stage as a box. Single-click a box to switch the
stage on or off, double-click it to open that stage's editor, and drag it to
reorder. The delay used to tell a single click from a double click is
**Settings → Radio Setup... → Appearance & Behavior → Single-click delay**.
**Settings → Radio Setup... → Appearance & Behavior → Single-Click Delay**.
- On the TX side, ⏺ / ▶ drive the same transmit monitor as AetherTX's
REC / PLAY.
- Compact tiles for individual stages sit below the strip.
Expand Down
2 changes: 1 addition & 1 deletion docs/user/docs/audio-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ When the operating system adds or removes an audio device, an **Audio Device Det
## Volume and mute

- **AF slider** (VFO flag or RX applet): the slice's audio level, 0–100.
- **Mute button:** single-click mutes or unmutes this slice; double-click mutes or unmutes all of your slices. **Radio Setup → Appearance & Behavior → Single-click delay** sets how long AetherSDR waits to tell a single click from a double click (0 makes single clicks instant and turns off the double-click action).
- **Mute button:** single-click mutes or unmutes this slice; double-click mutes or unmutes all of your slices. **Radio Setup → Appearance & Behavior → Single-Click Delay** sets how long AetherSDR waits to tell a single click from a double click (0 makes single clicks instant and turns off the double-click action).
- Slice mute belongs to the radio, so it is not restored by AetherSDR on reconnect.
- **Title-bar speaker icon and master slider** always show the path you are actually hearing. With **PC Audio** on, they show and control the computer's mute and level. With PC Audio off, they show the radio's Line Out mute and level, including changes made by another Multi-Flex client.
- The title-bar headphone controls follow the radio's headphone output, and are dimmed on radios that have none.
Expand Down
2 changes: 1 addition & 1 deletion docs/user/docs/hermes-lite-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ The HL2 IO board's amplifier control follows the band.

1. Let the radio warm up for 15 minutes.
2. Pick a **Reference:** (WWV/WWVH 2.5–25 MHz, CHU 3.330 / 7.850 / 14.670 MHz, or **GPSDO / signal generator (custom)** with its frequency). Attenuate a GPSDO by at least 30 dB.
3. Zero-beat the reference with normal tuning, then click **Calibrate from current VFO**.
3. Zero-beat the reference with normal tuning, then click **Calibrate from Current VFO**.
4. Fine-tune with **Trim:** − / + (steps of 0.1, 1 or 10 Hz at 10 MHz), or type the **Error:** in ppb (±50,000 ppb). **Reset** returns to 0.

One value corrects every band, receive and transmit. It is stored per radio (by MAC), so a second HL2 does not inherit it. While **External 10 MHz reference at CL1** is on, the manual calibration is zeroed and disabled.
Expand Down
8 changes: 4 additions & 4 deletions docs/user/docs/kiwisdr-and-web-888.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Open **Tools → Configure KiwiSDR...**. It opens **Settings → Radio Setup...

Each receiver has:

<img src="/img/screens/radio-setup-kiwi.png" width="649" alt="KiwiSDR RX Antennas group. A note says passwords are kept only for the current session. Configured Receivers reads No KiwiSDR receivers configured. Under Add Receiver, the Name field holds Example Kiwi, the Server field kiwi.example.org:8073, the Password field is empty and Type is KiwiSDR, with an Auto-connect checkbox and Browse public… and Add receiver buttons. Import… and Export… buttons sit at the bottom right." />
<img src="/img/screens/radio-setup-kiwi.png" width="649" alt="KiwiSDR RX Antennas group. A note says passwords are kept only for the current session. Configured Receivers reads No KiwiSDR receivers configured. Under Add Receiver, the Name field holds Example Kiwi, the Server field kiwi.example.org:8073, the Password field is empty and Type is KiwiSDR, with an Auto-connect checkbox and Browse Public… and Add Receiver buttons. Import… and Export… buttons sit at the bottom right." />

*The KiwiSDR RX Antennas group on the Antennas page, with a receiver typed in but not yet added.*

Expand All @@ -37,15 +37,15 @@ Each receiver has:
| **Keep audio during TX** | Off (default): the receiver's audio is silenced while you transmit and resumes immediately at unkey. The stream stays warm, so there is no gap or re-sync. On: keep listening while you transmit. |
| **Resume audio after TX delay** | After unkey, wait out this receiver's stream delay before unmuting, so you don't hear your own delayed transmission. No effect while **Keep audio during TX** is on. |

Each row also has **Connect** / **Disconnect** and a **Remove** (bin) button. To add a receiver by hand, fill in the empty row at the bottom (name, `host:8073`, optional password and type) and click **Add receiver**.
Each row also has **Connect** / **Disconnect** and a **Remove** (bin) button. To add a receiver by hand, fill in the empty row at the bottom (name, `host:8073`, optional password and type) and click **Add Receiver**.

### Import and export

**Import...** and **Export...** move the receiver list to and from a CSV file. Passwords are never exported; they stay in the credential store. Import merges on a matching server, so importing the same file twice changes nothing and keeps existing passwords. An optional `RECEIVER_TYPE` column sets KiwiSDR or Web-888.

### Browsing public KiwiSDRs

Click **Browse public…** to open **Browse public KiwiSDR receivers**:
Click **Browse Public…** to open **Browse public KiwiSDR receivers**:

- A filter box ("Filter by name, location, or host…") and **Refresh list**.
- Columns **Receiver**, **Location**, **Users**, **API** and **Limits**.
Expand Down Expand Up @@ -109,7 +109,7 @@ Every channel on the receiver is in use.

1. Leave the slice on the receiver: AetherSDR waits for a free slot and connects when one opens.
2. Accept a monitor (camp) session if one is offered.
3. Or choose another receiver with **Browse public…**.
3. Or choose another receiver with **Browse Public…**.

### The receiver shows Error

Expand Down
8 changes: 4 additions & 4 deletions docs/user/docs/peripherals.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ coming from:

| Word | Meaning |
|---|---|
| `● DIRECT` | Connected directly to the device |
| `● RADIO` | Not connected directly, but the radio relays the device (TGXL and PGXL only) |
| `● OFFLINE` | No connection |
| `● DIRECT` | Connected directly to the device (green dot) |
| `● RADIO` | Not connected directly, but the radio relays the device (TGXL and PGXL only; yellow dot) |
| `● OFFLINE` | No connection (orange dot) |
| `Connecting…` | A connection attempt is in progress |

The TGXL, PGXL and Antenna Genius applets use the same words. A device that
Expand Down Expand Up @@ -110,7 +110,7 @@ device accepts it.
("Code for this session only").
- The code is hidden unless you click **Show**, is concealed again when you
change page, and is kept out of logs, the automation bridge and widget
grabs. **Clear code** deletes the saved code.
grabs. **Clear Code** deletes the saved code.
- After repeated failures with a saved code, the device is blocked:
"Authorization blocked; enter a code and click Connect to retry".
- If direct authentication fails, a TGXL or PGXL falls back to the radio
Expand Down
6 changes: 5 additions & 1 deletion docs/user/docs/radio-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ Several menu items open Radio Setup straight at the right page:
- **Settings → USB Cables...** → USB Cables
- **Tools → Configure KiwiSDR...** → Antennas

The window has no title bar. Drag any empty part of it to move it, and drag its top or bottom edge to make it taller or shorter; its width is fixed. It reopens at the height and place you left it. Close it with the round **✕** in the top-right corner, **Esc** or **Ctrl+W** (**⌘W** on macOS). It's a window of its own, with its own taskbar entry, so you can minimize it from the taskbar or park it on another monitor. **View → Frameless Window** does not apply to it.

On/off buttons (**Enabled** / **Disabled**) fill green when on. Where you pick one of a set (**DHCP** / **Static**, **Radio Side** / **Client Side**, **CWU** / **CWL**), the chosen one fills cyan. A control the connected radio cannot use is dimmed, never hidden.

## Finding a setting

Radio Setup is a searchable browser: a categorised tree of pages on the left and the selected page on the right.
Expand Down Expand Up @@ -75,7 +79,7 @@ Radio Setup is a searchable browser: a categorised tree of pages on the left and

| Page | What it covers |
|------|----------------|
| **Appearance & Behavior** | Slice Letter Display (see [Multi-Flex](./multi-flex.md)), slice colours (see [Slice Colors](./slice-colors.md)), Single-click delay and mouse-wheel behaviour. Themes are under **View → Theme**. See [Themes and Theme Editor](./themes-and-theme-editor.md). |
| **Appearance & Behavior** | Slice Letter Display (see [Multi-Flex](./multi-flex.md)), slice colors (see [Slice Colors](./slice-colors.md)), Single-Click Delay and mouse-wheel behavior. Themes are under **View → Theme**. See [Themes and Theme Editor](./themes-and-theme-editor.md). |
| **SmartLink** | Pinned SmartLink certificates. See [SmartLink Setup](./smartlink-setup.md). |
| **QRZ & Callsigns** | QRZ.com account and lookup cache. See [Callsign Lookup](./callsign-lookup.md). |

Expand Down
2 changes: 1 addition & 1 deletion docs/user/docs/rx-controls.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ when you reconnect, so the slice keeps the mute state the radio reports.
The single-click delay is set to 0, which disables double-click actions.

1. Open **Settings → Radio Setup... → Appearance & Behavior**.
2. Raise **Single-click delay** above 0, or press **Reset** for the platform
2. Raise **Single-Click Delay** above 0, or press **Reset** for the platform
default.

### Squelch switched off when you changed to RTTY
Expand Down
2 changes: 1 addition & 1 deletion docs/user/docs/slice-colors.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Each slice (A–H) has its own colour, used for its frequency marker, filter pas

Open **Settings → Radio Setup... → Appearance & Behavior** and find the **Slice Colors** group:

<img src="/img/screens/radio-setup-appearance.png" width="679" alt="Appearance &amp; Behavior page. Slice Letter Display offers Global slot index (selected) or Radio-assigned letter with global subscript. Slice Colors offers Use Aether defaults or Custom colors (selected), with eight colour buttons A to H in cyan, magenta, green, yellow, orange, teal, pink and purple and a Reset All to Defaults button. Further down, Single-click delay is 400 ms with a Reset button, and Mouse wheel has a Reverse mouse-wheel tuning direction checkbox." />
<img src="/img/screens/radio-setup-appearance.png" width="679" alt="Appearance &amp; Behavior page. Slice Letter Display offers Global slot index (selected) or Radio-assigned letter with global subscript. Slice Colors offers Use Aether defaults or Custom colors (selected), with eight color buttons A to H in cyan, magenta, green, yellow, orange, teal, pink and purple and a Reset All to Defaults button. Further down, Single-Click Delay is 400 ms with a Reset button, and Mouse Wheel has a Reverse mouse-wheel tuning direction checkbox." />

*Radio Setup, Appearance & Behavior page with Custom colors chosen, so each slice letter's colour can be changed.*

Expand Down
6 changes: 3 additions & 3 deletions docs/user/docs/smartlink-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ AetherSDR pins each SmartLink radio's TLS certificate on first use, to protect y

### Managing pins

**Settings → Radio Setup... → SmartLink → Pinned SmartLink Certificates** lists each pinned radio with its **Host**, **SHA-256 fingerprint** and the date it was **Pinned**.
**Settings → Radio Setup... → SmartLink → Pinned SmartLink Certificates** lists each pinned radio with its **Host**, **SHA-256 Fingerprint** and the date it was **Pinned**.

- **Forget selected** removes one pin.
- **Forget all** clears every pin after confirmation. Each radio is pinned again, silently, on its next connection.
- **Forget Selected** removes one pin.
- **Forget All** clears every pin after confirmation. Each radio is pinned again, silently, on its next connection.

Forget a pin only when you have deliberately changed a radio's certificate.

Expand Down
Loading
Loading