=========================
CHANGELOG FOR RELEASE 1.4
=========================

Version 1.4.7 Build 1421 (2026-06-11)

[*] Fixed and improved auto-reconnect for WebSocket-based connections,
    in particular DHD Control API


Version 1.4.6 Build 1420 (2026-03-13)

[*] WheatNet: Improved error handling during retrieval of device properties
[-] HTTP Client: Auth header not set correctly for token/bearer authentication


Version 1.4.5 Build 1418 (2024-09-02)

[-] Virtual Core: Wrong logic number displayed in "Select Logic" dialog
[+] Added DHD Control API connection


Version 1.4.4 Build 1417 (2024-08-10)

[-] Scheduler: Possible Access Violation after restarting the connection or
    when closing the application


Version 1.4.3 Build 1416 (2024-08-02)

[*] Application terminates gracefully on Windows shutdown
[-] Webhooks: For HTTP POST, parameters were double-urlencoded
[*] Ember+ Consumer: Fixed incorrect behavior of parameter filter
[+] Added "Scheduler" connection type


Version 1.4.2 Build 1413 (2024-02-08)

[+] kvm-tec SwitchingManager: Added support for Scenarios


Version 1.4.1 Build 1412 (2023-11-07)

[*] DHD: Potentiometer count increased to 512
[*] DHD: Allow fader and potentiometer levels up to +327.67 dB
[+] Webhooks: $VALUE etc. variables can used in URL
[+] Converter: Added Feedback Suppression option
[*] GUI: Reduced refresh rate of parameter tree to improve performance
[+] Added Blackmagic Design Videohub Ethernet Protocol


Version 1.4.0 Build 1405 (2023-08-16)

[+] DHD ECP: Added support for metering
[-] SMTP: Server settings not saved in config
[*] Prevent repeated triggering of _status/connected parameter during failed
    connnection attemps
[+] Webhooks: Added support for HTTP Bearer Token authentication
[+] Converter rules: Added "Exclude from logging" option


Version 1.4 beta Build 1400

[+] Added Telos VX (LWCP) connection
[+] New headless/console mode, makes BTConnect run in a console window
    without its GUI. To start in headless mode, use "-m headless" or
    "--mode headless" command line parameters. Additionally, you can
    use "-v" to enable parameter debug logging.
[*] Changed MQTT client library from TMSMQTT to Paho for better performance
    and reliability
[+] Value conversions: Added "string replace" conversion (with option regexp)
[+] Dummy connection: New "Extended" string parameter type, which exposes
    a set of string operation parameters (append, backspace, clear); use
    ",E" suffix for declaration.
[+] Ability to manually edit JSON configuration of connections and rules
[*] Improved size/readability of JSON configuration by omitting most default
    settings


=========================
CHANGELOG FOR RELEASE 1.3
=========================

Snapshot - Build 1219

[*] SMTP: Added Message-Id header to fix incompatibility with GMail
[*] TCP: Added more detailed error logging
[*] Webhooks: Correct handling of HTTP 301 redirects
[+] Added G&D ControlCenter-IP protocol
[+] Added kvm-tec SwitchingManager protocol


Version 1.3.5 Build 1217 (2022-07-22)

[-] Rule processing for a particular parameter change may be aborted if a
    Filter conversion is not satisified for any rule
[+] DHD ECP: Added extended debug log option
[+] DHD ECP: "start" and "pfl" parameters are now read/write instead of
    write-only for faders (but not channels, due to a limitation of the protocol)
[+] DHD ECP: Ability to set a Logic Base for each channel (also imported
    automatically from *.dpx file). If the Logic Base is known, changes of
    the Start and PFL logics will be reflected to the channel/<id>/start
    and channel/<id>/pfl parameters, which become read/write then.
[-] DHD ECP: Channel names not imported if virtual mixer name does not follow
    the "Mixer <number>" scheme
[*] All logging timestamps displayed with millisecond resolution


Version 1.3.4 Build 1214 (2022-05-02)

[-] REST API and Ember+ Provider: Possible Access Violation on shutdown
[*] SMTP: Added support for TLS 1.2
[+] Ember Consumer: Added support for sending keep-alive requests
[-] DHD ECP: Channel parameters updates result in label update


