# TrackMania Nations - XASECO release notes v1.03
Information on the XASECO system for TrackMania Nations and Forever (& Original/Sunrise), racing games by Nadeo
Author: Frans P. de Vries
Keywords: TrackMania, Forever, United, Nations, Original, Sunrise, racing, games, XASECO, ASECO, RASP, Jfreu, plugins, records, jukebox, Nadeo

### New features and other changes in the v1.03 release of XASECO:

- new support for an admin lock password:
  - a lock password for /admin and /jfreu commands, as well as other admin abilities and the admin panel, can be configured via new config.xml setting `<lock_password>`
  - if the password setting is non-empty, admins of any tier have to enter a password before being able to use admin commands and features
  - the new /admin unlock command compares the supplied password with the above setting, and unlocks the admin commands and features if valid
  - the unlock status is remembered for the duration of the player session, so after every reconnect admins will have to enter the password again before they are fully authorized
  - when an /admin or /jfreu command is not permitted, the error message does not distinguish between a login without admin abilities and the absence of its unlock status, so a player with a spoofed login is left guessing whether the login indeed belongs to an admin or whether an unlock password is required
- new support for admin IP addresses:
  - after each `<tmlogin>` field in the `<masteradmins>` section in config.xml there is now an `<ipaddress>` field which, if not empty, should contain the IP address that this MasterAdmin login is authorized from
  - similarly, after each `<tmlogin>` field in the `<admins>` and `<operators>` sections in adminops.xml there are now `<ipaddress>` fields which, if not empty, should contain the IP addresses that these Admin and Operator logins are authorized from
  - if the specified IP address for a given login does not match, a player with a spoofed MasterAdmin, Admin or Operator login will only have normal player abilities, and any unauthorized attempts to use admin commands are logged
  - when starting v1.03 for the first time it is not necessary to add `<ipaddress>` fields to your adminops.xml file, as empty fields will be created and saved automatically the next time that this file is written (e.g. with /admin writeabilities) – IP addresses for existing logins can then be added manually, and the file reloaded with /admin readabilities
  - when using this security feature for the `<masteradmins>` section in config.xml, you do have to manually add the `<ipaddress>` fields to the file, whether empty or with actual IP addresses
  - newly added admins and operators will always be saved to adminops.xml with their IP address, so if you are not using this security feature you can manually delete the address from the file, and then reload it
  - note to plugin authors: because of these two security features the parameter type for the allowAbility, isMasterAdmin, isAdmin, isOperator and isAnyAdmin functions changed from a login string to a player object
- new support for IP address bans, in co-operation with regular server bans (which are not preserved across TM server restarts):
  - the new bannedips.xml file can contain a list of banned IP addresses, which is automatically loaded at XASECO start-up
  - the IP addresses of players are checked against the list upon connecting, and banned players are kicked with a banned IP message
  - the existing /admin ban and /admin unban commands also add/remove the IP address of the pertaining player to/from the banned IPs list
  - the new /admin banip command adds a manually specified IP address to the list, and /admin unbanip removes an IP address from the list – /admin banip does not require the pertaining player to be online like /admin ban does
  - the new /admin showiplist command (alias /admin listips) displays the current list of banned IP addresses – on TMF if config.xml setting `<clickable_lists>` is True, the addresses in the output are buttons to invoke /admin unbanip on the selected IP
  - the new /admin cleaniplist command deletes the entire list of banned IP addresses
  - all commands automatically write the updated bannedips.xml file, but the new /admin writeiplist and /admin readiplist commands can also be used to write/read the list whenever you want
- on TMF when plugin.msglog.php is enabled:
  - a small arrow button is displayed in the lower-left corner above the chat window button that will invoke /msglog, allowing to quickly review the system message history
  - the system message window now always displays the last 5 message lines, and the /msglog output has been reduced to a single-page window of 21 lines to avoid having to page in order to read the latest messages
  - global jukebox messages can now be diverted to the window, configurable via rasp.settings.php setting `$jukebox_in_window` (true/false)
  - global chat-based vote messages can also be diverted to the window, configurable via votes.config.php setting `$vote_in_window` (true/false)
- new /admin writeabilities and /admin readabilities commands to write and read the admins/operators/abilities list to and from disk
- the player join/leave messages (for both the full and lite Jfreu plugins) are defined via new jfreu.config.php settings `$player_join`, `$player_joins`, and `$player_left`
- an optional divider message at the start of each track shows the name, author and author time, configurable via new config.xml setting `<show_curtrack>` (2 = TMF message window, 1 = chat, 0 = off)
- it's now possible to specify multiple track IDs to /admin add (but not to /add due to the voting process) in order to quickly download more than one track from TMX or ShareMania – the optional TMX section or SM parameter should be last
- when the target player of a /kick vote leaves before the vote completes, the vote is now cancelled
- the karma message at the start of each track can now be disabled via new rasp.settings.php setting `$karma_show_start` (true/false)
- the Dedimania welcome message for a newly connecting player can also be disabled via new dedimania.xml setting `<show_welcome>` (True/False)
- the default name for the blacklist file used by /admin readblacklist and /admin writeblacklist is now configurable via new config.xml setting `<blacklist_file>` (default: blacklist.txt) – note that the TM server will continue to load the blacklist file with its default name at start-up, unless you adjust `<blacklist_filename>` in dedicated_cfg.txt as well
- the default name for the guestlist file used by /admin readguestlist and /admin writeguestlist is also configurable via new config.xml setting `<guestlist_file>` (default: guestlist.txt) – note that the TM server will continue to load the guestlist file with its default name at start-up, unless you adjust `<guestlist_filename>` in dedicated_cfg.txt as well
- the default name for the track history file is now configurable via new config.xml setting `<trackhist_file>` (default: trackhist.txt)
- the output of /admin players is limited to at most 10000 entries to prevent possible memory overruns
- the background of the TMF system message window is changed from transparent into blurry to enhance readability of the messages
- a high-level outline of all of XASECO's features and plugins can be found on the new Overview page
- the Upgrade notes for earlier versions are now archived on a separate page
- this release requires the latest server build 2008-08-05

### Bug fixes in the v1.03 release of XASECO:

- on TMF with the Jfreu info messages diverted to the system message window, the /message command makes the window pop up much longer than the `<window_timeout>` value – fixed
- if `<cache_tags>` in musicserver.xml is disabled, the /music list output isn't formatted correctly – fixed
- attempts to /admin ban offline players are allowed (and naturally always fail) – fixed
- the Z-value of the TMF /admin pay dialog puts it behind the full chat window – fixed

### New features and other changes in the v1.02 release of XASECO:

