Titans update 94157-PTE Community changes Added download & zip JS APIs. - The client can now download files from any valid URL. - Zip file contents can now be mounted transiently at any point in the file system. - See download.js and file.js for new APIs. Put a trailing slash on directory entries in the JS file list API. Convert mod system over to using the same file system everyone else uses. - Also introduces aliases to the file system in order to work around issues with the way mods were mounted. - Might have some small inconsistencies in mod behavior. A number of fixes to zip file mounting and mod interactions. - Primarily related to listing directories with memory files. - Mounting the same content is no longer a no-op. - Added api.content.remount(), which is necessary after changing mods. Auto-activate download redirects. - A download url will get a different result from Coherent, meaning it won't find an active download. - Auto-starts the download with the default filename. (Which is sub-optimal, but there isn't a reliable way of detecting the redirect.) Icon atlases now refresh when memory files are mounted -Allows shadowing from server mods -Also allows changing them at runtime -Does not support changing icon altas indices after creating a client world Icon atlases now have access to the client engne APIs - Primarily for the memory API Part 1 of in-memory shader mod support. - Includes hypothetical memory mounted file shader reload support for OSX/linux. - Doesn't appear to dynamically load shaders based on reports from testing, but is significant enough for OSX/Linux that I would like to get it checked in so I can do other smaller work. - Also doesn't cause any extra crashing or bad behavior from what has been reported. Ensure the timestamp of memory mounted files doesn't match previously mounted files. - Prevents caches of rapidly re-mounted files from returning stale data. Make boot.json memory file friendly. Remote mounted mods now override file system aliases when they are mounted. Fixed the change watcher support. - Added some more characters to filter from download file names. Added "raw" mod info interface so mods can extra information to modinfo.json. - Includes deprecation of api.mods.getMountedMods() in favor of api.mods.getMounted(), which uses promises instead of a callback. The following changes contributed by mikeyh: Custom Server Reconnects and Improved Game Invites - fixed long standing issue where previously accepted game invite fails then later invite from same person teleports you into new game without confirmation - fixed invites to private games (missing uuid) - fixed buy missing content dialog description when a classic player is invited to a titans game - fixed game password lost after refresh, selecting system, settings, etc - added logging to api.net - added game info to session, connect_to_game and various scenes for custom server reconnects, improved invites and mods (will reduce number of hacks by mods) - added serverType / game_server_type (local|uber|custom) - added serverSetup / game_server_setup (game|replay|loadsave) - added gameType / game_type (Galactic War|Ladder1v1|FFA|TeamArmies) - added gameModIdentifiers / game_mod_identifiers (work in progress) - changed isLocalGame to use the same is_local_game session key everywhere - deprecated joinLocalServer / join_local_server in preference to isLocalGame / is_local_game - changed join_lobby helper to use isLocalGame - added serverType, serverSetup, gameType and gameModIdentifiers to join_lobby helper - added saving of reconnect_to_game_info in local storage - added timers in new_game and live_game to update timestamp of reconnect to game info - added reset of reconnect to game info when abandoning live game - added support for serverSetup, serverType and gameType to gw_play - added support for serverSetup, serverType and auto updated gameType to live_game - added reset of reconnect info and lobby info when leaving live game - changed save_game_utility to set isLocalGame, serverType and serverSetup - removed unused session observables in save_game_browser that might actually cause confusion - added support for serverSetup, serverType and gameType (limited) to replay_browser - added reset of reconnect info to replay_loading - added reconnect option to start menu (first pass) with 5 minute expiry - added game type, uuid and mod identifiers support to rejoinGame for uber servers - changed lobbyId and reconnectContent to use session - added directReconnect for local and custom servers (also supports uber servers if getGameWithPlayer fails) - refactored game invites (from latest pa chat) - added auto updating lobby status to game invites - added auto updating of game password to game invites - added auto updating of game mods to game invites (in progress) - added cancelling of game invites when inviter leaves game lobby or game starts with no free spectator slots - added game_invite_update and cancel_game_invite xmpp commands - added canInviteToChat checks for existing lobby contact and pending invites - moved some context menu logic out of uberbar html into model (from pachat) - fixed lobbyContacts to correctly update in new_game based on current players and spectators - fixed empty spectators (playersWithoutArmies) in new_game - added spectatorCount and emptySpectatorSlots - added lobbyFormat to new_game (first pass) - added sendLobbyStatus to update uberbar - added support for resetting reconnect_to_game_info and invite lobby info when leaving, kicked or disconnected from new_game - added serverModsUpdated and serverModsLoaded - changed default GW new game to include time - changed default save name to include time - updated to latest knockoutjs 3.4.0 (from 3.3.0) - added ready deferred to db knockout extender so that consumers can reliably know when indexed db data is loaded (or not) Allow changing AI commanders from client mods. Add custom server support to the server browser. Start Hook and Placeholder Scene for Community Mods. Changed global spectator chat default to team chat. Fix for live game alt-tab backspace reload Changed Start Hook and Community Mods Scene To Support Offline - changed start hook to try a remote load and if that fails try the download cache for offline support - changed community mods scene to load from download cache (remote code automatically downloads latest to cache) - added a default back button to community mods scene just in case there is any failure loading cached Added Saving of Game Server Browser Filters - Refactored filters to use text: value (allows localisation) - Added local storage settings to save filters - Added filter defaults - Added reset filters button - Implemented filterRetiredGames with existing default Added Saving of Game Server Browser Filters Community Mods Integration Changed custom servers feed to be remotely configurable Added mod identifiers to server beacon Added support for custom commanders Replaced color_table.js with 32 color burntcustard version Added —max-players and —max-spectators command line options Added --server-password command line option - added SERVER_PASSWORD to main - added --server-password command line option to set SERVER_PASSWORD - changed empty state to check if server password specified - changed lobby state to validate server password if specified The following changes contributed by JustinLove: Add ".stock" event namespace to the holodeck mousedown binding. Add server-side spec tag support to army configurations in the lobby. Expose build bar spec id grid map for easier modding. Correct gamma in world hover information. Improve modability of build bar. - Expose object constructors so new instances can be made. - Save their arguments so new properties can be defined. - Expose grid dimensions and tab definitions. - Extract function for unit specs so it can be either replaced or called again. - Expose ammo build hover details. - Fix the build hover cost of nuke missiles for titans. Extract function so showing game over can be cleanly customized. Remove call to undefined api.camera.setPreviewLinkage. - Appears to have been a by-product of the pa-x1 branch integration. Fix depreciated getMountedMods to return same type as before. Convenience improvements to GW card access for mods. Use appropriate commander for spec tag - Can't really use spec tags without a tagged commander. Commander verification won't let them through. Having the server append the tag during finalization avoids having to think about it everywhere else. Prevent incorrectly broken promises when chaining. - If a promise gets eaten by merge it will never be resolved/rejected. If one of the previously bound handlers is called, pending != ok and it gets rejected though the handler being called is usually for resolve. Return content remount promise for completion tracking Make api.file.list reject missing directories instead of waiting for parse exception General bugfix/polish Upgrade FMOD to 4.44.60 and rebuilt banks with new version Tell windows laptops with AMD GPUs to use the discrete part Fix a client crash that occurs when a URL is requested with a trailing / Fix error logging for unknown error codes Planet description now includes metal spot, CSG, and landing zone counts Fix for mac build. - Define copy ctor/assign operator for ChangeWatcherList. Pop open store page instead of cart for Steam Titans upgrade. Print complete authenticateHelper failure information instead of [object Object]. Fix alias search crash bug in WindowsFilesystem/StdioFilesystem::exists(). Prevent negative output from dither in the HDR compose pass. -Hypothetically, this should fix a crash issue on some Intel 5xx GPU drivers. Fix for aliases not being converted to lowercase.