Changelog

What's new in OpenAVC. Every release, every feature.

v0.21.0

OpenAVC 0.21.0 adds an MQTT transport for Python drivers and restores device discovery on Linux and Raspberry Pi.

Features

  • Drivers can control equipment over MQTT, such as televisions with a built-in broker, building-management gateways, and IoT or lighting bridges. It supports plain and TLS connections, including the self-signed certificates many devices ship with. MQTT is available to Python drivers.

Fixes

  • Device discovery finds devices again on Linux and Raspberry Pi. The network scan had run without the privilege its ping sweep needs, so it reported an empty network even when devices were present. Discovery on Windows, Docker, and the appliance was not affected.
  • In-app updates are more reliable on Linux and Raspberry Pi. Updating a system carried forward from an older layout could fail and leave you on the previous version, and changes to the background service definition were not applied during an update. A failed update no longer reports itself as successful in the log.

v0.20.0

OpenAVC 0.20.0 fixes the device simulator on Windows, adds pick-from-a-list parameter entry, and reorganizes touch panel bindings into Shows and Does.

Fixes

  • The device simulator now launches on Windows installs. It had failed to start with an internal error, so you could not test a project against simulated devices.
  • On Windows the system tray's Start, Stop, and Restart actions always work now, because the background service is installed by default. The tray also reports a failed service action instead of doing nothing.
  • Variables "Used By" now lists scripts that subscribe to a pattern like device.* as users of the matching variables.
  • The touch panel preview loads correctly when viewed through a cloud connection.

Features

  • Pick, don't type. Command and action parameters, macro steps, and touch panel bindings offer dropdowns wherever the choices are known, including presets, inputs, child controls, and variables. Free-text entries are trimmed and validated before being sent to the device.
  • Touch panel element bindings are organized into Shows (what the element reflects from state) and Does (what it triggers). A control can read a variable or device state directly without a helper macro, and a list's two-way selection updates correctly. Existing projects upgrade automatically when opened.
  • Multi-unit devices such as matrix switchers, multi-zone amplifiers, and DSPs can address each input, output, or zone as its own child entity with its own controls, including devices whose layout is discovered at connect time.
  • A new reload action re-reads a YAML driver file you changed outside the Driver Builder and reconnects its devices.

v0.19.3

OpenAVC 0.19.3 fixes the macOS menu-bar Uninstall so it fully removes the background service.

Fixes

  • The macOS Uninstall OpenAVC menu-bar item now fully removes OpenAVC. In 0.19.2 it quit the menu-bar app but left the background service running, so the server came back after a restart. It now stops the background service and the menu-bar app and removes the application, keeping your projects and settings unless you choose to remove them. The Terminal uninstaller was not affected.

v0.19.2

OpenAVC 0.19.2 adds a proper macOS uninstaller and gives the macOS app its real icon.

Uninstall OpenAVC on macOS

  • The macOS app now has a proper uninstaller. Click the menu-bar icon and choose Uninstall OpenAVC, or run the bundled uninstaller from Terminal. It stops the background service and the menu-bar app and removes the application, keeping your projects and settings unless you choose to remove them. Dragging the app to the Trash on its own does not stop the background service.

macOS app icon

  • The macOS app now shows the OpenAVC icon in Finder and the Applications folder instead of a generic placeholder.

v0.19.1

OpenAVC 0.19.1 fixes cloud pairing on the macOS build so an instance connects to the cloud after pairing.

Fixes

  • On macOS, pairing an instance to the cloud reported success but the connection stayed disconnected, so remote access and monitoring never came online. The macOS build now connects to the cloud right after pairing. Windows and Linux installs were not affected.

v0.19.0

OpenAVC 0.19.0 adds a macOS installer, a no-code way to control devices that do not have a driver yet, and support for serial devices that connect through a network bridge.

Run OpenAVC on a Mac

  • There is now a macOS installer. It sets OpenAVC up as a background service that starts at boot, adds a menu-bar app for opening the Programmer and checking status, and supports in-app updates and rollback the same way the Windows and Linux builds do.

Control a device that has no driver yet

  • New Generic device types for TCP, serial, and HTTP let you type a device's commands and responses directly in the Programmer, with no driver file. Define commands with fill-in values, turn replies into device state, and poll for status on an interval. This is useful for one-off equipment or for trying a protocol before writing a full driver.

Reach serial devices through a network bridge

  • A serial device can now connect through an IP-to-serial gateway such as a Global Cache iTach. Point the device at a bridge port and OpenAVC carries its traffic over the network, so equipment without an Ethernet port still works from anywhere on the local network.

Steadier connections

  • Devices on TCP, serial, UDP, and OSC now notice a dropped link right away and reconnect, instead of waiting out a timeout. OSC devices can also run over TCP.

Driver Builder improvements

  • The Driver Builder validates commands, responses, state variables, and frame settings as you build, handles child devices more reliably, and lets you author device settings that send OSC arguments or HTTP bodies and headers.

Fixes

  • Fixes to the Plugins and Variables screens, sturdier reconnection in the Programmer, and connection-handling fixes across the transports.

v0.18.0

WiFi on/off control in network settings.

New

  • Turn the host WiFi radio on or off directly from the network settings, on the device's own setup screen and in the Programmer's network card. The scan and join controls appear only when WiFi is on. This keeps WiFi off where site policy requires it, and lets you turn it on for a unit that needs to join a wireless network with no wired drop.

v0.17.1

A small fix release.

Fixes

  • The announcement that lets the Panel app and other devices find an OpenAVC server by browsing the network now starts reliably on Linux servers. It previously failed silently at startup on Linux installs, so automatic server discovery only worked against Windows servers.

v0.17.0

A reliability release focused on device discovery.

Discovery

  • Discovery no longer depends on system network tools. The server sends ICMP echo itself where the OS allows and falls back to the system ping command, so minimal and locked-down installs can run a full scan.
  • The mDNS, SSDP, and AMX beacon listeners join multicast on every network interface, so multi-NIC systems hear every attached network. The pairing announcement the Panel app listens for does the same, and retries if the network comes up after the server starts.
  • If the environment blocks part of a scan, the Discovery view says what could not run instead of showing an empty result.

Fixes and improvements

  • Wired IPv4 changes from Settings or the setup screen follow the platform's apply behavior, including platforms that restart to apply.
  • The Windows installer always installs the server bundle.

v0.16.0

A control surface release. The Stream Deck integration gets a rebuilt live editor, network-attached decks, and full dial and touchscreen support, plus controller network settings in the Programmer and a setup screen for dedicated displays.

Stream Deck

  • Supported models are the Mini, Mini MK.2, Original, MK.2, Neo, XL, XL V2, Plus, Pedal, and Studio.
  • The Stream Deck view renders the connected deck live. Click a key, dial, touch strip, or info screen to edit it in the inspector, and shift+click a key to press it for real. Switching page tabs switches the physical deck.
  • Config changes apply live, so decks no longer blank or reconnect on save.
  • Network decks are supported through the Elgato Network Dock (PoE or USB-C power) and the Stream Deck Studio's built-in Ethernet port. Decks on the local network segment are discovered automatically, and anywhere else they can be added by IP address. A network deck behaves exactly like a USB deck, and works from Docker and VM deployments where USB passthrough was not an option.
  • Dials adjust values with configurable step and range and have separate push actions. The touch strip handles taps, long-presses, and swipe-to-adjust per zone.
  • Live meters and value readouts can be placed on keys and screens. The info screen can show two live values, plus a clock when idle.
  • Virtual decks let you build a layout with no hardware attached, then transfer it to a real deck later, including between different deck models.
  • Locked keys hold the same position and assignment on every page, and a key that navigates to a page lights up while that page is active.
  • Page names, page duplicate and clear, and arrange tools for copy, paste, move, and swap.
  • Per-deck brightness, idle dimming rules, and default color settings.
  • Macros can drive the deck, and keys show run feedback while their macro executes.

