=== CHANGELOG FOR VERSION 7.4 ===

Version 7.4.9 Build 5862 (2026-01-27)

[-] Playlist: "Skip to here" and "Recycle from here" disappear from popup
    menu when selecting more than one item
[+] Scripting: Added ILogger.ForwardEvent method
[-] Stream Monitor: Not working when regionalization is enabled
[+] DB: New option "Use as default database for Update Advertising", will use
    this connection for all Update Advertising operations which work on
    blocks from database connections not configured on this systems
[-] Scripting: "could not call proc" error when using TraversePlaylist
[-] DHD: Fader channel setting for VT players not stored correctly in config


Version 7.4.8 Build 5855 (2025-11-09)

[+] REST Remote: Added automation state to playlist content
[-] Playlist: Possible freeze in automation when a padded item cannot be opened
[*] Logging variable %X returns instance name as set in MultiInstanceManager
[-] DB: Assertion error on ZAMP report export
[-] DN: "Item not found" error during export to MusicMaster via Nexus
[+] MusicMaster: Added support for Nexus Authentication (MusicMaster CS).
    The ability to use HTTP Basic Auth as an additional layer remains intact.
[*] MusicMaster: When syncing from mAirListDB to MusicMaster via Nexus in
    an Enterprise environment, it is now required to configure the CutID
    in the Nexus server settings to the same field used for the mAirListDB ID.


Version 7.4.7 Build 5848 (2025-10-01)

[*] File import: Adjusted attribute names for DABiS metadata import
[+] DHD ECP: Ability to configure a separate outgoing logic for global states
    (if unconfigured, the general "logic" number will be used)
[-] DHD Control API: Fixed handling of logics
[-] Playlist not scrolling during keyboard navigation
[+] Logging: "sss" accepted as FormatDateTime variable for "full seconds
    without fractions"
[+] Encoder: Added Copyright Bit Flip support for ad triggering through
    Shoutcast/Icecast connections
[*] Ember+: Improved error handlding and logging
[*] DB: PostgreSQL: Improved handling of concurrent transactions
[+] GEMAGVLv4 export: Ability to configure item types for jingle reporting
[-] MusicMaster: Fixed updating of songs in Enterprise database through Nexus
[+] DBServer: Added support for HTTP Range requests during file downloads


Version 7.4.6 Build 5840 (2025-07-11)

[*] WheatNet Blade: First SLIOEVENT will be ignored as it is only a reply to the
    subscribe command
[-] DHD Remote Control: Console type is not saved in config
[+] DB: "Auto Save Playlist" option in main menu, will automatically save the
    playlist with max. 2 seconds after any change
[+] New command: "CARTWALL PAGE <number>", switches to the specified page
[-] Skin Editor: "Select Color" dialog opens in wrong tab
[+] Web browser: ability to configure a Remote Control ID and use the
    SETURL command to change the URL during runtime
[*] Adjusted attribute names for DABiS XML import
[+] Remote control: Added support for D&R AURON
    Known issue: Cartwall button colors do not work due to bug in AURON firmware
[-] Playlist: Unable to collapse comment if node height is greater than
    available screen space
[-] Mix Editor Screen Object: Access Violation when clicking any button
    after program start when nothing has been selected in the playlist yet
[*] DHD Control API: Added support for RM1 (leave auth token empty)
[*] Attribute names are now case-sensitive by definition, avoiding errors
    where multiple attributes with different case interfere with each other


Version 7.4.5 Build 5832 (2025-05-15)

[-] DHD ECP: Possible access violation when using the "Set channel label" option
[*] Updated Spanish translation files
[*] DB: Update Advertising will not change filler settings on region containers
[+] DB: Mini Scheduler: New option "Jump to first scheduled hour when finished"
[+] Comment Viewer: Added remote control command "LOAD <file name>" to load
    contents from a text file
[-] DB: Update Advertising does not update region containers when one of the
    regions in the new container is (intentionally) empty
[-] Fixed typo in French translation file (file extension for local database)


Version 7.4.4 Build 5828 (2025-03-21)

[-] DB: Playlist import: %2N and %3N variables not expanded correctly
[-] DHD Console: ON/PFL buttons not updated
[*] DB: Library: Improved performance when switching between folders
[+] DB: Ability to generate debug log files in Generate -> This Playlist
[-] If a playlist item is started while being opened in a Properties dialog,
    the playback state and backtiming info is messed up when dialog is closed.
[-] DB: Sync: Item IDs not fetched for "Missing files" in DBClient database


Version 7.4.3 Build 5822 (2025-01-24)

[-] License Manager: Currently assigned licenses not indicated correctly in
    license download dialog
[-] DB: Possible Range Check Error in "Manage Templates" dialog
[-] Permission for "Exit playout application" ignored, application can always
    be terminated without a password
[-] Cue Editor: Range Check Error in Audition CSV import
[-] Config: REST Remote: Root certificate selection button not working
[+] DB: Automatic opener/closer attribute can be configured (globally or
    on station-level)
[+] Playlist import: Added "Dutch Dalet" format
[-] Time values may appear rounded up in displays and export (e.g. Nexus)
[+] MusicMaster Nexus: Support for cue markers in arbitrary formats
[+] Nexus Database: New option "Disable automatic update of MusicMaster fields
    for new files". If enabled, only the XML Metadata field will be written
    when a file is used for the first time, the MusicMaster fields will
    remain untouched
[-] DB: Reports: Only a single item is displayed after re-executing report


Version 7.4.2 Build 5818 (2024-12-20)

[-] DB: Custom text file export producing empty output
[*] File Encoding: Added 384 to bitrate dropdown
[+] MusicMaster Nexus: Ability to copy field mapping to other station's config
[*] DB: Optimized reload algorithm for library view after Mass Edit
[*] Mass Edit: Improved error handling
[+] DigAS playlist import: Adapted for modern versions, added SR Portable style
[+] DB: Playlist import: Ability to specify default item type


Version 7.4.1 Build 5813 (2024-11-29)

