8000 Releases · EvoEsports/minicontrol · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: EvoEsports/minicontrol

MINIcontrol 0.10.0

23 May 18:51
5f0024e
Compare
Choose a tag to compare

This release focuses on improving responsiveness under heavy traffic, reducing event loop blocking, and streamlining multi-call and UI display code for better overall performance and reliability.

This is probably the last big point release version before releasing MINIcontrol 1.0.0.
0.10.0 has been a long time in the making and has been battle tested during the Kacky spinoff event, which helped @reaby figure out many performance shortcomings and fixes for them. Huge props for this massive release to him!

Check out the full changelog below:

Core

Code in the core was refactored to use consistent double quotes for string literals across multiple files
We also added a versioning script and added a version.json file for build tracking (will be used starting from next build for update checks)

Improved XMLRPC Query Handling
 – Revised the query method to better handle both waiting and non‐waiting calls by registering dummy callbacks so that responses are properly discarded
 – Updated header/handle management to avoid race conditions and ensure consistent payload creation
 – Added performance counters for debugging XMLRPC traffic, queries and callbacks
 – TCP buffer now waits to drain on write to stabilize XMLRPC connection

Enhanced Socket & Data Processing

 – Modified the handleData loop to yield control periodically (using setImmediate) so that heavy bursts of responses no longer block the event loop
 – Added progress checks in the data loop to prevent infinite loops when incomplete messages arrive

Optimized Multi‐call and Send Queue Mechanism

 – Refactored the flushSendQueue routine to use a self-scheduling timeout (with chunking) instead of setInterval, avoiding overlapping flushes
 – Batching of send calls via multisend was improved to reduce serialization overhead and prevent the send queue from filling inaccurately
 – Implement block callbacks for Trackmania to reduce XMLRPC calls for 100+ players
 – Refactored script method calls in GbxClient and Server - callScript now returns the answer with 1 second timeout, added sendScript method for improved handling

UI Manager Enhancements

 – Redesigned displayManialink(s) methods to handle public and player-specific Manialinks more efficiently, ensuring older or duplicate manialinks are cleaned up properly
 – Consolidated common code paths and improved asynchronous processing for rendering and sending Manialink XML payloads
 – Fixed memory issues with handling Manialinks

Plugin System & Overall Stability

 – Upgraded plugin dependency checking and loading/unloading logic, ensuring plugins are loaded only if dependencies are met (and cleaned up correctly during unload, unload still disabled)
 – Various performance improvements and bug fixes across the system to improve responsiveness and stability under high load
 – Change to use exact plugin name instead startingOf when using EXCLUDED_PLUGINS= environmental variable

Database

  • Added fixes for xaseco migrator
  • Add tables: sectors, personalBest
  • Add indices to safeguard uniqueness on tables with uuid and login
  • Add few new fields for player and maps tables

Managers and Settings

  • Add //colors to settings, adds color: ¤db¤
  • Added a widgets.performance setting with a default value of 35 players, if there's more players than the configured value the checkpoint widget and sector records widget stop sending updates and records widget changes to public updates only.
  • Add settings for TMNF HUD elements
  • Fixed issues with player and map management.
  • Fixed command manager to ignore case for chat command
  • Add tmc.maps.getTimeInfo() to get timings info about maps
  • Fixed UTF-8 error on Manialink multicall when joining server
  • fixed htmlentities to escape full UTF-8 range
  • Add GetAllLogins() to playerManager
  • Add GetCountryFromPath(path) to utils.ts
  • Fixes //addlocal to work with Windows host systems
  • Adds //plugins to show enabled/disabled plugins

Plugins

Announces

  • Announces now show custom nicknames
  • Added settings for new and improved record thresholds
  • Added new/equal/improvement messages for dedimania

Chat

  • Introduced a profanity filter and improved chat functionalities.
  • Adds admin badge
  • Add announce message for celyan's emotes support
  • Include +++ and --- as valid karma vote
  • Use customNick instead of just normal nickname
  • Autolink urls: surrounds urls with $l
  • Update TMNF emotes support to version 2025-04-25

Database

  • Added totalPlaytime and connectCounters
  • Added /active and /topactive commands to show playtime
  • Fixed: Adding customNick to player objects on connect

Dedimania

  • Fixed Dedimania reconnect on failure
  • Fixed Dedimania widget + made dedimania widget enabled by default (add widgets/dedimania to EXCLUDED_PLUGINS to disable)
  • Fixed comparison logic to allow equal times
  • Fixed Dedimania map uid validation
  • Fixed Dedimania announce that you beat "0." record when you equal last dedimania record

DebugTool

  • Enhanced memory management with safeguards against excessive memory usage
  • Add performance counter: update every 5 seconds when DEBUG_GBX_COUNTERS=true
  • Adds .env variable DEBUG_GBX - when true, shows GBX callbacks

Menu

  • Menu was rebuilt and redesigned from scratch

Maplist

  • Fixed searching by author
  • Added /list nofinish and /list finish
  • Added [remove] button for admins

