Skip to main content

Changelog

This is the public-facing release log. Each entry covers what users can see, feel, or do differently, no internal refactor noise.

1.1.0, Argument types and lifecycle (2026-05-08)

Added

  • color arg type: a Color3 value with a smart-input textbox (accepts hex, RGB triples, or BrickColor names) and a clickable swatch that opens an HSV picker popup. Picker has a saturation/value square, hue slider, hex input, and preset palette. Built with UIGradient, no image assets. See argument types.
  • slider arg type: draggable thumb on a horizontal track for picking a numeric value within a range. Supports Min / Max / Step (defaults to integer snapping). Click anywhere on the track to jump + start a drag. See argument types.
  • propertyPicker arg type: like instance, but captures the value of a named property off the selected Instance instead of the Instance itself. Supports primitive, Color3, Vector3, UDim2, BrickColor, and other attribute-storable types directly; Instance-typed properties via the same __InstanceArg_<argId> ObjectValue side-channel instance uses. See argument types.
  • attributePicker arg type: same idea as propertyPicker but reads :GetAttribute(name) instead of a property. See argument types.
  • colorPicker arg type: specialized picker that captures a Color3-valued property (or BrickColor.Color) from the selected Instance. Card shows a swatch reflecting the captured color. See argument types.
  • Create Argument popup now has type-specific field forms for each new argument type, including smart-input Default parsing for color and Property/Attribute name fields for the picker types.
  • Clear / Clear Output: right-click an output arg card to get a top-of-menu Clear Output item that wipes the panel. Right-click an instance, propertyPicker, attributePicker, or colorPicker arg card to get a Clear item that resets the captured value.
  • Sidebar refreshes from external script changes: the sidebar now picks up scripts added or removed directly from ServerStorage.CommandRunnerScripts or ReplicatedStorage.CommandRunnerRuntime while the widget is open (e.g. dragging a ModuleScript in via Explorer). Previously this required a widget toggle when the containers started empty.
  • Settings popup: a gear icon in the TopBar opens a per-user preference panel. Toggles for live regen while typing, auto-open script editor on Add, follow-active-script, default AutoRecordChanges for new commands, hover tooltips, and sidebar tag chips. See settings.
  • Editable default command template: from Settings, click Edit on the Default command template row to materialize ServerStorage.CommandRunnerTemplate.Default (a ModuleScript + sibling Types). Edit it however you like, every new command becomes a :Clone() of Default, including any extra child Instances you parent under it (utility modules, additional Types, etc.). Reset deletes the template and falls back to the built-in seed.

Changed

  • Run signature is now (props, arguments)arguments is a typed second positional parameter (Types.ArgumentResult), replacing the older Types.Props<Types.ArgumentResult> generic pattern. Existing commands continue to work because props.Arguments is still populated, but typed access for new commands now goes through arguments.<key> directly. The Props type is no longer generic. See auto-generated types.
  • New lifecycle hooks: commands can now declare Validate(props), OnError(props, args, err), OnSelected(props), and OnDeselected(props) alongside the existing OnExecuted. See lifecycle hooks.
  • Auto-generated Types modules now map the new arg types to Luau types: colorColor3, slidernumber, propertyPicker / attributePickerany, colorPickerColor3. See auto-generated types.

Fixed

  • Modal click-through: the DarkFilter backdrop and all modal popup roots now have Active = true, so clicks on a popup or its dim no longer fall through to elements behind (sidebar entries, action buttons, arg cards). Affects Rename, Manage Tags, Library, Create Argument, and the new Color Picker.
  • Switch and boolean cards now reflect external attribute changes. Loading an argument preset that flips a switch or boolean value used to write the new value to the attribute but leave the card's visual state stale. Both card types now subscribe to script:GetAttributeChangedSignal and re-render (with the switch's slide animation) when the value changes for any reason.
  • No more console warning when toggling shortcuts off then on in the same session. The internal action registry no longer drops its cache on toggle-off, so toggling back on reuses the same PluginAction instead of trying to recreate it (which Roblox rejects mid-session).

1.0.0, Initial release (2026-05-07)

The first public release. Headline features:

  • Command authoring loop: create a command, edit a ModuleScript, press Execute. Auto-generated form UI from an Arguments schema.
  • Argument types: string, paragraph, number, boolean, switch, button, label, dropdown, instance.
  • Per-command argument presets: save and reload named snapshots of the current arguments.
  • Tags + sidebar filtering: tag commands, render chips, filter the sidebar with #tag syntax.
  • Runtime delivery: tag a command @client and the plugin ships it to ReplicatedStorage.CommandRunnerRuntime for require-time use from a LocalScript.
  • Cross-place personal library: save commands once and load them in any place.
  • Bundled Global commands: a curated set of ready-to-load utilities that ship with the plugin.
  • Auto-generated Luau types: each command's sibling Types module gets an ArgumentResult type regenerated on save. Annotate Run = function(props: Types.Props, arguments: Types.ArgumentResult) for full IntelliSense on arguments.<key>.
  • One-undo execution: every command runs inside a single ChangeHistoryService recording.
  • Notifications, tooltips, hover descriptions: all derived from the Description fields you write.

Format note

Future entries should follow this shape:

## X.Y.Z, Short title (YYYY-MM-DD)

### Added
-

### Changed
-

### Fixed
-

### Deprecated / Removed
-