1.2.24 — Required icons, Pulse.UI, and AI context
What changed
Icons now required on pages and groupboxes
The transpiler enforces that every page and groupbox declares a Lucide icon. Missing icons produce a clear TranspileError with a fix suggestion.
-- ✓ correct
page "Home" icon="house" {
groupbox left "Script Info" icon="info" {
mount ScriptInfo
}
}
-- ✗ transpile error: groupbox "Script Info" is missing an icon
page "Home" icon="house" {
groupbox left "Script Info" {
mount ScriptInfo
}
}
Common Lucide icon names: house swords pickaxe hammer coins map-pin eye crosshair zap user wrench mountain wallet utensils info building-2 mouse-pointer-click
Pulse.UI — imperative dynamic WindUI element builder
New adapter-level API for creating live-updating elements in after {} blocks. Solves the problem of elements that need dynamic content (dropdowns refreshed from game data, paragraphs with live values, etc.) without writing WindUI boilerplate.
after 0.1 {
local gb = Pulse.UI.gb(MyComponent) -- get mounted groupbox
if not gb then return end
-- Live-updating paragraph
local countPar = Pulse.UI.paragraph(gb, "Players", "loading...")
task.spawn(function()
while task.wait(5) do
countPar:setDesc(#game:GetService("Players"):GetPlayers() .. "/20")
end
end)
-- Refreshable dropdown
local drop = Pulse.UI.dropdown(gb, "uid", "Nation", getCivList(), nil, false, fn)
Pulse.UI.button(gb, "Refresh", nil, function() drop:refresh(getCivList()) end)
-- Nested section
local sec = Pulse.UI.section(gb, "Waypoints", "map-pin")
sec:button("Save Position", nil, function() MyComponent:Save() end)
}
All element constructors return a handle: :set(v) :setTitle(v) :setDesc(v) :refresh(vs) (dropdowns) :destroy()
Pattern for cross-block access — declare the handle in init {}, assign in after {}, use in func {}:
init { local _drop = nil }
after 0.1 { _drop = Pulse.UI.dropdown(...) }
func Refresh() { if _drop then _drop:refresh(getList()) end }
rb/CLAUDE.md — framework development context for AI
New top-level CLAUDE.md in the rb source tree covering: source layout, edit→install→test cycle, version bump checklist, transpiler architecture, icon requirement, Pulse.UI API, adapter interface, and deploy procedure. Any new AI session working on the framework picks this up automatically.