Sectors

  • Added /sectors command
  • Added //sectors delmap and //sectors delall
  • Sector records are now cached at runtime and only saved to the database at the end of a map for performance improvements

Records

  • Postponed registering of events onStart and after reading records and fix for out-of-range check for record, which will fix the duplicate constrain errors for database
  • Personal bests are now cached at runtime and only saved to the database at the end of a map for performance improvements
  • Enhance sorting on exact same time driven for records widget

Votes

  • Added color ¤vote¤ for vote messages
  • Fixed time limit reset on extends
  • Added restart vote /restart

MINIcontrol 0.9.0

20 Jan 13:06
49e14ea
Compare
Choose a tag to compare

Important

This release includes the first version of MINIcontrol's new SettingsManager.
Many settings previously configured via .env or Environment Variables have been moved to the settings manager, you will have to set the proper values there again.

New features

  • Added Setings Manager, available via //settings
    Attention Developers: Going forward, adding plugin settings to .env is deprecated.
    Please see documentation on how to expose your plugins settings for the settings manager.
  • Added TMX world record data to current map widget.
  • Added settings whether locals/dedis/player joins should be announced in chat or not
  • Added Admin panel widget - can be disabled in the settings manager
  • /help and //help now display in a beautiful UI window instead of in chat

Bug fixes and improvements

  • Fixed Maplist Fetch Rank when MINIcontrol is using a MySQL database
  • Dedimania should no longer block MINIcontrol starting up if it is slow to respond
  • Added a 1 second timeout to TMX info fetcher - can be disabled in the settings manager
  • Fixed an issue with extending a map's timelimit when the ATime plugin is enabled

Other notable changes

  • //call is moved from Admin plugin to MINIcontrol's core, meaning it will work without the admin plugin active
  • Using //call without parameters now shows a help window
  • Chat colors as well as badge colors (default red for admins) can now be changed in the settings manager.
  • WorldRecords plugin has been moved to tm2020 namespace.
  • LiveRecords plugin has been renamed to LiveRankings

Developer improvements

  • TMNF Custom UI now has a better API, you can access it via tmc.ui
  • Fixed an issue with ListWindow propagation

MINIcontrol 0.8.1

11 Jan 14:16
537c1f0
Compare
Choose a tag to compare

Bug fixes and improvements

  • Fixed " and ' characters in nicknames, mapnames, etc not being properly escaped, causing issues in widgets and UI windows
  • Fixed non-working /players window
  • Fixed Live Records not working without database
  • Several small bug fixes for Records and LiveRecords modules
  • Updated package dependencies for mysql2 and sentry.io - requires npm install if not running via Docker
  • Updated server admin and developer documentation
  • Removed unused scripts from package.json

MINIcontrol 0.8.0

28 Dec 19:21
ebce035
Compare
Choose a tag to compare

Happy 1 year anniversary to MINIcontrol!

On December 28 2023 @reaby started with the development of a small, modular controller for TMNF, TM2 and TM2020... and so, MINIcontrol was born.

We're thankful to everyone reporting bugs, sharing feedback, requesting new features and helping us improve the controller for you, the community.

Just in time for the anniversary, we've prepared a major new update.
See the changelog below for more information and see you in 2025 for more updates coming your way!

Important

Due to changed dependencies, server admins who run MINIcontrol outside of docker need to run npm install again after upgrading to this version.

New features

  • [TMNF] UI has received a bit of a facelift
    We're quite happy with where MINIcontrol's User Interface design is at now, so don't expect too many drastic changes in this regard
  • [TMNF] Added support for Celyan's Emote Mod
  • [TMNF] Added missing legacy methods for changing Rounds, Team and Cup game mode settings
  • Added a fix for the "Cannot connect to server: already connected" dedicated server bug
  • Added the ability to search (T)MX for maps via //search command
  • Added new admin commands to view and clear contents of BanList, BlackList, GuestList and IgnoreList

Bug fixes and improvements

  • [TMNF] Clicking the "Add To Favorites" widget now no longer disconnects you from the server
  • [TMNF] Fixed the TALimit plugin to not start the timer during Warmup

Other notable changes

  • Due to technological difficulties, we've disabled the plugin manager and the ability to load/unload plugins during runtime for now
  • Increased Event Listener limit from 50 to 100 per event - this should improve the ability of server owners to run many many plugins at the same time
  • Fixed some Typescript types in the migrations
  • [Plugin Development] Deprecated the usage of escape() in the project - please use htmlEntities() instead
  • [Plugin Development] [TM2020] Added tmc.ui.setClipboard(login,contents); for setting a player's clipboard content - use this wisely
  • [Plugin Development] Excluded node_modules from VSCode Workspace
  • [Plugin Development] Renamed all templates from .twig to .xml.twig to enhance compatibility between IDEs

MINIcontrol 0.7.1

20 Nov 17:44
a9b2aae
Compare
Choose a tag to compare

What's Changed

  • Fix Docker build not working

New Contributors

Full Changelog: 0.7.0...0.7.1

MINIcontrol 0.7.0

20 Nov 09:36
d7453a3
Compare
Choose a tag to compare