Controller network settings

  • On Linux systems with NetworkManager, including the Raspberry Pi image, the controller's static IP, gateway, and DNS can be set from Programmer Settings. Validation stops you from saving a configuration that would cut off your own session.

Setup screen for dedicated displays

  • A controller driving a dedicated display shows a setup screen while the project has no panel content, with the address to browse to and how to get connected. Once panel content loads, the display switches to the panel automatically.

Fixes and improvements

  • The Driver Builder flags command shapes that do not match the driver's transport and validates OSC argument values.
  • Secret fields in device dialogs are masked correctly, and the device detail view validates setting edits and fixes log tailing.
  • The UI Builder fixes binding validation, duplicate references, and element id collisions.
  • Convert to Script generates code that matches what the macro engine actually does, and scripts keep the macro call chain across the script boundary.
  • The Updates view shows updates staged from the cloud, labels rollbacks clearly, and no longer leaves a stuck progress dialog.
  • SNMP discovery is hardened against malformed device responses.
  • Projects are stored in the data directory alongside drivers and plugins, and existing projects migrate automatically.

v0.15.1

A small follow-up to 0.15.0 that keeps the room panel login-free and tightens how the Programmer handles passwords.

Wall panels stay open

  • On a controller with an admin password set, opening the room panel on a wall tablet could trigger the browser's built-in login popup. The panel now loads its theme and plugin data without ever prompting, so tablets and phones reach the controls the moment they connect.

Clearer first-run setup

  • First-time setup now asks for an admin username alongside the password, prefilled with "admin." It is the username you type on the Programmer sign-in screen, so the login no longer has an empty field with nothing to enter.

Passwords are not pre-filled

  • Password and secret fields in the Programmer no longer show pre-filled dots or get refilled by the browser's saved-password autofill. A field stays empty unless you type in it.

Driver Builder reliability

  • The Driver Builder warns before discarding an unsaved driver you are still editing, and keeps your edits straight when a save and a change overlap.
  • Imported or pasted drivers are checked the same way the form editor checks them, so a bad file loads into the editor to fix instead of failing silently.

v0.15.0

OpenAVC 0.15.0 adds per-device quick actions and setup wizards, SSH device control, and clearer offline diagnostics, on top of a broad reliability pass across the platform.

Quick actions and setup wizards

  • Quick Actions are handy per-device shortcuts in the device view, one-click buttons for the commands you run while commissioning or troubleshooting a device.
  • A driver can now define a setup wizard for its device, walking you step by step through tasks like provisioning, so first-time configuration is guided rather than manual.

Control devices over SSH

  • OpenAVC can now drive equipment that exposes a command-line interface over SSH, using the system's OpenSSH client. Authenticate with a password or an installed key. This covers network switches, servers, and appliances that speak CLI instead of a binary control protocol.

Know why a device went offline

  • When a device drops, the device card now reports an actionable reason such as authentication failed, connection refused, unreachable, or a changed SSH host key, each with a plain-language next step, instead of a generic disconnect.
  • Drivers can attach their own hint to the offline banner for device-specific guidance.

Touch panel theming

  • ThemeStudio adds per-type styling and page background editors. Style buttons, sliders, and labels independently, and set a background image or color per page.
  • Several color and contrast issues are fixed.

Sharper device discovery

  • Discovery identifies more equipment, including HTTPS-only devices that previously came back unrecognized. It reads additional vendor signals from devices already on the network and keeps results current as a scan runs.

Driver authoring

  • Import and export driver bundles straight from the Code view. Companion files for simulation and discovery come along on install and are cleaned up on uninstall.
  • The general-purpose TCP driver and the Add Device dialog also pick up authoring improvements.

Reliability and hardening

  • A wide reliability pass touches the scripting runtime, plugin system, device simulator, driver loader, cloud connection, inter-system links, scheduling and triggers, backups, and saved variable state, all more resilient to malformed input, network failures, and edge cases.
  • Update and rollback handling is more dependable.

v0.14.0

OpenAVC 0.14.0 makes network scans identify more controllers without any setup, and changes the first run so a new instance is protected from the moment it starts.

Controllers identify during a scan

  • Some telnet controllers send a Telnet negotiation in one network packet and their identifying banner in the next. Discovery now reads across packets, so devices like the TurtleAV Chazy and Darwin controllers are recognized during a network scan without installing the driver first. AMX device discovery also matches more reliably.

Secure by default

  • A brand new instance now prompts you to claim it and set a password before anything else. There is no unprotected window on first boot, and no default password to remember to change. Existing instances keep their current settings.

Hardened against the network

  • The rate limiter no longer trusts forwarded-for headers by default, and system updates verify their download and refuse to apply anything that fails the check. Several internal file-path and archive handling paths were tightened.
  • On the Raspberry Pi image, the OS login is locked down with SSH off and a single password shared with the web login.

Improvements

  • Running a command from a device page now shows proper controls such as dropdowns, number fields, and toggles instead of plain text boxes, so the right values are easier to enter.
  • Saving a change to a device no longer drops its sub-devices or any settings queued for an offline device.
  • The Surface Configurator gains visible-when and auto-page editors for control surfaces.
  • Per-device logs always capture what was sent to and received from the device, and the console log honors the level you configured.
  • Video sources send a codec hint from the discovery probe so downstream playback starts correctly.
  • Driver authors can validate avcdriver files live in their editor against the published schema, now linked from the docs.

v0.13.0

OpenAVC 0.13.0 brings child entities: a single controller like an AV-over-IP system, a video matrix, or a multi-zone amplifier can now expose every encoder, decoder, output, zone, or preset as its own controllable entity. It also adds the Video Panel plugin for live H.264 and H.265 video on the panel, moves community drivers and plugins into the data directory so they survive upgrades, and lets macros navigate panel pages.

Child entities

  • A driver can declare child entity types, and the platform tracks each child as its own addressable unit. A matrix shows up as one device, but each input and output is an entity you can command, bind to a button, and read state from. The same goes for DSP zones, video-wall presets, and AV-over-IP encoders and decoders.
  • The Programmer adds a Child Entities tab on the device view, with a searchable command picker and one unified filter that spans device state and child entities, so a controller with hundreds of children stays manageable.
  • Live child state lives under device.<id>.<child_type>.<padded_id>.<property> and every child carries an online flag. Macros, triggers, scripts, and plugins all read and act on child state the same way they do for any device.
  • Child state relays to the cloud with per-property priority, so latency-sensitive state like video routing goes up quickly while bulk telemetry relays on a slower cadence, and large snapshots are paced so a big controller does not flood the link.
  • The project file moves to v0.5.0 to store per-child labels and config. Projects upgrade automatically, and projects without controller-style devices are unaffected.

