onairscreen:release_notes_0.9.8

OnAirScreen 0.9.8 — Release Notes

Release date: July 2026
Previous baseline: 0.9.6 (beta)


OnAirScreen 0.9.8 is not just another incremental update — it is the largest release in the project's history. What started as a focused on-air display tool has evolved into a fully connected, remotely controllable broadcast companion with a modern web interface, smart home integration, and a dramatically more robust codebase under the hood.

Since version 0.9.6, hundreds of commits have landed across remote control, automation, studio workflow, security, and code quality. Whether you run OnAirScreen on a studio PC, a Raspberry Pi, or headless in the rack — this release brings features that studios have been asking for, fixes long-standing annoyances, and lays a solid foundation for everything that comes next.

If you have been waiting for the right moment to upgrade: this is it.


Area What's new
Web-UI Full browser-based remote control with real-time WebSocket updates
Smart Home MQTT integration with Home Assistant Autodiscovery
Studio Workflow Top-of-Hour countdown, configuration presets, event logging
Warnings Priority-based warning system with NTP support
API TOGGLE commands, REST endpoints, expanded status JSON
Quality 580+ unit tests, unified error handling, security hardening
Docs Complete English and German user manuals

The headline feature of this release cycle is a complete Web-UI accessible from any browser on your network:

  • Real-time status display for LEDs, AIR timers, and NOW / NEXT / WARN text fields
  • One-click LED control with toggle functionality
  • AIR timer controls — start/stop, plus reset for AIR3 and AIR4
  • Text input for NOW, NEXT, and WARN messages with clear buttons
  • REST-style API endpoints: /api/status and /api/command
  • Version and distribution info shown in the UI
  • Connection error modal that dims the background and disables controls when the link is lost

WebSocket support replaces HTTP polling for status updates — changes appear on screen instantly, with no refresh lag.

Dark Mode is fully supported: toggle via button, preference is saved automatically, and the theme is applied immediately on page load (no flash of light mode).

The Web-UI layout has been redesigned for clarity and compactness: status rows for LEDs and AIR timers, side-by-side NOW/NEXT fields, and timer labels (Mic, Phone, etc.) shown directly on control buttons.


OnAirScreen now speaks MQTT — perfect for studios that already run Home Assistant or any MQTT broker:

  • LED switches (LED1–4) — turn indicators on/off remotely
  • AIR timer switches (AIR1–4) — start and stop timers
  • AIR timer sensors — elapsed time in seconds
  • Reset buttons for AIR3 and AIR4
  • Text entities for NOW, NEXT, and WARN fields
  • Automatic status updates after every state change
  • Automatic reconnection with autodiscovery re-publishing on reconnect
  • Home Assistant Autodiscovery — devices appear automatically, no manual YAML required

MQTT settings (server, port, credentials, device name) are configurable in the settings dialog. The base topic is auto-generated from onairscreen plus a unique device ID derived from the MAC address.


A studio-focused feature for radio workflows: a wall-clock synchronized countdown to the next full hour, displayed on the Radio Timer (AIR3) in M:SS format.

  • Press once to start — calculates remaining time to the next :00 and counts down
  • Press again (or send OFF/TOGGLE) — stops and resets to 0:00
  • Synchronized with the system clock; stops automatically at the hour
  • /api/status includes "topOfHour": true in the air[3] object while active

Control options:

Method Command / Action
Hotkey T Toggle countdown
UDP / HTTP AIR3TOH:ON, AIR3TOH:OFF, AIR3TOH:TOGGLE
Web-UI "Top of Hour" button at AIR3
MQTT Publish to {base_topic}/air3/toh
Home Assistant "AIR3 Top of Hour" button (autodiscovery)

Warnings are no longer a single flat message. The new priority system supports four levels:

Priority Type Behaviour
-1 NTP Shown in blue; hidden when higher-priority warnings exist
0 Normal Standard warning
1 Medium Higher visibility
2 High Highest priority
  • API command format: WARN:Prio:Text
  • Web-UI shows NTP warnings in the status section with colour coding
  • X button to dismiss warnings (priority 0–2) directly from the status display
  • /api/status returns a warnings array with priorities alongside the legacy warn field

