The mission editor's IRC Chatter sequences can be edited after adding them now, not just deleted and retyped from scratch.
The mission editor's SERVER field is a real picker now, pulled from your own saved servers, instead of a free-text box.
Publishing a mission now bundles any server it references that isn't already its own separate Workshop item directly into the mission itself, instead of publishing it separately - no more one-off boxes cluttering the Workshop server list when they were only ever meant for one mission. A server you've deliberately published on its own gets linked as a required item instead, so subscribing to the mission pulls it in automatically.
Campaigns can be published to Steam Workshop now - previously the only option was a local export package, and subscribed campaigns were never actually loaded. Missions and servers a campaign references get the same bundle-or-link treatment.
Added a "publish as new" option, for when the Workshop item behind something you're republishing has been deleted directly from Steam.
Storage Drive++ is back in the hardware shop (400 file capacity).
music off/music on now actually mute and unmute, instead of just resuming playlist rotation - use music rotate for that now.
#lounge timestamps show the date alongside the time for messages that weren't sent today.
!$/!^ recall the previous command's last/first argument, bash-style.
/ignore <handle> and /unignore <handle> in the IRC input hide a player's #lounge messages for you, locally.
Purchased shop scripts now get a pristine backup copy on the drop box, under /tools/shop_scripts/ - same recoverable-backup idea as the starter scripts already there, in case you edit or delete your working ~/scripts/ copy.
Publishing to Steam Workshop from the main menu (before starting or loading a game) could hang forever on "Publishing to Workshop..." - Steam's async responses were never being processed there, so the item got reserved server-side but never finished uploading, leaving a permanent, empty listing behind.
A mission whose SERVER field was left holding an unreplaced template placeholder would silently vanish for every subscriber, with no error shown to the author or anyone else.
connect()/smtp_connect() could carry over authentication from a completely unrelated earlier connection - cracking a user on one server, then connecting to a different one without disconnecting first, could leave you looking authenticated somewhere you never actually cracked anything.
Two mission login pages (DataVault's and SecureStore's admin panels) were missing the form tag their scripted login relied on, so submit_form() silently failed on both - manual browser login was unaffected.
scrub_log() was writing an unrelated, self-incriminating log entry (your exact IP and how many lines you removed) into /var/log/syslog, regardless of what file you actually scrubbed. It still leaves something behind on purpose, but now in the file you actually cleaned, and without handing over your IP.
upload()'s local file path didn't accept relative paths, including ../ - only absolute paths and ~/ worked. It now resolves against your script's working directory, same as save(), local_mv(), and every other local-path function.
- Static