Skip to content

v0.2.0: Log panel, client commands, custom themes

Latest

Choose a tag to compare

@cb12438 cb12438 released this 31 Aug 01:59
· 3 commits to main since this release

The first release after 0.1.0's initial cut. Everything here is additive. Existing setups keep working, and every path documented at 0.1.0 still resolves.

Install: download Operator.rbxm below and drag it into ServerStorage. See the Installation guide.

Added

Log panel. logs now opens a GUI panel rather than only printing lines. General command activity and moderation actions sit in separate streams, with search, day filters and paging.

Client commands. :runClient() declares a command that executes on the executor's own machine with no server round trip. Their audit records are marked source = "client", and the docs are explicit about what that does and does not prove.

Confirmation dialog. :destructive() commands now prompt in the console before running.

Custom themes. Client.Theme accepts a table of colour overrides as well as a built-in name. Overrides merge over the default, so a partial theme can never leave a token unset. All twelve tokens are overridable; layout and spacing are not.

Topbar icon. On keyboardless devices the console opens from a topbar icon drawn by TopbarPlus, which handles placement around Roblox chrome and safe areas. It falls back to the previous floating button if the game already runs an older copy.

Api.toggle(). Open, close or flip the console from your own code: a topbar icon, a settings menu, or your own keybind.

A real public API surface. Everything is reachable from the root require:

local Operator = require(ServerStorage.Operator)
local Command, Types = Operator.Command, Operator.Types

Editor support. Start returns a typed Handle instead of any, and Context is a real type rather than an alias for any, so context: and args. autocomplete and a typo is caught. Doc comments show on hover.

Changed

The Discord audit sink now sends embeds. One per record, batched ten to a message, coloured by outcome, with the executor's display name and headshot and arguments as readable key: value lines. Client-reported records are amber and carry a callout saying what is not verified. Audit.DiscordSend = "failures" forwards only what did not succeed.

Audit.Record gained executorDisplayName.

Documentation restructured. Fifteen guide pages in reading order, twenty API pages, and a new Introduction covering why you shouldn't use it.

Fixed

  • The log panel showed usernames in the display-name column.
  • :destructive() commands could not be confirmed from the console.
  • Command.Builder and friends resolved to nothing when required through Server/Command.
  • The log panel gated on a hardcoded role name rather than asking whether the player could run logs.

Notes

TopbarPlus is vendored unmodified under MPL-2.0. It adds 21 modules and 182 KB to the delivered bundle, taking it to 109 modules / 440 KB per authorised player, up from 86 / 235 KB. Client.UI = false still delivers only 21 modules / 75 KB, and Client.Icon = false skips the icon. Its licence text ships with the package, and LICENSE records what is vendored and under what terms.

309 Lune tests pass and the Luau type surface is clean under both the v1 and v2 solvers.

Full changelog: https://github.com/cb12438/Operator/blob/main/CHANGELOG.md