Save and restore complete OnAirScreen configurations as JSON preset files:

  • Save, load, list, and delete presets from the settings dialog
  • Dedicated UI buttons for preset management
  • Ideal for switching between show formats, stations, or deployment profiles

A new event logging system tracks everything that happens in your session:

  • LED state changes
  • AIR timer start/stop/reset events
  • Incoming commands (UDP, HTTP, MQTT)
  • Warning changes
  • System events

Configurable log levels: DEBUG, INFO, WARNING, ERROR, CRITICAL, NONE — set in General settings or override temporarily via --loglevel on the command line.


  • TOGGLE support for LED1–4, AIR1, AIR2, and AIR4 (in addition to ON/OFF)
  • Expanded /api/status JSON with version, distribution, warnings array, and Top-of-Hour state
  • Command test scripts for HTTP and UDP (utils/cmdtest_http.sh, utils/cmdtest_udp.sh)

  • Tooltips on all settings widgets
  • About dialog now shows version, distribution, and settings file path
  • Complete user manuals in English (USER_MANUAL.md) and German (BEDIENUNGSANLEITUNG.md)
  • Updated screenshots in README

Issue Fix
Text clock in 24h mode showed 24-hour numbers (e.g. "12 minutes to 16") Text clock now always uses spoken 12-hour form (e.g. "12 minutes to 4")
Web-UI template not found in PyInstaller builds Correct template path resolution for packaged builds
LED toggle status not updating in Web-UI Status now refreshes correctly after LED toggles
Autoflash LED blinking broken in Web-UI Autoflash behaviour restored in browser control
Digital clock second LEDs lagged at second rollover Repaint aligned to wall-clock second boundaries
Weather widget made API calls when disabled or without API key API calls suppressed when widget is off or unconfigured
Crash when UDP/HTTP ports were left empty Graceful handling of empty port configuration
IP addresses not shown correctly at startup Fixed IP display on launch
HTTP command URL decoding Correct decoding of URL-encoded command parameters
PyQt6 compatibility issues Compatibility fixes across the application
MQTT client restart logic Improved reconnect and autodiscovery re-publishing
get_default() font constants Correct default font values after refactoring

This release includes a major internal refactoring that does not change how OnAirScreen looks on air, but makes it far more maintainable and testable:

  • start.py reduced from ~1,700 to ~1,400 lines by extracting dedicated modules: NTP manager, font loader, signal handlers, system operations, status exporter, UI updater, hotkey manager, logging config, command handler, timer manager, and more
  • Central configuration in defaults.py — one source of truth for all default values
  • Unified error handling with a custom exception hierarchy and consistent logging via log_exception()
  • Security hardening: input validation and sanitization for all network commands, length limits, control character stripping
  • 580+ unit tests covering core modules, Web-UI, API endpoints, MQTT, exceptions, and more
  • Type hints and docstrings throughout the codebase
  • Improved multicast support on macOS with dedicated test/diagnostic tools

  • Settings are preserved — existing configuration files are fully compatible
  • MQTT is disabled by default; configure it in Settings → MQTT if needed
  • Web-UI is available at http://<host>:<http-port>/ (default port: 8010)
  • Presets are stored as JSON files alongside your settings
  • For Raspberry Pi / packaged builds: use the latest image or binary from astrastudio.de

OnAirScreen 0.9.8 represents years of feature requests, bug reports, and real-world studio feedback distilled into one release. A special thanks to everyone who tested beta builds, reported issues, and helped shape this version.

Happy broadcasting!

— Sascha Ludwig / astrastudio.de


OnAirScreen is open source. Support the project via PayPal, Buy Me a Coffee, or Ko-fi.

  • onairscreen/release_notes_0.9.8.txt
  • Last modified: 13.07.2026 20:58
  • by admin