XLQP Gen1
Reference

October API additions

Current slider parameters, AI agent fields, new grid and subtab aliases, bytebeat options, macro controls, and runtime health APIs.

October API additions

This page records the API changes verified against the October 17, 2026 source. The bundled parameter registry contains example values; those strings are not guaranteed constructor defaults. The guides below describe defaults read from the implementation.

New elements

ConstructorPurposeDocumentation
AddSubTabsNested tab manager.Options and controllers
AddSubTabAutomatic shared nested-tab manager.Options and controllers
AddOptionGridSelectable cards with embedded elements.Options and controllers
AddElementGridResponsive columns of ordinary elements.Options and controllers
AddCustomSliderCompact preset wrapper around AddSlider.Custom sliders

Named slider stops

AddSlider now accepts Parameters, with Points, Stops, and Modes as alternatives. Each item may be a scalar or a table. Tables accept Name / Label / Text / Title, Value / Id / Key, Description / Desc / Content, Color / Accent, Color2 / Accent2, and Icon.

local Mode = Section:AddSlider({
    Name = "Effort",
    Parameters = {
        {Name = "Instant", Value = "Instant", Description = "Quick answers"},
        {Name = "Balanced", Value = "Balanced", Description = "Normal planning"},
        {Name = "Deep", Value = "Deep", Description = "More context"},
    },
    Default = "Balanced",
    Preset = "Compact",
    ShowDots = true,
    ParameterArrow = true,
    ShowParameterDescription = true,
    DotSize = 5,
    ActiveDotSize = 8,
    KnobWidth = 30,
    KnobHeight = 26,
    FormatParameter = function(value, index, parameter)
        return parameter.Name
    end,
    Callback = function(value, parameter, index)
        print(value, parameter.Name, index)
    end,
})
Mode:SetParameter("Deep")
local selected, index = Mode:GetParameter()
print(selected.Name, index)

The selected parameter value is passed to Callback(value, parameter, index). GetParameter() returns the normalized parameter and index; GetParameters() returns the normalized list. Other controller additions are SetParameter(value, instant, silent), SetDotsVisible, SetColor, GetColors, UsePlugin, and ApplyStyle.

Slider appearance and plugins

FieldsBehavior
Preset / StylePresetCompact, Thin, and ChatGPT select compact styling.
AllowSmall / AllowMiniPermits sizes below the compact preset's normal minimum.
Style / CustomStyleSlider-specific appearance table.
Plugin / CustomPlugin / SliderPluginFunction or event-hook table.
FormatParameter(value, index, parameter)Formats the visible named-stop value.
ShowDots, ParameterArrow, ShowParameterDescriptionEach defaults to true.
DotSize, ActiveDotSizeDefaults 5 and 8; clamped to valid sizes.
KnobWidth, KnobHeightDefaults 30 and 26; Style values take precedence.

The Style table accepts layout and appearance values used by the slider, including Height, TrackHeight, TrackX, TrackY, TrackRight, FullWidth, ValuePosition, TrackColor, TrackTransparency, FillColor, FillTransparency, ShowFill, UseParameterColors, KnobColor, ShowKnob, KnobWidth, KnobHeight, KnobStrokeColor, KnobStrokeThickness, ShowKnobStroke, ShowTrackStroke, ShowFrameStroke, FrameTransparency, TitleSize, TitleFont, TitleColor, ValueSize, ValueFont, and ValueColor.

A plugin table can provide Build, Changed, DragStart, and DragEnd, or corresponding On* names. Render is also accepted for Changed. Hooks receive the slider context followed by event values. A function plugin receives (context, event, ...).

Mode:UsePlugin({
    Changed = function(context, value, parameter, index)
        print("Selected", value, index)
    end,
})
Mode:ApplyStyle({KnobWidth = 32, KnobHeight = 30})

AI fields

AddTextbox({Ai = true}), CreateTextbox({Ai = true}), and AddXLQPGen1AI expose PermissionMode, Effort, AgentPlanner, WorkspaceTools, ShowContextDetails, MultilineInput, PromptTransform, and OnResponse, plus the new tool and task controllers. Read the complete AI agent guide.

Key-system replacement

The new gate adds local function validators, case-sensitivity controls, provider adapters, get-key menus, themes, notification styles, and new persistence behavior. Read the Key system guide before migrating old configurations; the old raw-key/hash precedence, signed-record path, and skip-button descriptions no longer apply.

Bytebeat render settings

AddBytebeat accepts Looped, Cache, FrameBudget, and WriteBlock. Presets may also supply their own renderer settings. The optimized renderer clamps frame budget to 0.001–0.02 seconds and write blocks to 256–32768 samples; its defaults are 0.004 and 4096. Looping defaults to enabled when not overridden.

local Bytebeat = Section:AddBytebeat({
    Name = "Bytebeat",
    Mode = "Bytebeat",
    Default = "t*(t>>5|t>>8)",
    Looped = true,
    Cache = true,
    FrameBudget = 0.004,
    WriteBlock = 4096,
})

Macro helpers

MethodBehavior
StartMacroRecording(name)Creates a recording with a name, start time, and action list.
StopMacroRecording(save)Stops recording; stores it in the runtime macro map unless save is false.
GetMacroNames()Returns names sorted case-insensitively.
DeleteMacro(name)Removes a recording from the runtime map.
PlayMacro(name)Replays actions asynchronously; returns false if missing or already playing.

These helpers use in-memory recordings. Do not assume they persist across sessions unless a separate persistence layer supplies that behavior.

Runtime health and music titles

Library:GetRuntimeHealth() returns Running, Destroyed, Connections, Popups, Schema, and StabilityMode.

Library:GetSmartMusicTitle(url, rawTitle) returns a cached or locally cleaned title and a cache-hit boolean. QueueSmartMusicTitle(url, rawTitle, callback) queues title cleanup, combines pending callbacks, and uses the title cache. A cached title is returned immediately.

Library:BindPress(button, callback) connects a button's Activated event and registers the connection for cleanup.

Compatibility names

Alias groupCanonical target
CreateSubTabs, SubTabsAddSubTabs
CreateSubTab, SubTabAddSubTab
CreateOptionGrid, OptionGridAddOptionGrid
CreateElementGrid, ElementGrid, AddWidgetGrid, CreateWidgetGrid, WidgetGridAddElementGrid
CreateCustomSlider, CustomSliderAddCustomSlider
CreateToggle, Toggle, AddSwitch, CreateSwitchAddToggle
CreateTextbox, Textbox, AddInput, CreateInputAddTextbox
CreateSlider, SliderAddSlider
CreateDropdown, DropdownAddDropdown
CreateButton, ButtonAddButton
CreateWindow, WindowMakeWindow compatibility entry points

Use table configurations in new code. Some older positional aliases accept a different calling shape.