Video Panel

  • The new Video Panel plugin shows live H.264 and H.265 video on the panel. Point it at an IP camera or another RTSP source and place the stream on a panel page for a confidence monitor, a camera feed, or an overflow display. Streams are set up from a Video Streams panel in the Project view, and you install it from the plugin library once you are on 0.13.0.

Where drivers and plugins live

  • Community drivers and plugins now live under the data directory, for example /var/lib/openavc on Linux, instead of beside the program files, so they stay intact across upgrades and reinstalls. Existing installs migrate automatically on the first start after the update, on Windows, Linux, Docker, and the Pi image.

Page navigation from macros

  • A new ui.navigate macro step lets a macro switch the panel to another page, so a single button can run its actions and move the operator to the right screen. It understands $back, which walks back through the page history.

Plugins

  • Plugins can register their own HTTP routes, ship custom panel elements that appear in the UI Builder, and keep a per-plugin persistent data directory. These are the building blocks behind Video Panel and are available to any community plugin.

Reliability and polish

  • Discovery pre-fills a driver's default settings when you add a discovered device, so it lands ready to connect.
  • Faster state handling on large projects, through a state-key prefix index and bulk subscriptions.
  • Some plugins would not enable on a fresh install, with no feedback from the Enable button. Both are fixed; the missing dependency is bundled, and plugin enable, disable, and settings errors now surface in the Programmer.
  • Uninstalling a plugin updates the project revision so other open editors notice the change.
  • Custom plugin panel elements no longer interfere with editing project state and config.

v0.12.0

OpenAVC now has built-in HTTPS that you can turn on from Settings > Security. The Programmer prompts you to install community drivers a project needs but does not have, and the server can be restarted from inside the IDE after a settings change. Also: save conflicts and slow startup with many devices, devices reporting connected when they were not, and a cloud-restart hang on locked-down service managers.

HTTPS

  • Off by default. When enabled, the server runs a TLS listener on port 8443 with the full app and a tiny HTTP listener on 8080 that returns a 301 or 308 redirect to the matching HTTPS URL, preserving path and query string. Existing bookmarks, panel apps, and mDNS clients keep working without reconfiguration.
  • The auto-generated certificate has a 10-year validity and covers localhost, 127.0.0.1, the OS hostname, and every local IPv4 the server can see. If the host's primary IP changes between restarts the server cert is re-issued against the same internal CA, so devices that already trust the CA survive without re-pairing.
  • The Security card displays the certificate fingerprint and per-OS instructions for installing the CA on Windows, macOS, iOS, and Android.
  • If you have an internal CA, switch the mode to Provided and point at your PEM cert and key. There is no silent fallback to HTTP on a bad cert; the server writes a precise error and refuses to start the TLS listener.
  • mDNS advertises scheme=https and the TLS port when HTTPS is on. ISC peers, the cloud tunnel, the Windows tray, and the Pi kiosk launcher all pick up HTTPS automatically.

In-app server restart

  • The Network and Security cards prompt you to restart when you save a setting that needs a process restart, and the dialog hands the restart back to the service manager. NSSM on Windows, systemd on Linux, Docker, and dev installs all work. The progress dialog tracks the new process coming up and reloads the page automatically when it is reachable again.

Missing drivers prompt

  • Open a project that references a driver you do not have installed and the Programmer surfaces a modal listing every missing driver, annotated with community-catalog matches. One click installs them and re-activates the orphaned devices so you do not have to add them back to the project by hand.

Reliability

  • Save conflicts and slow startup when a project has many devices.
  • Device connected state lying for drivers that do not use the platform transports.
  • Cloud restart hanging when the service manager could not see the process exit.
  • device.error.<id> is now emitted from poll errors and send_command errors, not just connect errors, so error-driven triggers fire reliably.

Polish

  • The script editor's Monaco bundle is now served locally so it works offline.
  • Embedded panels inside the UI Builder no longer prompt for the panel password.
  • The Docker build compiles the frontend on the native build arch, avoiding QEMU SIGILL crashes during multi-arch CI builds.

v0.11.0

Discovery rebuilt around driver-declared probes and evidence. Cloud agent supports remote restart, diagnostic actions, and tunneled WebSocket and HTTP traffic with query strings and subprotocols intact. Matrix and audio devices respect audio-follow-video. Driver Builder Live Test works over serial and guards against running on a production project. Pre-release audit findings closed.

Discovery

  • Discovery is schema-driven; a driver declares its TCP / UDP probes, mDNS service, SNMP OID, or Python companion, and the scan engine runs them. Every identification on the scan card traces back to a probe response or a service the driver said it owns.
  • The platform itself no longer carries any vendor knowledge; adding a new device family is a driver change, not a core change.
  • The Driver Builder's Discovery editor has been rebuilt to match. You can write a probe inline, see which signal it provides, and validate it against shipped probe fixtures before any device is on the network.
  • Companion .py files are hidden from the driver listing but install, update, and uninstall alongside their .avcdriver file.
  • Common web-app ports are rejected as port_open hints. UDP reachability probes require a poll_interval. mDNS and SSDP scanners bind to the configured control_ip instead of every interface.

Cloud agent

  • Remote restart and diagnostic actions (ping, traceroute, DNS lookup, port check, tail logs) work end to end.
  • The agent gates each downstream action on the capability set the cloud negotiated for the session, so an agent whose tunnel capability was revoked silently ignores stray tunnel pushes.
  • The remote-UI tunnel preserves query strings, custom headers, and WebSocket subprotocols. Frames that arrive before the local WebSocket finishes connecting are queued instead of dropped. The target_port field is honored so the same tunnel can reach the Programmer IDE, the panel, or any other local service.
  • Cloud-pushed updates are staged; the apply step swaps atomically, and a failed apply clears the pending-update marker instead of leaving the system stuck on next boot.
  • Windows installer rollback now matches versions correctly across patch releases.

Matrix and audio

  • Matrix mute respects audio-follow-video; muting a video route also mutes the linked audio route when the matrix is in AFV mode.
  • Audio routes display their current source in the device test panel.
  • The cloud's mute and route commands flow through the same AFV-aware path as the local UI.

Driver Builder Live Test

  • Live Test works against serial drivers in addition to TCP and HTTP.
  • The panel refuses to run against the live project to keep an in-progress driver from clobbering a deployed room.
  • Rate-limit errors from the device surface in the test panel directly instead of failing silently.

Plugin hardening

  • A plugin that fails to register surfaces the error during install instead of disappearing.
  • min_openavc_version is enforced at install time across both first-party and community plugins.
  • State-pattern subscriptions with an empty pattern no longer leak state across plugin reloads.

ISC

  • The inter-system connection drops removed peers and rotates keys when auth changes, so a project reload that swaps an ISC password actually invalidates the old session.
  • Auth failures back off with deduplicated log messages instead of spamming the log every retry interval.

Other

  • Macros: the macro engine serializes register-and-preempt within a cancel group so a fast double-tap of system_on / system_off does not race.
  • OSC: the verify path races the send socket against the listen socket for dual-port devices like grandMA3.
  • Drivers: the Python driver serial template uses the correct connection field names.
  • Installers: the starter project bundled with every installer is now in the v0.4.0 schema.
  • Docs: cancelled macros are not transactional; the docs now say so.