Version 1.3.3 Build 1213 (2022-03-31)

[-] Possible Access Violation error when closing the application
[*] DHD ECP: Always echo routing parameter changes
[+] DHD ECP: Support for setting channel labels
[-] Dummy: Non-string parameters initially carry string value when default value
    is set in configuration


Version 1.3.2 Build 1212 (2022-02-21)

[+] Added Shell Execution connection
[+] Outgoing Webhooks: Added support for Microsoft Teams


Version 1.3.1 Build 1210 (2022-01-09)

[+] Log Archive: Right-click file list to open a different log folder
[-] Possible "Already connected" error when TCP connections are re-established
[-] DHD ECP: Setting logics to false does not woek
[*] Updated MQTT library to v1.3.0.2


Version 1.3.0 Build 1208 (2021-12-21)

[+] Added Timer connection (provides timers and pulses)
[+] Added WheatNet Blade ACI connection
[+] Added Barix Barionet (ASCII) connection
[+] Added Dummy connection
[+] Added Keyboard connection (system-wide hotkeys)
[+] Ember+ Provider: Ability to filter/mirrior one specific connection
[+] Added "Status parameters" option of all (parameter-based) connections
[*] Connection type and ID displayed in Edit Connection dialog window title
[*] DHD ECP, LWRP, Blade ACI: Sending "Trigger" values to logic/GPIO parameters
    will always generate a pulse
[+] Added "Convert to Trigger" conversion


=========================
CHANGELOG FOR RELEASE 1.2
=========================

Version 1.2.2 Build 1134 (2021-12-21)

[*] New application logo
[-] Window not restored correctly when using "Restore" from the tray icon menu
[+] Connections: Added "Extended debug logging" option (only has an effect
    on some connection types)
[-] XML Output: Parameters not extrated correctly from template
[+] Webhooks: Ability to upload files with multipart/form-data (enter
    "file:<filename>" as the form parameter value)
[*] Webhooks: Not using binary transfer encoding anymore, to be compatible
    with the DHD REST API server
[-] DHD REST API: Mixer snapshots applied to wrong mixer
[+] DHD REST API: Added picture upload function
[-] SMTP: Clipboard error in configuration when pasting text to edit boxes
[*] Prodys: Automatic reconnect when no replies are received after 5 seconds


Version 1.2.1 Build 1126 (2021-09-09)

[-] MQTT Client: "Assertion failed" error in Log when updating parameters
    while MQTT connection is not (yet) established
[-] Possible Access Violation at shutdown or during periodic truncate of log


Version 1.2.0 Build 1125 (2021-08-25)

[*] Revised connection management
[*] Connection status forms are always displayed also for disabled connections
[*] Changing connection ID will recreate connection and also update all
    converter rules that are using them
[+] Per-connection log display with parameter debugging
[+] Added support for DHD RM2200D
[+] REST API: Added web server (ability to server static files)
[+] Added support for Velleman K8055/VM110
[+] Added support for IO-Warrior (USB HID)
[+] Added support for Elgato Stream Deck (direct connection via USB HID,
    Stream Deck software is not required and must be closed first)
[+] Added LUA scripting support in Protocol Converter rules
[*] Implemented licensing system for connections
[+] Added HTTP Client connection type
[-] Switching between List and Tree view is very slow for connections with
    a large number of parameters
[+] MIDI Output: Added support for SysEx messages
[-] DHD ECP: Fixed memory leak
[+] Persistent JSON log in ProgramData folder
[+] Added Webhooks protocol
[+] Added additional variables for use in notifications (SMTP, Webhooks):
    $PARAMETER, $SOURCECONNECTION, $SOURCEPARAMETER, $SOURCEVALUE, $DESCRIPTION,
    $TIMESTAMP
