tgstation-server-v4.11.0
Please refer to the README for setup instructions.
Component Versions
Core: 4.11.0
Configuration: 3.0.0
HTTP API: 9.0.1
DreamMaker API: 6.0.4 (Interop: 5.3.0)
Web Control Panel: 2.1.5
Host Watchdog: 1.1.1
Update 11.X
Core
- Added an event for successful production DD launches (DreamDaemonLaunch). Has the DD PID as an argument (#1251 @AffectedArc07)
HTTP API
- Paginated job responses will now come with
progressfields for active jobs. (#1253 @Cyberboss)
Update 10.X
Core
- Instances may now only have names set to a max length of 100 characters. Previously existing instances that do not meet this requirement will have theirs truncated. (#1225 @Cyberboss)
HTTP API
- GET
/no longer redirects to the web control panel based onUser-Agentheader. Now does so based on lack ofApiheader. (#1229 @Cyberboss) - Completely revamped request/response model names and layouts to be more restrictive as to exactly what can be in each request. No functional changes have been made to fields. (#1225 @Cyberboss)
- POST /User now returns 204 if the sender lack the read users permission. (#1225 @Cyberboss)
- ErrorCodes 28, 36, and 46 are now folded into code 2. These numbers will be recycled for future error codes. (#1225 @Cyberboss)
Update 9.X
Configuration
- The new configuration version is 3.0.0. (#1213 @Cyberboss)
- Added
ControlPanel:Channel. This should be set to a URL to load the web control panel from. The formatters${Major},${Minor}, and${Patch}are available for the current TGS API version. If set to "local" the previous behavior of loading the bundled control panel will be used. Upgrading installations will have this set tonullby default and thus be non-functional. Consider setting it to the current default upstream:https://tgstation.github.io/tgstation-server-webpanel/api/${Major}.${Minor}.${Patch}. (#1213 @Cyberboss)
DMAPI
- Fixed a compile error in the V3 API. (#1217 @Cyberboss)
HTTP API
- Fixed having a missing/malformed
Authenticationheader generating a 401 response instead of a 400. (#1216 @Cyberboss)
Web Control Panel
- The control panel can now be updated independently of TGS via remote tracking. (#1213 @Cyberboss)
- New info page which shows information about the client and the server (#1215 @alexkar598)
Update 8.X
Configuration
- The new configuration version is 2.3.0. (#1202 @AffectedArc07)
- Configuration now use the YAML format. Existing JSON config files will still be loaded with legacy support. (#1202 @AffectedArc07)
Core
- Added the
WatchdogCrashevent. Triggers when the DreamDaemon process exits for reasons other than a call toTgsEndProcess(). (#1200 @Cyberboss) - Added the
WorldRebootevent. Triggers on calls toTgsReboot(). (#1200 @Cyberboss) - Added the
WorldPrimeevent. Triggers on calls toTgsInitializationComplete(). (#1200 @Cyberboss) - Eliminated scenarios where watchdog events would go unhandled due to a previous event still being processed. (#1200 @Cyberboss)
- Releases going forward will now note pull request authors for credit. (#1196 @Cyberboss)
- Kudos to contributors who have helped with v4 in the past: @MrsTonedOne, @AffectedArc07, @alexkar598, @jamie-34254, @ZeWaka, @vuonojenmustaturska, @bobbahbrown, @Fikou, @Pyko1 (#1196 @Cyberboss)
- The service first time experience now logs if you're missing the required dotnet runtime. (#1203 @Cyberboss)
- Fixed
-publicalways being set in DreamDaemon command lines. Sometimes twice, other times overriding the intended-invisiblesetting during deployments. (#1204 @Cyberboss)
DMAPI
- Added
/datum/tgs_revision_information/var/timestampwhich is an ISO8601 string of the revision's creation time. Pre-4.8 revisions will have this set to the 0 value. (#1199 @Cyberboss) - The DMAPI is now versioned separately from the TGS interop APIs it provides. (#1204 @Cyberboss)
- Removed
/datum/tgs_revision_information/test_merge/var/time_merged. (#1204 @Cyberboss) - Renamed
/datum/tgs_revision_information/test_merge/var/pull_request_committohead_commit. (#1204 @Cyberboss)
HTTP API
- Added
timestamptoRevisionInformationmodels which is an ISO8601 string of the revision's creation time. Pre-4.8 revisions will have this set to the 0 value. (#1199 @Cyberboss) - The
dmApiVersionfield in the ServerInformation and CompileJob models refers to the server's interop version. (#1204 @Cyberboss)
Web Control Panel
- JS files now properly cache indefinitely. (#1197 @Cyberboss)
Update 7.X
Configuration
- The new config version is 2.2.0. (#1152)
- Added
General:UserGroupLimitfor limiting the total number of user groups that can be created. (#1178) - Added the
Swarmconfiguration section for configuring the swarm system. (#1175) Swarm:PrivateKeyshould be a secure string set identically on all swarmed servers. Setting this enables the swarm system. If this is to happen, ensure all swarm servers are set to connect to the same database. (#1175)Swarm:ControllerAddressshould be set on all swarmed servers that are not the controller server and should be an address the controller server may be reached at. (#1175)Swarm:Addressshould be set on all swarmed servers. Should be an address the server can be reached at by other servers in the swarm. (#1175)Swarm:Identifiershould be set uniquely on all swarmed servers. Used to identify the current server. This is also used to select which instances exist on the current machine and should not be changed post-setup. (#1175)- This version contains a rather hefty SQL migration to support user groups. Please ensure your
Database:ServerVersionconfiguration property is set correctly before updating. (#1164) - Added OAuth entries sections under
Security:OAuth. These sections, keyed by provider name, containRedirectUrl,ClientId, andClientSecretstring entries. They may also contain andServerUrlentries for some providers. Filling out these sections with the relevant OAuth app credentials enables logins from the provider. (#1152) - Added
Security:OAuthTokenExpiryMinuteswhich is an integer indicating the amount of minutes until an OAuth token expires. Defaults to 1 day (1440). (#1152)
Core
- Added the swarm system. This allows a group of TGS servers to use the same database while maintaining separated instances. As a result, credentials that work on one server will work on any in the swarm. The swarm system only works if all servers are running the same TGS version. If an update is requested for one server in the swarm, all servers will be updated. (#1175)
- If a server has existing instances it should not join or leave a server swarm or it will lose access to these instances. Please see the migration guide in the documentation. (#1175)
- When resetting the admin user's password, it will now be removed from its UserGroup if it belonged to one. (#1164)
- Fixed bridge requests sometimes failing due to chat provider timeouts. (#1164)
- Fixed the user limit not actually applying. (#1178)
- Added the
GitHubOAuth provider. Create OAuth apps at https://github.com/settings/developers (#1152) - Added the
DiscordOAuth provider. Create OAuth apps at https://discord.com/developers/applications (#1152) - Added the
TGForumsOAuth provider. Does NOT useClientIdconfig. See documentation at https://tgstation13.org/phpBB/viewtopic.php?f=45&t=9922&p=582075 (#1152) - Added the
KeycloakOAuth provider. UsesServerUrlconfig. A somewhat simple guide to setting this up can be found here: https://plugins.miniorange.com/keycloak-single-sign-on-wordpress-sso-oauth-openid-connect (Note, the user grouping bits may be skipped). (#1152) - Added missing v4.5.X downgrade migration. (#1152)
- Added informative logging when users are created/updated. (#1152)
HTTP API (#1152)
- Header names are now case-sensitive. (#1152)
- Fixed being unable to clear repository access strings. (#1152)
- Fixed GitHub API errors not being returned if a server update failed. (#1152)
- GET
/no longer requires authentication. (#1152) - The
ServerInformationmodel now contains theoAuthProviderInfosfield. This is a map of OAuth provider names to theirclientIds andredirectUris (OAuthProviderInfo model). (#1152) - Added a new field to the
Usermodel,oAuthConnections. This is a list ofOAuthConnectionmodels that indicateexternalUserIds the user may use to authentication along with theproviderID of the OAuth provider. A user may have manyOAuthConnections with the sameproviderbut the sameprovider/externalUserIdpair can not be added to multiple users. (#1152) - Added Administration right 64 which allows users to edit their own
oAuthConnections. This is a subset of right 1. (#1152) - Added OAuth authentication. POST
/with headersAuthorization: OAuth <Authorization response code from https://tools.ietf.org/html/rfc6749#section-4.1.2>andOAuthProvider: <Provider Name>to receive a bearer token with extended duration. (#1152) - Added error code 95 for when one attempts to create
OAuthConnections on theAdminaccount as this is not allowed. (#1152) - Added error code 96 for when a login attempt is made with a disabled OAuth provider. (#1152)
- Users may now be created with no passwords and system identifiers if they have an OAuthConnection set. A user cannot have it's password removed after having one set later. (#1152)
- Added
GitLabtest merging and merge request commenting support. (#1163)
DMAPI
- Fixed TGS topics sent too soon in DreamDaemon startup being forwarded to
/world/Topic(). They are now swallowed with a warning log. (#1163)
HTTP API
- File transfers have been revamped. The
RawDatamodel has been replaced with theFileTicketResultmodel. This contains one string field,fileTicket. Transfers are now done as standardapplication/octet-streamGET/PUT requests to the new/Transferendpoint. Requests should be made to/Transfer?ticket=<fileTicket>after receiving aFileTicketResult. Returns HTTP 200/204 on successful transfers, or standard 409/410ErrorMessages otherwise. Because of this change, the size limit for file transfers has been increased to 2GB. (#1153) - Added ErrorCode 97 for when a job fails due to waiting on an expired upload request. (#1153)
- POST
/Configurationno longer updateslastReadHashfield of the returnedConfigurationFilemodel. (#1153) - Endpoints that previously returned top-level array responses are now paginated. Each endpoint now takes optional
pagenumber (defaulting to 1) andpageSize(currently defaulting to 10, but subject to change in the future) query parameters. The returned model is wrapped in a generic Paginated model. Along with thecontentarray, it contains the requestpageSizeandtotalPagesfor the request. (#1172) - Previously deprecated ErrorCode 40 is now used when requesting too large a
pageSize. (#1172) - Previously deprecated ErrorCode 41 is now used when requesting
pageorpageSizes <= 0. (#1172) windowsHostmoved from Administration to ServerInformation model. (#1172)- GET
/Administrationnow requires theChangeVersionAdministration right. (#1172) - Added the PermissionSet model. The User model's
instanceManagerRightsandadministrationRightsfields have been migrated here. They have their ownids. (#1164) - Added the UserGroup model. They have an
id,name, list ofusers(shallow), andpermissionSet. (#1164) - The User model can either have a dedicated
permissionSetor belong to agroup. (#1164) - UserGroups are managed via the
/UserGroupendpoint. PUT creates a group. POST can be used to change a groupsnameandpermissionSet. GET/{id}gets a specific group. GET/Listlists all groups (using the new pagination system). DELETE/{id}deletes an empty group. (#1164) - UserGroup membership is handled on a user-by-user basis with POST
/User. (#1164) - Everything relating to InstanceUsers has been renamed to InstancePermissionSets. They are now associated with PermissionSets as opposed to Users via their
permissionSetId. Rights enums have also been renamed, but maintain their functionality. (#1164) - Added ErrorCode 98 when trying to give a user both a UserGroup and PermissionSet. (#1164)
- Added ErrorCode 99 when trying to delete a non-empty UserGroup. (#1164)
- Previously deprecated ErrorCode 46 is now used when trying to change UserGroup membership with the
/UserGrouproute. (#1164) - Previously deprecated ErrorCode 54 is now used when trying to remove all OAuthConnections from a password-less user. (#1164)
Access-Control-Max-Ageis now set to 24 hours. (#1151)- Added
userGroupLimitto ServerInformation model. (#1178) - Added error code 100 for when the user limit is hit. (#1178)
- Added error code 101 for when the user group limit is hit. (#1178)
- Added
swarmServersto the ServerInformation model. This is a list of connectedSwarmServers which contains each server'sidentifier,address, and whether or not it is the swarmcontroller. (#1175) - Added
updateInProgressto the ServerInformation model. Represents whether or not the current server is updating. (#1175) - Renamed the TestMergeParameters model field
pullRequestRevisiontotargetCommitSha. (#1163) - Renamed Repository model field
gitHubOwnertoremoteRepositoryOwner. (#1163) - Renamed Repository model field
gitHubNametoremoteRepositoryName. (#1163) - Added field
repositoryOriginto CompileJob model, set to the repository's origin URL at the time of deployment. Will benullfor jobs run on older TGS versions. (#1163) - Added Repository model field
remoteGitProviderwhich is a numeric enum of supported remote git providers such asGitHub,GitLab, orUnknown. (#1163)
Web Control Panel
- Removed saving passwords due to security concerns. (#1182)
- Added support for user groups. (#1182)
- Auto logins if the admin has the default password set. (#1182)
- Changed values in the user permission editor are now be in bold. (#1182)
- Fixed a bug where the logs wouldn't show depending on the timezone the server is in. (#1182)
- Fixed a bug where updates to the webpanel wouldn't show because of legacy code. (#1182)
- Fixed several small bugs/performance issues. (#1182)
Update 6.X
Configuration
- Fixed typo in
General:HostApiDocumentationsetting. Please correct this in your configuration if need be. (#1139)
Core
- The setup wizard now waits until the configuration reloads before exiting. This caused issues where the first run of the server could possibly default to using incorrect database configurations. (#1142)
- Having the configuration option
General:HostApiDocumentationenabled will no longer cause HTTP requests to the server to 500. (#1139) - Fixed a deadlock in the job manager. (#1139)
- Fixed having
General:SetupWizardModeset toOnlynot being respected. (#1139)
DMAPI
- Non-functional release including some minor documentation additions (#1144)
HTTP API
- Instances will now allocate and pre-check the DreamDaemon and DMAPI validation ports can be used before they are created. Added error code 93 for when none are available. (#1136)
- You can no longer modify DreamDaemon or DMAPI validation ports so that they would conflict with other ports in use by TGS or the system. Added error code 94 for when a conflict occurs. (#1136)
- Added header
X-Powered-By: tgstation-serverto all responses. (#1134) - Added
DreamDaemon.additionalParametersfield for adding additional command line-paramsoptions. (#1145)
Web Control Panel
- Web panel v1.0.1 is now included in the project. It is accessible from
/appor by accessing/from a browser. (#1133) - The web panel can edit users, update the server, restart the server and access logs. Instance management will be included in a future update. (#1133)
Prior release notes truncated to save space