v0.10.3

Plugins can register macro actions and script methods. Audio support in the asset library and panel. Pi image, Docker, and Windows updater fixes.

Plugins

  • Plugins can register macro actions through a MACRO_ACTIONS schema; their actions appear in the macro builder under a Plugin Actions group with a schema-generated form
  • Plugins can register script methods through a SCRIPT_API schema; user scripts call them as openavc.plugins.<plugin_id>.<method>(...)
  • Script editor autocompletes registered plugin methods and shows their docs on hover
  • Plugin select-field options can now point at a state key, so a plugin can offer dropdowns that update as state changes (e.g. an asset list)
  • Plugin detail page in the IDE renders an optional usage block as Markdown so users see how to actually use the plugin
  • Enabling or disabling a plugin refreshes the macro builder action list immediately, instead of after a page reload

Audio in the asset library

  • Asset uploads accept mp3, wav, ogg, and m4a in addition to images
  • Per-file caps of 50 MB for images and 200 MB for audio, with a per-project total of 5 GB
  • Asset browser has filter chips for all / images / audio, with a native preview player on audio entries
  • Program tab now has an Assets section that lists every uploaded asset
  • Panels play audio directly through the panel runtime, driven by the new Audio Player plugin; every connected panel plays in sync

Bug Fixes

  • Pi image: First boot now lands on the OpenAVC panel instead of a blank labwc desktop. The Pi OS rename wizard was overriding our autologin user.
  • Docker: Discovery scans work inside containers. The shipped Compose file uses host networking with NET_RAW, and the image grants cap_net_raw to ping. Install path simplified to "download Compose file, docker compose up -d".
  • Windows: Updates now finish on reboot. The post-install scheduled task was being created with a start time in the past because schtasks silently truncates seconds; we now register the task via XML.

v0.10.2

Fixes the reboot button on Raspberry Pi.

Bug Fix

  • Raspberry Pi: The reboot button in System Settings now actually reboots the device. The previous version invoked the wrong reboot path and silently failed.

v0.10.1

Fixes a silent in-app update failure on Windows.

Bug Fix

  • Windows: In-app updates were silently failing in 0.10.0. The installer was being killed by the service manager before it could replace files. Updates now run via Windows Task Scheduler.
  • To get this fix on an existing 0.10.0 Windows install, manually run the 0.10.1 installer once. Updates from 0.10.1 forward will work normally.
  • Linux, Raspberry Pi, and Docker were unaffected.

v0.10.0

Major Driver Builder overhaul, cloud reliability fixes, and a couple of platform bugs squashed.

Driver Builder

  • Tab layout collapsed from 10 to 6, with related fields grouped together
  • Per-tab validation badges so you can see at a glance which sections need attention
  • Validation messages appear inline next to the field they refer to, not in a wall at the top
  • Every section has a help link to the relevant documentation page
  • Built-in drivers visually distinguished from drivers you have added
  • First-class editor for frame parsers (binary protocols)
  • First-class editor for Telnet authentication blocks
  • First-class editor for on_connect lifecycle hooks
  • First-class editor for OSC argument types and value bounds
  • First-class editor for discovery hints (UPnP types)
  • Full command parameter schema editor
  • Catalog metadata and help fields on the General tab
  • HTTP commands fully supported, including custom headers
  • Live Test panel rebuilds the driver against the production code path so what you test is what ships
  • Duplicate an existing driver as a starting point for a new one

Drivers and Plugins

  • Cleaner navigation between the driver list and editor
  • Action toolbar moved into the header for easier reach
  • Refuses to uninstall a driver or plugin that is in use, with a clear message about what depends on it
  • Uninstall errors that do happen are clearer about why
  • Browse Drivers splits multi-brand drivers into one card per brand, so a search for "Sony" actually finds Sony devices

Cloud

  • Fixed a reconnect loop after a handshake error (a typo in the exception handler meant connections never recovered)
  • A failed session resume no longer drops the entire connection

AI Assistant

  • Driver search and device match tools now query the community driver index for real instead of returning placeholder data

Bug Fixes

  • Windows: Rollback section no longer appears on fresh installs (was offering a "Rollback to v?" button)
  • Pi image: Fixed an autologin override that left newly flashed Pis sitting on a blank kiosk screen

Documentation

  • Driver Builder walkthrough rewritten for the new editor

v0.9.0

Browse Drivers refresh, declarative Telnet login for YAML drivers, smarter discovery, and Programmer login.

Browse Drivers Refresh

  • Video, Streaming, and Power are first-class categories
  • HTTP and OSC drivers are properly tagged in the catalog
  • Each driver shows tags, overview, compatible models, and a deprecated badge when set

Declarative Telnet Login

  • YAML drivers can declare a Username/Password handshake without writing Python
  • Atlona OmniStream and Lutron HomeWorks QS now work out of the box with login auth enabled

Smarter Discovery

  • Network discovery uses the community device catalog to identify equipment by exact manufacturer and model
  • When a model is recognized, OpenAVC suggests the right driver directly

Programmer Login

  • The Programmer IDE now has its own login screen
  • Set a Programmer username and password in System Settings to require sign-in for editing

Simulator

  • Auto-generated simulator now handles HTTP-based YAML drivers
  • Simulator mirrors the new declarative login handshake for end-to-end testing

Stability and Polish

  • WebSocket broadcasts fan out concurrently for smoother panel updates
  • Project files preserve unknown fields, making rollback safer after editing on a newer version
  • Plugins now use a dedicated variable_write capability for setting user variables
  • Panels can no longer write outside the var.* and plugin.* state namespaces over WebSocket
  • Programmer and Panel passwords set at runtime are enforced immediately without a restart
  • New state.delete WebSocket message replaces the previous workaround for clearing state keys
  • Programmer IDE debounces plugin event refetches to eliminate flicker on plugin-heavy projects

Driver Definitions

  • Canonical YAML keys for command and response definitions are now send and match
  • Legacy string and pattern aliases still load with a one-time deprecation warning

v0.8.2

Brand refresh, Add Device improvements, simulator fixes, and Pi image build fix.

Branding and Theming

  • Programmer IDE and Simulator now use the OpenAVC brand green palette
  • Both apps show the OpenAVC favicon and logo
  • Dark/light theme toggle in System Settings

Add Device Dialog

  • Selecting a driver auto-fills Device ID and Display Name
  • IDs generated from driver category with automatic numbering
  • Driver and Device ID fields marked as required

Simulator

  • Device cards with many controls now scroll instead of clipping
  • Closing the simulator tab shuts down the process automatically
  • Fixed initial state mismatch for OSC drivers with value maps

Pi Image Build

  • Fixed build script path issue that broke the Pi image CI pipeline

v0.8.1

Bug fix release. Fixes for the update system, macro/trigger concurrency, serial device communication, device reconnection, cloud state sync, and project migration.

Update System

  • Fixed issues that prevented in-app updates from working on Linux and Pi deployments
  • Update helper script, release archive format, and artifact naming are now aligned end to end
  • Windows silent updates and rollback hardened

