🎁 Added
  • Damage-modifying event listeners can no longer heal a player by reporting negative damage — modified damage is clamped to zero before it is applied.
  • System chat messages (deaths, kicks, bans) are no longer processed on dedicated servers, matching the existing kill-feed guard.
🧼 Improved
  • Nameplate and voice-list speaking glows now compute their smoothed amplitude once per frame instead of twice, so the glow animates at the intended speed.
🪛 Fixed
  • God Mode players who fell out of the world on a remote client were never teleported back and fell forever. The host was writing the rescue position directly onto a client-owned player, but transform updates only flow from the owner outward — the teleport now runs on the owning client through a host-only RPC that also clears interpolation and velocity.
  • The scoreboard mute button could keep showing the old state after clicking it — the row now refreshes whenever the muted state changes, not just when kills, deaths, or ping happen to move.
  • Input hints for binds without a glyph texture rendered as an empty panel; they now fall back to showing the button origin as text.
  • Toggling Freecam when no HUD screen panel exists froze the player: input was disabled while nothing drove the camera. The toggle now aborts cleanly instead of soft-locking.
  • Damage direction indicators no longer touch a player component that may already be invalid during the death frame.
🚯 Removed
  • The unused `Shake` camera-noise effect — its last caller was already removed in an earlier cleanup, the class itself remained.
  • A dead `wasDead` field on notice panels that was written but never read.
  • The "My Menu Option" editor-menu template stub left over from project scaffolding.
🎁 Added
  • An automated s&box MSTest suite covering fall-damage classification, respawn authorization and host-migration recovery, and per-player corpse cleanup.
🪛 Fixed
  • Out-of-bounds handling is now host-authoritative for players and physics objects. Owning clients report the event through an owner-only host RPC instead of teleporting themselves locally.
  • Dead players now rebuild their pending respawn state after host migration, preventing them from becoming permanently stuck as observers.
  • Fall damage is world-sourced and suicide detection uses the explicit suicide tag, so falls no longer increment suicide stats, show self-hit indicators, or carry a hidden suicide kill-feed tag.
  • Corpses belonging to disconnected players are now removed immediately on every peer instead of waiting for their 60-second lifetime to expire.
🪛 Fixed
  • Respawn requests now enforce the pending-death state and one-second delay on the host, so modified clients cannot respawn early or while still alive.
  • Scoreboard kick and ban confirmations now reject disconnected targets instead of passing a stale connection into host administration logic.
  • Voice glow opacity and scale now use culture-independent decimal formatting, preventing broken CSS on systems configured with decimal commas.
🚯 Removed
  • Unused dry-fire and health-equip sound assets.
  • The custom UI sound pack and its menu, spawn-menu, and undo playback hooks.
🎁 Added
  • Full controller support with a deliberate layout: `A` jump (double-tap for noclip), `B` duck, `X` use, `Y` Human/Hotdog swap, bumpers cycle slots, triggers attack, `L3` run, `R3` third person, D-Pad Up flashlight, D-Pad Down tap for God Mode (noclip collision while noclipping) or hold 1.5 s to suicide, D-Pad Left push-to-talk, D-Pad Right Freecam, `Back` scoreboard.
  • Freecam FOV zoom now works on controller — hold the zoom button (`LT`) and move the right stick; mouse behavior is unchanged.
🪛 Fixed
  • Run and Duck were both bound to the left stick click — Duck now lives on `B`, which also makes descending in noclip work on controller.
  • God Mode and Toggle Noclip Collision were both bound to D-Pad Down, so one press toggled God Mode and popped the noclip warning at the same time — God Mode keeps D-Pad Down, and on controller the same button toggles noclip collision while noclip is active — the `Share` button was avoided because Windows Game Bar captures it for screenshots.
⚠️ Known Issues
  • The freecam settings panel (sliders and switches) still needs a mouse — on controller you can toggle freecam, fly, zoom, and swap models, but not adjust the panel.
  • Chat and Spray are deliberately unbound on controller (chat needs a keyboard anyway).
  • Holding D-Pad Down to suicide has no on-screen hold progress indicator yet — the result notice is the only feedback.
  • On controller, God Mode can't be toggled while noclipping (D-Pad Down switches to the collision toggle there) — toggle it before entering or after leaving noclip.
🎁 Added
  • Damage is now only ever applied on the host — stray client-side damage calls can no longer corrupt local health state or trip host-only death logic.
  • Fall damage is only reported from the owning player's machine, closing a path where a landing observed on the host's copy could apply the damage twice.
  • The voice-indicator UI now cleans up its per-player glow-smoothing state after players leave.
🧼 Improved
  • HUD performance: nameplates and the voice list only rebuild per-frame while someone is actually speaking, and scoreboard rows track the displayed rounded ping instead of the raw value — idle HUD panels no longer rebuild every frame.
  • The Voices UI component moved from the leftover `Facepunch.UI` namespace to `WalkerPlus.UI`, with the system scene reference updated to match.
  • Ban-list documentation corrected: `GetBannedList` returns a snapshot, not a live view.
🪛 Fixed
  • Kill feed entries, sent notices, undo notifications, and the flatline death sound could be silently lost under packet loss — the four RPCs delivering them were accidentally unreliable, because passing explicit `NetFlags` to an RPC attribute replaces the reliable default.
  • Shock damage played no sound at all — it referenced a sound asset that doesn't exist. It now plays the standard hurt sound until a dedicated shock sound is added.
  • The right-click context menu's open sound referenced a nonexistent asset and never played; it now uses the UI select sound.
  • The `ban` console command could mistake an all-digit player name for a Steam ID — only 17-digit values starting with `7656` are treated as SteamID64s now.