New features

  • Added/changed plugin - WorldRecords - Live Rankings, Local Records and World/Dedimania records in one widget
  • Added support for TM2020 Leaderboards in Records widget
  • Added plugin - Pay2Play - allows you to define a copper/planets amount for requeueing or skip the current map
  • Added plugin - Add Server To Favorites - self-explanatory
  • Added feature - Sentry Error Reporting - automatically sends anonymized error reports to Sentry.io for us to analyze
    To opt-out of error reporting, set ERROR_REPORTING=false in your .env file.
  • Added command - /checkpoints shows additional information from the BestCPs widget
  • Added PyPlanet migration script to allow you to easily migrate from existing PyPlanet installations (MP/TM2020 only)

Bug fixes and improvements

  • Several small bug fixes and improvements to stability of MINIcontrol

Important note

  • MINIcontrol now requires a NodeJS version of at least 21.5.0. We recommend you use the latest LTS version.

MINIcontrol 0.6.1

23 Sep 09:35
3821bb6
Compare
Choose a tag to compare

General bug fixes and improvements

  • Chat commands like /extend should work properly again
  • New widget and window style
  • Dedimania records now get announced in chat
  • [TM2020] Moved built-in Laps and Checkpoint counter to the bottom right

Developer improvements

  • You can now use class aliases again in your plugins - e.g. @core
8000

MINIcontrol 0.6.0

30 Aug 22:57
419befa
Compare
Choose a tag to compare

General bug fixes and improvements

  • Fix checkpoint counter becoming desynced from player state
  • Fix server authentication when dedicated server User password is non-default
  • Fix //talimit not working in TMForever and other improvements for TM2020
  • Adding maps via TMX has been improved by fetching map details from the dedicated server instead of relying on the TMX api.
  • TM2020 records widget has been reduced in size and several native UI widgets are now hidden by default as MINIcontrol replaces them.
  • Admins can now write in chat even if public chat is disabled

Map parsing changes

  • Improved error handling for map parsing - thanks @tomek0055
  • //addlocal command and manialink window has been sped up by only parsing the map headers instead of the full map files
  • Fix map headers sometimes containing odd characters due to bad latin-1 -> utf-8 encoding

New commands and plugins

  • New commands: //requeue and //prev - Lets admins restart the map after it ends and go back to the previous map - thanks @MRegterschot
  • New plugin: ATime - Lets admins set a dynamic timelimit based on the AuthorTime of the next map and a configurable multiplier
  • New plugin: nadeocloud (TM2020 only) - Allows campaign downloads from Nadeo's infrastructure - thanks @MRegterschot

Developer improvements

  • Added .editorconfig file for IDEs that support it
  • Folders that start with a dot now are no longer recognized as plugins, so MINIcontrol finally stops trying to load the .git folder
  • Plugins can now install their own dependencies via node_modules
    Note: You must set the plugin's package.json to use type: "module" or the plugins won't load
  • Improved the meminfo debug display. It now shows a diff compared to the start value, not the last value
  • Command manager now allows for spaces in commands, e.g. /jukebox drop
    Note: Commands with spaces cannot share their first "argument" with another command, as those would override a command containing a space.

MINIcontrol 0.5.0

22 Jul 14:19
d161abc
Compare
Choose a tag to compare

Breaking changes

  • Changed license to GPL3 due to usage of LZO library to parse track files.
  • Add new tmnf/forcemods plugin which replaces tmnf/ui

Minor changes

  • Add Environment / Car parsing to /list (requires database plugin to be enabled)
  • Add new /list styling. (Not final, please give us your feedback)
  • Map Queue (available via /jb) is no longer part of the Maps list (available via /list) and is now a separate plugin.
  • Added new admin command //chat <on/off> to disable public chat. This feature was ported from Kacky servers.
  • Added new admin command //chat login <on/off> to disable player chat. This feature was ported from Kacky servers.

Notes

The new tmnf/forcemods plugin adds several new config parameters. See .env.example for reference.
The plugin will be made compatible with Maniaplanet in the future.

MINIcontrol 0.4.0

08 Jul 19:49
b41374b
Compare
Choose a tag to compare

Breaking changes:

  • Switched runtime from Bun to Node.js & tsx
  • Switched ORM from drizzle to sequelize
    • database support added for mysql, postgres with sqlite still supported
    • new environmental variable: DATABASE is introduced, check .env.example for how to setup
    • also there is few schema changes for database, recommended to start a new database or do a manual changes

Note for plugin developers

Your plugins will need to be updated so that all imports use relative paths with this release. We're sorry for the inconvenience.

Other changes and fixes:

New: Added /endwu command for TM2020 servers. Ends the currently running warmup.
New: Added /cancelpack command to interrupt pack downloads from (T)MX.
Improved: Maniaplanet compability
Bugfix: Dedimania works again on TMNF / TMUF
Bugfix: XAseco database migrations should work again with this release
Bugfix: Confirm dialogues now correctly show up only for the person who initiated the action instead of all connected players
Bugfix: Maps that were removed from the server that were still in the jukebox won't result in a crash anymore
Bugfix: Checkpoint counter fixed for multilap maps

0