Macro and Trigger Reliability

  • Macros called from two different triggers simultaneously no longer incorrectly block each other
  • Cancel groups now work correctly when two macros in the same group start at the same time
  • Startup triggers no longer silently fail to fire
  • Disabling a trigger while a macro is queued now correctly prevents it from firing

Serial and UDP Device Communication

  • Fixed intermittent wrong state values on serial devices under load
  • Send lock now held through the full send-and-wait cycle on serial and UDP, matching TCP

Device Reconnection

  • Manual reconnect no longer causes a spurious double-connect two seconds later

Cloud State Sync

  • Cloud dashboard no longer shows stale values when many devices reconnect at once
  • State relay keeps latest value per key instead of truncating, and sends in chunks instead of dropping

Project Migration

  • Upgrading projects from v0.3.0 to v0.4.0 now correctly preserves device group assignments

v0.8.0

OSC transport, Behringer X32 driver, per-panel page navigation, concurrent device startup, ISC security, project save conflict detection, and a broad security and stability pass.

OSC Transport

  • Open Sound Control (OSC) is now a built-in transport type alongside TCP, Serial, UDP, and HTTP
  • Build OSC drivers in the Driver Builder UI or YAML with address paths and typed arguments
  • Device simulator supports OSC with automatic address-based handlers

Per-Panel Page Navigation

  • Each connected panel now tracks its own current page independently
  • Navigating on one panel no longer changes the page on every connected panel

Faster Startup

  • Devices connect concurrently at startup instead of one at a time
  • Spaces with many devices come online noticeably faster

Device Connection Visibility

  • Offline devices show the reason (connection refused, timeout, DNS failure) and reconnect attempt count
  • Sidebar shows live online/offline device counts
  • OSC and HTTP devices are now verified on connect instead of always reporting as connected

ISC Security

  • Inter-System Communication now uses HMAC challenge-response authentication instead of plaintext shared keys

Project Save Conflict Detection

  • Multiple sessions editing the same project no longer silently overwrite each other
  • Stale saves get a conflict warning instead of quietly winning

New Drivers

  • Behringer X32 Digital Mixer (OSC): full console with 32 channels, 16 buses, 6 matrices, 8 DCAs, aux inputs, FX returns, scene/snippet/cue recall. Compatible with Midas M32.
  • Audio-Technica ATDM-1012 Digital SmartMixer with full device simulator
  • Audio-Technica ATDM-0604 Digital SmartMixer with full device simulator

Driver Fixes

  • Fixes across Samsung MDC, LG SICP, Extron SIS, Crestron NVX, Novastar H Series, vMix, Sony Bravia, PJLink, Audio-Technica, Sonos, and Dante DDM
  • Improved state polling reliability, response parsing, reduced log noise, and corrected simulator controls

YAML Driver Enhancements

  • On-connect commands: send initialization commands automatically when the transport connects
  • Simulator push notifications: simulators can broadcast unsolicited state changes to clients
  • Fader range scaling: map protocol values to display ranges on panels

Security Hardening

  • Authentication tokens no longer exposed in error responses
  • Project library and AI proxy endpoints now require authentication
  • Plugin installation validates filenames, URLs, and version requirements
  • Driver loading detects and rejects duplicate Python driver IDs
  • URL inputs validated against SSRF attacks

Programmer IDE

  • Startup errors surfaced as a popup on Windows instead of failing silently
  • Clear error message when the server port is already in use
  • Improved Cloud view UX with copy buttons, uptime formatting, and password field
  • Discovery scan reports progress during finalize phase
  • Update system shows which step failed and tracks pending updates
  • ARIA dialog attributes on all modals

Editor Fixes

  • Fixes across the variable, macro, and binding editors
  • Status LED text labels, day-of-week format tokens, matrix drag containment, fader keyboard step
  • Multi-state feedback labels render correctly on buttons with icons

Engine Reliability

  • Overlapping project reloads are serialized
  • Triggers stop before variable cleanup during reload
  • Device removal serialized to prevent state corruption
  • Backup restore clears orphaned assets and includes persisted state
  • Project and driver saves use atomic writes
  • New/Open/Restore properly clears all previous project data from the UI

Linux Update System

  • Redesigned around a systemd ExecStartPre helper script for more reliable rollback and service integration

Plugin System

  • The loader enforces min_openavc_version so incompatible plugins fail with a clear message instead of crashing

v0.6.0

Theme Studio, live panel canvas in the UI Builder, dedicated panel support, and a new wait_until macro step.

Theme Studio

  • Complete rebuild of the theme editor into a full-screen design workspace with a live-scaled panel preview
  • Quick Adjust controls for brand accent, corner roundness, surface style, and typography
  • Click any element in the preview to jump straight to its settings
  • Modified values are highlighted with per-row reset buttons so you always know what you've changed
  • Contrast checker flags readability issues between text and background colors
  • Rich preset gallery renders each built-in theme as a visual card with actual colors, fonts, and surface style
  • Every panel element is now fully driven by CSS variables from the theme

UI Builder: Live Panel Canvas

  • The design canvas now runs the real panel renderer instead of simplified previews
  • What you see in the editor is what the panel looks like, down to the pixel
  • Edit mode, preview mode, and the live panel all render from the same code path
  • Theme changes and styling tweaks are immediately visible without saving first

UI Builder: Outline Panel and Project Validation

  • New Outline tab with a searchable layers list, z-order controls, and per-element locking
  • Validate Project button scans for dangling references to removed devices, deleted macros, or missing pages
  • Clickable results navigate directly to the broken element

UI Builder Polish

  • Multi-select copy/paste with Ctrl+C/V
  • Escape cancels in-progress resize and drag operations
  • Scoped undo with descriptions for settings, master elements, page groups, macros, and variables
  • Autosave with Ctrl+S, manual save button, and a four-state save indicator
  • Inline element ID rename with automatic reference rewriting across bindings, visibility, macros, and triggers
  • Alignment buttons work on multi-selections
  • Click palette items to add at the next free grid cell
  • Visibility conditions support AND/OR logic
  • Image elements get object-fit control (contain, cover, fill)
  • New elements inherit their appearance from the active theme instead of showing hardcoded defaults

Dedicated Panel Support

  • Server-side pairing page and setup guides cover dedicated panel deployment for wall-mounted tablets
  • Full Android and iOS guides for basic setup, full lockdown, fleet provisioning, and troubleshooting
  • Android Panel app available as a signed APK with mDNS discovery, QR pairing, dedicated panel lockdown, and boot-to-panel
  • iOS app is next

New Macro Step: wait_until

  • Macros can pause execution until a state condition is met
  • Configurable timeout with optional fallback steps if the condition is never satisfied
  • Useful for sequences that depend on a device reaching a certain state before continuing

Matrix and Plugin Improvements

  • Matrix elements have show_lock and show_mute toggles to hide buttons per instance
  • Plugin panel elements with a config_schema get a typed form in properties instead of raw JSON

Image Tinting and Frameless Buttons

  • Image elements support color tinting so a single icon asset can match any theme
  • Buttons can be set to frameless for transparent, icon-only tap targets

v0.5.14

QR pairing and mDNS discovery for the upcoming Panel apps, plus error recovery in the IDE and platform hardening.

QR Code Pairing for Panel Apps

  • The Panel Access card now shows a QR code alongside the panel URL
  • Scan from a tablet or phone to land on a page with Open Panel (browser) and Install App options
  • Groundwork for the native OpenAVC Panel apps for Android and iOS, in development

