editorPanel assetType
A dock panel for the editor, expressed as an asset. A <name>.editorPanel/ folder whose init.luau returns the panel spec; the asset system registers it into the editor live (no restart) via the…
-- my_tools.editorPanel/init.luau
local Z = require("@builtin::modules.zui")
return {
label = "My Tools", -- tab title (defaults to the panel id)
menu = "scene", -- which top-bar menu it appears under
order = 50, -- sort position within the menu / dock
build = function(state) -- REQUIRED: returns the panel's widget tree
return Z.vbox({ Z.lbl("hello") })
end,
onCallback = function(id, data, state) return false end, -- optional
refresh = 0.5, -- optional: re-poll interval (seconds)
float = true, -- optional: open as a floating window
}
The panel id defaults to the instance name (my_tools.editorPanel → id
my_tools); set id in the spec to override. Registration is editor-profile
only — a shipped runtime build carries no editor panels even if the assets
are present. Editing the init.luau re-registers live; removing the asset drops
the panel.
The editor's own tools are editorPanel instances too — read any of them under
@builtin::editorPanels as a worked example.