[+] Added Log Archive viewer to main menu
[+] Webhooks: Added Slack support
[+] Added Online Documentation link to main menu
[+] REST API: Parameter updates trough HTTP GET /update (in addition to POST)
[+] Added Filter function in Log Archive viewer
[+] MQTT Bridge: Added Client ID Prefix setting
[*] Connection status: Improved performance when dynamically adding parameters
[-] License Manager: Download error when password contains non-ANSI characters
[-] HTTP Client: Authentication error when password contains non-ANSI characters
[*] Ember+ Consumer: Improved error handling of malformed provider input/data
[+] DHD ECP: Added "timedlevel" parameter for faders/channels
[-] Connection status: Parameters copied to clipboard as JSON rather than text
[+] Connection status: Added "Copy Value" to popup menu


=========================
CHANGELOG FOR RELEASE 1.1
=========================

Snapshot - Build 1028

[-] LWRP: status/temperature parameter should not be displayed when FPSTAT
    polling is disabled
[-] MQTT conncetion: Fixed parameter handling and auto-reconnect
[*] Swapped names of "MQTT Bridge" and "MQTT Client" features
[*] Removed global "Enable MQTT Bridge" setting; MQTT Bridge must be enabled
    on a per-connection basis
[+] Notification connection type is now functional
[*] MQTT reconnect moved to background thread, will no longer freeze GUI
[-] Parameter list not updating after configuration change and connection restart
[*] MQTT Bridge: Changed "/val" prefix for update notifications to "/status"
[+] DHD ECP: Added support for potentiometer levels
[+] REST: Added WebSocket parameter filter
[-] ProntoNet hangup/answer/call actions not executed
[+] Added support for Prodys IkusNet/Quantum protocol
[-] Ember+: parameters may receive value "0" on first update
[+] New "Trigger" datatype, used for Prodys codec actions (call, answer, hangup)
[+] Added Ember+ Provider connection type
[*] Re-implemented Ember+ consumer for better efficiency and stability
[+] Added "Create bug report" to menu
[+] LWRP: Added an option to support writeable GPI pins
[+] LWRP: Added support for GPI custom messages
[+] Ember+ Provider: Added Keepalive Interval and Read Timeout settings
[-] About dialog may not display the correct version number
[*] Update HTTPS client to support TLS v1.2
[-] Notifier: Conversions in rules lost after restart
[*] Connection types arranged in category tree in Add dialog
[*] Removed Notifier connection type
[+] Added SMTP connection type
[*] Removed Protocol Converter connection type in favor of a central Converter
    facility found on the second tab of the main form. Old configuration
    will be migrated automatically.
[-] Parameter tree can be incomplete for connections with dynamic parameters,
    e.g. Ember+ Consumer, especially after restart of the connection
[+] Ember+ Consumer: Matrix support
[-] Converter: Rule heckboxes not processed correctly
[+] Added logging of processed Converter rules
[+] Value conversion: Added "return true/false" option for "Filter value"
[-] MQTT Bridge: SSL, authentication and global topic prefix settings ignored
[*] MQTT Bridge: Automatic trimming of slashes and whitespace in prefix
[+] DHD ECP: Added "Keepalive Logic" setting. If you enter a logic number
    (1..4095) here, that logic will be requested every 30 seconds to generate
    some traffic on the TCP connection, and also a read timeout of 60 seconds
    will be used to detect stale TCP connections
[+] Value Mapping: * can be used as a catch-all wildcard
[+] ProntoNet and IkusNet: Added read-only "connected" parameter for each line,
    will be set to true if line is in any "Connected_*" state, else false
[+] ProntoNet and IkusNet: Added "callfrombook" parameter
[-] Possible "not connected" exception for TCP-based protocols if the connection
    is dropped by the server unexpectedly
[-] Value mapping may be mixed up during JSON serialization; now stored as array
[*] Empty strings in value mapping are removed automatically after editing
[*] Prodys: Improved logging of non-acknowledged commands
[+] REST API: Parameter updates through WebSocket
[*] Suppressed socket error dialogs from MQTT Client and Bridge
[*] Updated installer, will install dependency Visual Studio 2013 runtimes
[*] Main window is minimized to tray


Known issues:

(none)


Version 1.1-dev Build 1000

"Project IoBT" development version


Version 1.0-beta Build 103 (2019-09-11)

First public release