Moderation menu - bundled ImGui view includes searchable players, offline Steam ID lookup, roles, restrictions, history, confirmations and private activity
Menu redesign - stock Dear ImGui look: Players and Activity sections on a top menu bar open movable windows; Players shows one table with the selected player below it, and a full Steam ID search opens offline players
Player shortcuts - right-click a player to copy their Steam ID or name or start a kick, mute or ban; recent reasons and the last duration are remembered per machine
About window - version, author, package and source link; owners also see installed modules and server status
Menu navigation - Superuser, Moderation and Server menus group the windows; open windows are checked
Bans & mutes - every active ban and text mute across all players, with Unban and Unmute that ask for a reason
Commands window - run any permitted command, including game module commands, from a form built from its arguments
Permissions window - owners edit groups, members and permission entries and check why a player has access; every edit is confirmed and audited
Activity filters - filter by command, actor and outcome, and page through older records
Player notes - private staff notes kept in moderation history through the new note command and admin.players.note permission
Warning counts - the player table shows each player's warnings to staff who can read history
Keyboard - Ctrl+F jumps to player search; Up and Down move through the player list
Recent chat - moderators see the last 100 public messages, kept only in server memory and never saved; needs the new admin.chat.read permission
Time remaining - active bans and mutes show how long they have left, such as in 2h 14m
Result pop-ups - finished actions appear briefly in the bottom-right corner
Replacement API - RequestAdminCommand and the Commands, Restrictions, Permissions and filtered activity queries
Pinned windows - a title-bar pin keeps a window on screen while the menu is closed; open windows, pins and positions are saved per machine and return after a restart
Replacement views - typed queries and exact-target actions return correlated private results without exposing ImGui or unrestricted console execution
Input ownership - configurable F6 binding and Escape close; removing the menu releases its panel and cursor while console and slash chat stay available
Custom backends - trusted host setup can select storage before bootstrap; versioned writes, recovery, audit retention and unavailable outcomes keep their existing semantics
Storage tutorial - includes a runnable adapter and setup component, exact placement instructions and database implementation requirements
Integration guide - documents the optional menu, replacement view and dedicated/editor storage selection
README screenshot - the top of the README shows the admin menu in game
Documentation structure - the README and docs follow one contents page with concepts, a tutorial, running guides and reference chapters for the host API, console commands and each admin menu window
README - opens with the admin menu screenshot instead of the logo and ends with the menu overview and license; known limits now live in the release status and dedicated-server pages
Project icon - adds a navy caped figure and shield as a scalable SVG, matching the Humanoid Retargeter logo style
Measured limits - actual dedicated pressure and persistence workloads now have a recorded environment, timings and bounded-capacity evidence
Security checks - repeated two-client privacy and injected storage failures confirm private errors and no disconnect after a failed ban write
Independent games - executable arena and colony examples map stable player IDs to different gameplay representations without changing the library
Optional capabilities - samples demonstrate default-denied permissions, explicit grants and Unsupported results when game services are absent
Operator commands - native admin help, access management, diagnostics and private audit queries use the authoritative dispatcher
Configured roots - bootstrap supports a logical root with a fixed native fallback and reports visible managed-name collisions
Private replies - authenticated remote console results go only to the requesting connection; retries retain one correlated audit record
Recovery diagnostics - local audit health remains inspectable when command auditing cannot write
Managed lifetimes - validates dependencies and API versions, stages startup atomically and cleans up tracked subscriptions
Owner controls - module enable and disable retain stored data and protect required security services
Bounded shutdown - removes entry points immediately, signals cancellation and prevents restart while old work remains active
Scene transitions - dedicated scene replacement retires old authority, removes listeners and preserves policy and moderation records
Source reload recovery - structural replacement retires runtime authority and requires a fresh session; stop before editing source because method-only reload does not reliably trigger this guard
Removable sample - verifies repeated module reload and failure rollback in the editor and an actual dedicated server
Slash commands - platform chat consumes exact /admin commands before dispatch and sends results only to the requester
Private help - chatbox help shows readable command details and pagination using the platform overlay
Chat validation - two real clients verify ordinary-chat pass-through, private errors and one attributed request per submission
Custom chat hooks - independent backends consume commands before broadcast and receive authenticated private results through a scene event
Chat examples - compiled platform and independent chatboxes demonstrate private feedback, request retries and ordinary-message checks
Result fallback - disabled views unsubscribe automatically and failing observers preserve the platform notification fallback
Unavailable sessions - enabled eligible bootstrap keeps player chat private while administration is unavailable
Explicit bindings - allowlisted native settings and commands use typed permissions and retain native restrictions
Setting commands - list, get, set and reset report actual native values with verified write readback
Persistence ownership - engine Saved variables stay engine-owned; framework values survive dedicated restart with distinct pending state
Failure recovery - native clamping and interrupted storage writes preserve the previous committed setting and report unconfirmed outcomes honestly
Actions - kick, ban, warnings, text mute and private history use current permissions and target protection
Admission - committed bans reject connections before gameplay; unavailable moderation history fails closed
Text mute - platform and independent chat enforce restrictions while slash commands retain private feedback
Persistent history - UTC expiry survives dedicated restart and linked revocations retain original records
Failure handling - failed ban writes leave players connected; explicit backup recovery restores history without resetting sanctions
Getting started - short Markdown chapters cover setup, a working ping command, custom chat and core APIs
Navigation - replaces implementation history and task labels with a linked guide and concise example-first README
Examples - verifies the guide snippets in a fresh game, including native dedicated ping and private client chat
Completion checks - verifies attributable Unknown outcomes across an actual dedicated-server interruption and restart
Validation - all 314 contract and Core tests pass and the actual engine references accept the library
Open key - pressing it again while the menu is open now closes the menu, unless you are typing in a text field
Escape - cancels a pending confirmation before it closes the menu
Logger examples - uses the engine's global Log in sample snippets so they compile in the adopting game
Owner protection - group ranks stop at 99 so a policy-editing owner cannot outrank and punish another owner
Private results - command messages and fields reject control characters that could forge extra console or chat lines
Reply routing - remote console replies require the original connection to remain in the live connection set