Changelog

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

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.