🚯 Removed
  • Dead kicked-player tracking in the game manager — it was written on kick and cleared on disconnect, but never read.
  • A dead controller-input branch checking the nonexistent `SpawnMenu`/`InspectMenu` input actions.
⚠️ Known Issues
  • Fall damage is computed on the falling player's client and trusted by the host (clamped to 0–100) — a modified client can skip its own fall damage. A proper fix means moving the calculation host-side.
  • No dedicated shock-damage sound asset exists yet; shock shares the generic hurt sound.
  • The spawn-menu UI components (`SpawnMenu*`, `VerticalMenu`, `PanelSwitcher`, `InputHint`) are unreferenced scaffolding awaiting the spawn menu, and kill-feed NPC victim icons never show because victim tags aren't populated yet.
🧼 Improved
  • Chat fully migrated to the s&box platform chat: player messages, join/leave notifications, muting, and word filtering are now handled by the engine. System messages (deaths, kicks, bans) are posted into the platform chat by the host, and the secret phrase now hooks the platform chat events.
🪛 Fixed
  • Pressing `Enter` opened two chat boxes at once — the platform chat and the legacy in-game chat.
🚯 Removed
  • The legacy chat UI, its `say` console command, and its scene object — all superseded by the platform chat. The `Chat` input action stays: the platform chat overlay opens through it.
🎁 Added
  • Exact-name matching for the ban console command — a partial match is now only a fallback, so ban bob can no longer ban "bobby" by accident.
  • Safety guard in the say command so it no longer crashes when no chat panel exists in the scene.
🧼 Improved
  • Noclip, Noclip Collision, and God Mode toggles reworked to a consistent authority model: the movement component flips locally on the owning client, while the synced scoreboard flags are set through host RPCs — matching the existing Freecam and Hotdog-model pattern.
  • Toggle notices (God Mode / Noclip enabled-disabled) now resolve their recipient from the player's ID instead of the RPC caller, so state cleared outside an RPC (e.g. an out-of-bounds death) can't notify the wrong player.
  • Kill feed entries, notices, and undo notifications are now host-only RPCs — modified clients can no longer forge them for everyone.
  • Chat message limit unified at 255 characters for both player and system messages, matching the patch notes.
  • Freecam overlay caches its post-processing components instead of reallocating them every frame.
  • Damage tag checks use the DamageTags constants instead of raw strings.
🪛 Fixed
  • The flatline sound now plays for every player when they die — previously only the host ever heard it.
  • Kill feed icons with non-square textures rendered at the wrong aspect ratio due to integer division.
  • Damage direction indicators accumulated indefinitely on other players' components; they are now only tracked for the local player.
  • The player.fall.death stat now counts fatal falls for every player (previously host-only) and no longer counts falls survived through God Mode.
  • Death camera could crash or snap to the world origin when the corpse's renderer or pelvis bone was missing.
  • The "you can only toggle collision in Noclip mode" warning was shown to every player on the server instead of just the one pressing the key.
  • Inverted assertion message in Notices.SendNotice.
🚯 Removed
  • Leftover debug logging (map identifier in the scoreboard, player-data dump on spawn).
  • Stale TODO comments in Vitals and Player.
  • Dead spring-damping code in the camera Shake effect.
  • Redundant self-lookups (Components.Get<Player>()) in the land/jump handlers.
  • Per-user Rider settings files from version control (kept on disk, now ignored).
⚠️ Known Issues
  • Bans and kick tracking live on the current host's machine only — after host migration, the new host enforces an empty list. Fixing this properly needs ban-list replication to potential hosts.
  • The toggle authority rework changed networking flow: worth a quick in-game check that noclip/God Mode icons and notices still behave correctly for a non-host client.
🎁 Added
  • Added real-time Human/Hotdog model swapping.
  • Press `H` at any time to switch models, including while using Freecam.
  • Added a model selector to the Freecam menu.
  • Added local notifications when switching models: `Switched to Human` and `Switched to Hotdog`.
  • Added separate Freecam controls for pausing your character and other players' animations.
  • Added separate animation-speed sliders for your character and other players, from paused to 2× speed.
  • Added Depth of Field controls for Freecam
🧼 Improved
  • Your character now stops moving when you enter Freecam instead of continuing to run.
  • Hold `TAB` while in Freecam to open its controls; the scoreboard stays hidden until you leave Freecam.
  • Camera smoothing and depth-of-field controls remain available in the Freecam menu.
  • Leaving Freecam restores all affected animation speeds.
  • Enabled the platform chat UI with a 255-character message limit.
  • Renamed hosted lobbies to `Walker Plus`.
🪛 Fixed
  • Fixed the host freezing every player when using Freecam.
  • Lobbies now transfer to the best available host instead of disbanding when the host leaves.
  • Increased the lobby capacity to 64 players.
  • Set the network tick rate to 30.
  • Players who fall out of bounds now die or safely return to a spawn point when protected by God Mode.
  • Fixed kill-count tracking.
  • Improved authority checks for respawning, fall damage, Noclip, God Mode, flashlight state, and player statistics.
🎁 Added
  • Added icons for achievements