- new support for a system message window on TMF with the following features:
  - the message window becomes available when plugin.msglog.php is enabled (uncommented) in plugins.xml
  - various system messages that are sent to all players in the chat window can now be diverted into the message window in order to reduce chat clutter
  - the window normally pops up with the last 4 message lines whenever a new message is received, using a timeout that is configurable via new config.xml setting `<window_timeout>` (default: 6 seconds)
  - during the scoreboard at the end of each track, the window pops up with the last 6 lines if there are any new messages, for the same duration as the server's ChatTime setting (default: 10 seconds) plus an extra 5 seconds for the podium animation before the scoreboard comes up
  - the window size is restricted to 4 and 6 lines respectively due to the available screen space between the notice area and drop-down menu above it, and the main command window or scoreboard (at its largest size) below it
  - the new /msglog command displays the last 30 message lines so players can check back the system message history
  - messages to be diverted into this window can be any or all from:
    - new/improved/secured/equalled local records, configurable via new config.xml setting `<recs_in_window>` (True/False)
    - new/improved/secured/equalled Dedimania records, configurable via new dedimania.xml setting `<recs_in_window>` (True/False)
    - the local records report before a track, configurable via config.xml setting `<show_recs_before>` (add 4 to original value: 6 = full report in window, 5 = track record in window, 2 = full report in chat, 1 = track record in chat, 0 = off)
    - the local records report after a track, configurable via config.xml setting `<show_recs_after>` (add 4 to original value: 6 = full report in window, 5 = top-5 in window, 2 = full report in chat, 1 = top-5 in chat, 0 = off)
    - the Dedimania records report before a track, configurable via dedimania.xml setting `<show_recs_before>` (2 = message window, 1 = chat, 0 = off)
    - the Dedimania records report after a track, configurable via dedimania.xml setting `<show_recs_after>` (2 = message window, 1 = chat, 0 = off)
    - the round finish reports in Rounds mode, configurable via new config.xml setting `<rounds_in_window>` (True/False)
    - the TMX World Record message at the start of a track, configurable via config.xml setting `<show_tmxrec>` (2 = message window, 1 = chat, 0 = off)
    - the total playtime message at the end of a track, configurable via config.xml setting `<show_playtime>` (2 = message window, 1 = chat, 0 = off)
    - the Jfreu Info message at the end of a track, configurable via jfreu.config.php setting `$infomessages` (2 = message window, 1 = chat, 0 = off)
