v1.9.4 — FT8 Options, live tone refresh, phone-friendly web UI
A feedback-batch release: the FT8-specific settings get their own home, the TX tone picker stops going stale, and the web page finally works on a phone held upright.
FT8 Options — one place for everything that's only meaningful in FT8 mode. The Tab5's left-pane button used to be called Filter, which undersold it — it also holds real behaviour toggles like Auto-work pileup and grey-listing, not just filters, so it's renamed Options (Roy KI0ER). The web page gets the same idea properly for the first time: CQ message presets and the FT8 filters, which used to sit buried in one long general Settings list, now live behind their own Options button next to TX tone, shown only in FT8 mode. The button carries a count of how many settings are currently on rather than a plain colour — a colour would always read "active" for anyone who runs filters permanently, telling you nothing — and hovering it lists which ones (Dirk DK7CVD, Roy KI0ER). Inside the panel, an active checkbox gets a coloured border in addition to its own tick mark, so nothing depends on colour alone to be readable (Don N2VGU).
The TX tone picker no longer goes stale while you're deciding. It used to read the band's occupancy once, when you opened it — so a slow decision (reading the strip, weighing EVEN against ODD) could cross a 15-second slot boundary and land you on a slot that filled in while you were looking at it. It now re-checks every 3 seconds while the picker is open, without disturbing your own in-progress pick.
The web page works on a phone held upright. In portrait, the top and bottom bars could lose controls off the edge of the screen with no way to reach them — landscape was always fine (Randy N4OPI, iPhone Safari). Both bars now scroll sideways, the same swipe as the decode list, and the page itself scrolls if the whole layout doesn't fit.
Battery display simplified, and now says when charging is capped on purpose. The raw cell voltage is gone from both the Tab5 and the web page — the percentage already carries the level, and nobody reading the bar needs the number underneath it. In its place: once your Battery Care charge limit trips, the reading now says (limit), on both screens — before this, "capped on purpose at 80%" and "not charging for some other reason" looked identical (Don N2VGU).
The snap-on keyboard can be attached (or reattached) any time, not just at boot. It used to be probed once at startup; a keyboard snapped on later was never found until the next reboot. It's now found within a couple of seconds whenever it's attached, and a detach-then-reattach mid-session works the same way. Its two LEDs are dark once it's found — the keyboard works identically no matter when it was attached, so there's nothing left for a light to usefully say.
The macOS/Linux flasher script works on more systems. A packaging bug could ship flash.command with Windows line endings, which some shells refuse outright with bad interpreter (Michael K Johnson KZ4LY, Fedora). The packaging script now guarantees it's clean regardless of what machine builds the release.