Repository navigation
v3.0.0
3.0.0 (2026-10-10)
⚠ BREAKING CHANGES
- Patcher:
DataSet's properties are nowreadonly. As a result,DataSetinstances must be constructed via the primary constructor. Assignments to properties in a constructor call will error. - File: Attempts to instantiate
HXE.Filewill fail without settingPath. Set Path when instantiating or useHXE.File.GetTemporary(). - CLI, HCE, Installer, Manifest, MCC, Net, Options, Process, Update: Many property types are now explicitly nullable. This should have been done when support for C# 8 and later was first introduced.
Features
- add CLI argument
--silentto suppress all console output (8c1d542) - add Resume values for firefight maps Bridge, Hangar, Lobby, and Swamp Tower (5deb5ce)
- File: add simple wrapper for System.IO.File.Exists (b13fad2)
Bug Fixes
- add
DynamicallyAccessedMembersattributes to someOptionSetmethods (0a52e5c) - add check in Test to access embedded 343I cert (e56b6ce)
- add internal "GetTemporary" method to get a
Fileinstance whose path does not exist; use it for (c5605fb) - change version variables used in CLI banner's version- and commit-related messages to make them make sense (c440204)
- CLI, HCE, Installer, Manifest, MCC, Net, Options, Process, Update: add nullable annotations and checks (4466616)
- Common: run
xrandrviaStart(string, string)for legacy compatibility; throw if it returns null (c5f15d0) - Compiler: prevent null assignment to
Pathrelative-path string (b2fc86d) - Compiler: throw exceptions when package name or package entry name are impossibly null (712c42a)
- deps: bump
XmlSourceGeneratortoa97ef26"fix: explicitly definePolymorphicMapping's properties; addPublicParameterlessConstructorto theTypeproperty" (aed3780) - deps: bump
XmlSourceGeneratortoe530301"test: update tests' expectations regardingPolymorphicMapping,PublicParameterlessConstructorannotations, and null-forgiveness" (26b9152) - deps: upgrade
System.Text.Jsonin .NET Framework 4 (dc5f772) - Difficulty: annotate with
PublicParameterlessConstructor(70226e1) - Difficulty: set XML root and namespace (937d93c)
- File: if null, derive
File.NamefromFile.Path(b9554bb) - File: require
Pathbe set in before exiting constructor (4ba25f9) - File: use
GetFullPathinFile.Pathsetter (828c116) - HCE: fall back to
GetPathRootwhenGetDirectoryreturnsnull(2f0b591) - HCE: prefer the generic overload 'System.Enum.GetValues()' to prevent Reflection use (7395cd5)
- Installer: throw when properties and variables are impossibly null (04320ce)
- Kernel: change "ignoreing" in a
MAIN.OPENmessage to "ignoring" (1c88879) - Kernel: increase max log file size from 1MiB to 8MiB (43465c6)
- Kernel: reduce amount of times "dinput8.dll" and "mods/opensauce.dll" are checked if they exist (abbb8e9)
- Latest, OpenSauce, Positions, Update: initialize properties to safe, non-null defaults (697c4e0)
- Net: initialize
DefaultHttpClientin a way that doesn't cause a crash immediately (7518948) - Net: prevent dereference of maybe-null
fileStream(d484946) - Net: resolve HttpClient crash; decrease timeout from insane 24 hours to runtime-default 30 seconds (a48b4cf)
- Paths: default
StartDirectoryto current working directory if the current process's executable path cannot be determined (4b496dc) - Paths: expand (GetGullPath)
steamexepathwhen setting Steam paths (f3edcc8) - Positions, Settings: use Selawik Light, Inter Light, and Roboto Light as fallbacks when Segoe UI Light is unavailable (e.g. Non-Windows platforms) (46ef277)
- Process: initialize
LastResultto new instance (979dafe) - Registry: add null checks for opened keys, subkeys (482ea1d)
- Registry: deprecate
CreateKeys(4b90bd8) - remove unused CLI argument
--registry; it did nothing; usereg.exe, instead (d86c050) - request compressed HTTP responses (ea17aef), closes #185
- return early if a campaign's
MissionsorDifficultylists are null (8f3d3cd) - rotate log files so old logs are not immediately overwritten (7fd6147), closes #574
- Settings: prefer
Enum.GetValues<T>(..)to resolve warning IL3050 (1e6bb4a) - Steam: remove invalid default value of argument
libraryFoldersVdfof methodParseLibrary(dd8352b) - Update: annotate
Commitparameterprogressas nullable (3d35882) - Update: handle exceptions from failed http requests; fixes
TaskCanceledExceptionin Wine Mono (7c9179e) - Update: when
totalFileSizeisnull, use invalid-1(d1c875f) - use PInvoke for NTFS compression; previous implementation did nothing (0327183)
Performance Improvements
- Manifest: source-generate XML (de)serializers (e9d6070)
- OpenSauce: source-generate XML (de)serializers (d8e0738)
- Patcher: change
DataSetfrom a class to a readonly-struct (1c07329) - replace patches.crk read with static definitions (345f711)
- Update: auto-generate XML serialization implementations for
Update,Asset(7a61475)
Reverts
This release is also available on:
v3.0.0