[-] Access violation on startup when "Show players inside playlist tabs" is
    enabled with only a single playlist configured
[-] DBServer: Access denied when trying to connect with a user created with
    an older version


Version 7.4.0 Build 5812 (2024-11-27)

[-] License file with non-ASCII characters not accepted
[-] DB: Playlist editor: Region container always expands to 255 regions
[+] Remote control: Added support for upcoming DHD Control API
[+] Actions: Ability to configure "retry on failure", with numner of attempts
    and delay (in seconds) between them
[+] DB: Scheduler: If a scheduled item has an $OPENER (or $CLOSER) attribute,
    the item with the ID specified in that attribute will be used as opener
    (or closer, respectively)
[+] Standard attributes: New type "Database Item (Internal ID)"
[*] Only standard attributes of current database connection are displayed
    in DB app and its dialogs
[+] MusicMaster Nexus: New option "store absolute filenames"
[+] Ability to extract single region for playout
[+] DB: Scheduler: Support for additional selection modes (Smart, Random,
    Rotation, Advanced Rotation) in folders
[-] DB: DB-level Standard Attributes missing in playlist view
[-] Item colors not displayed in DB playlist, browser etc.
[+] MusicMaster Nexus playlist import: ability to filter/remove items
    marked as "no export" in schedule
[-] DB: Playlist save confirmation may pop up even if playlist is unchanged
[+] Playout: Region container content shown can be viewed in playlist
[+] Ability to specify a custom mapping for regions
[*] DHD Control API: Adjusted requests for latest DHD firmware changes
[+] GUI: New screen object "Dynamic Text" (same as Static Text, but you can
    use logging variables, will be updated once per second)



Version 7.4-beta Build 5800

[+] Regionalization: Both a name and a code can be defined for each region
[+] Logging: Added new variables: %N (region number), %N{2} (region number
    with leading 0), %N{3} (region number with two leading zeroes),
    %N{NAME} (region name), %N{CODE} (region code)
[*] Logging: Rewrite of internal logging engine
[+] Preroll markers are now also handled outside containers (automation and
    linked items in assist mode)
[*] Config: GUI -> General page now also available in non-playout licenses
[+] DB: Added "Amplification" column in library
[+] GUI: When using multiple playlists in tabs, players can now be displayed
    inside the playlist tabs
[*] DB: Configuration and user management dialogs only accessible for admins
[+] DB: mAirList-include.txt file can be used to specify which parts of a
    storage are to be scanned/included during synchronization
[*] DB: Playlist import in Music Template and Advertising: Ability to specfiy
    a default audio folder and extension for import formats that only provide
    relative filenames
[+] Playlist import: Added Meridian advertising format
[*] DB: Revamped template management dialog with per-template colors


=== CHANGELOG FOR VERSION 7.3 ===

Snapshot - Build 5655

[-] DB: Music templates: Newly created template items not defaulting to
    "Unsorted" as indicated, leading to errors during scheduling
[-] DB: Reports: Assertion Failed error when exporting in ZAiKS format
[-] DB: "Insert Advertising" crashes when regionalized ad blocks are present
[*] DB: The DB app, when opened from the playout window, will never use
    persistent SQL connections, restoring the pre-7.3.7 default


Version 7.3.7 Build 5653 (2024-09-02)

[-] DB: Sync: Cancel button in Compare Filenames dialog does not actually cancel
[+] Logging: Added new "text encoding" option with RDS/EBU Latin encoding;
    currently only used by network-based logging (UDP and TCP)
[-] Container playback: Failsafe option not respected during opening
[-] DHD: Fixed minor glitches in remote control config dialog
[+] DB: Ability to specify ODBC driver for MSSQL connections in mAirList.ini
[*] Updated Spanish translation files
[+] DB: New option: "Keep SQL connection open" (default: on) - can be disabled
    to mitigate problems with stale SQL connections after long idle time


Version 7.3.6 Build 5650 (2024-07-09)

[-] Some cue markers not imported correctly from 3rd party XML metadata
[+] DB: New import policy "Overwrite file and replace metadata"
[-] DB: Filename for Filler item in Region Containers not resolved
[-] Region filler may be used/placed incorrectly
[-] DB: "Not a valid integer value" error when moving items to a different
    Item Type node in the library tree
[-] Region containers not updating content duration correctly, leading to
    incorrect container duration and misplaced fillers


Version 7.3.5 Build 5644 (2024-05-29)

[+] DB: Music template: New option "Prevent overrun" (in conjunction with
    "Fill with music", it will skip this entry if no song is found that would
    fit in the remaining gap)
[-] DB: "not a valid integer value" error when moving items in library
[+] DB: "Expand variables in URL/filename" option for hour template items;
    will replace variables in playlist items (for which the same option is
    enabled) already during scheduling, using date/time of hour being scheduled
[-] Nexus Importer: Access violation message on startup
[+] DB: Scheduler: New selection strategy "Advanced Rotation"
[+] Scripting: Added WrapText function


Version 7.3.4 Build 5641 (2024-05-03)

[-] Possible Range Check Error in HTTP-based functions (e.g. Radioplayer2
    logging)
[*] Logging: Processing moved into a separate background thread to minimize
    impact on other parts of the software if a logging operation is slow
[+] Playlist skin: Added UseBlendedSelection setting
[-] DHD: Issues VT VOLUME commands with wrong decimal separator
[-] DB: Scheduler: New option: Use opener and closer from subfolder when
    selecting recursively
[-] DB: Added additional SQL indicies for advertising tables
[*] Playout: Increased maximum number of playlists to 32


Version 7.3.3 Build 5635 (2024-03-20)

[-] Logging and action lists processed for (finite) stream and Live Feed items
[*] Applications will terminate gracefully when Windows shuts down
[-] Player does not display error message when in ERROR state
[-] PLAYLIST x SAVE always opens Save As dialog, even if filename is set
[+] New command: PLAYLIST x SAVEAS <filename>
[*] File Tagger: Added splitter to resize space between browser and editor
[-] When the first item in a container has a Preroll marker set, the second
    item is started too early
