🎮 Game
A server administration framework for s&box games: chat/console commands, groups and permissions, moderation (kick, ban, mute, gag, gimp), an in-game ImGui admin menu, audit journaling with revisioned on-disk storage, alt-account detection from shared IPs and party IDs, votes, prop ownership, and a name-prefix system with a small interpreted effect language. It is put together as a host-side runtime (BootstrapRuntime, SuperuserSession) that builds services from owner config at startup plus a client half made of scene components and RPC facades on the static Superuser class. The package also vendors a C# Dear ImGui port for its menu and chat box, and the same source tree appears twice under Code/SboxSuperuser and SboxSuperuser.
🐞 Possible Bugs
Code/SboxSuperuser/Core/Effects/EffectLexer.csUnquote's Replace chain substitutes \n before \\, so a token like "a\\nb" (escaped backslash then n) comes out as a backslash plus an actual newline instead of the literal backslash+n the lexer's escape rules promise.
Code/SboxSuperuser/Core/Storage/StoreCoordinator.Recovery.csIn GetBackupsAsync and RecoverAsync the backup filename match is the same generationId substring, but RecoverAsync uses SingleOrDefault, which throws if two files share a generationId, and Decode for the selected backup sits outside the try/catch, so a damaged or unsupported backup throws instead of returning InvalidData.
Code/SboxSuperuser/Engine/Bodies/NoclipMoveMode.csUpdateMove ignores the passed-in eyes rotation and uses Controller.EyeAngles instead, so the view rotation the controller hands in is not the one used for flight direction.
Restore unconditionally sets body.Gravity to true, so a mode active before noclip that had gravity disabled does not get its state back.
Code/SboxSuperuser/Engine/Vendor/ImGui/ImGui.Table.csIn TableGetColumnFlags the `columnN == table.ColumnsCount` branch has the condition inverted: it returns IsHovered when HoveredColumnBody is -1 and None when a column is actually hovered, the opposite of what the flag means.
Code/SboxSuperuser/Superuser.Votes.csPublishVote calls ReceiveVote directly, but ReceiveVote rejects the call unless Rpc.Caller is the host connection, so the local snapshot is silently dropped when published on the host itself.
SboxSuperuser/Core/Commands/CommandCompletion.csTyping a trailing space after a partial command, like `/mess ` with a single-word `messages` command, makes `words.Split(' ')[finished.Length]` index past the end of the split array and throw IndexOutOfRangeException.