160,545 Commits over 4,566 Days - 1.47cph!

Today
Fix cows not following smoothly and being very slow and annoying to lead
Today
Fix renderer key allocating a materials array on every batch group lookup, now uses a pooled list Saves ~620 KB when loading in a big base in editor Also fixed a small logic error in RendererKey.Equals
Today
▉ ▍▊▌▊▆ ▍▇▌▉▇▄▆ █▊▌▌▅ █▄▅▋ ▋█ ▌▇▍▄ ▍▆▋▊ ▌▄▆ ▊▌▊█▇ █▌▊▄ ▇▉█▋▌▍ ▊▋▇▅▅▌▅▅ ▍▆▇ ▌█▉▌▋▆▆
Use own custom convar for egress
Today
Remove screenspace terrain hole texture (replaced by RRP stencil testing)
Update ADS settings
Merge from main
Merge fix
Today
Optimize speed for base occlusion tests when ran across a full server - only load the map once per set of tests
Merge from main
Add renaming for cows and sheep Player instigated renames start a new name dynasty, utilising the existing name dynasty stuff Players can't rename animals spawned with the raree special names/genes. These names now appear gold with a star
Today
Stop bush clutter running physics queries on every LODManager visit and taking a large part of its budget, now only runs when bush culling blocks (foundations) change Disable CullBushes on boat hull blocks, not needed
Today
Moved MenuUI2's UIBlurCanvasesBehind from FadedBackground to PageBackground as it needs a CanvasRenderer
Today
merge from uiblur_faded_fix
Today
Uzi: mag drop and shell ejection - Mag drop on world model reloads - Shell ejection in first person and 3p: new eject_shell (viewmodel) and w_eject_pistol_shell (world, on the uzi shell_eject bone) - viewmodel updated, shell eject position + enforceClipWeights on so fire/fire_ADS sharing a blend tree don't spawn two shells per shot
Today
Fix after merge
- 1-2 boat groups will spawn every 5-8 hours (spawn together) - Each individual group gets a random lifetime of 30-60 minutes before egress
Today
viewmodel lasersight/brake attachment placment
Today
update base_occlusion/foundation_offset_fix
Cant take the pt boat out of the deepsea (just like the other boats)
Today
More Uzi 3p setup - stock and no stock anims for world model and player - w_uzi anim hooked up, now swaps between the stock/ no stock anim sets when rifle mode is is toggled - 3p anims now using a subsystem, not an overrride....so I can use multiple masks (no stock = one handed, left arm stays on locomotion, left hand comes in for the reload, stock out = two handed - removed holdtype controller (not needed now) - Stock deploy / collapse anims play when toggling between the two - 3p anim updates + deploy/collapse stock clips - uzi.entity: ProjectileAnimationSubSystem driven by the StockDeployed flag, HoldType.uzi override removed - Uzi.cs (client only): sets the rifle_mode float on the world model animator from the stock flag. Skipped while the animator is inactive, same approach as CrossbowWeapon/Handcuffs driving their world animators
Yesterday
Handle 0 byte model files crashing the game Adjust empty model file handling * Change where it bails so maybe its less error prone?
Yesterday
Cherry pick alloc fix for pool table and fishing, and fix compile error
Yesterday
▄ ▊▅▆▇▍▋ ▌▆▍ ▆▍▇▄▅ ▋▍▆▆ ▊▅▊ ▅▋██▆ ▅█▄ ▅▋ ▋▌▉▊ ▉▍▋▋▍ ▇▍▍▊▍▅▄▉ ▄█▉▊ ▍▅
Yesterday
Fix industrial pipe segments being permanently dynamic via flag on the prefab, toggle their LODs only when on a moving parent like base io lines
Yesterday
merge from base_occlusion/vending_door_fix -> base_occlusion
Yesterday
Update tests
Yesterday
Add support for doors to be "always closed" but still treated like portals between rooms - allows vending machines to block visibility between rooms while keeping the same code as doors
Yesterday
Add the "door blocker" component for base occlusion to the vending machine prefab too
Yesterday
Fix entities placed in sockets (vending machines) not linking up with their sockets until stability runs (which doesn't apply for vending machines) or server restart - part of the reason vending machines didn't block occlusion: they sometimes had no links
Yesterday
Fix entities that were forced dynamic due to being parented never resetting the flag when pooled and staying dynamic when reused without a parent
Yesterday
Update tests to be aware of the extra faces on foundations now
Yesterday
Fix a foundation surrounded by walls being connected to a foundation outside the base offset half below - add faces on the sides of foundations & rely on existing face linking behavior to work properly
Yesterday
Reserialize foundation prefabs before adding new faces (for clean diff)
Yesterday
added example mesh for jarryd - idea is to box’s position, dimensions and rotation Use object-name suffixes to assign physics materials, e.g. floor_01_wood uses Wood. Remove material suffixes from generated child names Place aligned colliders directly on the parent; create separate children for rotated boxes Remove the reference instance after conversion, with Undo/Redo support
Yesterday
Cherry pick old animals fixes (flee when attacked from afar, do not sleep)
Yesterday
UIBlurCanvasesBehind skips the capture while a CanvasGroup above is faded out
Yesterday
▄ ▉█▋ ▌▉▇▆▊ ▆▋▉▍▅ █▊▅▅
Yesterday
Improve DImage shader replacement system * Uses case insensitive check for VertexLitGeneric, includes LightmappedGeneric now * Handles SubRect shader materials by drawing the correct part of the texture Try to have Paint tool UI with previews * https://files.facepunch.com/rubat/2026/October13-3318-SecondhandWoodborer.png Lets try ignoring UV adjustments in surface.DrawTexturedRectUV * So the function's UV arguments work like expected, without the "sub pixel adjustment" stuff, which seems unnecessary? * Only the Lua binding is affected Refine DImage subrect support and KeepAspect features Minor cleanups Remove leftover debug panel from Paint tool, KeepAspect the icons Update GHA actions to version 6 for Linux and Windows Add trigger_portal_cleanser to entity override whitelist Fixed a crash with render.UpdateScreenEffectTexture Remove widgets.RenderMe and properties.GetHovered serverside * widgets would just do nothing, but shouldn't exist on the server, properties.GetHovered would just error out Minor cleanups of various methods to match wiki and vice versa Fixed a couple memory leaks with multicore rendering * Mostly relates to functions such as render.UpdateScreenEffectTexture and render.PushCustomClipPlane Try downgrading actions/checkout to v5 * goddamn github man Port a fix for math.ceil/floor Add some self checks for corrupted map files "load" concommand doesn't boot you from session for missing saves * So "load quick" bind doesn't disconnect you if you accidentally press it without having a quick save Fixed ZFunc not being set when overriding depth testing Fixed regression with DPanel:OnMousePressed due to recent changes Merge Pull Requests * Make ENT:StoreOutput treat times=0 same as times=-1, making it consistent with engine entities Try to add the file path to CWin32ReadOnlyFile::FS_fread warnings Move DrawTexturedRectUV changes to a separate func * DrawTexturedRectRawUV Prediction errors on arrays include array index for ints and floats Try to add classname to CUtlRBTree overflow message Rename ErrorFromLua to ErrorNoHaltStack Added CLuaInterface::FormatError Fixed some compile warnings Allow mesh.BoneData to be called with index 2 * Weight value is ignored in this case * Mesh() global now allows 3 bone weights * Mesh:BuildFromTriangles will now read up to 3 weights, depending on the input above Added 2 new sub scopes to PhysFrame * `PhysFrame-CPhysicsEnvironment::Simulate` and `PhysFrame-VPhysicsShadowUpdate` Added OnChangedFromMin/Max to math_counter entity * Also added SetMax/MinValueNoFire inputs for it Improve error handling of Autorefresh Fixed memory leak with Windows auto refresh with symlinks * Hopefully without regressions, as the system was changed somewhat substantially Fixed a crash with inputs firing from removed triggers Fixed wrong lookup function used in Hunter NPC code Add m_hStoredPathTarget to SetSaveValue whitelist Minor Hammer code fixes Fixed wrongful error with Mesh:DrawSkinned with 52 bones Fix Folder addons being searched in mountable games/platform Add "Engine Error" to Sys_Error_Internal printf Disable some unused Bootil stuff that spits out warnings Fixed an issue with prediction error counting affecting certain fields Make "SetPos touch triggers" change opt-in via argument * This change causes infinite loops in existing addons, such as TTT. Fixed auto complete for lua_refresh_file
Yesterday
rename `demo.newui` to `demo.oldui`, enable demoui2 by default. [old ui stays. we really don't have a reason to nuke it for now and there are still some people that prefer the old one.]
Yesterday
Adjust empty model file handling * Change where it bails so maybe its less error prone? Fixed an issue with prediction error counting affecting certain fields Added icons for the 5 new TF2 maps
Yesterday
Set "occlusion_door_immediate" to false by default (was supposed to be since we show everything within 32m)
Yesterday
merge from aizone_sleep_fix
Yesterday
Merge from vcc
Yesterday
Merge from main
Yesterday
Add special staging-only gamepad UI button option that hackily enables gamepad override just for that session. Hide all other gamepad options in the gamepad section until it is enabled.
Yesterday
Fix navmesh building on top of cargoship
Yesterday
Fix AI Sleep Zones not working correctly since May - race condition fix earlier this year inadvertently made any zone outside of a BaseEntity not initialise correctly (all except underwater labs) - before / after on fresh procmap: https://files.facepunch.com/ryanw/2026/October/26_19-06-IndelibleBlackrhino.png / https://files.facepunch.com/ryanw/2026/October/26_18-54-FluffyDaddylonglegs.png
Yesterday
Fix sheeps starving despite a trough, their feed time was lower than cows so they wasted time shuffling with each other for a turn, now feeding time can't desync between sheep and cows
Yesterday
Update: Item.UseItem now returns if the entire item was consumed - bugfix IndustrialConveyor's use-after-free of item in QuickMove path Tests: ran conveyor tests, no longer failing