- Remove custom exit handler.
- Move exit handling into `Tgstation.Server.Host.System.Process`.
- Adjust `IProcessExecutor.LaunchNew` signature.
- `IProcessBase.Lifetime` result now nullable to represent a detach.
- Await `Lifetime` in dispose.
- Added ISymlinkFactory.SymlinkedDirectoriesAreFiles because they are files on Linux.
- Removed crazy-ass hard link junk from PosixWatchdog.
- Added symlink unit tests.
- Set all requests to use assemblyInformationProvider UserAgent by default.
- Removed DefaultIOManager's dependency on IAssemblyInformationProvider.
- Fixed bad Dispose scope for requests under construction in SwarmService.
- Address various IDE messages
- Additional logging
- Do not access DB in Watchdog's actual Dispose
- Fix issue with legacy behaviour in PGSQL
- Remove obsolete dotnet workaround
- Update to v3 actions checkout/upload-artifact/download-artifact
- Sending `SIGUSR1` on POSIX will now attempt to gracefully shutdown the watchdog with a timeout
- Added `General:ShutdownTimeoutMinutes` config to support this.
- Renamed `General:RestartTimeout` to `General:RestartTimeoutMinutes`
- Config version bump to `4.0.0`
- Core version bump to `4.13.0`
- Added unit tests for new `PosixSignalHandler` class.
- Adds logging around Open/Suspend/ResumeThread calls.
- Call Process.Refresh before accessing Process.Threads, potentially fixing issues with a stale thead ID cache.
- Potentially fixes#1279