Network Discovery for Panel Apps

  • Server advertises itself on the local network via mDNS as _openavc._tcp.local.
  • Upcoming Panel apps will use this to auto-find your OpenAVC system without typing an IP address
  • Can be disabled in discovery settings if your IT policy requires it

Per-View Error Recovery

  • If a view in the Programmer IDE hits an unexpected error, you now see a recovery screen with a clear message and retry button
  • The rest of the IDE keeps working while you recover from the crash

Minimum Platform Version for Drivers

  • Community drivers can declare a minimum OpenAVC version they require
  • Installing a driver that needs a newer platform version gives a clear error at install time instead of a runtime failure

Fixes

  • Deleted devices no longer leave stale state in the cloud after the agent reconnects
  • Hardened project file loading, ZIP extraction, and WebSocket broadcast against malformed input
  • Tightened plugin recursion limits and regex validation to prevent runaway plugin code from hanging the server
  • Fixed a throttle state issue that could cause polling to stall after long disconnects
  • Logged previously swallowed exceptions to make troubleshooting easier

v0.5.13

UDP transport for drivers, plus cloud tunnel fixes for custom ports and asset loading.

UDP Transport

  • UDP is now a first-class transport option for YAML and Python drivers
  • Supports configurable local/remote ports, broadcast, and hex encoding
  • Driver Builder UI includes UDP configuration
  • Simulator supports UDP device simulation

Cloud Tunnel Fixes

  • Fixed Panel and Programmer UIs failing to load through cloud tunnels when the server runs on a non-default port
  • Fixed images and assets not loading when accessing the Panel or Programmer through cloud remote access

v0.5.12

Improved cloud connectivity reliability and cloud-managed system alerts with configurable thresholds.

Cloud Connectivity

  • State relay and alert monitor now re-initialize automatically when the cloud connection drops and reconnects
  • Initial device state snapshot is sent when the cloud agent connects, so the portal shows current state immediately
  • Added reporting when tunnel connections fail on the agent side

Alert System

  • System resource alerts (disk, memory, CPU) are now managed by the cloud platform instead of being hardcoded in the agent
  • Alert thresholds, severity, and enable/disable are all configurable from the cloud portal
  • Threshold alerts now support hysteresis to prevent repeated notifications when a value fluctuates near the boundary

v0.5.11

Fixed a discovery scan performance regression introduced in v0.5.10.

Device Discovery

  • Fixed scan running slowly and missing device identification due to port scanning performance regression in v0.5.10

v0.5.10

Fixed device discovery missing ports on projectors and other embedded devices, plus UI builder drag-and-drop accuracy.

Device Discovery

  • Fixed network scanner missing open ports on projectors, DSPs, and other embedded AV devices with limited TCP stacks
  • PJLink projectors are now reliably detected during scans

UI Builder

  • Fixed drag-and-drop placing elements to the right of the intended drop position
  • Fixed button icons disappearing when visual feedback updates the button text

Panel

  • Fixed clock element not updating when switching between Time, Date, and DateTime modes

v0.5.9

Stream Deck plugin now works on Linux without manual installs, plus panel and builder bug fixes.

Stream Deck on Linux

  • Stream Deck plugin now installs the HIDAPI library automatically on Linux, matching the seamless Windows experience
  • Pi images ship with HIDAPI and USB access rules pre-installed
  • Plugin errors now show clear setup instructions in the Programmer UI instead of raw error messages

Panel

  • Fixed clock element ignoring Date and DateTime display modes
  • Fixed images not loading when using uploaded assets

UI Builder

  • Fixed icons not rendering in Simple (On/Off) visual feedback mode

v0.5.8

Builder and panel now share element styles for pixel-identical rendering, plus slider enhancements and deployment fixes.

UI Builder

  • Builder element previews now use the same CSS as the touch panel, so what you see in the builder is what you get on the deployed panel
  • Theme colors, border radius, fonts, and spacing all match exactly between builder and panel
  • Fixed action bindings on sliders, keypads, matrices, and lists always showing "Incomplete" even when fully configured

Slider

  • Sliders now support vertical orientation with automatic grid dimension swap
  • Configurable thumb size for different touch targets
  • Optional current value display below the slider
  • Track fill bar shows the current position

Panel

  • The Connected status indicator now fades out after a few seconds instead of staying visible permanently
  • Disconnected stays visible the entire time the panel is offline

Pi Kiosk

  • Fixed Chromium not filling the display on kiosk deployments
  • Added reboot button to kiosk settings
  • Fixed touch scrolling and boot experience

Deployment

  • Fixed driver and plugin installation on Linux deployments
  • Fixed device discovery on Docker and VPN hosts with multiple network interfaces
  • Docker image now includes network utilities for discovery

v0.5.6

Programmer preview now runs the real panel, fixing toggle buttons and ensuring identical behavior.

UI Builder

  • The Programmer preview now embeds the real touch panel instead of a separate reimplementation, so every button mode (toggle, hold repeat, tap/hold) works exactly as it does on the deployed panel
  • Fixed toggle buttons not firing the off action when the device was already on
  • Panel supports a page query parameter, so the preview opens directly to the page you're editing

Engine

  • Hardened toggle and hold action handling to accept both single-action and multi-action button bindings

v0.5.5

Cloud-managed software updates and richer alert conditions.

Cloud

  • Systems can now receive software updates directly from the cloud platform with verified checksums, instead of discovering releases independently
  • Alert conditions support new operators including contains, not_contains, and regex matching

Updates

  • Update download engine refactored for reuse across both GitHub and cloud-managed update flows
  • Checksum verification extracted into a standalone step for direct hash comparison

v0.5.4

Network adapter control, AI chat improvements, and comprehensive AI safety validation.

Network

  • Added network adapter selection for device control and discovery, so systems with multiple NICs can target the correct subnet

Cloud & AI

  • AI chat messages now render with proper markdown formatting
  • Fixed cloud AI signature failures when returning large discovery scan results
  • Added device command retrieval via cloud protocol for smarter AI tool use
  • AI write operations are now validated before saving, catching malformed bindings, invalid macro steps, bad variable types, Python syntax errors, and plugin config mismatches before they reach the project file

Panel

  • Fixed partial update bug where UI element fields could be left in an inconsistent state if binding validation failed

v0.5.3

Plugin dependency fixes, documentation refresh, and cloud protocol improvements.

Windows Installer

  • Fixed plugin pip dependency installation failing silently, which caused plugins like Stream Deck to error on startup

Programmer IDE

  • Added documentation links to empty states throughout the IDE so new users always know where to learn more
  • Refreshed and audited all user-facing documentation for accuracy

Panel

  • Fixed hold-repeat buttons continuing to fire after a WebSocket disconnect

Cloud & AI

  • Added project data retrieval via cloud protocol messages
  • Cloud handshake now reports the deployment type for better diagnostics

CI/CD

  • Fixed Pi image build not triggering after a release

v0.5.2

Instant startup experience, Windows installer reliability, and dashboard improvements.

Startup Experience

  • The server now shows a loading page instantly when opening Panel or Programmer, instead of a browser error while the engine initializes
  • The loading page automatically transitions to the real UI once the system is ready