[*] DB: When you add a storage that is a subdirectory of another storage,
    a warning dialog will appear.


Version 7.3.2 Build 5632 (2024-03-04)

[-] DB Library: "Available spots" not displaying any items
[-] DB: Ad Scheduler: Added optimized SQL code for PostgreSQL
[-] Gramex report: Fixed empty lines in output
[-] News Container: Possibly ncorrect placement of items on timeline
[*] Shoutcast/Icecast logging: "http" is assumed if missing in URL
[*] Open Radio import: Adjusted semantics of some cue markers


Version 7.3.1 Build 5628 (2024-02-27)

[+] Added support for importing DynaMix LST playlists
[-] Metadata forwarding of relayed streams may not work correctly
[-] Fixed typo in French translation file which lead to local database files
    being created with the wrong file extension (.db instead of .mldb)
[-] Encoder: Forwarding of stream metadata not working for non-infinite streams
[-] Gramex report: Fixed wrong formatting in CSV output
[-] Possible deadlock when opening/prebuffering container items
[+] File import: Added support for I Like Music XML metadata
[-] When changing player volume through remote control commands or scripts,
    the level was rounded to the nearest value that can be represented by
    the volume slider in the player GUI


Version 7.3.0 Build 5621 (2024-02-13)

Changes during public beta test:

[-] DB: Scheduler settings: Wrong dialog displayed when editing Artist Groups
[+] DB: Hour templates: Ability to set/replace filler items of Region Containers
    with a fixed item, or random item from a specific folder
[+] Stream and Live Feed playlist items: Built-in silence detection function.
    Threshold can be configured on the Audio Settings -> General config page.
[-] Logging and start/stop action lists executed twice for Stream and Live
    Feed playlist items
[-] Config: "Component already exists" error when editing logging configuration
[*] DB: Library export: Output written directly do disk, avoid high RAM usage
[-] Config: Ancestor not found" error when editing logging configuration
[+] Encoder: Variables can be used in "not playing" text
[-] Background scripts not loaded
[*] DB: Config: Removed unused "Database Server requires login" option
[+] DB: Config: Added "Allow login with default credentials" option; if checked,
    the login dialog will be populated with the standard login from the config.
[+] DB: Added --db, -U/--dbuser and -P/--dbpassword command line options that
    allow you to select a database and/or pass credentials via the command
    line for the DB and Auto Importer apps
[+] DB: Hour template items: New "ignore errors" option
[-] Config: Silence Detection threshold not restored from config
[*] Stream/Live Feed: Silence detection will only become active when the
    player is started
[+] File import: Added support for Open Radio *.xml metadata
[+] If a *.png or *.jpg file exists alongside an audio file, it will be
    displayed as album art image in the playlist. The image file must
    have the same name as the audio file (with or without the audio file
    extension) plus ".png" or ".jpg".
[+] Logging: Added PANEDA API
[-] Only items played on air should be reported to System Log and background
    scripts (OnItemStart etc.)
[-] DB: When multiple connections are set up, and DB app is started as a
    separate application, login credentials are not pre-populated
[+] Logging: File: Destination directory will be created if it doesn't exist



Version 7.3-beta Build 5600 (2023-10-24)

