# Settings Menu — UI/UX Analysis & Improvement Plan *Authored: 2026-03-30* ## 1. Current Structure The Settings tab (`#tab-settings`) contains four sub-tabs: | Sub-tab | Purpose | Complexity | |---|---|---| | **Scheduler** | Grayline / Time Span / Satellite scheduling | High — nested modes, forms, timeline | | **Background Decode** | Hidden background decoder channels | Medium — toggle + bookmark checklist | | **Bandplan** | IARU region overlay on spectrum | Low — dropdown + checkbox | | **History** | Clear server-side decode history | Low — 10 clear buttons | --- ## 2. Identified Issues ### 2.1 Information Architecture | # | Issue | Severity | |---|---|---| | IA-1 | **"Settings" is a catch-all bucket.** Scheduler and Background Decode are operational features, not user preferences. Bandplan and History are true settings/maintenance. Mixing them under one tab creates cognitive overhead. | Medium | | IA-2 | **Scheduler sub-tab is overloaded.** It packs three conceptually distinct features (Grayline, Time Span, Satellite) into one scrollable panel via conditional `display:none` sections. Users must scroll past irrelevant sections. | Medium | | IA-3 | **History clearing is buried.** Users wanting to clear FT8 decode history must navigate to Settings → History — an unintuitive path. This action is more naturally accessible from the Digital Modes tab itself. | Low | | IA-4 | **No search or categorization.** With 4 sub-tabs today, it's manageable, but the flat sub-tab bar won't scale if more settings (e.g., audio, display theme, reporting/PSKReporter, notifications) are added. | Low | ### 2.2 Interaction Design | # | Issue | Severity | |---|---|---| | IX-1 | **Save button visibility is inconsistent.** Save/Reset buttons use `style="display:none"` and are shown dynamically, but there is no dirty-state indicator. Users can change fields without realizing they haven't saved. | High | | IX-2 | **No confirmation on destructive actions.** The 10 history-clear buttons and "Reset to Disabled" (scheduler) fire immediately on click. No confirmation dialog protects against accidental data loss. | High | | IX-3 | **Entry table details collapsed by default.** The Time Span entry table is inside a `
` element — users must expand it to see, edit, or delete entries. This adds an unnecessary click when entries already exist. | Medium | | IX-4 | **Satellite form uses a modal overlay; Time Span form is inline.** Inconsistent form presentation within the same sub-tab. Both should use the same pattern. | Medium | | IX-5 | **Toast notification positioning.** The `.sch-toast` uses `position: fixed; bottom: 1.5rem` which can overlap with the main tab bar or mobile navigation. It also disappears without user control. | Low | | IX-6 | **Bookmark filter in Background Decode has no "select all / deselect all" shortcut.** With many bookmarks, toggling them one by one is tedious. | Medium | ### 2.3 Visual & Layout | # | Issue | Severity | |---|---|---| | VL-1 | **Scheduler has no visual state summary.** The "No activity yet." card doesn't show whether the scheduler is enabled or what mode it's in at a glance. Users must inspect the mode dropdown. | Medium | | VL-2 | **History clear buttons are uniform.** All 10 buttons look identical (`sch-write sch-reset-btn`). No indication of which decoders have data to clear. Buttons for empty histories are noise. | Low | | VL-3 | **Mobile responsiveness is partial.** The `@media (max-width: 600px)` rules handle `.sch-row` and `.bgd-*` layout, but the Time Span table (`.sch-ts-table` with 8 columns) overflows on narrow screens. | Medium | | VL-4 | **Sub-tab bar can overflow.** It uses `overflow-x: auto` but gives no visual scroll indicator. On small screens, the "History" tab can be hidden off-screen with no affordance. | Low | ### 2.4 Accessibility | # | Issue | Severity | |---|---|---| | A-1 | **Missing `aria-label` on several controls.** The scheduler mode select has one, but the grayline lat/lon inputs, interleave fields, and satellite fields lack accessible names beyond their visible label text (which is acceptable for `