Windows Installer

  • Fixed path resolution across all deployment types so the update system, simulator, and driver loader work correctly in PyInstaller-bundled installs
  • System tray now properly elevates to admin when controlling the service
  • "Check for Updates" in the tray opens the Programmer IDE Updates view instead of running silently in the background

Dashboard & UI

  • Dashboard now shows the actual software version instead of the project format version
  • Panel access URL is displayed on the dashboard for easy sharing with end users
  • Updates section is always visible in the sidebar and checks automatically on startup
  • Fixed stale version display after in-place updates on Linux and Pi

Cloud & AI

  • Updated all AI tool definitions to match current APIs
  • Fixed tunnel proxying for plugin iframe content

v0.5.1

Fixes device discovery and cloud heartbeat metrics on deployed installs.

Bug Fixes

  • Fixed device discovery scan failing with "Invalid scan parameters" on all deployed installs (Windows installer, Docker, Linux archive, Pi image)
  • Fixed cloud heartbeat sending degraded metrics instead of full system data (CPU, memory, disk, temperature)
  • Scan error messages now show the actual cause instead of a generic "Invalid scan parameters"

v0.5.0

Built-in device simulator for testing without hardware, major Driver Builder expansion, and a comprehensive driver system audit.

Device Simulator

  • Simulate devices directly from the Programmer IDE without any real hardware connected
  • Simulator runs as a managed subprocess that intercepts device connections and responds like real equipment
  • Interactive Simulator UI with device-specific control panels for projectors, displays, switchers, audio DSPs, and cameras
  • Auto-generates simulator controls from driver state variables when no custom controls are defined
  • Inject network conditions (latency, jitter, packet drops) and device errors to test edge cases
  • Auto-syncs simulated devices when the project changes so new devices appear without restarting
  • Simulator badge in the Browse Drivers view shows which community drivers support simulation
  • Validation tool checks driver-simulator compatibility (command coverage, response parsing, type consistency)

Driver Builder Expansion

  • New Device Settings tab for defining configurable hardware settings (labels, types, write commands)
  • New Discovery Hints tab for specifying ports, MAC prefixes, protocols, mDNS names, and hostnames
  • New Simulator tab for configuring initial state, response delays, error injection, and custom controls
  • HTTP transport option with authentication type, SSL, and certificate verification fields
  • Enhanced response pattern editor with value maps, regex quick reference, and clearer field labels
  • State variable improvements including renameable IDs, number/boolean types, and enum value editing
  • Inter-command delay setting and delimiter dropdown with common protocol options
  • YAML export and import support alongside existing JSON

Scripting Improvements

  • Added Python builtins to the script namespace: range, list, dict, set, tuple, sorted, enumerate

Driver System Audit

  • Comprehensive audit fixing issues across the runtime, API, UI, and docs
  • Config values now substituted into response patterns before regex compilation, fixing drivers that use config in matching
  • Transport disconnect now properly triggers auto-reconnect instead of failing silently
  • Reconnect loop capped at 120 attempts with a reconnect_failed state to prevent infinite retries
  • Poll loop distinguishes connection errors from unexpected errors and stops polling before reconnect to prevent races
  • Type coercion now warns on mismatch instead of silently converting to zero
  • State validation and atomic batch updates via set_batch()
  • Structural validation for commands and state_variables at load time

Infrastructure

  • Removed zeroconf dependency (mDNS handled by built-in scanner)
  • Updated FastAPI, uvicorn, aiohttp, and other dependencies to current versions
  • All deployment targets (Docker, Windows installer, Linux archive, Pi image) updated to build and bundle the simulator

Bug Fixes

  • Fixed dropdown clipping in color pickers and preset toolbar
  • Fixed Add Device dialog race condition that could leave stale entries
  • Fixed Driver Builder crash when editing response patterns
  • Fixed community driver index retry logic with proper backoff
  • Fixed MAC address normalization for both colon and dash formats

v0.4.1

Stability fixes across the engine, API, and Programmer IDE, plus smarter device discovery.

Discovery Improvements

  • Scan depth selector (Quick, Normal, Deep) lets you trade speed for thoroughness
  • New protocol identification techniques improve matching for projectors, DSPs, and switchers
  • Smoother scan progress bar with phase-aware estimates

Backup System

  • Redesigned backup system uses event-based ZIP snapshots instead of noisy per-save copies
  • Backup creation runs in a background thread so it never blocks the server

Stability & Bug Fixes

  • Fixed engine concurrency bugs that could cause state corruption under load
  • Fixed crash-on-startup and resource leak scenarios
  • Fixed React rendering stability issues in the Programmer IDE
  • Fixed starter project templates with correct driver IDs and dates
  • Fixed false "overrides theme" indicator appearing on newly added UI elements
  • Fixed theme encoding issues in import/export

UX Polish

  • Loading spinners and feedback on long-running operations
  • Error toasts with actionable messages instead of silent failures
  • API input validation with clear error responses for invalid requests

v0.4.0

Programmer IDE UX overhaul with concurrent editing safety, real-time feedback, and WCAG accessibility pass.

Concurrent Editing & Real-Time Feedback

  • Project revision tracking prevents one browser tab from overwriting changes made in another (409 Conflict detection)
  • Device commands and state changes return success/failure acknowledgments over WebSocket
  • Macro test runs show per-step results, conditional outcomes, and per-device success/fail for group commands
  • Human-readable error messages replace Python tracebacks for connection failures, timeouts, and permission errors

Macro & Trigger UX

  • Copy/paste macro steps across macros
  • Step templates for common patterns (Volume Ramp, Source Switch, Power Sequence)
  • Macro dependency tree with circular dependency warning at save time
  • "Fire Now" button to manually test triggers
  • Cron field-by-field editor with common schedule examples dropdown
  • Trigger condition preview showing live true/false evaluation
  • Event pattern autocomplete for event triggers

UI Builder

  • Element palette search and hover preview thumbnails
  • Grid configuration (cols, rows, gap) in the canvas toolbar
  • Multi-select with common property editing, distribute horizontally/vertically, and context menu
  • Page thumbnail previews, page type icons, breadcrumb, and "Set as Home Page"
  • Theme tab in Properties panel with live preview and "Overrides theme" indicator
  • Asset search, large image upload warning, and unused asset detection

Variables & State

  • Variable descriptions shown in tooltips and key pickers throughout the IDE
  • Validation rules for variables (min/max for numbers, allowed values for strings)
  • Rename variables with automatic reference updates across macros, triggers, UI bindings, and scripts
  • Bulk delete unused variables
  • Activity log expanded to 500 entries with per-key filtering

Device Management

  • Real-time field validation with live ID preview
  • Filter chips (Online, Offline, Orphaned, Ungrouped) and device count summary
  • Auto-generated group IDs, group deletion confirmation, and bulk select actions
  • Discovery scan phase indicators with estimated time and high-confidence match badges

Script Editor

  • Enhanced autocomplete with return types, parameter types, and examples
  • Full error tracebacks with clickable line numbers
  • Script load error icons in the file tree
  • Macro-to-script conversion preview
  • New templates (Scheduled Task, Device Monitor, Custom Event Handler, Variable Watcher)