[+] Encoder: Ability to specify a "not playing" text that is used as stream
    metadata when no item is playing (according to the filters set in the
    connection's metadata settings)
[+] Logging: Added "Execute when no item is playing anymore" and
    "Execute when stream title changes" options; introduced %B variable
    for current stream title
[+] Logging: Added Media Broadcast PAD protocol (DAB+ DLS)
[+] DB: Items can be moved around folders via cliboard and Ctrl-X/C/V shortcuts.
    You can also mass-adjust artist, attribute values or item type by copying
    items and pasting them into the respective view.
[+] DB: Ability to specify additional separators for automatic splitting of
    artist names (besides the built-in "feat." etc.)
[+] File import: Added support for DABiS-style XML metadata
[*] Improved stability of audio engine during long-term operations in other
    parts of the software
[*] DB: Removed ancient "Convert to Unicode" function for local databases


=== CHANGELOG FOR VERSION 7.2 ===

Snapshot - Build 5441

[-] REST: UploadDocument may be unassigned in script handler


Version 7.2.8 Build 5440

[*] Added cryptographic signing to executable in setup package


Version 7.2.7 Build 5439

[-] Added another bugfix to the the 3rd party library that could lead to
    wrong time calculations and database playlists not being loaded properly


Version 7.2.6 Build 5438 (2024-01-22)

[+] Scripting: Added function PlayoutEngine: IPlayoutEngine
[*] Update Spanish translation
[*] Stereo Tool: Made compatible with 10.x versions of libStereoTool_32.dll
[-] Stereo Tool: Crash when clicking Apply and then Save buttons in config
[*] Stereo Tool and VST plugin config windows remember size and position


Version 7.2.5 Build 5436 (2023-12-20)

[*] Internal changes for more robust handling of floating point operations
[+] Added "SR Text Playlist" file format (Sverige Radio)


Version 7.2.4 Build 5434 (2023-12-14)

[-] Logging: "Common" option missing in region lists, all region labels shifted
[*] Region Containers: Waveform in players/Cue Editor etc. shows a "mix" of all
    regions instead of just blank space
[-] Files/streams may sometimes be kept open after playback, before another item
    is prebuffered
[-] Config: GUI: Extended button: "Script-controlled" checkbox disabled
[+] Logging: Ability to disable UTF-8 encoding for UDP and TCP logging
[-] Fixed a bug in a 3rd party library that could lead to subsequent rounding
    errors in floating-point operations; in particular, database playlists
    may not have been loaded correctly due to incorrect time calculations


Version 7.2.3 - Build 5430 (2023-10-31)

[-] Waveform rendered incorrectly when for containers with Silence items
[-] DB: "Cannot access ... from here" when trying to delete audio files
    over DBServer/DBClient connection
[+] Waveform: The default level (for items which cannot be analyzed) and
    the displayed level for Silence items can be set in config -> GUI -> General
[+] DB: Ability to configure MusicMaster Nexus API settings directly in
    Music Template, without using local client configuration


Version 7.2.2 Build 5427 (2023-09-29)

[-] Possible freeze when switching to/from dark mode with DARKMODE ON/OFF
[+] Remote control: Added support for Axel Tech Oxygen 1000/2000/3000
[-] Screen objects appear in wrong order above/below browser
[-] Mass Edit: Long operations can possibly interrupt playout
[-] Config app does not check password on startup
[*] DB: Improved performance of SQL connection
[-] DB: When deleting an audio file fails, the actual error message is hidden
[-] VT Recorder: Fixed memory leak


Version 7.2.1 Build 5422 (2023-09-22)

[-] Scripting: Fixed possible runtime errors
[+] DHD REST Logging: Support for HTTP
[*] WASAPI: Avoiding Access Violation error messages when initialization of a
    playback device fails; more useful error messages are given now
[+] Auto File Container: Logging variables can be used in folder and pattern
[+] DB Server, Auto Importer and DB app: Database can be specified with
    "-db <Database ID>" on the command line, skipping the login window


Version 7.2.0 Build 5415 (2023-08-29)

[-] Control Panel: Possible "Argument out of range" error
[*] Screen objects in separate windows remember size and position
[*] Progress dialogs: More accurate
[+] DB: Ability to run "Synchronize storage" from scripts
[+] Scripting: Added function DBAccess(iIndex: integer): IDBAccess
[+] In addition to the screen object, the Encoder Status is now also available
    as a standalone window in the mAirList/About menu
[*] Updated SVG library to work around incorrectly displayed icons/images
[+] Ability to apply DSP effects only to selected channels of a stream.
    This can e.g. be used to to process only the main signal with an external
    plugin (e.g. Stereo Tool) in a regionalized encoder setup.
[-] DB: Synchronize: New/missing file mixed up in status bar text
[*] DB: Storage configuration dialogs are more user-friendly now
[-] Progress bar not updated in progress dialogs
[-] DB: Sync: "New files" list not sorted alphabetically
[*] More verbose output of HTTP errors (DBClient etc.)
[*] Skin Editor: Improved live editing of player fonts and buttons
[-] DB: Fixed inconsistencies in Synchronize Storage process
[*] Item Properties dialog: Improved dialog design/dimensions when resizing
[-] DHD: External PFL logic state not propagated
[-] Cue Editor and Mix Editor: Display not updating instantly during volume
    envelope editing
[*] Containers now accept non-file items as content without raising an error,
    but silently ignore them during playback
[+] Added support for d'accord playlist file import (*.nas)
[*] DB: Improved performance, in particular for SQL over slow networks
[+] Ember+: Added dedicated "Ember+ Consumer (Lawo)" remote control that
    offers simple configuration for player fader start and PFL


Version 7.2-beta Build 5400 (2023-03-10)

[+] Added Stream Deck remote control. For the required plugin, see here:
    https://github.com/mairlist/mairlist-streamdeck-plugin
[+] Added Ember+ Provider
[+] DB: Hour template: Added "Most recently added item" (will pick the item
    from the specified folder that was most recently added to the library)
[+] DB: Hour templates: Ability to include other hour templates
[+] DB: Ability to export library contents as playlist file
[+] DB: Sync dialog: You can now adjust the import tasks to peform; the previous
    "Disable Auto Cue" button was removed in favor of the full list of options.
[+] DB: Scheduler: There are now three different selection strategies available
    (which can also be adjusted on a per-folder level): "Smart" (the previous
    default, rotates items according to separation settings), "Rotation"
    (strict rotation, least recently played first) and "Random" (no rotation
    at all, just pick a random item). For the "smart" strategy, the "rotation
    variance" can be adjusted (0-99). The higher the variance, the most likely
    it is that the scheduler deviates from a strict rotation.
[+] Database actions: New option "Skip hours that have already been loaded".
    Scheduler adds a $PLAYLISTSLOT attribute to the "start of hour" and
    "end of hour" markers, which are used to identify the hours that have
    already been loaded into the playout.
[+] New login/logout feature in playout application. Ability to restrict certain
    tasks to admin or manager users.
[+] VST: Ability to display the plugin GUI in a Screen Object in the playout
[+] Screen objects can now be set to be displayed in a separate window
    (accessible from the dropdown menu of the Tools button)
[+] Ability to set a custom caption for screen objects
[*] Cleaned up About menu, moved several items to "Windows" submenu
[*] Encoder status: Suppresses "Listeners: 0" display if counting of listeners
    is disabled for all connections
[*] Control Panel: Pages which are only available in the standalone config app
    are now included in the menu tree,
[*] Setup: Batch files not longer included in installer
[-] Layout Designer ignores "Tools Window" setting of screen objects, placing
    all screen objects in the main window



=== CHANGELOG FOR VERSION 7.1 ===

Snapshot - Build 5270

[*] DB: Error in background playlist caching are now reported to System Log only
[-] Some PFL commands don't work when favorite cue markers are defined
[-] Scripting: Fixed possible runtime errors
[-] Amplification setting ignored for non-infinite Stream and Live Feed items
[+] DB: Reporting: Added Gramex (Finland) export
[+] Scripting: Added IEmberPlusConsumerRemote.GetParameterValue
[-] DB: Reporting: Some filter-specific settings may be missing in export dialog
[-] M3U import: Possible Range Check Error on using "#mAirList" special lines


Version 7.1.10 Build 5256 (2023-08-02)

[-] D&R Airlab: Error in configuration dialog
[*] System Log: Double-click entry to display message in popup dialog
[*] Minimized System Log window properly restored when reopened from menu
[*] DB: Library view automatically reloads and focuses new files after import
[-] DB: Fixed "Replace audio file" function
[+] Logging: %e, %l and %p parameters accept an optional number as argument
    (e.g. %l{0}) to limit the number of decimals in the output
[+] DB: Reports: Added UPFR (Romania) output for On Air Log
[+] DB: Reports: Added CREDIDAM/UCMR-ADA (Romania) output for Item Statistics
[-] Logging: Text may be trunctated in multiline output (e.g. UDP)
[+] DB: Added support for pooled SQL connections (Pooled=True in connection
    string)
[*] Improved loading time of item properties dialog
[+] File Import and Automatic News Container: Avoid repeated loudness
    analysis if loudness values already known from MMD or database
[-] Automatic File Container: Fixed memory leak


Version 7.1.9 Build 5255 (2023-06-21)

[-] DB: After cloning a database into a PostgreSQL backend, "unique constraint"
    errors may appear when adding users or groups. Please contact support if
    your database is affected.
[*] DB: Background playlist caching uses a separate SQL connection, working
    around possible performance/freeze issues
[-] Range check error on startup when using tabbed playlists in Dark Mode
[*] Setup: Install latest version of Visual C++ Redistributable (2022)
[-] DB: When there are two items with the same filename, but on different
    storages, DB may mix up metadata when looking up item by filename
[+] File Import: Added support for Zenon-Style TXT metadata
[+] System Log: Ability to send log events via e-mail
[-] Scripting: Fixed possible Access Violation


Version 7.1.8 Build 5251 (2023-05-23)

[*] DB: Improved loading/sorting speed
[-] FLAC/Ogg album art tag (METADATA_BLOCK_PICTURE and COVERART) incorrectly
    imported as text field
[-] Application may lock up when Cancel button is pressed in progress dialog
[-] Automatic hour/block splitting not working for "Simple CSV" import filters
[+] Scripting: Added IPlayerControl.OpenSync
[-] Playlist: Underrun nodes not picking up layout changes from Skin Editor
[*] DB: Hour templates: "From subplaylist" will automatically adjust fixed
    times and ad block slots when using hour offset
[-] DB: Region Container content not logged, not included in reports/history
[-] DB: MSSQL backend: Port number not used correctly in connection string


Version 7.1.7 Build 5244 (2023-03-30)

[+] REST Remote: /execute endpoint now also works with GET requests
[+] Added AAS (NL) playlist import
[+] Added E-power Universeel (NL) playlist import
[+] Scripting: Added UpdateAdvertisingEx
[-] Update Advertising may report block as changed even if it has not
[-] VT: Possible "progress already started" (or other) error when using more
    than one effect in the VT DSP chain
[*] DB Auto Importer deletes all kind of metadata files (DBE, XML, etc.) after
    successfull import. This has already been the case for MMD, but is now
    also done for all supported 3rd party metadata files.
[+] DB Auto Importer: Ability to disable import of playlist files
[-] Config: ASIO sample rate not saved correctly
[+] Added Talpa OMS playlist import
[*] DB: Improved performance when reloading library view e.g. after Mass Edit
[-] GUI texts and error messages may have appeared in German for some builds


Version 7.1.6 Build 5235 (2023-02-21)

[*] When using "inverse" (negative) cue markers that exceed the actual duration
    of the item, the system will cap them automatically
[*] Audio Settings: GetTickCount64 is now the default "no audio" clock source
[*] Remote control: Cleaned up duplicate commands
[+] New commands: CARTWALL MODE TOGGLE ON AIR/OFF AIR,
    CARTWALL MODE TOGGLE ON AIR/PFL, CARTWALL MODE TOGGLE OFF AIR/PFL
[-] Open Playlist: File format not detected correctly from file extension


Version 7.1.5 Build 5233 (2023-02-10)

[-] Scripting: Fixed Access Violation error in methods using TBytes parameters
[+] Scripting: Added IRestRemote.WSCloseConnection
[+] Audio Settings: Clock source for "no audio output" is now configurable
    between "BASS" (default) and "GetTickCount64" (old default for v7.0 and
    earlier), to work around timing issues on virtual machines with faulty
    hypervisors
[-] Control Panel: Encoder connection status/listener count not displayed
[-] DHD: State indication logics not restored from config
[*] Web Browser screen object: URL displayed in config overview list
[+] Added "Simple CSV" playlist import filters
[+] License Manager: Added workaround for FTDI dongles without user data area


Version 7.1.4 Build 5228 (2023-01-27)

[*] MMD files are silently ignored during drag&drop operations
[*] DB: Import dialog will display a message when the destination storage is not
    set, giving instructions where to set up the default import settings
[+] Scripting: Added support for encrypted script files (*.mlsx)
[-] DB: Access violation when using "Edit audio file"
[+] IO-Warrior remote: Added support for IO-Warrior100
[*] IO-Warrior: Pin names are displayed in P<Port>.<Pin> notation in config
[+] File import: Added support for Dalet-style XML metadata
[-] DB: Playlist column widths not restored correctly after restart
[*] DB: Using "natural" sort order for nodes in library tree
[+] New Automatic Update mechanism, using the WinSparkle library
[-] DB and Cartwall windows not restored correctly after being minimized


Version 7.1.3 Build 5219 (2023-01-13)

[+] DB: Reports: Added SUISA export
[*] DB: "Unexpected filename" error when skipping file import after VT
[+] Added Spanish translation, courtesy of Marcos Salas
[+] DB: Ability to delete folders which still have sub-folders
[-] DB: Incorrect hour selected after navigating through weeks in "Go to" dialog
[*] A warning message will be displayed on startup if the software is running
    on a temporary license file.
[+] Support for reading "RATE" (Rating) field from MP4 tags
[-] MambaNet: Actuator commands empty, not read from configuration
[-] Application may crash after displaying album art images, due to a bug
    in a 3rd party image library. Workaround added.
[-] Command PLAYLIST x CLEAROVERLAY also executes PLAYLIST x CLEAR
[-] Icons located in "Central folder for icon files" are not displayed


Version 7.1.2 Build 5211 (2022-12-28)

[*] Layout Designer: More detailed identification of screen objects
[+] Installer: Will install Visual C++ Redistributable 2019 if not present
    to fulfill dependencies of libpq.dll and its supporting DLLs
[+] Config: Added Import/Export buttons for encoder connection configuration
[*] Redesigned the configuration import process; it will now prompt you to
    import the configuration from an older version regardless of whether
    the software is first started in configuration, playout etc. mode
[*] Config: Removed unused file import options (normalize, R128, save MMD)
[-] DB: Items not correctly marked as modified when edited in DB playlist,
    changes in items not saved correctly when saving playlist
[+] Background scripts: Added OnWebSocketServerConnectionClosed
[-] K8055 Remote: Possible freeze when turning off or on shutdown


Version 7.1.1 Build 5206 (2022-12-06)

[+] Airlite/Webstation: Ability to assign commands to channel VT on/off
[+] Skin: Cartwall tab height can be adjusted with TabHeight=...
[-] Scripting: IPlaybackControl.PlayerOfItem method does not work all the time
[-] DB: "Go to" dialog: Data shifted in table when start of week is not Moday


Version 7.1.0 Build 5204 (2022-11-21)

[*] Internal refactoring of all remote control interfaces, please check
    settings after upgrade
[*] RM2200D: Host and port must be configured again after upgrade
[+] Axia: Ability to assign player to GPIO for easier configuration
[+] Airlite: PFL is switched on console when player goes to/from PFL mode
[+] Ability to replace selected built-in icons with custom SVG files; use
    the command DEBUG IMAGES to see a list of all available image identifiers
    in the System Log (debug category)
[+] Playlist: New GUI option: Expand new items by default
[*] WASAPI: Optimized handling of default playback device with lower latency
[+] DB: Ability to adjust "First day of week" setting (defaults to Monday)
[+] Added E-Mail logging method
[+] New command: PLAYLIST x CURSOR CLEAR (clears selection and focus)
[+] REST: Ability to implement background script handlers for requests that
    do not require authentication (OnRESTRequestUnauthenticated,
    OnRESTRequestRawUnauthenticated)
[+] New PLAYLIST <number> commands: EXPAND, COLLAPSE, EXPAND/COLLAPSE,
    EXPAND ALL, COLLAPSE ALL
[+] Logging: "Delay" setting now available for any kind of logging interface
[+] Airlite/Webstation: Initial fader state determined at startup
[+] REST: Added unauthenticated access option for file server
[*] REST: File server will automatically look for an index.html file


=== CHANGELOG FOR VERSION 7.0 ===

Snapshot

[-] MySQL: Schema error when using MariaDB 5.x


Version 7.0.9 Build 5078 (2022-12-06)

[+] REST: Ability to filter fields in playlist content
[-] Progress dialog may bring wrong window to front when task finished
[*] Item Properties dialog: Attributes: Checkbox attributes ignore case


Version 7.0.8 Build 5074 (2022-11-21)

[*] SMTP: Added Message-Id header to fix incompatibility with GMail
[*] DB Auto Importer: Writes bugreport.txt on errors if Debug Mode is enabled
[*] GUI: Prevent double execution of actions while progress dialog is visible
[-] Possible Access Violation on WASAPI device errors, hiding the original
    error message/code
[*] Skin editor: Enabled live editing of global progress bar
[-] Player Countdown screen object only displays last ramp, not all
[*] DB: File import: Error message when destination storage is not set
[-] DB: File import required exclusive lock on files
[-] DB: Auto Importer: Possible Access Violation when External ID is set


Version 7.0.7 Build 5067 (2022-10-31)

[-] Radioplayer V2: Fixed HTTP POST request format
[*] Playlist: Scrolls to new items inserted from browser via double-click
[-] Integer Overflow error when dragging of files into playlist fails


Version 7.0.6 Build 5065 (2022-10-21)

[-] DB: Synchronize: Buttons not updated after successful auto-repair
[+] New command: RUNACTIONLIST <filename>
[-] "Cancel" button in some progress dialogs (e.g. DB Import Files) does not
    actually cancel the operation
[-] DB: Old cached playlist files not pruned correctly
[-] DB: Advertising settings: Block alias not reset when field cleared
[*] Playlist: Improved handling of invalid album art and playlist icons,
    working around a possible Range Check Error
[-] Playlist Browser: Properties dialog opens on double click
[*] DB: Advertising: 23:59:59 preselected as possible end time for new campaigns


Version 7.0.5 Build 5062 (2022-09-21)

[-] Possible crashes in Properties dialog when using album art imported as
    playlist item icon
[-] DB: No reverse lookup when dragging items into DB playlist and DB app
    is running as separate process
[*] DB: Renamed option "Show templates in Generate menu" to "Show templates in
    popup/dropdown menus" - now also applies to Manage Templates dialog
[-] K8055N remote control not working, configured commands are not executed
[*] Mass Edit: Silently ignore non-file items during Normalization


Version 7.0.4 Build 5056 (2022-09-02)

[-] Ember+ Consumer remote: Possible Access Violation on startup
[-] Config: Audio Routing: Live Feed nodes appear under Playback, not Recordingq
[+] Scripting: Added IK8055Remote methods ReadDigitialChannel and ReadAllDigital
[-] Auto Cue: Incorrect threshold values used when amplification is set on item
[+] Added support for reading ID3 tags from AIFF files
[-] Possible crash during PFL of container items
[+] Added DHD REST API logging
[-] Scripting: HTTP POST/PUT functions may use incorrect character encoding
[*] DB: Increased performance for setups with a large number of folders -
    please execute "Check Indices" in the DB connection properties
[+] File Recorder: Added "Delete original file after copying" option
[+] DB: Config: Added button to retrieve/update Database ID in properties dialog
[+] Skin: Playlist: Added "Player<Index>" selector, so that settings can be
    limited to items loaded into a particular player, e.g. Player0RowColor=...
    First player has index 0.


Version 7.0.3 Build 5047 (2022-08-19)

[+] MambaNet remote: Ability to adjust Unique ID in configuration
[-] Cartwall: "Unknown device ID" error in editions which lack the VTCartwall
    module
[*] *.dbx files (DigAs metadata) ignored during drag&drop
[-] DB: Manage Templates dialog: Popup menu for template selection is now
    multi-column, fixing a bug where the wrong item is selected in Dark Mode
[-] REST Remote: Error 404 returned even if endpoint handled by script
[-] Event editor: Custom day/time selections not saved/restored correctly
[+] Playlist import/exported: Added .m3u8 (UTF-8 encoded M3U) support
[*] WASAPI: Correct handling of the situation where all input or output devices
    are disabled in Windows Control Panel
[-] Config: Audio Routing: "Repair" button resets all devices
[-] Peakmeter not showing levels for non-infinite Stream and Live Feed items
[-] DB: "Prevent auto-float" flag not retained when set through hour template


Version 7.0.2 Build 5036 (2022-07-08)

[-] Mix Editor may be inaccessible after being minimized
[*] DB: Made CharacterSet=UTF8 the default for MySQL/MariaDB connections
[-] Screen Objects: Border not visible in Dark Mode
[-] DB: Fixed permissions for VTDJ users that prevented voice track uploads
[+] MambaNet remote: Ability to adjust MambaNet address through remote.ini
[*] Audio Routing: The WASAPI Windows Default Device should be the default
    playback/recording device when unconfigured (rather than "no audio")
[-] Browser: Toolbar not visible when using List=on in skin.ini
[+] Scripting: Added URLEncodeUTF8() and URLEncodeAnsi() functions; existing
    URLEncode() is still available as an alias for URLEncodeAnsi(), but this
    might change to UTF8 in the future, so always use the explicit version
    in new scripts.
[-] DBClient: HTTP Error 401 when accessing files with token authentication
[-] DBClient: User permissions not retrieved correctly from server, menu items
    not disabled according to permissions


Version 7.0.1 Build 5032 (2022-05-30)

[*] DB: Advertising preview: Adjusted colors for Dark Mode
[-] DB: "Not connected" error when using Export to Database from standalone app
[*] DB: Tweaked SQL options to reduce occurances of "Database is locked" error
[*] Auto Cue: Thresholds auto-adjusted to respect amplification value of item
[-] Playlist: Peakmeter not updated continuously when progress bar is disabled
[*] DB: Enable WAL journaling mode for local (SQLite) connections as default
[+] License Manager: Added Remove License function on start page
[-] DB: User Management: Station/Sub-Playlist permissions not retained
[-] System Log: Formatting error in archived log files, times appear as 1899
[+] DB: Added "Compatibility mode" option, which allows you to connect to
    a version 6 (schema version 24) database for testing purposes; should
    not be used in production
[-] Database Playlist browser: Database selection dropdown emptied when
    switching Dark/Light Mode
[-] DB: Admin: Sub-Playlist configuration not saved correctly
[-] DB: MySQL backend: Possible "key was too long" error on database creation
[-] Playlist: Some icons not drawn correctly, giving Access Violation errors.
    The error message is being suppressed now. Please report any missing
    icons to forum/support to help us identyfing the root cause.
[-] DB: Incorrect filename stored in playlist after remote voice-track
[-] DB: All items in playlist displayed as "foreign" items
[-] DB: Cue markers not saved after voice tracking
[-] Progress dialog: Progressbar may flicker after task has been completed


Version 7.0.0 Build 5022 (2022-04-22)

[*] LED Clock: Ability to specify separate colors for light/dark mode
[-] Playlist: Remaining duration of playing items not updated when progress
    bar is disabled
[-] Mini Scheduler: Track separation not updated during scheduling session
[-] SAS Remote: Not reacting to playout changes, VT status etc.
[+] Ember+ Consumer: Added support for keepalive requests (set to 0 to disable)
[-] Empty playlist cannnot be focused, items are inserted in the wrong playlist


Version 7.0-RC Build 5020 (2022-04-08)

Changes during beta test:

[-] DB: Advertising configuration may fail to load
[-] Possible crash with "invalid license" error
[*] Layout Designer: Automatic migration of v6.x-style layout.ini file
[-] DB: Initial Setup may fail with "invalid SQL syntax" error
[-] DBClient: "404 not found" error when trying to connect
[-] Item Properties dialog: Color not displayed in Dark Mode
[-] Cartwall: Items misplaced when switching between tabs
[-] Cartwall: Item colors ignored in Dark Mode
[-] Possible Range Check Error when parsing durations manually entered by user
[-] Fixed Dark Mode display errors in Cue Editor
[-] Playout: Insert menu disabled when playlist loses focus
[-] Access Violation in file encoding routines (e.g. after Voice Tracking)
[-] Layout Designer: Resize/move nodes not visible in Dark Mode
[-] Config app and Control Panel: Menu items not translated from English
[+] Layout Designer window can be resized
[-] Audio routing: Encoder must not use itself as target
[+] New commands: DARKMODE ON, DARKMODE OFF, DARKMODE ON/OFF
[*] Cartwall: Dropped support for "Dynamic Colors" mode
[*] Cartwall: Removed "Colors" page in config app, colors can only be adjusted
    through the skin now
[-] Mix Editor and Cue Editor: Scrollbars not working correctly in Dark Mode
[+] Playlist: Added "TitleDisplayMode=Title" skin option (only title, no artist)
[-] Some PLAYLIST and PLAYER commands not processed correctly
[-] DBClient: Audio files may file to load
[-] DBClient: Connections are always read-only regardless of permissions
[-] DB: Standard Attributes not shown in Properties dialog
[-] DB: Scheduler: File Access Denied error when debug log file is enabled
[-] Playlist: Progress bar options from config not applied on startup
[-] DB: Items not sorted alphabetically in browser
[+] DB App: Added Dark Mode switch in Help menu
[-] Some scrollbars not turning dark in Dark Mode
[+] Skin Editor: Prompt to save changes when closing window
[+] Skin Editor: Added search functionality (Ctrl+F)
[-] Ctrl+F shortcut will show error message when System Log viewer is not open
[-] DB: Storages appear in random order in Synchronize dropdown menu
[-] DB: User/Group management: Library permissions not saved/loaded correctly
[-] Remote control: AUTOMATION commands not processed
[+] Playlist skin: Added support for custom columns (Custom1..Custom8)
[-] Scripting: Some function calls lead to a "Could not call proc" error
[-] Mass Edit: "Progress already started" error message
[-] Skin: Some labels in player GUI ignore skin colors
[-] Range Check Error on startup in Dark Mode if multiple playlists configured
[+] Skin Editor: For the style-dependent colors, a preview for both light and
    dark mode is displayed in the color selection dialog
[+] Skin Editor: Ability to specify pairs of HTML codes for light/dark mode
[+] Skin Editor: Ability do define custom colors
[-] Fixed Dark Mode display issues in some screen objects
[-] DB: Error messages when importing files
[*] Skin: Adjusted Playlist font identifiers so that they match the column IDs
[-] Skin: Some Playlist settings not processed with correct priority
[+] Skin Editor: Added right-click menu with Cut/Copy/Paste etc.
[-] Logging: Stop events logged as Start events, leading to double entries
[-] Playlist: Comment may be cut off due to incorrect node height calculation
[-] Skin: Database NodeHeight setting not working correctly
[-] DB: "Scheduling" and "History" tabs in item Properties dialog always show
    data for default station, not the one currently selected
[*] DB: Column selection is now done in a popup dialog rather than expanding
    main menu
[-] Playlist: Item row color ignored unless "override skin" option enabled
[*] DB: Adjusted colors for Hour Template editor to match light/dark mode
[-] DB: Fixed display errors in Select Playlist dialog
[*] DB: "First colum" setting for item colors will always used leftmost column
[-] DB Client: 404 not found error when uploading files
[-] Config: Audio Routing: Wrong section name used for recording devices when
    saving assignment as *.ini, devices not restored correctly
[-] Playlist: Display not updated when setting item type through script
[-] File Encoding: When saving as WAV, a file named "-" may be created,
    or a possible BASS Error 33 may occur
[-] DSP: "Progress already started" error when using Normalization plugin
[-] Possible "Cannot translate component" error in non-English GUI
[-] Dark Mode: Removed glitches in player XML layout
[*] Execution of "After startup" actions deferred until the main window is
    fully show, to work around an error when DARKMODE ON is executed
    as part of these actions
[-] Playlist: BackgroundColor skin setting not working
[-] Screen object background color not applied in Dark Mode
[-] Time/Timer screen object font color not applied in Dark Mode
[-] Playlist: Multi-line Auto Comment not working
[-] DB: CSV import: Folder setting ignored for new items
[*] Playlist skin: "Custom" columns renamed to "Dynamic" columns (Dynamic1 etc.)
    to work around naming conflict with "Custom1" etc. playlist item types


Known issues:

[-] Cue Editor: Audio keeps fading after skip


Version 7.0-beta Build 5000 (2022-02-04)


Important changes:

[*] Redesigned playlist GUI
[*] WASAPI is now the default audio output method
[*] DirectSound is still supported but only in "application level mixing" mode
    with higher latency
[*] Layout Designer: Screen Objects are now using IDs that indicate their type
[*] DB: Scheduler: Attribute filters starting with ~ will now be regarded
    as regular expressions


New features:

[+] Built-in Dark Mode
[+] Live skin editing
[+] Redesigned Audio Routing configuration with improved identification/testing
    and built-in repair function when device IDs change after Windows update
[+] Built-in sine wave and pink noise generator; use Stream playlist items,
    enter URL as "sine:<freq>[,level[,samplerate]]" or "pink:[level]"
[+] Redesigned System Log with automatic archiving function and built-in viewer
[+] DB: Unified configuration interface for all network/SQL databases
[+] DB: Built-in user and group management for local and SQL databases;
    no longer uses SQL roles for user management. Default login is the "admin"
    user with password "admin" which can be changed in the database connection
    properties. Additional users/groups are managed from the DB app ->
    Administration menu. DBServer application does not have a user database
    of its own anymore but uses the one from the database.
[+] DB: New "Inbox" button in DB app, will check a configurable folder for
    new audio files, then import and delete them.
[+] DB: Advertising: Ability to specify manual blocks (by date/hour/block)
    for campaigns, in addition to the weekly schedule
[+] WASAPI: New "Windows Default Device" setting; will automatically follow
    when you switch to a different device in Windows sound settings
[+] WASAPI: Automatic recovery when devices are disconnected and reconnected
[+] WASAPI: Newly connected devices can be used without restarting the software
[+] DB: New "Auto-Repair" function in storage sync dialog
[+] DB: Transitions: "Artist must match" option (used to schedule Station IDs)
[+] New item type: Automatic File Container
[+] New screen object: Web Browser (requires Edge and WebView2 runtimes)
[+] Sound processing can now be used on soundcard output/input level
[+] REST Logging injection
[+] REST Remote can use mAirListDB user database for authentication
[+] File encoding: Added "Custom (32-bit)" option, $SAMPLERATE and $CHANNELS
    parameters for custom encoders


Discontinued features:

[*] DHD Series52 Remote: Removed XP5 support, DHD console is now channel-based
[*] Removed On-The-Fly database
[*] Removed Window Message Client remote control


Other changes:

[*] Redesigned progress dialogs
[*] Various GUI fixups and improvements
[*] ASIO: Simplified input/output channel configuration
[*] Updated BASSmix to 2.4.11.1
[*] Updated Virtual Treeview to 7.6.1
[*] Re-implemented IOWarrior remote control based on hidapi.dll
[*] Re-implemented Ember+ Consumer remote control
[*] DB: Optimized SQL queries
[*] DB: Database schema updated to 25
