pulse-rb 1.2.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -0
- package/adapters/linoria.lua +233 -0
- package/adapters/windui.llms.txt +366 -0
- package/adapters/windui.lua +505 -0
- package/bin/rb.js +2 -0
- package/dist/index.js +3285 -0
- package/package.json +59 -0
- package/pulse/dev/debuggui.lua +1206 -0
- package/pulse/dev/devconfig.lua +81 -0
- package/pulse/dev/ui/9_DevPanel.lua +384 -0
- package/pulse/helpers/aim.lua +193 -0
- package/pulse/helpers/cache.lua +68 -0
- package/pulse/helpers/cleaner.lua +110 -0
- package/pulse/helpers/conn.lua +33 -0
- package/pulse/helpers/cooldown.lua +47 -0
- package/pulse/helpers/draw.lua +122 -0
- package/pulse/helpers/hitbox.lua +63 -0
- package/pulse/helpers/input.lua +24 -0
- package/pulse/helpers/log.lua +228 -0
- package/pulse/helpers/loop.lua +58 -0
- package/pulse/helpers/memory.lua +48 -0
- package/pulse/helpers/narrate.lua +160 -0
- package/pulse/helpers/notify.lua +51 -0
- package/pulse/helpers/perf.lua +48 -0
- package/pulse/helpers/remote.lua +128 -0
- package/pulse/helpers/restore.lua +59 -0
- package/pulse/helpers/store.lua +39 -0
- package/pulse/helpers/team.lua +83 -0
- package/pulse/helpers/testmode.lua +80 -0
- package/pulse/helpers/trace.lua +111 -0
- package/pulse/helpers/track.lua +85 -0
- package/pulse/helpers/vec.lua +52 -0
- package/pulse/helpers/world.lua +51 -0
- package/pulse/runtime.lua +343 -0
- package/pulse/ui/linoria_settings.lua +55 -0
- package/pulse/ui/windui_settings.lua +87 -0
- package/templates/AGENTS.md +177 -0
- package/templates/CLAUDE.md +424 -0
- package/templates/deploy_config.example +17 -0
- package/templates/example_esp.rblua +69 -0
- package/templates/example_fov.rblua +20 -0
- package/templates/example_speed.rblua +25 -0
- package/templates/gitignore +4 -0
- package/templates/globals.lua +66 -0
- package/templates/layout.rblua +28 -0
- package/templates/module.lua +7 -0
- package/templates/module.rblua +32 -0
- package/templates/page_home.rblua +9 -0
- package/templates/remote.lua +6 -0
- package/templates/remotes.lua +14 -0
- package/vscode/language-configuration.json +35 -0
- package/vscode/package.json +35 -0
- package/vscode/src/extension.js +397 -0
- package/vscode/syntaxes/rblua.tmLanguage.json +126 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
# Wind UI — LLM Reference (v1.6.64-fix)
|
|
2
|
+
# Source: https://footagesus.github.io/treehub-web/docs/windui
|
|
3
|
+
# GitHub: https://github.com/Footagesus/WindUI
|
|
4
|
+
|
|
5
|
+
## LOADING
|
|
6
|
+
|
|
7
|
+
```lua
|
|
8
|
+
local _version = "1.6.64-fix"
|
|
9
|
+
local WindUI = loadstring(game:HttpGet(
|
|
10
|
+
"https://github.com/Footagesus/WindUI/releases/download/" .. _version .. "/main.lua"
|
|
11
|
+
))()
|
|
12
|
+
-- Optional post-load config:
|
|
13
|
+
WindUI:SetNotificationLower(true) -- push notifications lower on screen
|
|
14
|
+
WindUI:SetFont("rbxassetid://id") -- custom font
|
|
15
|
+
WindUI:SetParent(Parent) -- where UI renders (default: CoreGui)
|
|
16
|
+
WindUI:SetTheme("Dark") -- global theme override
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## WINDOW
|
|
20
|
+
|
|
21
|
+
```lua
|
|
22
|
+
local Window = WindUI:CreateWindow({
|
|
23
|
+
Title = "string", -- required
|
|
24
|
+
Icon = "lucide-name"|"rbxassetid://id"|"url",
|
|
25
|
+
Author = "by name", -- subtitle
|
|
26
|
+
Folder = "FolderName", -- used by ConfigManager
|
|
27
|
+
Size = UDim2.fromOffset(w, h), -- default ~950x600
|
|
28
|
+
MinSize = Vector2.new(400,300),
|
|
29
|
+
MaxSize = Vector2.new(1920,1080),
|
|
30
|
+
Position = UDim2.fromScale(0.5,0.5),
|
|
31
|
+
Theme = "Dark", -- built-in or custom
|
|
32
|
+
Resizable = true,
|
|
33
|
+
Transparent = true,
|
|
34
|
+
Acrylic = true,
|
|
35
|
+
ToggleKey = Enum.KeyCode.RightControl,
|
|
36
|
+
HideSearchBar = false,
|
|
37
|
+
AutoScale = false,
|
|
38
|
+
NewElements = false,
|
|
39
|
+
OpenButton = { -- floating open button (MOBILE SUPPORT)
|
|
40
|
+
Enabled = true, -- show the button
|
|
41
|
+
Title = "Open", -- optional label
|
|
42
|
+
Draggable = true,
|
|
43
|
+
OnlyMobile = true, -- show only on mobile devices
|
|
44
|
+
Scale = 1,
|
|
45
|
+
CornerRadius = UDim.new(0,8),
|
|
46
|
+
StrokeThickness = 1,
|
|
47
|
+
Color = ColorSequence.new(Color3, Color3),
|
|
48
|
+
},
|
|
49
|
+
Topbar = {
|
|
50
|
+
Height = 40,
|
|
51
|
+
ButtonsType = "Default"|"Mac",
|
|
52
|
+
},
|
|
53
|
+
User = { ... }, -- show user avatar/name
|
|
54
|
+
KeySystem = { ... }, -- built-in key system
|
|
55
|
+
})
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Window methods:
|
|
59
|
+
- `:Tab(config)` → Tab
|
|
60
|
+
- `:Section(config)` → Section (window-level, appears in sidebar)
|
|
61
|
+
- `:Tag(config)` → Tag badge in topbar
|
|
62
|
+
- `:Dialog(config)` → Dialog
|
|
63
|
+
- `:SetTitle(str)`, `:SetAuthor(str)`, `:SetIcon(str)`, `:SetSize(UDim2)`
|
|
64
|
+
- `:SetToggleKey(Enum.KeyCode)` ← USE THIS for toggle key
|
|
65
|
+
- `:SetTheme(str)`, `:SetUIScale(n)`, `:GetUIScale()`
|
|
66
|
+
- `:SetPanelBackground(bool)`, `:ToggleTransparency(bool)`
|
|
67
|
+
- `:SetToTheCenter()`, `:Toggle()`, `:Open()`, `:Close()`, `:Destroy()`
|
|
68
|
+
- `:ToggleFullscreen()`, `:SelectTab(tab)`, `:LockAll()`, `:UnlockAll()`
|
|
69
|
+
- `:OnOpen(fn)`, `:OnClose(fn)`, `:OnDestroy(fn)`
|
|
70
|
+
- `:EditOpenButton(config)`
|
|
71
|
+
- `:DisableTopbarButtons(table)`, `:CreateTopbarButton(config)`
|
|
72
|
+
- `Window.ConfigManager:Config(name)` → Config
|
|
73
|
+
- `Window.CurrentConfig:Save()`, `Window.CurrentConfig:Load()`
|
|
74
|
+
|
|
75
|
+
## TAB
|
|
76
|
+
|
|
77
|
+
```lua
|
|
78
|
+
local Tab = Window:Tab({
|
|
79
|
+
Title = "string",
|
|
80
|
+
Icon = "string",
|
|
81
|
+
Desc = "string", -- tooltip
|
|
82
|
+
IconColor = Color3,
|
|
83
|
+
IconShape = "Square"|nil,
|
|
84
|
+
IconThemed = false,
|
|
85
|
+
Border = false,
|
|
86
|
+
Locked = false,
|
|
87
|
+
ShowTabTitle = false,
|
|
88
|
+
TabTitleAlign = "Left",
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Tab methods:
|
|
93
|
+
- `:Section(config)` → Section (see below)
|
|
94
|
+
- `:Button(config)`, `:Toggle(config)`, `:Slider(config)`, `:Dropdown(config)`
|
|
95
|
+
- `:Input(config)`, `:Keybind(config)`, `:Colorpicker(config)`
|
|
96
|
+
- `:Paragraph(config)`, `:Image(config)`, `:Divider()`, `:Space(config)`
|
|
97
|
+
- `:Group(config)` (DEPRECATED)
|
|
98
|
+
- `:Select()`, `:SetTitle(str)`, `:SetDesc(str)`, `:Lock()`, `:Unlock()`
|
|
99
|
+
- `:ScrollToTheElement(index)`
|
|
100
|
+
|
|
101
|
+
## SECTION (groupbox equivalent — used inside Tab)
|
|
102
|
+
|
|
103
|
+
```lua
|
|
104
|
+
local Section = Tab:Section({
|
|
105
|
+
Title = "string",
|
|
106
|
+
Desc = "string",
|
|
107
|
+
TextSize = number,
|
|
108
|
+
FontWeight = Enum.FontWeight,
|
|
109
|
+
Box = true, -- draws a bordered box around the section
|
|
110
|
+
BoxBorder = true, -- border on the box
|
|
111
|
+
Opened = true, -- expanded by default
|
|
112
|
+
})
|
|
113
|
+
-- Section has the same element methods as Tab:
|
|
114
|
+
-- Section:Toggle(...), Section:Button(...), etc.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## ELEMENTS — all work on Tab or Section container
|
|
118
|
+
|
|
119
|
+
### Toggle
|
|
120
|
+
```lua
|
|
121
|
+
local Elem = Container:Toggle({
|
|
122
|
+
Title = "string",
|
|
123
|
+
Desc = "string",
|
|
124
|
+
Icon = "string",
|
|
125
|
+
Type = "Toggle"|"Checkbox",
|
|
126
|
+
Value = false, -- initial state
|
|
127
|
+
Locked = false,
|
|
128
|
+
Flag = "flag_key", -- for config persistence
|
|
129
|
+
Callback = function(v: boolean) end,
|
|
130
|
+
})
|
|
131
|
+
Elem:Set(bool)
|
|
132
|
+
Elem:Toggle()
|
|
133
|
+
Elem:SetTitle(str), Elem:SetDesc(str)
|
|
134
|
+
Elem:Lock(), Elem:Unlock(), Elem:Highlight(), Elem:Destroy()
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Slider
|
|
138
|
+
```lua
|
|
139
|
+
local Elem = Container:Slider({
|
|
140
|
+
Title = "string",
|
|
141
|
+
Desc = "string",
|
|
142
|
+
Step = 1,
|
|
143
|
+
Width = 130,
|
|
144
|
+
IsTooltip = false,
|
|
145
|
+
IsTextbox = false,
|
|
146
|
+
Value = { Min = 0, Max = 100, Default = 50 },
|
|
147
|
+
Icons = { From = "icon", To = "icon" },
|
|
148
|
+
Flag = "flag_key",
|
|
149
|
+
Callback = function(v: number) end,
|
|
150
|
+
})
|
|
151
|
+
Elem:Set(number)
|
|
152
|
+
Elem:SetMin(n), Elem:SetMax(n)
|
|
153
|
+
Elem:SetTitle(str), Elem:SetDesc(str)
|
|
154
|
+
Elem:Lock(), Elem:Unlock(), Elem:Highlight(), Elem:Destroy()
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Dropdown
|
|
158
|
+
```lua
|
|
159
|
+
-- Values can be simple strings:
|
|
160
|
+
-- Values = {"A", "B", "C"}
|
|
161
|
+
-- Or rich objects:
|
|
162
|
+
-- Values = { {Title="A", Desc="desc", Icon="icon", Callback=fn, Locked=bool}, {Type="Divider"} }
|
|
163
|
+
|
|
164
|
+
local Elem = Container:Dropdown({
|
|
165
|
+
Title = "string",
|
|
166
|
+
Desc = "string",
|
|
167
|
+
Values = table,
|
|
168
|
+
Value = "default"|table, -- string for single, table for multi
|
|
169
|
+
Multi = false,
|
|
170
|
+
AllowNone = false,
|
|
171
|
+
SearchBarEnabled = false,
|
|
172
|
+
Locked = false,
|
|
173
|
+
Flag = "flag_key",
|
|
174
|
+
Callback = function(v: string|table) end,
|
|
175
|
+
})
|
|
176
|
+
Elem:Select(value) -- string or table
|
|
177
|
+
Elem:Refresh(newValues) -- replace options list
|
|
178
|
+
Elem:SetTitle(str), Elem:SetDesc(str)
|
|
179
|
+
Elem:Lock(), Elem:Unlock(), Elem:Highlight(), Elem:Destroy()
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Button
|
|
183
|
+
```lua
|
|
184
|
+
Container:Button({
|
|
185
|
+
Title = "string",
|
|
186
|
+
Desc = "string",
|
|
187
|
+
Icon = "string",
|
|
188
|
+
IconAlign = "Right"|"Left",
|
|
189
|
+
Color = Color3,
|
|
190
|
+
Justify = "Between"|"Center"|"Left",
|
|
191
|
+
Locked = false,
|
|
192
|
+
LockedTitle = "string",
|
|
193
|
+
Flag = "flag_key",
|
|
194
|
+
Callback = function() end,
|
|
195
|
+
})
|
|
196
|
+
-- methods: :SetTitle, :SetDesc, :Lock, :Unlock, :Highlight, :Destroy
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Keybind
|
|
200
|
+
```lua
|
|
201
|
+
local Elem = Container:Keybind({
|
|
202
|
+
Title = "string",
|
|
203
|
+
Desc = "string",
|
|
204
|
+
Value = "G", -- key name string e.g. "V", "RightControl"
|
|
205
|
+
Locked = false,
|
|
206
|
+
Flag = "flag_key",
|
|
207
|
+
Callback = function(v) end, -- fires when the bound key is pressed
|
|
208
|
+
})
|
|
209
|
+
Elem:Set(Enum.KeyCode)
|
|
210
|
+
Elem:SetTitle(str)
|
|
211
|
+
Elem:Lock(), Elem:Unlock()
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Input
|
|
215
|
+
```lua
|
|
216
|
+
Container:Input({
|
|
217
|
+
Title = "string",
|
|
218
|
+
Desc = "string",
|
|
219
|
+
Icon = "string",
|
|
220
|
+
InputIcon = "string",
|
|
221
|
+
Type = "Default"|"Textarea",
|
|
222
|
+
Placeholder = "string",
|
|
223
|
+
Value = "string",
|
|
224
|
+
Locked = false,
|
|
225
|
+
Flag = "flag_key",
|
|
226
|
+
Callback = function(v: string) end,
|
|
227
|
+
})
|
|
228
|
+
-- methods: :Set(str), :SetTitle, :SetDesc, :Lock, :Unlock, :Highlight, :Destroy
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Colorpicker
|
|
232
|
+
```lua
|
|
233
|
+
Container:Colorpicker({
|
|
234
|
+
Title = "string",
|
|
235
|
+
Desc = "string",
|
|
236
|
+
Default = Color3.fromRGB(255,255,255),
|
|
237
|
+
Transparency = 0,
|
|
238
|
+
Locked = false,
|
|
239
|
+
Flag = "flag_key",
|
|
240
|
+
Callback = function(color: Color3) end,
|
|
241
|
+
})
|
|
242
|
+
-- methods: :Set(Color3, transparency?), :Lock, :Unlock
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Paragraph
|
|
246
|
+
```lua
|
|
247
|
+
Container:Paragraph({
|
|
248
|
+
Title = "string",
|
|
249
|
+
Desc = "string",
|
|
250
|
+
Image = "url",
|
|
251
|
+
ImageSize = number,
|
|
252
|
+
Thumbnail = "url",
|
|
253
|
+
ThumbnailSize = number,
|
|
254
|
+
Color = "Red"|Color3,
|
|
255
|
+
TextSize = number,
|
|
256
|
+
Justify = "Center"|"Left",
|
|
257
|
+
Locked = false,
|
|
258
|
+
Buttons = { {Title="btn", Icon="icon", Variant="Primary", Callback=fn} },
|
|
259
|
+
})
|
|
260
|
+
-- methods: :SetTitle, :SetDesc, :SetImage(img, size?), :SetThumbnail(img,size?), :SetColor, :Destroy
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Divider
|
|
264
|
+
```lua
|
|
265
|
+
Container:Divider() -- no parameters
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Space
|
|
269
|
+
```lua
|
|
270
|
+
Container:Space({ Columns = 1 }) -- vertical gap, columns = spacing width
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Tag (badge in window topbar)
|
|
274
|
+
```lua
|
|
275
|
+
local Tag = Window:Tag({
|
|
276
|
+
Title = "string",
|
|
277
|
+
Icon = "string",
|
|
278
|
+
Color = Color3,
|
|
279
|
+
Border = false,
|
|
280
|
+
})
|
|
281
|
+
Tag:SetTitle(str), Tag:SetIcon(str), Tag:SetColor(Color3)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## NOTIFICATIONS
|
|
285
|
+
```lua
|
|
286
|
+
WindUI:Notify({
|
|
287
|
+
Title = "string",
|
|
288
|
+
Content = "string",
|
|
289
|
+
Icon = "string",
|
|
290
|
+
Duration = 3,
|
|
291
|
+
CanClose = true,
|
|
292
|
+
})
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## DIALOG
|
|
296
|
+
```lua
|
|
297
|
+
local D = Window:Dialog({
|
|
298
|
+
Title = "string",
|
|
299
|
+
Icon = "string",
|
|
300
|
+
Content = "string",
|
|
301
|
+
Buttons = {
|
|
302
|
+
{ Title="Yes", Icon="string", Variant="Primary", Callback=fn },
|
|
303
|
+
{ Title="No", Callback=fn },
|
|
304
|
+
},
|
|
305
|
+
})
|
|
306
|
+
D:Show()
|
|
307
|
+
D:Close()
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## POPUP
|
|
311
|
+
```lua
|
|
312
|
+
local P = WindUI:Popup({
|
|
313
|
+
Title = "string",
|
|
314
|
+
Icon = "string",
|
|
315
|
+
Content = "string",
|
|
316
|
+
Buttons = { {Title="OK", Callback=fn} },
|
|
317
|
+
})
|
|
318
|
+
P:Close()
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## THEMES
|
|
322
|
+
Built-in: "Dark" (and possibly others)
|
|
323
|
+
Custom:
|
|
324
|
+
```lua
|
|
325
|
+
WindUI:AddTheme({
|
|
326
|
+
Name = "MyTheme",
|
|
327
|
+
Accent = Color3.fromHex("#18181b"),
|
|
328
|
+
Background = Color3.fromHex("#101010"),
|
|
329
|
+
Outline = Color3.fromHex("#FFFFFF"),
|
|
330
|
+
Text = Color3.fromHex("#FFFFFF"),
|
|
331
|
+
Placeholder = Color3.fromHex("#7a7a7a"),
|
|
332
|
+
Button = Color3.fromHex("#52525b"),
|
|
333
|
+
Icon = Color3.fromHex("#a1a1aa"),
|
|
334
|
+
})
|
|
335
|
+
WindUI:SetTheme("MyTheme")
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## CONFIG PERSISTENCE (via Flag property + ConfigManager)
|
|
339
|
+
```lua
|
|
340
|
+
-- Elements with Flag = "key" auto-track their state.
|
|
341
|
+
local Cfg = Window.ConfigManager:Config("MyConfig") -- creates/loads MyConfig.json
|
|
342
|
+
Cfg:Save()
|
|
343
|
+
Cfg:Load()
|
|
344
|
+
|
|
345
|
+
-- Config files stored at:
|
|
346
|
+
-- [executor]/WindUI/[Window.Folder]/configs/MyConfig.json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## ICONS
|
|
350
|
+
- Lucide (default): `"save"`, `"bird"`, `"bell"`, etc.
|
|
351
|
+
- Prefixed sets: `"solar:pen-bold"`, `"craft:home"`, etc.
|
|
352
|
+
- Roblox asset: `"rbxassetid://123456789"` (+ IconThemed=true for theme tint)
|
|
353
|
+
- URL: `"https://example.com/icon.png"`
|
|
354
|
+
|
|
355
|
+
## MOBILE SUPPORT
|
|
356
|
+
Wind UI natively supports mobile via the OpenButton config:
|
|
357
|
+
```lua
|
|
358
|
+
OpenButton = {
|
|
359
|
+
Enabled = true,
|
|
360
|
+
OnlyMobile = true, -- only shows on mobile, hidden on desktop
|
|
361
|
+
Draggable = true,
|
|
362
|
+
Scale = 1,
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
No extra code needed — Wind UI handles touch input, scrolling, and resizing internally.
|
|
366
|
+
The toggle key still works on PC; the button provides the mobile open/close gesture.
|