Accessibility (WCAG AA)

  • Text contrast fixes across muted text
  • ARIA labels on all icon-only buttons and status indicators
  • Visible focus outlines on all interactive elements
  • Semantic tab, list, and dialog markup with proper roles
  • Keyboard shortcut reference panel (Ctrl+/)

Bug Fixes

  • Fixed orphaned variable state keys not cleaned up when variables are deleted
  • Fixed variable validation rules not re-registered after project reload
  • Fixed new variable defaults not initialized after project reload

v0.3.1

System Settings UI, security hardening, bug fixes, and expanded test coverage.

System Settings UI

  • New System Settings view in the Programmer for configuring server settings
  • Code-split lazy loading for all Programmer views (faster initial load)

Security and Reliability

  • Persistent file logging (server output saved to disk, not just in-memory)
  • WebSocket rate limiting to prevent connection flooding
  • Removed token-in-URL authentication
  • Disk space check before applying updates
  • Download resume for interrupted update downloads

Bug Fixes

  • Fixed updater rollback failures and version checker edge cases
  • Fixed driver lifecycle issues with reconnect and clean shutdown
  • Fixed cloud agent config persistence, heartbeat metrics, and alert thresholds
  • Fixed discovery scanner timing and SNMP edge cases
  • Fixed Panel touch event handling and CSS layout issues
  • Fixed macro condition evaluation and trigger guard logic
  • Fixed script editor file tree and deletion workflows

Documentation

  • Added IT Network and Security Cut Sheet for integrators (ports, firewall rules, security posture)

v0.3.0

Conditional macros, device groups, variable persistence, and panel improvements.

Conditional Macro Steps

  • If/else branching in macro steps based on system state
  • Skip-if guards on any step (e.g., skip the power-on if the projector is already on)
  • Skip-if-offline for device commands (silently skip disconnected equipment)
  • Dynamic parameters resolved from live state at runtime

Device Groups and Group Commands

  • Create named groups of devices (e.g., "All Projectors", "Lobby Displays")
  • Group commands dispatch to every device in the group concurrently
  • Offline devices are automatically skipped without errors

Macro Cancellation and Cancel Groups

  • Cancel groups let mutually exclusive macros preempt each other (starting System On cancels a running System Off)
  • Cancel any running macro from the Programmer or via the API

Variable Persistence

  • Mark any variable as persistent so it survives server restarts
  • Values saved to disk with debounced writes and restored automatically on startup

Panel Macro Progress

  • Buttons show a pulsing busy indicator while their macro runs, preventing double-presses
  • Step description labels display live progress during macro execution

Multi-Action Bindings

  • Bind multiple actions to a single button press without needing a wrapper macro

Dynamic Element Visibility

  • Show or hide panel elements based on live system state with visible_when bindings

Script Function Autocomplete

  • Function picker dropdown when selecting script functions to call from macros

Undo/Redo for Destructive Operations

  • Ctrl+Z / Ctrl+Shift+Z support in the Programmer for operations like deleting macros, variables, or groups

Cloud AI

  • AI assistant updated with all v0.3.0 capabilities
  • Four new tools for device group management and macro cancellation

v0.2.2

Plugin system polish, per-button colors, and AI reliability fixes.

Plugin System

  • Plugin icons now display in the Programmer IDE
  • Multi-file plugin install support for plugins with multiple components

UI Improvements

  • Per-button color overrides for panel elements

AI Reliability

  • Fixed AI assistant freezing caused by relay errors and inactivity timeouts
  • Fixed WebSocket send_raw error in cloud agent

Housekeeping

  • Reorganized deployment files in the repository

v0.2.1

Smarter AI tools, chat UX fixes, and System Updates documentation.

AI Tool Improvements

  • Replaced monolithic project save with 19 surgical AI tools for targeted edits
  • Significantly reduced token usage for AI-assisted project changes
  • Fixed AI chat bad_signature errors during cloud authentication

Chat UX

  • Fixed AI chat freezing on relay errors
  • New conversations appear immediately in the sidebar
  • Fixed delete conversation errors
  • Improved icon sizing in chat interface

Documentation

  • Added user-facing System Updates guide covering update checks, installation, rollback, and channels

v0.2.0

In-app update system with one-click install, automatic rollback, and cloud-managed updates.

In-App Updates

  • Check for, download, and install updates from within the Programmer IDE
  • Automatic update checks every 24 hours against GitHub Releases (stable or beta channel)
  • One-click install with pre-update backup and SHA256 verification
  • Step-by-step progress modal showing download, verify, backup, and apply stages

Platform-Aware Installation

  • Windows: silent installer execution via NSSM service restart
  • Linux: systemd service stop, archive extraction, venv rebuild, service restart
  • Docker and Git: update notifications with manual instructions

Automatic Rollback

  • Server monitors startup health after updates (2-attempt threshold with 60-second confirmation)
  • Automatic rollback to previous version if the server crashes after an update
  • Manual rollback to previous version from the Update view in the IDE

Cloud Version Awareness

  • Cloud handshake checks agent version against minimum version requirements
  • Cloud-triggered updates flow through the update manager
  • Maintenance window scheduling for auto-updates during off-hours

Security and Testing

  • Error tracking improvements and expanded test coverage
  • Security vulnerability fixes across the codebase

v0.1.0-beta.1

First public release. The core platform, Programmer IDE, panel UI, cloud AI, and all five deployment targets.

Core Platform

  • Reactive state store with key-value system for all device and variable state
  • Async event bus with glob-pattern subscriptions
  • Device manager with automatic reconnect and exponential backoff
  • Macro engine with sequenced steps, delays, and nested macros
  • Trigger engine with condition-based automation, debounce, and cooldown
  • Python scripting runtime with full access to devices, state, events, and macros
  • Project file format with validation and auto-migration

Programmer IDE

  • Web-based IDE accessible from any browser on the network
  • Visual UI builder for designing touch panel layouts
  • Device management with connection configuration
  • Macro builder with drag-and-drop step ordering
  • Variable and trigger editors
  • Script editor with syntax highlighting
  • Project library for saving and loading projects

Panel UI

  • Touch panel interface running in any browser
  • Buttons, sliders, labels, and media elements
  • Real-time state binding for live feedback
  • Theme support with 8 built-in themes

Driver System

  • Three driver creation methods (Driver Builder UI, YAML definitions, Python classes)
  • TCP, serial, UDP, and HTTP transports
  • Frame parsers for delimiter, length-prefix, and fixed-size protocols
  • Community driver library with one-click install from the IDE

Device Discovery

  • Network scanning with ping sweep and ARP table lookup
  • Port scanning across 17 common AV ports with banner capture
  • Protocol probing for PJLink, Extron SIS, Biamp, QSC, Kramer, and more
  • SNMP, mDNS, and SSDP passive discovery
  • Automatic driver matching with confidence scoring

Cloud AI Assistant

  • AI assistant accessible from the Programmer IDE
  • Natural language control of devices, macros, variables, and triggers
  • Context-aware responses based on current project state

Deployment

  • Windows installer with system tray app and NSSM service
  • Raspberry Pi SD card image with HDMI kiosk output
  • Linux one-line install script (amd64 and arm64)
  • Docker image with multi-architecture support
  • Runs on any hardware with Python 3.11+

Try the latest release

Download OpenAVC and see these features for yourself.