Skip to content

weekly-2026-01-23

Choose a tag to compare

@github-actions github-actions released this 23 Jan 09:12
· 379 commits to main since this release

Changelog

  • feat(cmake): Add debug symbol stripping for MinGW Release builds (TheSuperHackers#2067)
  • fix(debug): Simplify unconditional DEBUG_ASSERTCRASH to DEBUG_CRASH (TheSuperHackers#2067)
  • fix(casts): Add explicit void* casts for function pointers (TheSuperHackers#2067)
  • fix(compatibility): Add compiler guards and GCC inline assembly for StackDump (TheSuperHackers#2067)
  • fix(calling-convention): Standardize calling conventions and variadic macros (TheSuperHackers#2067)
  • fix(linkage): Fix static/extern linkage mismatches for MinGW (TheSuperHackers#2067)
  • fix(headers): Add missing forward declarations for MinGW (TheSuperHackers#2067)
  • fix(core): Add MinGW-w64 compatibility fixes to Core libraries (TheSuperHackers#2067)
  • fix(cmake): Fix CMake dependencies and library linking for MinGW (TheSuperHackers#2067)
  • fix(precompiled): Add ATL compatibility to precompiled headers (TheSuperHackers#2067)
  • build(cmake): Add MinGW CMake presets for i686 (TheSuperHackers#2067)
  • build(cmake): Configure MinGW-specific compiler and linker settings (TheSuperHackers#2067)
  • build(deps): Update external dependencies for MinGW-w64 support (TheSuperHackers#2067)
  • build(cmake): Add ReactOS COM support utilities (comsupp) (TheSuperHackers#2067)
  • build(cmake): Add ReactOS ATL and PSEH compatibility layer (TheSuperHackers#2067)
  • build(cmake): Add widl integration for COM interface generation (TheSuperHackers#2067)
  • build(cmake): Add MinGW-w64 toolchain and base configuration (TheSuperHackers#2067)
  • fix(tunnel): Fix undefined behavior in TunnelTracker::onTunnelDestroyed() and incomplete asset transfer in Team::setControllingPlayer() (TheSuperHackers#1958)
  • perf(radar): Reduce cost of W3DRadar::renderObjectList (by 80%), W3DRadar::buildTerrainTexture (by 25%) and W3DRadar::clearShroud (TheSuperHackers#2138)
  • refactor(math): Implement Matrix4x4::Inverse, Matrix3D::Get_Inverse and replace unsafe Matrix4x4 to D3DMATRIX casts with conversion functions that apply the required transpose (TheSuperHackers#2052)
  • fix: Fix spelling errors in code words (TheSuperHackers#2149)
  • fix(debug): Fix spelling errors in DEBUG macro strings (TheSuperHackers#2148)
  • bugfix(wbview3d): Fix crash on window resize in Generals World Builder (TheSuperHackers#2151)
  • bugfix(object): Preserve unit behaviour when transferring assets to allies (TheSuperHackers#1885)
  • bugfix(ai): Fix crash when AI player attempts to build a supply center with an invalid name (TheSuperHackers#2095)
  • bugfix(heightmap): Revert optimization for m_vertexBufferTiles in HeightMapRenderObjClass because it does not work properly (TheSuperHackers#2135)
  • bugfix(ghostobject): Readd null check for 3DScene in W3DRenderObjectSnapshot::addToScene to prevent crash in headless replay playback (TheSuperHackers#2133)
  • bugfix(logic): Decouple scripted audio events from CRC computation (TheSuperHackers#2075)
  • feat(build): Add new docker build and game install scripts for Linux (TheSuperHackers#2085)
  • bugfix(script): Restore retail compatibility for sequential scripts in ScriptEngine (TheSuperHackers#2129)
  • bugfix(audio): Restore retail compatibility after optimization change in AudioManager::addAudioEvent (TheSuperHackers#2132)
  • ci: Add workflow to trigger build from any commit for replay mismatch testing (TheSuperHackers#2114)
  • docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Source/GameClient and Common comments (TheSuperHackers#2122)
  • docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Source/GameLogic comments (TheSuperHackers#2121)
  • docs: Fix spelling errors in Generals/Code/GameEngine/Source comments (TheSuperHackers#2118)
  • docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Include comments (TheSuperHackers#2123)
  • docs: Fix spelling errors in Generals/Code/GameEngine/Include comments (TheSuperHackers#2119)
  • docs: Fix spelling errors in GeneralsMD Libraries, Tools, GameEngineDevice comments (TheSuperHackers#2124)
  • docs: Fix spelling errors in Generals Libraries, Tools, GameEngineDevice comments (TheSuperHackers#2120)
  • docs: Fix spelling errors in Core/Tools and Core/GameEngine comments (TheSuperHackers#2117)
  • docs: Fix spelling errors in Core/Libraries comments (TheSuperHackers#2116)
  • fix: Rename misspelled identifiers (TheSuperHackers#2109)
  • bugfix: Fix spelling errors in debug/diagnostic strings (TheSuperHackers#2108)
  • bugfix(dx8caps): Resolve greyscale texture rendering issues in VMWare environments (TheSuperHackers#2128)
  • bugfix(buildassistant): Restore retail compatibility after build assistant shroud logic change (TheSuperHackers#2131)
  • bugfix(actionmanager): Restore retail compatibility after construction cursor change in ActionManager (TheSuperHackers#2125)
  • perf(radar): Reduce cost of radar pixel draw in PartitionManager::refreshShroudForLocalPlayer by 96% (TheSuperHackers#2072)
  • refactor(ww3dformat): Merge function PixelSize into Get_Bytes_Per_Pixel (TheSuperHackers#2072)
  • build(cmake): Expose source files of interface libraries core_utility, corei/gi/zi_libraries_include in Visual Studio solution (TheSuperHackers#2092)
  • refactor(cmake): Move core_config into corei_always for simplification (TheSuperHackers#2091)
  • refactor(gamelogic): Rearrange local variables in GameLogic::startNewGame() (TheSuperHackers#2115)
  • perf(heightmap): Optimize data locality for m_vertexBufferTiles and m_vertexBufferBackup in HeightMapRenderObjClass (TheSuperHackers#2104)
  • refactor(heightmap): Simplify functions getXWithOrigin(), getYWithOrigin() of HeightMapRenderObjClass (TheSuperHackers#2103)
  • perf(heightmap): Optimize repeated calls to getXWithOrigin, getYWithOrigin in HeightMapRenderObjClass::updateVB (TheSuperHackers#2102)
  • bugfix(scriptengine): Fix script dialog text spelling mistakes and errors in ScriptEngine (TheSuperHackers#2093)
  • refactor: Modernize NULL to nullptr (TheSuperHackers#1938)
  • build(cmake): Move most CppMacros.h includes into precompiled headers and make them available in all build targets (TheSuperHackers#2090)
  • refactor(heightmap): Clarify magic numbers related to VERTEX_BUFFER_TILE_LENGTH (TheSuperHackers#2079)
  • fix(heightmap): Fix CENTER_LIMIT condition in HeightMapRenderObjClass::updateCenter (TheSuperHackers#2078)
  • perf(heightmap): Reduce cost of min height loop in HeightMapRenderObjClass::updateCenter by 93% (TheSuperHackers#2077)
  • bugfix(render2d): Fix possible greyscale image rendering issues on hardware without DOT3 support (TheSuperHackers#2080)
  • bugfix(actionmanager): Do not show false resume construction cursor for allied scaffolds (TheSuperHackers#2068)
  • refactor(heightmap): Remove HALF_RES_MESH because it was never used and is broken (TheSuperHackers#2076)
  • bugfix(network): Fix packet size setup mistakes (TheSuperHackers#2040)
  • bugfix(worldbuilder): Avoid taking action on cancel button for script conditions and actions (TheSuperHackers#2065)
  • bugfix(worldbuilder): Initialize boolean in ScriptConditionsDlg::OnEditCondition to show logical condition (TheSuperHackers#2062)
  • refactor(audio): Use MilesAudioManager::getEffectiveVolume consistently (TheSuperHackers#2058)
  • fix(xfer): Fix xfer retail compatibility code (TheSuperHackers#2024)
  • bugfix(object): Do not apply veterancy bonuses and animations for dead units (TheSuperHackers#1968)
  • bugfix(audio): UI audio no longer plays at maximum volume for a single frame when navigating between shell map menus (TheSuperHackers#2019)
  • tweak(drawable): Decouple stealth detected opacity fade time step from render update (TheSuperHackers#2047)
  • perf(ai): Avoid a few std::vector copies when passing ai paths to functions (TheSuperHackers#1895)
  • bugfix(lobby): Properly sort CRC mismatched game rooms to the bottom of the lobby (TheSuperHackers#1845)
  • bugfix(ai): Undetected mines can now be approached when using a disarm weapon (TheSuperHackers#1883)
  • bugfix(aiupdate): Prevent manually ejecting rappelling Rangers during Chinook Combat Drop (TheSuperHackers#1789)
  • tweak(drawable): Set correct model tint color after loading a save game (TheSuperHackers#2025)
  • bugfix(thingfactory): Reset next ThingTemplate ID after clearing custom map template overrides to avoid CRC mismatch in the next multiplayer game session (TheSuperHackers#2034)
  • perf(weaponstore): Optimize WeaponStore::findWeaponTemplatePrivate with hash map lookup (TheSuperHackers#2042)
  • bugfix(heightmap): Fix dynamic lights on terrain (TheSuperHackers#2039)
  • bugfix(heightmap): Disable old uv adjument for cliffs (TheSuperHackers#2038)
  • refactor(logic): Simplify code in GameLogic's init, reset, startNewGame (TheSuperHackers#2027)
  • refactor(network): Simplify error prone net packet size calculations with packed structs (TheSuperHackers#1675)
  • perf(contain): Optimize Object::isHero with cached hero counter (TheSuperHackers#1841)
  • bugfix(aiupdate): Invalidate build task of Dozers and Workers if the assigned target scaffold no longer exists (TheSuperHackers#1868)
  • ci(vcpkg): Stabilize vcpkg binary caching; add compiler-aware keys and explicit cache path (TheSuperHackers#2028)
  • refactor(audio): Simplify volume related code in AudioManager and MilesAudioManager (TheSuperHackers#2030)
  • perf(audio): Optimize fail condition order in AudioManager::addAudioEvent (TheSuperHackers#1843)
  • fix(logic): Fix unexpected return in GameLogic::logicMessageDispatcher's switch case MSG_CANCEL_UNIT_CREATE (TheSuperHackers#1881)
  • refactor: Apply clang-tidy fixes for generals-use-is-empty (TheSuperHackers#2018)
  • refactor: Apply clang-tidy fixes for generals-use-this-instead-of-singleton (TheSuperHackers#2017)
  • bugfix(aiupdate): Chinooks and Helixes no longer take off after repair if passengers want to board or exit (TheSuperHackers#1787)
  • bugfix(aiupdate): Repairing Chinooks and Helixes no longer take off after evacuating all passengers (TheSuperHackers#1762)
  • bugfix(input): Replace frame-based timings with real-time timings in input system (TheSuperHackers#1835)
  • chore: Implement scripts for custom isEmpty() and singleton refs clang-tidy checks (TheSuperHackers#2010)
  • bugfix(network): Assign disconnect frame when quitting the game via the disconnection menu (TheSuperHackers#2020)
  • tweak(metaevent): Change COMMANDUSABLE_OBSERVER to no longer apply in Shell Map (TheSuperHackers#2002)
  • bugfix(network): Fix data offset for string reads in NetPacket::readFileMessage() and NetPacket::readFileAnnounceMessage() (TheSuperHackers#2005)
  • build: Implement docker build (TheSuperHackers#1774)
  • refactor: Apply integer value comparisons for strcmp and stricmp with clang-tidy (TheSuperHackers#1956)
  • bugfix(experience): Prevent ranking of riders that are not trainable (TheSuperHackers#1970)
  • bugfix(object): Fix visibility conditions for client-side effects (TheSuperHackers#1964)
  • bugfix(input): Disable mouse waypoint mode after using alt tab (TheSuperHackers#1987)
  • unify(heightmap): Move Height Map and Terrain related files to Core (TheSuperHackers#1991)
  • unify(heightmap): Merge Height Map related code and move Zero Hour's BaseHeightMap, FlatHeightMap, W3DPropDraw, W3DTreeDraw, W3DPropBuffer, W3DSnow, W3DTerrainBackground files to Core (TheSuperHackers#1991)
  • build(heightmap): Fix include paths in Zero Hour Height Map files (TheSuperHackers#1991)
  • unify(texture): Move W3DWater, W3DLaserDraw and WW3D2 texture related files to Core (TheSuperHackers#1989)
  • unify(texture): Merge W3DWater and WW3D2 texture code (TheSuperHackers#1989)
  • refactor: Apply the readability-container-size-empty check with clang-tidy (TheSuperHackers#1957)
  • fix(network): Fix missing value initialization of LANGameInfo::m_isDirectConnect (TheSuperHackers#1836)
  • bugfix(network): Prevent buffer overflow in NetPacket::readFileMessage() and NetPacket::readFileAnnounceMessage() (TheSuperHackers#1981)
  • perf(namekey): Remove all superfluous AsciiString allocations for name key lookups (TheSuperHackers#1959)
  • refactor(namekey): Reduce code duplication in NameKeyGenerator functions, misc formatting tweaks (TheSuperHackers#1959)
  • unify(matpass): Merge WW3D2 matpass code (TheSuperHackers#1982)
  • refactor: Remove superfluous inline and register keywords with clang-tidy (TheSuperHackers#1936)
  • bugfix(string): Allow startsWith and endsWith to be called on empty strings (TheSuperHackers#1979)
  • build: Add clang-tidy checks and script (TheSuperHackers#1807)
  • bugfix(pathfinder): Prevent infinite loop within PathfindCell::putOnSortedOpenList() (TheSuperHackers#1965)
  • ci(vcpkg): Include preset in binary cache key to avoid ABI mismatches and slow CI builds (TheSuperHackers#1973)
  • feat(crashdump): Add crash dump functionality for fatal errors (TheSuperHackers#1594)
  • bugfix(mouse): Prevent cursor capture when mouse is outside of app window (TheSuperHackers#1939)
  • refactor(mouse): Apply minor refactoring and whitespace tweaks in WinMain, Mouse, HeaderTemplate (TheSuperHackers#1939)
  • fix: Wrong usage of sizeof(this) in BitFlags::xfer(), W3DMPO::glueEnforcer() (TheSuperHackers#1947)
  • bugfix(network): Prevent out of bounds memory access in NetCommandWrapperListNode::copyChunkData() (TheSuperHackers#1946)
  • build: Use cmake_host_system_information to make registry queries in cmake (TheSuperHackers#1943)
  • feat(movie): Implement ESC button mapping to skip Campaign, Challenge and Score videos (TheSuperHackers#1926)
  • tweak(keyboard): Apply minor improvements to Keyboard class to query pressed keys (TheSuperHackers#1926)
  • bugfix(movie): Fix Campaign, Challenge, Score movie cancellation or decompression artifacts when tabbing out of the game (TheSuperHackers#1927)
  • refactor: Remove or replace some superfluous empty C strings (TheSuperHackers#1929)
  • refactor(network): Replace implicit conversion from NULL to AsciiString in IPEnumeration::getMachineName (TheSuperHackers#1934)
  • build: Add WOW6432Node to registry path lookups for EA App install path detection (TheSuperHackers#1903)