- new /admin call command for MasterAdmins to directly execute a server call, essentially incorporating most of the RPC Utilities, with the following options:
  - help: Displays help information
  - help Method: Displays help for method
  - list: Lists all available methods
  - Method {params}: Executes method with any necessary parameter(s) and displays any result(s)
  - boolean parameters should be entered as 'true' and 'false' (without the single quotes); string parameters consisting of multiple words need to be entered between double quotes (")
  - methods that require an array or struct as parameter are not supported
  - Admins and Operators cannot use this command regardless of the <call> setting in adminops.xml, as it would permit them to bypass all the normal ability checks
- new support for .OGG comments (ID3 tags) in the TMF music server plugin:
  - the new `<cache_tags>` setting in musicserver.xml defines whether to cache and display comments (typically ID3 tags) for all .OGG files in the song list
  - the new `<cache_file>` setting defines the filename where the cached comments are stored (default: musictagscache.xml)
  - when the cache file doesn't exist upon restarting XASECO, it is created, and all .OGG files are read and their comments extracted
  - upon further XASECO restarts, and when using /music reload, the cache file is used to load the comments for all known songs, and only the .OGG files for new songs are read
  - only the first block (512 bytes) of each .OGG file is read to minimize server traffic and start-up time, but obviously this can still take some time when building the initial cache for a large song collection
  - the cache file is then immediately written out with the title and artist for all songs, ready for future restarts and reloads
  - if comments are enabled, the /music current and /music settings commands include the title and artist in their output, and the /music list command displays a secondary line with the title and artist for every song
  - the cache file can be edited manually to make adjustments or corrections to the title and artist information
  - .MUX files are ignored because they are encrypted and cannot be parsed for their comments
- on TMF (except when /style is off) all windows now show an icon in the left corner of the header that's appropriate for that window's content
- on TMF if config.xml setting `<clickable_lists>` is True, the karma values in the /list karma output are buttons to invoke /karma on the selected track
- on TMF in the /jukebox display output, admins with the clearjukebox ability get buttons at the end of every page to invoke /admin clearjukebox
- the /recs and /dedirecs commands now accept the following options:
  - help: Displays help information
  - pb: Runs the /pb or /dedipb command, respectively
  - new: Runs the /newrecs or /dedinew command
  - live: Runs the /liverecs or /dedilive command
  - first: Runs the /firstrec or /dedifirst command
  - last: Runs the /lastrec or /dedilast command
  - next: Runs the /nextrec or /dedinext command
  - diff: Runs the /diffrec or /dedidiff command
  - range: Runs the /recrange or /dedirange command
  - without an option, they display the local or Dedimania records for the current track as before
- the main aseco.php program now contains a few configuration definitions that cannot be stored in a .php or .xml file:
  - ABBREV_COMMANDS controls whether to define abbreviations for some chat commands: /ad for /admin, /jb for /jukebox, and /aj for /autojuke – this was previously controlled by uncommenting a few lines in the pertaining source files
  - INHIBIT_RECCMDS controls whether all local and Dedimania record relations commands are disabled from the /help and /helpall lists; these are: /pb, /newrecs, /liverecs, /firstrec, /lastrec, /nextrec, /diffrec, /recrange as well as /dedipb, /dedinew, /dedilive, /dedifirst, /dedilast, /dedinext, /dedidiff, /dedirange – note that the commands can still be used (and on TMN will be echoed to the chat window when doing so)
  - MONTHLY_LOGSDIR defines whether to write the log in monthly chunks in a "logs/" subdirectory – this was previously controlled by the `$log_monthly_logsdir` variable in function doLog() in includes/basic.inc.php
- on TMF, tweaked the Z-values of the single- and multi-page windows so that they clearly stay "on top of" the full chat window (except when /style is off, as those windows were already displayed correctly)
- if `$always_show_pb = false` in rasp.settings.php, the Personal Best message at the start of each track is also skipped if the player uses the records panel on TMF
- the default name for the matchsettings file used by /admin readtracklist and /admin writetracklist is now configurable via new config.xml setting `<default_tracklist>` (default: tracklist.txt)
- it's now possible to add an extra explanation to the /help output to help new players, configurable via new config.xml setting `<help_explanation>` (default: False)
- chat-based voting commands can be temporarily disabled during the scoreboard at the end of a track, configurable via new votes.config.php setting `$disable_while_sb` (default: true)
- the default number of tracks displayed by /list newest and /list oldest is now 50
- the dedimania.xml settings <log_news>, <show_recs_range> and <display_recs> should now be specified as True/False instead of 1/0
- the Dedimania system "refresh" is reduced from once every 3 minutes to once every 4 minutes
- the /donpanel command is now disabled if plugin.donate.php is disabled in plugins.xml
- optimized URL parsing in the get_file functions of the SMInfoFetcher, TMNDataFetcher, TMXInfoFetcher and TMXInfoSearcher modules
- new window style ProgressBar, admin panel AboveSpeed2, donate panels LeftSmall and RightSmall, and vote panel BottomCenterTransp, courtesy of nouseforname
- this release requires the latest server build 2008-07-22

### Bug fixes in the v1.02 release of XASECO:

- on some PHP systems all ManiaLink windows are broken – fixed by setting locale LC_NUMERIC = "C"
- on some servers players that leave have their win counts cleared – fixed this long-standing issue
- /ladder and /replay are unable to reload the current track (temporarily added via /add) if that has just been added permanently via /admin addthis – fixed
- disabling the default donate panel in config.xml also disables the admin panel – fixed

### New features and other changes in the v1.01 release of XASECO:

- new TMX search support:
  - there is a new TMXInfoSearcher class to search TMX with the following features:
    - find tracks matching name, author and/or environment, returning up to 500 results from the TMNF/TMU sections and up to 20 from the TMO/TMS/TMN sections (due to an API limitation)
    - list the 10 most recent tracks (max. one per author) on any section
    - the TMXInfoSearcher object is an iterator that allows you to 'foreach' over it to obtain TMXInfo objects with all the info on each track
  - new /xlist command to list tracks on TMX with the following options and features:
    - help: Displays help information
    - recent: Lists the 10 most recent tracks (max. one per author)
    - <xxx>: Lists tracks the matching (partial) name
    - auth:<yyy>: Lists tracks the matching (partial) author
    - env:<zzz>: Where <zzz> is an environment from: Stadium, Bay, Coast, Island, Snow/Alpine, Desert/Speed, Rally (case-insensitive)
    - <xxx> auth:<yyy> env:<zzz>: Combines any of the name, author and/or environment searches
    - <tmx>: Where <tmx> is a TMX section from: TMO, TMS, TMN, TMNF, TMU (case-insensitive)
    - the section option must be the last one but can be combined with any of the above searches; on a TMNF server the default section is TMNF, on a TMUF server it's TMU, and of course the TMN section on a TMN server
    - on TMF if config.xml setting `<clickable_lists>` is True, the TMX ids are buttons to invoke /tmxinfo on the selected track; the track names invoke /add on the selected track; admins with the add ability also get Add buttons to invoke /admin add on the selected track; and the author names invoke /xlist auth: on the selected author
    - on TMN you can list tracks in other TMX sections, but obviously only add them from the TMN section
- new ShareMania support:
  - with /add <ID> SM and /admin add <ID> SM you can now use the ShareMania site to download tracks ('SM' is case-insensitive)
  - new /sminfo command (based on the new SMInfoFetcher class) to display the ShareMania information on the current track or, when given a track ID (from /list) or an SM ID, any other track
- new TMUF donate panel support with the following features:
  - the donate panel shows buttons for seven different donation values, by default: 20, 50, 100, 200, 500, 1000, 2000 (configurable in plugin.donate.php)
  - the buttons invoke the /donate command with the specified coppers value
  - the distribution's panels/ subdirectory can contain up to 20 donate panel templates; their filenames must start with 'Donate'
  - there are 6 standard templates in various positions and sizes all around the HUD
  - templates define the complete ManiaLink panel with position, size and fonts, so you have full control to develop custom panels
  - the default donate panel is configurable via new config.xml setting `<donate_panel>` (default: BelowCPList)
  - new /admin donpanel <xxx> command to select another default donate panel for newly connecting players (requires panel name, 'off' disables the default)
  - the new /donpanel command allows players to select an individual donate panel with the following options:
    - help: Displays help information
    - list: Displays available panels
    - default: Resets panel to server default
    - off: Disables donate panel
    - <xxx>: Selects donate panel <xxx>, which can be a panel name or the sequence number from /donpanel list
    - in the /donpanel list overview a player can also click a panel name to dynamically select a new panel (or refresh the current one if its .xml file was updated)
  - on TMNF servers, players using the /donpanel command (and admins using /admin donpanel) receive a message that a TMUF server is needed; on TMUF servers, a TMNF player receives a message that a TMUF account is needed
- automatically enabling /cps and /dedicps for newly connecting players is now configurable via new config.xml settings `<auto_enable_cps>` and `<auto_enable_dedicps>`
- new /admin pay command (TMUF-only) to pay server coppers to a login, including another server login, with the following features:
  - the required parameters are the login, which can be any valid player or server login, and the coppers amount to pay
  - the command provides a dialog box, similar to the donation dialog, allowing the admin to confirm or cancel the payment
  - after confirmation, the payment happens immediately but the Nadeo tax (2 coppers plus 5 % of the transaction) isn't deducted from the server account until any player joins or leaves the server
  - on TMNF servers, admins using this command receive a message that a TMUF server is needed
- new /admin cleanmutes command (alias /admin cleanignores) to completely clean the global mute/ignore list
- the /admin server command now also works on TMN (albeit with the column alignment difficulties inherent to those windows)
- on TMF, /server and /admin server now show the server's rights (United or Nations) and /stats shows the pertaining player's rights
- on TMNF servers, players using the /donate command now receive a message that a TMUF server is needed; on TMUF servers, a TMNF player receives a message that a TMUF account is needed
- on TMNF servers, admins using the /admin coppers command now receive a message that a TMUF server is needed
- updated the Dedimania system to randomly choose between the existing :8006 and :8007 and new :8011, :8012 and :8013 communication ports (remember to open those ports on your firewall/router as well) in order to distribute the load across more Dedimania servers
- attempts to /add, /admin add or /admin addlocal a track that's larger than 256 KB (the maximum online track size) are aborted with an error message
- when using the full Jfreu plugin, the banning period by the badword filter is now configurable via `$badwordstime` in jfreu.config.php (default: 10 minutes)
- new /jfreu badwordstime command to set the banning period (in minutes)
- on TMF, unusual characters (such as in challenge names and player nicknames) no longer cause ManiaLink windows not to be displayed
- on TMF, all standard admin panel templates now use the animated Buddy icon instead of the static Buddies one
- on TMF, added the server's login, rights and packmask to the start-up header in the log
- on TMN the default style and panel templates are no longer loaded
- optimized the multi-page ManiaLink windows code on TMF

### Bug fixes in the v1.01 release of XASECO:

- on TMF, using /style <##>, /admin panel <##>, /recpanel <##> and /votepanel <##> to select the default style/panel doesn't work – fixed
- on TMF, unofficial players (ladder rank -1) can bypass the rank limit checks – fixed
- if a player reconnects within the same second after disconnecting, a MySQL warning is logged – fixed this long-standing bug
- using /add on a track that's already in the server's list does not properly jukebox it anymore – fixed
- on Windows, downloading the same track from TMX again with /add or /admin add can result in a PHP warning – fixed
- if a newly connected player uses /refresh, a PHP warning can result – fixed
- bogus PlayerFinish callbacks (with no valid login) occasionally result in PHP/XASECO warnings – fixed, such callbacks are now ignored
- there are some layout glitches in the /jfreu players output when /style is off – fixed
- the /jfreu badwordsnum command actually shows the /jfreu maxplayers value – fixed
- on TMN, /admin players results in a 'GetIgnoreList' warning – fixed
- a non-responding music server can cause XASECO to time out or crash when loading a song – fixed
- log messages with a "Fatal Error" don't include the source file where the error occurs – fixed

### New features and other changes in the v1.00 release of XASECO:

- new TMF window styles support with the following features:
  - the distribution includes a new styles/ subdirectory that can contain up to 50 style templates for the ManiaLink windows
  - there are no fewer than 20 standard templates in light and dark, and in transparent, blurred and opaque variants
  - templates define the window, header and body background containers, as well as the header and body text fonts, and the clickable button style
  - the default window style is configurable via new config.xml setting `<window_style>` (default: DarkBlur)
  - new /admin style <xxx> command to select another default window style for newly connecting players (requires style name, 'off' disables the default)
  - the new /style command allows players to select an individual window style with the following options:
    - help: Displays help information
    - list: Displays available styles
    - default: Resets style to server default
    - off: Disables TMF window style
    - <xxx>: Selects window style <xxx>, which can be a style name or the sequence number from /style list
    - in the /style list overview a player can also click a style name to dynamically select a new style (or refresh the current one if its .xml file was updated)
  - multi-page windows get ArrowFirst and ArrowLast buttons to jump directly to the first and last pages – as with the plain TMN-like style, windows of more than 5 pages also get ArrowFastPrev (Prev5) and ArrowFastNext (Next5) buttons to jump back and forth by 5 pages
  - note that on TMNF the Black, Blue, Cyan and Orange styles revert to Green, so you might as well remove those files to prevent player confusion
- new TMF admin panel support with the following features:
  - the admin panel contains 7 icons to perform common admin tasks, from left to right (or top to bottom):
    the ClipRewind icon for /admin restartmap, ClipPause for /admin endround, ClipPlay for /admin nextmap, Refresh for /admin replaymap, ArrowGreen for /admin pass, ArrowRed for /admin cancel and Buddies for /admin players live
  - the distribution includes a new panels/ subdirectory that can contain up to 40 admin panel templates; their filenames must start with 'Admin'
  - there are 14 standard templates in various positions and sizes all around the HUD
  - templates define the complete ManiaLink panel with position, size and fonts, so you have full control to develop custom panels
  - the default admin panel is configurable via new config.xml setting `<admin_panel>` (default: BelowChat)
  - new /admin admpanel <xxx> command to select another default admin panel for newly connecting admins (requires panel name, 'off' disables the default)
  - the new /admin panel command allows admins to select an individual admin panel with the following options:
    - help: Displays help information
    - list: Displays available panels
    - default: Resets panel to server default
    - off: Disables admin panel
    - <xxx>: Selects admin panel <xxx>, which can be a panel name or the sequence number from /admin panel list
    - in the /admin panel list overview an admin can also click a panel name to dynamically select a new panel (or refresh the current one if its .xml file was updated)
  - as with chat commands, use of the buttons in the admin panel remains governed by the tiered admin system and the ability lists
- new TMF records panel support with the following features:
  - the records panel lists the Personal Best, Local #1 record, Dedimania #1 record and TMX world record
  - the times (or scores in TMUF Stunts mode) for these four fields act as buttons to invoke the /topsums, /recs, /dedirecs and /tmxrecs commands, respectively
  - the distribution's panels/ subdirectory can contain up to 50 records panel templates; their filenames must start with 'Records'
  - there are 15 standard templates in left- and right-edge variants
  - templates define the complete ManiaLink panel with position, size and fonts, so you have full control to develop custom panels
  - the default records panel is configurable via new config.xml setting `<records_panel>` (default: RightBottom)
  - new /admin recpanel <xxx> command to select another default records panel for newly connecting players (requires panel name, 'off' disables the default)
  - the new /recpanel command allows players to select an individual records panel with the following options:
    - help: Displays help information
    - list: Displays available panels
    - default: Resets panel to server default
    - off: Disables records panel
    - <xxx>: Selects records panel <xxx>, which can be a panel name or the sequence number from /recpanel list
    - in the /recpanel list overview a player can also click a panel name to dynamically select a new panel (or refresh the current one if its .xml file was updated)
  - all players' records panels are updated when a new #1 Local or Dedimania record is driven, a player's own panel when a new Personal Best is driven
  - when the scoreboard comes up at the end of a track, records panels are temporarily disabled
  - note that on TMNF some of the Blue fonts revert to Green, so you could rename those files to prevent player confusion
- new TMF vote panel support with the following features:
  - the vote panel provides Yes and No buttons for TMX /add and all chat-based votes
  - players can also operate the buttons with the F5 and F6 keys respectively (the keys don't work for spectators)
  - the Yes button and F5 key invoke the /y command, the No button and F6 key are dummy operations to close the vote panel, which is necessary for a consistent user interface experience
  - the vote panel is displayed for all players upon entering an /add or chat-based voting command, except for spectators when `$allow_spec_voting` in votes.config.php is off (but admins always get the vote panel) and for the vote initiator when `$auto_vote_starter` is on (because that already invokes /y automatically)
  - a player's vote panel disappears once clicked (or when entering /y), and any remaining panels disappear automatically when a vote passes, expires, or is cancelled
  - the color of the Yes button matches the type of vote: pink ({#vote} in config.xml) for chat-based votes and orange ({#emotic}) for /add votes; the No button is always dark gray
  - the distribution's panels/ subdirectory can contain up to 10 vote panel templates; their filenames must start with 'Vote'
  - there are 4 standard templates in various positions and sizes around the HUD
  - templates define the complete ManiaLink panel with position, size and fonts, so you have full control to develop custom panels
  - the default vote panel is configurable via new config.xml setting `<vote_panel>` (default: BelowChat)
  - new /admin votepanel <xxx> command to select another default vote panel for newly connecting players (requires panel name, 'off' disables the default)
  - the new /votepanel command allows players to select an individual vote panel with the following options:
    - help: Displays help information
    - list: Displays available panels
    - default: Resets panel to server default
    - off: Disables vote panel
    - <xxx>: Selects vote panel <xxx>, which can be a panel name or the sequence number from /votepanel list
    - in the /votepanel list overview a player can also click a panel name to dynamically select a new panel (or refresh the current one if its .xml file was updated) – while doing this the panel is briefly displayed to show its new location
  - when the scoreboard comes up at the end of a track, vote panels are disabled (because the ongoing vote expires at that point)
- the /admin players command now accepts a special option live to display a list of just the online players, rather than any players in the database that match the search string
- on TMF the /admin players command now provides a comprehensive player management window:
  - the nick/login buttons will invoke /stats on the selected player
  - the operation buttons invoke, from left to right, on the selected player: /admin warn, /admin ignore or /admin unignore, /admin kick, /admin ban or /admin unban, /admin ban or /admin unblack, /admin addguest or /admin removeguest, and /admin forcespec
  - the toggle operations show the operation that is meaningful with respect to the player's status, e.g. UnIgnore for an ignored player, Add Guest for a non-guest one, and no Force Spec button for a spectator
  - operations can be performed on both online and offline players, but buttons are only provided when that operation is feasible, e.g. offline players cannot be warned, ignored, kicked or banned but they can still be unbanned and unblacked
  - the window is refreshed (albeit to the first page) to show the new status when any toggle operation is performed, i.e. (Un)Ignore, Kick, (Un)Ban, (Un)Black, Add/Remove Guest and Force Spec
  - buttons are only provided for the first 200 players, which should be sufficient for the live list – if the desired player in an offline list is beyond the 200 mark, refine your search string
- new /jfreu players command to display the list of all known players since the last XASECO restart, and search for offline players via a (part of a) login or nickname with /jfreu players <string>
- the special option live displays a list of just the online players, rather than any players tracked since the last XASECO restart that match the search string
- on TMN this command also includes the current Badword count for each player if `$badwords` in jfreu.config.php is 1 (true)
- on TMF this command provides the second player management window:
  - as before, the nick/login buttons will invoke /stats on the selected player
  - the operation buttons invoke, from left to right, on the selected player: /jfreu badword (if `$badwords` is 1), /jfreu banfor 1H, /jfreu banfor 24H, /jfreu unban, /jfreu addvip or /jfreu removevip, and /jfreu unspec
  - also shown are the player's current badword count (if `$badwords` is 1) and the time left in a temporary ban, if any
  - the single toggle operation in this window shows the operation that is meaningful with respect to the player's status, i.e. Add or Remove a player as VIP
  - the Spec column provides an UnSpec button for SpecOnly players, and otherwise shows the player's current status (Player, Spec or Offln)
  - operations can be performed on both online and offline players, but buttons are only provided when that operation is feasible, e.g. offline players cannot have their badword count incremented or be unspec-ed but they can still be temporarily banned
  - the window is refreshed (albeit to the first page) to show the new status after all of the operations
  - buttons are only provided for the first 200 players, which should be sufficient for the live list – if the desired player in an offline list is beyond the 200 mark, refine your search string
- on TMF in the output of the various /list lists, /best and /worst, an author column has been added
- on TMF it's now possible to add clickable buttons to relevant lists, configurable via new config.xml setting `<clickable_lists>` (default: True):
  - in the various /list lists, /best and /worst the track buttons will jukebox the selected track; no button is displayed for tracks in the track history – supports up to 1900 tracks
  - in the various /list lists, /best and /worst the author buttons will invoke /list <author>
  - on TMUF, in the various /list lists, /best and /worst the environment buttons will invoke /list env: for the selected environment
  - in /music list the song buttons will jukebox the selected song – supports up to 1900 songs
  - in /jukebox display a player will get a button only for the name of his/her own jukebox track, which can be used to drop it; admins of any tier with the dropjukebox ability get buttons for all track names to drop any of them – supports up to 100 tracks
  - in /players the nick/login buttons will invoke /stats on the selected player – supports up to 200 players
  - in /stats the Time Played field is a button to invoke /active, Server Rank invokes /top100, Records invokes /toprecs and Races Won invokes /topwins
  - in /admin listignores, /admin listbans, /admin listblacks and /admin listguests the nick/login buttons will invoke /admin unignore, /admin unban, /admin unblacks and /admin removeguest (respectively) on the selected player – supports up to 200 players
  - in /jfreu listbans, /jfreu listvips and /jfreu listvipteams the nick/login/team buttons will invoke /jfreu unban, /jfreu removevip and /jfreu removevipteam (respectively) on the selected player/team – supports up to 200 players/teams
  - this works with any window style, including the plain TMN-like style
- all clicked commands in the aforementioned windows and panels are logged analogous to chat commands
- when you've added more style or panel templates than the maximum, a warning is logged and the excess templates are ignored
- new /autojuke command to automatically jukebox the first available track from the chosen /list selection (e.g. /autojuke nofinish, /autojuke norank... see /autojuke help) – optional alias /aj becomes available by uncommenting the appropriate two lines at the start of plugin.rasp_jukebox.php
- new /admin forcespec command to force a player into spectator mode (free camera)
- the /stats command now accepts an optional login or player ID by all players, not just admins with the chat_stats ability – that ability was renamed to chat_statsip and defines which admin tiers can see the player's IP address (for privacy reasons this isn't shown to all players)
- on TMF, players' team names are no longer updated (cleared) in the local database upon reconnection, so that a plugin/command (e.g. /teamname in plugin.matchsave.php) can store meaningful team names in the database
- on TMF if a track contains no custom song, /song will advise to try /music current if the music server plugin is enabled
- when the scoreboard comes up at the end of a track, any pop-up windows are now automatically closed
- optimized the checkpoints panel display code
- HTTP GET requests to TMX and for the up-to-date check now include a User-Agent header to allow minimal statistics tracking
- updated the GBXDataFetcher module to rename the GBXDataFetcher class to GBXChallengeFetcher, and add the new GBXReplayFetcher class (not used in XASECO though)

### Bug fixes in the v1.00 release of XASECO:

- the search order is missing from the /list karma header – fixed
- on TMF, the /admin listignores (aka. ignorelist) listing could get mixed up with previous window output – fixed
- reminder, expiration and cancellation messages for /add votes show the unstripped track name – fixed

### New features and other changes in the v0.99b release of XASECO:

- new /admin clearhist command to clear part of, or the entire, track history: with no option, it shows the total number of tracks in the history; with the 'all' option, the entire history is cleared; with a positive number, that many of the most recent tracks are cleared, and with a negative number that many of the oldest tracks
- the music server plugin supports song files in subdirectories at the server URL, but now those subdirectories can be excluded in any command that shows songs (configurable via new musicserver.xml setting `<strip_subdirs>`)
- new /music stripdirs command to change the strip subdirs setting; the /music settings output also includes the StripDirs value
- a flexible way to control the contents of the ManiaLinks <custom_ui> block now allows other plugins and widgets to co-operate with the main XASECO system
- the config.xml settings <show_recs_before> and <show_recs_before> are now integers instead of booleans: 2 = show the full records report, 1 = show just the track record before or the top-5 records after the track, 0 = show no records at all (reduces chat message volume when a records ManiaLink panel is displayed)
- when XASECO is out of date and a master admin connects, he/she will automatically receive an /admin uptodate reminder message – hopefully this will motivate more master admins to keep their XASECO version in sync with the latest release

### Bug fixes in the v0.99b release of XASECO:

- new local records aren't properly marked anymore in /liverecs, /newrecs, rounds reports and the records report after a track – fixed
- too stringent input checking for /admin setpwd, /admin setspecpwd and /admin setrefpwd prevents clearing those passwords – fixed

### New features and other changes in the v0.99 release of XASECO:

- new music server support (TMF-only) becomes available when plugin.musicserver.php is enabled (uncommented) in plugins.xml, offering the following features:
  - the music plugin is configured via musicserver.xml, containing the following entries:
    - the server URL, an http server that must allow direct download of the song files from the specified directory
    - a list of song files (case-sensitive) in .OGG or .MUX format that must exist at the server URL – duplicates are removed when loading the XML file
    - configuration options to control whether to override a track's own music, whether to automatically load the next song upon the next track, and whether to allow jukeboxing songs by players
    - a list of plugin messages
  - the new /music command offers the following options:
    - help: Displays help information – admins see all options, other players only the options they can use
    - settings: Displays current music settings – for security, only admins see the server URL
    - list: Displays available songs
    - current: Shows current song
    - reload: Reloads musicserver.xml config file – admin-only
    - next: Skips to next song (upon next track) – admin-only
    - shuffle: Randomizes song list – admin-only
    - override: Changes track override setting – admin-only
    - autonext: Changes automatic next song setting – admin-only
    - allowjb: Changes allow jukebox setting – admin-only
    - off: Disables music, auto next & jukebox – admin-only
    - jukebox (alias jb): Displays upcoming songs in jukebox
    - drop: Drops your currently added song
    - <##>: Adds a song to jukebox where <##> is the number from /music list
  - a new `<music>` color is defined in config.xml and used in all relevant music messages so that they can easily be customized
  - a new chat_musicadmin ability controls which tiered admin levels can use the /music admin commands
  - if autonext is enabled, the next song from the list will be loaded upon the next track, unless an admin manually skipped to the next song or the jukebox specifies another song
  - if allowjb is enabled, any player can add one song at a time to the jukebox – to jukebox another, first use the drop option
  - the same song cannot by added to the jukebox more than once
  - if a track itself contains a song and override is disabled, a possible jukeboxed song is skipped as it's not possible to detect the track song
  - the off option disables server music upon the next track (so the in-game music returns), clears the jukebox, and disables the autonext and allowjb options so no new songs get loaded – to enable server music again, simply turn either or both options back on
  - the reload and shuffle options also clear the jukebox
  - a warning message is logged when a song file cannot be loaded, and no song change takes place until the next track
  - reminder: to see the filename of a track's own song, use the /song command
- new donation support (TMUF-only) becomes available when plugin.donate.php is enabled (uncommented) in plugins.xml, providing the following features:
  - new /donate command to give coppers to the server
  - the minimum donation is 10 coppers (because of Nadeo tax)
  - donations of 100 and more coppers are awarded with a public appreciation message (below 100 it remains private)
  - both thresholds are configurable in plugin.donate.php
  - a new `<donate>` color is defined in config.xml and used in all relevant donation messages so that they can easily be customized
  - remember that the server's coppers amount (seen with /admin coppers) isn't updated until any player joins or leaves the server
  - important: you must make an initial donation from a TMUF player login to your server login via the in-game message system, so that there are sufficient coppers in the account to pay the Nadeo tax on the first /donate transaction
  - an account rights error is shown when attempting to donate from a TMNF player account or to a TMNF server account
- new /list env:zzz option (TMUF-only) to search for tracks by environment, where zzz can be: Stadium, Bay, Coast, Island, Alpine/Snow, Desert/Speed, Rally (case-insensitive) – can also be combined with a search for track/author name in either order: /list xxx env:zzz or /list env:zzz xxx (remember that xxx itself is allowed to contain spaces too)
- on TMF, the /stats output now includes the time (in days and hours) since the player inscribed in the zone, as well as the last match score, number of wins/draws/losses and win/loss ratio (which are included in the /statsall output on TMN)
- on TMF, the /server output now includes the server comment – note however that special formatting in long comments is not continued after column line breaks
- new /admin server command (TMF-only) to display the server's detailed settings
- new /admin setcomment command to change the server comment
- new /admin setmaxspecs command to change the maximum number of spectators
- new /admin setpwd, /admin setspecpwd and /admin setrefpwd commands to change the player, spectator and referee passwords (referee only on TMF)
- new /admin setrefmode command (TMF-only) to change the Referee mode (0 = top3, 1 = all)
- new /admin forceteam command (TMF-only) to force a player into the 'Blue' or 'Red' team (the names can be abbreviated to 'B' and 'R') – if no team is specified, the player's current team is shown
- new /admin nextenv command (TMUF-only) to skip to the next track within the same environment
- on TMF, the track name is now hyperlinked to the corresponding TMX page (if available) in the /track, /playtime, /newrecs and /liverecs messages as well as the local record reports before and after each track, and the total playtime message at the end of each track in Rounds/Team/Cup mode
- on TMF, the track name is now hyperlinked to the corresponding Dedimania page in the /dedinew and /dedilive messages as well as the Dedimania record reports before and after each track
- in TMUF Stunts mode, updated the TMX World Record message and /tmxrecs output to show scores
- in TMUF Stunts mode, the total playtime message at the end of each track isn't shown anymore (always 5 minutes)
- the /tmxinfo output now includes the TMX section for the track, as well as the download link to the TMX World Record replay (if available)
- when the current track is not found on TMX, /tmxinfo and /tmxrecs now show the track name instead of the UID in the error message
- added new internal onStatusChangeToX (X = 1-5) event for the corresponding TM server status changes, and new internal onKarmaChange event for karma vote changes
- enforced strict and complete error checking on all local database operations
- added a warning if the SuperAdmin password is still set to the default (and insecure) 'SuperAdmin'
- added the operating system to the first log message during start-up
- set a 20 MB memory limit for the XASECO PHP process
- this release requires the latest server build 2008-05-19

### Bug fixes in the v0.99 release of XASECO:

- when the TM server goes away (e.g. crashes), XASECO loops forever at high load – fixed, XASECO also shuts down with an appropriate error message
- tracks downloaded via /add and /admin add are corrupted since v0.98 and won't load in-game – fixed
- in TMUF Stunts mode, the new/improved/secured/equalled record messages (both local and Dedimania) specify that the finish value is a Time – fixed into Score
- on TMF, players added to the global mute list are still able to send global messages via the /me, /hi, /bye, etc. chat commands – fixed
- on TMF, the muting system handles only 18 lines of the full chat window – increased to all 28 lines
- on TMF, there is a tiny layout glitch in the /server output – fixed
- there is no log message for /admin setgamemode – fixed

### New features and other changes in the v0.98 release of XASECO:

- new /dedicps command to select which Dedimania record is used as reference for checkpoints tracking, with the following features:
  - checkpoint references are stored for all players (according to their preferences) only at the start of a track, not when entering the /dedicps command or when the player (re)connects
  - with no parameter (/dedicps) the player's own record on each track is selected or, if none is set, the last record on the pertaining track
  - /dedicps {1-30} selects Dedimania record 1-30 on each track or, if unavailable, again the last record
  - /dedicps off disables the Dedimania references for checkpoints tracking
  - as usual, once a player gains a better finish time than the chosen Dedimania reference, the checkpoints panel (TMF) or pop-up (TMN) will use those corresponding checkpoints for further updates during the current track
  - if the checkpoints for the chosen Dedimania record are invalid (empty, or the last checkpoint doesn't match the finish time) then no record is used as reference during that track for the pertaining player(s)
  - the chosen /dedicps setting is remembered between a player's reconnects as long as /cps remains enabled, until the next XASECO restart
- new /admin shuffle (alias /admin shufflemaps) command to shuffle (randomize) the current track list; this requires having set <writetracklist_random> to True in config.xml, and defining an `$autosave_matchsettings filename` in rasp.settings.php – note that autosaving only happens during a track switch, so if you shuffle immediately after adding a track, the addition will be lost
- new /admin addlocal command to add a track to the server's track list from the local 'Challenges/Downloaded/' directory; the track filename cannot contain spaces or non-typable characters, but can be entered case-insensitively and the '.Challenge.gbx' extension is optional – also, the `$jukebox_adminadd` setting is respected
- new /admin specfree command (TMF-only) to set the camera mode of a spectator (login or ID) to Free – requires build '2008-05-07' or later
- added support for TMF Laps mode:
  - the checkpoints tracking system (if activated via /cps) will show the difference to the best lap at each checkpoint and at the lap finish, and update the best lap data after each improved lap
  - if /dedicps is activated, the lap data for the chosen Dedimania record is used as initial best lap according to the rules above
  - local records are now maintained and compared on lap basis, meaning that those records will usually be unbeatable once the server is switched back to another game mode than TimeAttack, so keep that in mind when picking tracks for TimeAttack and Laps versus other modes
  - Dedimania records are also maintained and compared on lap basis like the central Dedimania system does (where they're mixed with TimeAttack mode records only), so they are now properly supported
- added support for TMUF Stunts mode:
  - updated /track, /recs and /dedirecs, /pb and /dedipb, and all record relation commands to show scores
  - updated the 'before' and 'after' track record messages (both local and Dedimania) to show scores
  - updated the new/improved/secured/equalled record messages (both local and Dedimania) to show scores
  - updated all record sorting into descending order
  - updated /list nogold and /list noauthor to check for player scores worse than the tracks' gold and author scores
  - adjusted the /list help information
  - disabled the /list longest/shortest command
  - disabled all /cps functionality (checkpoints are inactive)
  - disabled Dedimania records handling until the central Dedimania system supports them
- added explanations why the checkpoints panel doesn't appear immediately when /cps is activated (Stunts mode, spectating, and warm-up phase all disable the panel temporarily)
- on TMF, multi-page ManiaLink windows now show the current and total page numbers in the header
- on TMF, multi-page ManiaLink windows of more than 5 pages now include Prev5 and Next5 buttons to speed up navigation through long lists
- updated the Dedimania system to randomly choose between the :8003 and new :8006 and :8007 communication ports (remember to open those ports on your firewall/router as well) in order to distribute the load across more Dedimania servers
- new records in the /recs and /dedirecs lists are now highlighted with a black time
- on TMF, the /stats output now displays the full location path (sans "World|") instead of just the nation (thanks w1lla)
- on TMF, the /server output now includes the server's location path (again without "World|") – requires build '2008-05-07' or later
- added the capability to write the log in monthly chunks named "logfile-YYYYMM.txt" in an (automatically created) "logs/" subdirectory, instead of the single big "logfile.txt" – this is activated by setting "`$log_monthly_logsdir = true`" in function doLog() in includes/basic.inc.php, as it cannot be a configuration option because configs aren't read until later during start-up
- various welcome messages and in-game URLs are now hyperlinked to the external browser
- updated the /add and /admin add commands to time out when the TMX site is down
- minor optimizations of all multi-page window code
- an example plugin.ml_howto.php module is included to demonstrate how to create single- and multi-page ManiaLink windows

### Bug fixes in the v0.98 release of XASECO:

- when `<lists_colortracks>` is True, recently played tracks are no longer greyed out to visually distinguish them from tracks that can be jukeboxed – fixed
- jukeboxing a track via /admin add and /admin replay leaves out the Environment value – fixed
- even when a player ID cannot be obtained from the local database, there's still an attempt to insert a finish time for the pertaining player login – fixed
- on TMF, the /admin shutdown command produced a PHP warning because /autoquit is now the default – fixed, a QuitGame call is only done if /noautoquit was active

### New features and other changes in the v0.97 release of XASECO:

- on TMF, the brief /cps pop-up is now a permanent, small transparant panel, mid-center of the screen just above the race time; it is temporarily disabled when a player switches to spectator mode though
- on TMF, the checkpoints panel now also shows the difference against the best run at the finish ('CPF')
- in TMF Cup mode, the end of the warm-up phase no longer generates an onEndRace event, preventing several chat messages that only belong at the end of the track; also, during warm-up the checkpoints panel is temporarily disabled
- on TMF, the /tmxinfo window now displays the track screenshot from TMX
- on TMF, /tmxinfo {ID} and /tmxrecs {ID} accept an optional TMX section parameter (TMN, TMU, TMNF, and even TMO, TMS &ndash all case-insensitive) after the TMX track ID to enable displaying track info from another section than the default (as outlined in the v0.96 release notes)
- new /admin scorepanel command (TMF-only) to show the current Automatic Scorepanel setting – displaying the scoreboard after each run/round, or only at the end of the track – and to toggle it with an ON" or "OFF" (case-insensitive) parameter
- new /admin roundsfinish command (TMF-only) to show the current Rounds Finishpanel setting – displaying the rounds panel for all players when the first player finishes, or not until each player finishes him/herself – and to toggle it with an ON" or "OFF" (case-insensitive) parameter
- displaying colored or stripped player nicknames in /top10, /top100, /toprecs, /topsums, /topwins, /recs, /dedirecs and /active is now configurable via new config.xml setting `<lists_colornicks>` – because of column formatting caveats, it's recommended to keep nicknames stripped on TMN, as they were before
- displaying colored or stripped tracknames in all /list commands, /best, /worst, /jukebox display and /admin listdupes is now configurable via new config.xml setting `<lists_colortracks>` – again, it's recommended to keep tracknames stripped on TMN as they were before
- the teamnames in the /topclans output are not color-stripped anymore
- Dedimania system timeouts are handled better to prevent record message flooding; also, improved logging and debugging of the low-level Dedimania layers
- on TMF, any admin with the new server_coppers ability can see the server's coppers amount in the /server output
- new /admin coppers command (TMF-only) to similarly check the server's coppers amount
- on TMUF, the output of all /list commands (including /best, /worst) and of /jukebox display and /admin listdupes now includes an Env(ironment) column
- on TMUF, the chat and log messages for the next jukebox track now specify that track's environment
- added new internal onBillUpdated, onChallengeListModified and onPlayerInfoChanged events for the corresponding new TMF callbacks; also, the onEndRound event is now triggered by the real TMF EndRound callback
- the new onPlayerInfoChanged event is now used to keep track of players' spectator status to avoid an extra GetPlayerInfo call whenever that status is needed (thanks Dagobert)
- updated the stripColors function to strip out the '$h', '$l' and '$p' links for TMF as well
- clarified all error messages related to XML config files not being read or parsed correctly
- fine-tuned column widths of many ManiaLink windows
- when restarting XASECO, all ManiaLinks on all connected clients are cleared

### Bug fixes in the v0.97 release of XASECO:

- when Dedimania is slow to respond to a track switch, the updated records message for the finished track may not appear until the next track is loaded, and use that new track's name – fixed
- on TMF, very long country names cause layout glitches in the /players output – fixed, country names longer than 14 characters are mapped to their nation abbreviations
- on TMF in Rounds/Team/Cup mode, the last 'Rx>' rounds report isn't shown due to a different callback sequence – fixed by using the real EndRound callback above
- if a player connects without a team name, the TMNDataFetcher is used to try and obtain it from the TMN master server, even on TMF – fixed
- the file_exists_nocase function (used by /add and /admin add) doesn't work correctly on Windows – fixed (hopefully)
- adjusted two function declarations and related calls to avoid pass-by-reference warnings on some PHP setups
- the /summary chat message was largely lacking the shadow attribute – fixed

### New features and other changes in the v0.96b release of XASECO:

- on TMF, the global mute list now uses the built-in Ignore features instead of the muting plugin, so the actual muting works much better; the plugin is still needed for the individual player muting features though
- accordingly, there are new aliases for the related admins commands: /admin ignore (for /admin mute), /admin unignore (for /admin unmute), /admin ignorelist and /admin listignores (for /admin mutelist and /admin listmutes)
- on TMF, the ManiaZones country names are mapped back to three-letter nation abbreviations for storage in the local database and for Dedimania; to repair the Nation field in the local 'players' table, you can use this script
- new `$autosave_matchsettings` option in rasp.settings.php to enable autosaving the matchsettings file (with a configurable name) upon every track switch
- on TMF, /add and /admin add accept an optional TMX section parameter (TMN, TMU, TMNF, and even TMO, TMS &ndash all case-insensitive) after the TMX track ID to enable downloading a track from another section than the default (as outlined in the v0.96 release notes)
- when a track is jukeboxed that doesn't match the server packmask, it is skipped with warning, and the next track from the tracklist is loaded (the next jukeboxed track will follow after that)
- on TMF, added another method in votes.config.php to really disable all CallVotes if chat-based votes are enabled
- the pop-up windows in plugin.matchsave.php are now converted to TMF ManiaLink windows too, along with minor touch-ups of the TMN pop-ups

### Bug fixes in the v0.96b release of XASECO:

- on TMF, the /nextmap command always shows the first track after the current one is removed from the server's track list (via /admin removethis or /admin erasethis) – fixed
- a missing or invalid connection to the TM server (due to configuration errors) can cause a flood of PHP warnings in the log – fixed
- a track ending with no records set can cause a PHP warning in the Dedimania plugin – fixed

### New features and other changes in the v0.96 release of XASECO:

- the system has been renamed to XASECO to avoid confusion with other ASECO/RASP systems, and to signify it's a complete and integrated solution for server control
- added ManiaLinks windows (via new include manialinks.inc.php) to allow the system to display TMN-style pop-ups on TMF
- added a Prev button to all multi-page ManiaLinks windows when viewing the second and subsequent pages
- added recognition of server type TMF and game mode Cup, including with the /admin setgamemode command
- updated the /server command to handle Cup mode and show the RoundsPerChallenge value (in addition to the points limit) if the server is in Cup mode
- new /admin disablerespawn command (TMF-only) to show the current DisableRespawn setting – allowing players to respawn at checkpoints – and to toggle it with an ON" or "OFF" (case-insensitive) parameter
- new /admin forceshowall command (TMF-only) to show the current ForceShowAllOpponents setting – forcing players to see all opponents – and to toggle it with an ON" or "OFF" (case-insensitive) parameter
- updated the TMXInfoFetcher class to handle the new TMNF section
- on a TMNF server (packmask Stadium) the /tmxinfo and /tmxrecs commands as well as the TMX World Record message at the start of a new track will consult the TMNF section of TMX, on a TMUF server the TMU section, and (as before) on a TMN server the TMN section
- the /add and /admin add commands will consult the TMNF, TMUF and TMN sections of TMX according to the same rules
- new `$jukebox_permadd` option in rasp.settings.php to allow tracks voted into the jukebox via /add to remain permanently in the server's track list (normally they're removed after they're finished)
- added extra check for non-empty TM server build during start-up
- several minor tweaks to web_access.inc.php to make it more robust and prevent stream_select() warnings (thanks Slig)

### Bug fixes in the v0.96 release of XASECO:

- when a player equals his/her local or Dedimania record, it would be logged again with the next higher position (but not stored anywhere) – fixed
- new Dedimania record messages would be displayed for LAN logins making records, even though the records aren't actually submitted to the central Dedimania server – fixed
- plugin.matchsave.php used the CRLF constant in a TMN pop-up – fixed into LF

### Known issues in the v0.96+ release of XASECO:

- the /statsall command doesn't work in TMF because there's no way to obtain a player's world stats (yet?)

## Older release notes