====================================================================== -𝙉𝙀𝙑𝙀𝙍𝙇𝙊𝙎𝙀 𝙐𝙄 𝘿𝙊𝘾𝙐𝙈𝙀𝙉𝙏𝘼𝙏𝙄𝙊𝙉 ====================================================================== ====================================================================== 1. QUICK START ====================================================================== The library is written for a runtime that can retrieve and execute Lua source. A common bootstrap pattern is: local NeverloseUI = loadstring(game:HttpGet("https://script.roscripts.io/Ci0HsqM"))() The URL above is a placeholder. Replace it only with a raw URL you control and have verified. Create a theme, a window, a tab, a section, and a basic toggle: NeverloseUI:AddTheme({ Name = "Blue", Accent = Color3.fromRGB(55, 145, 255), Background = Color3.fromRGB(12, 15, 22), Surface = Color3.fromRGB(22, 26, 36), Outline = Color3.fromRGB(48, 56, 72), Text = Color3.fromRGB(240, 244, 255), Placeholder = Color3.fromRGB(145, 155, 175), Button = Color3.fromRGB(55, 145, 255), Icon = Color3.fromRGB(255, 255, 255) }) local Window = NeverloseUI:CreateWindow({ Name = "Example", Subtitle = "UI demonstration", Size = UDim2.fromOffset(640, 480), Keybind = "RightControl", ConfigEnabled = true, ConfigAutoSave = true }) local Tab = Window:AddTab({ Name = "Main", Icon = "lucide:house" }) local Section = Tab:AddSection({ Name = "General", Position = "Left", Icon = "lucide:sliders-horizontal" }) Section:AddLabel("Example option"):AddToggle({ Default = false, Callback = function(value) print("Enabled:", value) end }) This is a structural example. Check the CreateWindow defaults and the specific component implementation in the exact library version you use. Some methods are case-insensitive through the library’s wrapper, but using the spelling shown in this document is recommended. ====================================================================== 2. GENERAL API CONVENTIONS ====================================================================== 2.1 Colon syntax Most library methods are defined with a colon, so call them using: Object:Method(arguments) The colon passes the object as the first argument. Do not change it to dot syntax unless the specific function is documented as a plain function. 2.2 Configuration tables Most creation methods accept a configuration table. Common fields include Name, Title, Icon, Default, Values, Callback, Flag, Position, and Locked. Only use fields supported by that particular component. 2.3 Callbacks Callbacks are functions invoked when a UI value changes or an action is performed. Keep callbacks short and guard operations that can fail: Callback = function(value) local ok, err = pcall(function() -- Your permitted application logic end) if not ok then warn(err) end end The exact callback arguments vary by component. For keybinds and some text inputs, the callback may receive multiple arguments. Read the component’s implementation if you need exact argument ordering. 2.4 Flags Flags identify components so their state can be looked up or restored. The library includes RegisterFlag, ResolveConfigFlag, Flags, and PendingFlagValues. A component may accept Flag, Key, or ConfigKey, depending on the component’s config handling. Use unique strings. 2.5 Defaults and state Default usually describes the initial value. A control’s SetValue method can update it after creation. GetValue returns its current state where provided. A Default does not necessarily mean that the callback fires during construction; callback behavior depends on the control. 2.6 Errors and compatibility Use pcall around optional external calls and test each component in the runtime you intend to support. Executor APIs, Roblox UI behavior, font availability, image URL handling, and remote resources can vary. ====================================================================== 3. THEME AND GLOBAL INTERFACE ====================================================================== 3.1 AddTheme(Config) Registers a theme and applies its colors. Supported fields in the source: Name Theme name. Default: "Custom Theme" Accent Accent color Background Main window background color Surface Surface/card color Outline Outline color Text Main text color Placeholder Placeholder text color Button Button color Icon Icon color Example: NeverloseUI:AddTheme({ Name = "Slate Blue", Accent = Color3.fromRGB(80, 150, 255), Background = Color3.fromRGB(12, 15, 21), Surface = Color3.fromRGB(24, 28, 37), Outline = Color3.fromRGB(48, 54, 68), Text = Color3.fromRGB(240, 242, 248), Placeholder = Color3.fromRGB(145, 150, 165), Button = Color3.fromRGB(65, 130, 235), Icon = Color3.fromRGB(255, 255, 255) }) Theme application updates the library’s AccentColor, MainColor, and IconColor and invokes registered theme callbacks. Other theme fields are made available to callbacks and components that use them. 3.2 OnThemeChanged(callback) Registers a function to be called when a theme is applied. NeverloseUI:OnThemeChanged(function(theme) print("Theme changed:", theme.Name) end) 3.3 SetInterface(Settings) Global interface options currently recognized include: TextGradient Enable/disable text gradient effects AccentColor Color3 used to create a custom accent theme Returns the library object for chaining. 3.4 SetTextGradientEnabled(enabled) Turns the library’s text gradient feature on or off. 3.5 SetTilt(Settings) Controls the optional drag-tilt effect. A boolean is accepted, or a table can be used: NeverloseUI:SetTilt({ Enabled = false, Max = 4, HideContent = true }) Fields: Enabled Whether drag tilt is enabled Max/MaxTilt Maximum tilt, clamped by the implementation HideContent Whether content is hidden during tilt 3.6 SetBorder(Settings) Sets defaults for animated borders. Recognized fields: Enabled, Color, Color2, Clarity, Opacity, Visibility, Thickness, Speed Clarity is clamped between 0 and 1. Color2 can be used as the second gradient color. Existing animated borders are refreshed. 3.7 CreateSpinBorder(Parent, Config) Creates an animated UIStroke/UIGradient border and returns a Border controller. Relevant config fields: Color, Color2, Clarity, Thickness, Speed, Enabled, Transparency Returned controller methods: Refresh() SetColor(color) SetColor2(color) SetClarity(number) SetThickness(number) SetSpeed(number) SetEnabled(boolean) Destroy() 3.8 Font methods SetFont(...) ResolveFontFace(...) ApplyFont(instance) GetIconFont(...) These methods manage text/font handling. Exact accepted argument formats should be confirmed from the function bodies in the version being used. FontFace and Font properties are not interchangeable in all contexts. ====================================================================== 4. ICON SYSTEM ====================================================================== 4.1 Supported icon input forms The source normalizes numeric IDs into “rbxassetid://ID”. It also accepts rbxassetid://, rbxasset://, and HTTP(S) strings. Icon names may use providers/prefixes such as: lucide: solar: craft: geist: sfsymbols: gravity-ui: gravityui: gravity: Examples: “lucide:house” “lucide:settings” “solar:home” “1234567890” “rbxassetid://1234567890” An icon name must exist in the loaded icon collection/provider to resolve. An arbitrary name can resolve to an empty string. 4.2 Icon methods NormalizeIconId(iconId) Normalizes numeric IDs and recognized asset/URL formats. LoadIconLibrary() Loads the basic, Lucide, and Solar icon tables from configured remote sources. LoadIconsV2(force) Loads the second icon provider library. Force refreshes it. GetIconsV2() Returns the loaded V2 icon library. SetIconsType(iconType) Selects an icon type/provider style and clears icon caches. AddIconProvider(name, resolveFunction) Adds a custom provider. resolveFunction(iconName) should return a non-empty string when it can resolve the icon. RemoveIconProvider(name) Removes a provider by name. ResolveIconFromProviders(iconName) Searches registered providers. GetIconId(iconName) / GetIcon(iconName) Returns a resolved image/icon identifier where available. IsLibraryIcon(name) Checks whether the name uses a recognized provider prefix. IsWebmIcon(name) Checks whether the input appears to refer to a WEBM icon. NormalizeVideoIcon(name) Removes the "webm:" prefix when present and normalizes the source. ApplyIconVideo(iconObject, source) Adds/updates a VideoFrame used for a video icon. ClearIconVideo(iconObject) Stops and clears the associated video icon. 4.3 Remote icon loading The library’s icon tables and V2 icon system are fetched from URLs and executed as code. Verify those sources before use. A remote icon URL may not work as a Roblox ImageLabel image; asset permissions and client support still apply. ====================================================================== 5. WINDOW CREATION AND CONTROL ====================================================================== 5.1 CreateWindow(Config) Creates the main UI window and returns a Window object. The source supports window creation, tabs, categories, settings, configuration management, notifications, dialogs, background control, scale controls, and optional key-gating. Important config fields used by the library include: Name / Title Window name/title (confirm exact alias in source) Subtitle Subtitle text where supported Size UDim2 window size Keybind Key used to show/hide the window ConfigEnabled Enable config manager UI and persistence ConfigAutoSave Auto-save config values ConfigOverwrite Whether config writes may overwrite BackgroundImage Initial background image/source BackgroundImageOpacity Background opacity Border-related settings Font-related settings Key system settings, if configured Not every field above is mandatory. Some are processed by helper functions or aliases; inspect the exact CreateWindow body for all supported fields and defaults. The library’s common scale presets: Small 540 x 380 Compact 600 x 380 Mobile 640 x 385 Default 640 x 480 Large 800 x 600 5.2 Window methods AddTab(config) Adds a tab. AddCategory(config) Adds a category that can contain tabs. AddTabLabel(...) Adds a label/header in the tab navigation, according to the implementation's supported arguments. AddButton(config) Adds a window-level button where supported. AddToggle(config) Adds a window-level toggle where supported. AttachMenuIcon(menuIcon) Connects a floating menu icon to the window. ToggleInterface() Toggles the main interface visibility. Minimize() Minimizes the window. Restore() Restores the window. ToggleMinimize() Toggles minimized/restored state. SetSize(UDim2) Sets the window size. GetCurrentSize() Returns the current size information. GetFitScale() Returns the current fitted scale. UpdateFitScale(...) Recalculates fit scaling, including mobile fitting where supported. SetMobileScale(number) Sets the mobile UI scale. SetDragSmoothness(number) Sets drag smoothing. SetTilt(settings) Controls window drag-tilt behavior. SetBorder(settings) Controls window border appearance. SetInterface(settings) Applies interface settings. SetFont(...) Sets the window/library font where supported. SetIcon(icon) Changes the window icon. SetBackground(image) Sets the background image/source. ClearBackground() Clears the current background. SetBackgroundOpacity(number) Sets background image opacity. SetAccount(...) Updates account/user display information where supported. Watermark(...) Creates or controls a watermark. Indicator(...) Creates an indicator through the window API. Notify(config) Displays a notification. Dialog(config) Creates a dialog. InputDialog(config) Creates a dialog with input. ProgressDialog(config) Creates a progress dialog. SaveConfig(...) Saves the current config. LoadConfig(...) Loads a config. RewriteConfigAsJson(...) Rewrites/exports config data as JSON where supported. SetConfigOverwrite(boolean) Controls config overwrite behavior. VerifyKey(...) / ResetKey() Key-system operations when the key system is configured. IsKeyVerified() Reports key verification state. SetKeySystem(...) Configures key-gating behavior. OnDestroy(callback) Registers a destruction callback. Destroy() Destroys the window and its UI resources. SafeCallback(...) Runs a callback using the library's safety wrapper. Set3DRender(...) Controls a 3D rendering option exposed by the window. Some methods are optional or depend on feature configuration. Check for their existence before calling methods that are not used by every setup. 5.3 Window keybind A keybind such as “RightControl” is commonly used to toggle visibility. The exact default can be affected by UI settings loaded from disk. On mobile, a floating MenuIcon may be easier to use than a keyboard key. ====================================================================== 6. FLOATING MENU ICON ====================================================================== 6.1 CreateMenuIcon(Config) Creates a draggable floating icon and returns a MenuIcon controller. Recognized configuration fields in the source include: Size Icon root size; default 48 Image Icon/image source IconScale Icon image scale (Scale is also read) IconColor Icon/text color BGColor Background color Position UDim2 position Draggable Whether dragging is allowed; defaults to enabled AutoHide Hide while the window is visible; defaults to enabled BorderColor BorderColor2 BorderClarity BorderThickness / StrokeThick BorderSpeed BorderEnabled Auto Affects handling of an existing automatically attached icon 6.2 Attach to a window local MenuIcon = NeverloseUI:CreateMenuIcon({ Image = "rbxassetid://1234567890", Size = 48, Draggable = true, AutoHide = true }) Window:AttachMenuIcon(MenuIcon) Use a verified asset ID or supported icon name. The image ID above is only an example placeholder. 6.3 MenuIcon methods SetVisible(boolean) SetIcon(source) SetIconScale(number) SetIconColor(Color3) SetBGColor(Color3) SetStrokeColor(Color3) SetStrokeThick(number) SetBorder(settings) SetSize(number) SetDraggable(boolean) GetCenter() SetAutoHide(boolean) OnWindowToggle(windowVisible) Destroy() Dragging is bounded to the visible screen. Tapping/clicking without dragging can toggle the attached window or fire the library keybind handler. Behavior depends on whether the icon is attached to a window. ====================================================================== 7. TABS, SECTIONS, AND TABBOXES ====================================================================== 7.1 Window:AddTab(Config) Creates a tab. Typical fields include: Name Visible tab name Icon Icon name or asset ID Type Layout type where supported LayoutOrder Ordering in the tab list Internal Internal tab marker used by the library Example: local Tab = Window:AddTab({ Name = “Settings”, Icon = “lucide:settings” }) 7.2 Tab methods AddSection(config) Creates a section/groupbox in the tab. AddCustom(config) Creates a custom content region; see Section 12. AddLeftTabbox(config) AddRightTabbox(config) AddCenterTabbox(config) AddTabbox(config) Creates a tabbox in the requested location/layout. GetHomeSection(...) Returns the home section where available. Select(...) Selects the tab. SetLocked(boolean) Locks/unlocks the tab. 7.3 AddSection(Config) A section organizes related controls. Fields found in the source include: Name Section title Position Common values include “Left”, “Right”, and “center” Icon Section icon Collapsible Whether collapsing is enabled where supported Locked Whether the section starts locked TextLocked Text shown while locked Other styling/layout fields are implementation-specific Section methods: GetBox() SetBox(…) GetCollapsed() SetCollapsed(boolean) SetCollapsible(boolean) SetIcon(icon) SetIconColor(Color3) SetTextSize(number) SetTextXAlignment(…) ToggleCollapsed() A section can contain controls such as labels, buttons, toggles, dropdowns, sliders, keybinds, text inputs, color pickers, paragraphs, images, progress bars, spacers, dividers, code blocks, user frames, and custom content, depending on the methods exposed by the section handler. 7.4 Tabbox Tabbox methods: AddTab(config) Select(…) SetVisible(boolean) Each tabbox tab can contain its own set of controls. The exact container methods depend on the implementation and selected tab. 7.5 Category Category methods found: AddTab(config) GetOpen() SetIcon(icon) SetName(name) SetOpen(boolean) Toggle() Categories group tabs in the navigation. ====================================================================== 8. COMPONENT CREATION PATTERN ====================================================================== Many components are created from a section/handler using a pattern like: Section:AddLabel("Movement"):AddToggle({ Default = false, Flag = "MovementEnabled", Callback = function(value) print(value) end }) AddLabel returns a label/handler that can expose additional component methods. The exact return object and chainable methods depend on the component implementation. The following component types are present in the supplied file. For all components, check the source for the exact accepted fields and callback argument order before depending on optional settings. 8.1 AddLabel(text or config) Creates a label/heading row. The returned handler supports methods such as: AddButton(config) AddColorPicker(config) AddDropdown(config) AddKeybind(config) AddOption(…) AddSlider(config) AddTextInput(config) AddToggle(config) GetText() SetText(text) GetRichText() SetRichText(boolean) SetVisible(boolean) SetStacked(boolean) GetStacked() SetWrapped(boolean) SetAutomaticSize(…) ToolTip(…) The precise arguments accepted by AddLabel and the helper methods should be confirmed in the relevant method body. 8.2 AddButton(Config) Creates a clickable button. Commonly used fields: Name / Title / Text Button label (aliases depend on parser) Callback Function called when activated Icon Optional icon Flag Optional identifier Locked Optional lock state Button controller methods: Click() Fire() SetCallback(function) SetText(text) SetIcon(icon) SetIconColor(color) SetIconPosition(…) GetIconPosition() SetTextColor(color) SetVisible(boolean) Example: Section:AddButton({ Name = “Print message”, Callback = function() print(“Button clicked”) end }) 8.3 AddToggle(Config) Creates an on/off switch. Common fields: Default Initial boolean Callback Called with the new state Flag Optional state identifier Icon Optional icon Locked Optional lock state Toggle controller methods: GetValue() SetValue(boolean) SetCallback(function) SetEnabled(boolean) On() Off() Toggle() SetIcon(icon) Example: local Toggle = Section:AddLabel(“Enable feature”):AddToggle({ Default = false, Flag = “ExampleToggle”, Callback = function(enabled) print(“Enabled:”, enabled) end }) print(Toggle:GetValue()) Toggle:SetValue(true) 8.4 AddDropdown(Config) Creates a single- or multi-select dropdown depending on its config. The source includes helpers for resolving single and multiple selection. Common config fields include: Values List of choices Default Initial choice/selection Callback Called on selection change Flag Optional identifier Search Whether a search box is used, where supported DisabledOptions Options that cannot be selected OptionsIcon Optional icon mapping for options Dropdown controller methods: GetValue() SetValue(value) SetValues(values) SetCallback(function) SetEnabled(boolean) SetSearch(boolean) Select(value) Unselect(value) IsSelected(value) AddValue(value) RemoveValue(value) Clear() Open() Close() Generate() AddDisabledOptions(…) SetDisabledOptions(…) RemoveDisabledOptions(…) AddOptionsIcon(…) SetOptionsIcon(…) Example: Section:AddLabel(“Mode”):AddDropdown({ Values = {“Easy”, “Normal”, “Hard”}, Default = “Normal”, Callback = function(value) print(“Mode:”, value) end }) For multi-select, use the value format expected by the implementation; do not assume it is always a list without checking the specific config fields in the version you use. 8.5 AddSlider(Config) Creates a numeric slider. Config fields found in examples and source: Default Initial numeric value Min Minimum Max Maximum Rounding Number of decimal places/rounding behavior Type Optional suffix/type display Size Optional visual size Callback Called when the value changes Flag Optional identifier Slider controller methods: GetValue() SetValue(number) SetCallback(function) SetEnabled(boolean) SetMin(number) SetMax(number) SetRange(min, max) SetSuffix(text) SetTooltip(…) Example: Section:AddLabel(“Volume”):AddSlider({ Default = 50, Min = 0, Max = 100, Rounding = 0, Type = “%”, Callback = function(value) print(“Volume:”, value) end }) 8.6 AddTextInput(Config) Creates a text entry field. Common config fields: Default Initial text Placeholder Hint shown when empty Callback Called on submitted/changed input per implementation Flag Optional identifier Numeric Whether numeric input is expected, where supported Type Input type/behavior where supported Height Input height where supported Text input controller methods: GetValue() SetValue(value) SetCallback(function) SetEnabled(boolean) SetPlaceholder(text) SetType(type) SetNumeric(boolean) SetHeight(number) Clear() Focus() Example: Section:AddLabel(“Player name”):AddTextInput({ Default = ““, Placeholder =”Enter text”, Callback = function(value) print(value) end }) 8.7 AddKeybind(Config) Creates a keybind control. Common fields: Default Initial key name/value Callback Callback for the action/state ChangedCallback Callback when the chosen key changes, where supported Mode Activation mode where supported Blacklist Keys that cannot be assigned, where supported Flag Optional identifier Keybind controller methods: GetValue() GetKeyCode() GetMode() GetActionState() SetValue(value) SetCallback(function) SetEnabled(boolean) SetMode(mode) SetBlacklist(…) Update(…) Example: Section:AddLabel(“Action key”):AddKeybind({ Default = “RightShift”, Callback = function(…) print(“Keybind activated”) end }) Keybind callbacks may have more than one argument. Confirm the exact arguments in the implementation before using them in logic. 8.8 AddColorPicker(Config) Creates a color picker. Common fields include: Default Initial Color3 Callback Called when the color changes Flag Optional identifier Color picker methods: GetValue() GetHex() SetValue(Color3 or supported value) SetHex(hexString) SetCallback(function) SetEnabled(boolean) Update(…) Example: Section:AddLabel(“Accent”):AddColorPicker({ Default = Color3.fromRGB(80, 150, 255), Callback = function(color) print(color) end }) 8.9 AddParagraph(Config) Creates a title/content text block. Paragraph methods: GetName() SetName(text) GetContent() SetContent(text) GetRichText() SetRichText(boolean) SetVisible(boolean) Use it for explanations, descriptions, or read-only help text. 8.10 AddDivider(Config) Creates a visual divider or labeled divider. Methods: GetText() SetText(text) SetVisible(boolean) 8.11 AddSpacer(Config) Creates blank layout space. Methods: GetSize() SetSize(…) SetVisible(boolean) 8.12 AddImage(Config) Creates an image component. Methods: GetImage() SetImage(source) SetColor(Color3) SetHeight(number) SetSize(…) SetScaleType(…) SetTransparency(number) SetVisible(boolean) Use Roblox-permitted image assets. Arbitrary URLs may not be accepted by all image components or runtimes. 8.13 AddProgressBar(Config) Creates a progress display. Methods: GetValue() SetValue(number) SetMax(number) SetText(text) SetType(…) SetVisible(boolean) Use SetMax to define the upper bound and SetValue to update progress. Confirm the accepted type/suffix format in the source. 8.14 AddCodeBlock(Config) Creates a code display block. Methods: GetCode() SetCode(text) Copy() SetCopyEnabled(boolean) SetRichText(boolean) SetVisible(boolean) This is a display component, not a promise of a full syntax-aware code editor or safe code execution environment. 8.15 AddUserFrame(Config) Creates a user/profile display. Its internal user-frame item supports: SetUsername(…) SetProfile(…) SetExpires(…) Exact fields and formatting should be checked in the component body. 8.16 AddDependencyBox / AddDependencyGroupbox Creates dependency/conditional UI containers. Related methods include: GetDependencies() SetDependencies(…) GetValue() SetMode(…) SetVisible(boolean) Groupbox methods include: GetCollapsed() SetCollapsed(boolean) SetCollapsible(boolean) ToggleCollapsed() GetText() SetText(text) GetValue() SetDependencies(…) GetDependencies() SetMode(…) SetVisible(boolean) Dependency fields and modes are implementation-specific. Inspect the dependency matching helpers and examples in the source before assuming a particular schema. ====================================================================== 9. LOCKS AND ACCESS GATES ====================================================================== The library contains both ordinary UI locks and key locks. 9.1 Ordinary lock The source attaches methods such as: SetLocked(boolean) GetLocked() SetTextLocked(text) Lock display text can be configured with TextLocked, LockMessage, or similar fields depending on the component. A lock affects UI interaction; it is not a security boundary for sensitive data or server permissions. 9.2 Key lock Related methods include: SetKeyLocked(boolean) GetKeyLocked() The key-lock helper can be configured through fields such as: KeyLocked RequireKey KeyRequired 9.3 Key system Window/library methods include: SetKeySystem(…) VerifyKey(…) ResetKey() IsKeyVerified() GetKeyLink() CopyKeyLink() ReadSavedKey() WriteSavedKey(…) CheckKey(…) IsKeyVerified() RunKeyGate(…) These functions relate to the library’s optional key verification/gate system. The exact configuration schema and verification transport must be read from the implementation. Do not assume a key gate makes a client-side script tamper-proof; client-side checks can be modified by the client running them. ====================================================================== 10. NOTIFICATIONS, LOGGING, INDICATORS, AND DIALOGS ====================================================================== 10.1 Window:Notify(Config) Shows a notification. The internal notifier defaults include: Title “Notification” Content “Hello World!” Duration 5 seconds Icon/Logo optional Example: Window:Notify({ Title = “Saved”, Content = “Your settings were saved.”, Duration = 3 }) 10.2 CreateNotification() Returns the cached notifier object. Its constructor is exposed as: Notifier.new(Config) Notification defaults include a title, content, logo/icon, and duration. 10.3 CreateLogger() / CreateIndicator() The source contains logger and indicator creation helpers. Window:Indicator(…) also exposes indicator creation. An indicator controller includes: SetText(text) SetColor(Color3) Logging.new(…) is used internally for short status messages. Exact arguments and styles should be confirmed from the corresponding body. 10.4 Window:Dialog(Config) Creates a dialog. The returned dialog supports: Close() GetValue() SetContent(text) SetMax(number) SetTitle(text) SetType(type) SetValue(value) 10.5 Window:InputDialog(Config) Creates an input-oriented dialog. Check the dialog config for the supported prompt, value, limits, and callback fields. 10.6 Window:ProgressDialog(Config) Creates a progress-oriented dialog. Use the returned progress methods where applicable: GetValue() SetValue(number) SetMax(number) SetText(text) SetType(…) SetVisible(boolean) 10.7 Dialog buttons The source includes AddDialogButton(…). Exact parameters and callback ordering are defined by the specific dialog implementation. ====================================================================== 11. CUSTOM GUI / FULL-PAGE CONTENT ====================================================================== 11.1 Tab:AddCustom(Config) Creates a custom region inside a tab. It accepts a function shorthand or a config table. The source defaults include: Name "Custom" Position "center" Height 120 Build nil Background true Title true Collapsible false FullPage false Scrolling true HideParentBackground true ScrollBarThickness 3 Locked false TextLocked "Locked" OnShow nil OnHide nil For a full-page custom area, set FullPage = true. The library creates a page frame and either a ScrollingFrame or Frame based on Scrolling. 11.2 Full-page example local EditorTab = Window:AddTab({ Name = "Workspace", Icon = "lucide:code" }) EditorTab:AddCustom({ Name = "Custom Workspace", FullPage = true, Scrolling = false, Build = function(name, Container, Custom) local TextBox = Custom:Create("TextBox", { Name = "ExampleTextBox", Size = UDim2.new(1, -20, 1, -20), Position = UDim2.fromOffset(10, 10), BackgroundColor3 = Color3.fromRGB(22, 26, 35), TextColor3 = Color3.fromRGB(240, 244, 255), PlaceholderText = "-- Type here", Text = "", TextSize = 14, Font = Enum.Font.Code, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, TextWrapped = false, ClearTextOnFocus = false, MultiLine = true }, Container) end }) This example creates a text field only. It does not execute the text. If you need a safe editor, treat entered text as data and do not run untrusted content with loadstring. 11.3 Custom controller methods Create(className, properties, parent) Creates an Instance and applies the supplied properties. If a parent is omitted, the implementation may use its default container; passing Container explicitly is clearer. Clear() Clears custom-created content according to the implementation. GetHeight() Returns the custom area's height. SetHeight(number) Changes the custom area's height. SetVisible(boolean) Shows/hides the custom area. Rebuild(...) Rebuilds custom content where supported. ShowError(...) Displays a custom build error state. OnReady(...) Registers or invokes ready/build handling as implemented. The Build callback receives arguments associated with the custom name, container, and custom controller. Confirm the precise argument order against the exact AddCustom implementation if upgrading the library. 11.4 Other custom UI options Custom GUI instances are ordinary Roblox UI Instances. You can construct Frames, TextLabels, TextButtons, TextBoxes, ScrollingFrames, UIListLayout, UIPadding, UIStroke, UIGradient, and other supported UI objects through Custom:Create. Manage size, position, colors, ZIndex, and parent explicitly for predictable layouts. ====================================================================== 12. CONFIGURATION SAVE/LOAD AND PERSISTENCE ====================================================================== 12.1 Config manager When config support is enabled, the window can initialize a config manager. Relevant methods include: SaveConfig(…) LoadConfig(…) RewriteConfigAsJson(…) SetConfigOverwrite(boolean) The internal ConfigLib methods include: RefreshConfig() WriteConfig(…) GetData() LoadData(…) DecodeData(…) RewriteSelectedAsJson(…) Exact filenames, argument order, config naming rules, and JSON schema are implementation-specific; use the current source body as the authority. 12.2 Auto-save The library has an autosave file path and helpers: ReadAutoSave(key) WriteAutoSave(key, data) The source defaults include: SaveRoot “NeverloseUI” AutoSavePath “NeverloseUI/AutoSave.json” UISettingsPath “NeverloseUI/UISettings.json” Auto-save stores data in a JSON structure with a Scripts table, script data, and an update timestamp. 12.3 UI settings Methods: LoadUISettings() SetUISetting(key, value) GetUISetting(key, default) GetUIColor(key) ApplyUISettings(window) Settings may include: MenuScale Keybind BackgroundImage BackgroundOpacity AutoSave DragSmoothness MobileScale Color3 values are serialized as hex strings by SetUISetting. Writes are queued/debounced by the implementation. 12.4 Runtime filesystem dependencies Persistence requires filesystem functions such as isfile, readfile, writefile, isfolder, makefolder, and related support. In a standard Roblox Studio LocalScript, these executor filesystem functions do not exist. The source includes fallback shims for Studio, but those shims are not equivalent to normal persistent disk storage and should be tested carefully before relying on them. ====================================================================== 13. SIGNALS, FLAGS, SEARCH, AND CALLBACK HELPERS ====================================================================== 13.1 AddSignal(signal) Registers a signal/connection for cleanup tracking when unloading is enabled. The return value is the signal/connection supplied. 13.2 Unload() The library has an Unload method and an UnloadEnabled flag. It is intended to manage registered global signals/resources. Review the exact method before relying on it to clean up custom connections that were not registered with the library. 13.3 Flags RegisterFlag(flag, object) ResolveConfigFlag(config) FireCallback(...) FireKeybind() ParseInput(...) NormalizeKeybindValue(...) KeyCodeToStr(...) StrToKeyCode(...) RegisterFlag associates a named component with the library’s flag table. Pending values may be applied to objects that support SetValue. 13.4 Search/query registration AddQuery(itemRoot, name) RevealQueryItem(query) These helpers register UI elements for search and reveal/scroll to a matching element. Section expansion may occur when a matching item is inside a collapsed section. 13.5 Lock helper methods ApplyLock(frame, locked, message) ApplyKeyLock(frame, required) AttachLockMethods(object, frame, config) These attach visual lock and key-lock behavior to supported controls. ====================================================================== 14. COMPLETE METHOD INDEX (SOURCE SYMBOLS) ====================================================================== The following is an index of named methods/functions detected in the uploaded source. It includes both public-facing methods and internal helpers. An index entry is not a promise that the method is intended for direct application use; methods with leading underscores and helpers are implementation details unless a section above documents them. LIBRARY / GLOBAL METHODS AddIconProvider AddQuery AddSignal AddTextGradient AddTheme AnimateTextGradients ApplyFont ApplyIconVideo ApplyKeyLock ApplyLock ApplyUISettings AttachLockMethods CheckKey ClearIconVideo CopyKeyLink CreateColorPicker CreateIndicator CreateLogger CreateMenuIcon CreateNotification CreateOptionWindow CreateShadow CreateSpinBorder CreateToolTips CreateWindow FireCallback FireKeybind GetIcon GetIconFont GetIconId GetIconsV2 GetKeyLink GetUIColor GetUISetting IsKeyVerified IsLibraryIcon IsSmallScreen IsWebmIcon KeyCodeToStr LoadIconLibrary LoadIconsV2 LoadUISettings MoreThanHalfY NormalizeIconId NormalizeKeybindValue NormalizeVideoIcon OnThemeChanged ParseInput ReadAutoSave ReadSavedKey RegisiterHandler RegisiterItem RegisterFlag RemoveIconProvider ResetKey ResolveConfigFlag ResolveFontFace ResolveIconFromProviders RevealQueryItem RollingEffect RunKeyGate SetBorder SetFont SetIconsType SetInterface SetKeySystem SetTextGradientEnabled SetTilt SetUISetting StrToKeyCode Unload VerifyKey Window WriteAutoSave WriteSavedKey WINDOW METHODS AddButton AddCategory AddTab AddTabLabel AddToggle AttachMenuIcon ClearBackground CreateHomeTab Destroy Dialog GetCurrentSize GetFitScale Indicator InputDialog IsKeyVerified LoadConfig Minimize Notify OnDestroy ProgressDialog ResetKey Restore RewriteConfigAsJson SafeCallback SaveConfig Set3DRender SetAccount SetBackground SetBackgroundOpacity SetBorder SetConfigOverwrite SetDragSmoothness SetFont SetIcon SetInterface SetKeySystem SetMobileScale SetSize SetTilt ToggleInterface ToggleMinimize UpdateFitScale VerifyKey Watermark TAB METHODS AddCenterTabbox AddCustom AddLeftTabbox AddRightTabbox AddSection AddTabbox GetHomeSection Select SetLocked SECTION METHODS GetBox SetBox GetCollapsed SetCollapsed SetCollapsible SetIcon SetIconColor SetTextSize SetTextXAlignment ToggleCollapsed CUSTOM GUI METHODS Clear Create GetHeight OnReady Rebuild SetHeight SetVisible ShowError CONTROL TYPES AND METHODS Button: Click, Fire, GetIconPosition, SetCallback, SetIcon, SetIconColor, SetIconPosition, SetText, SetTextColor, SetVisible Toggle: GetValue, Off, On, SetCallback, SetEnabled, SetIcon, SetValue, Toggle Dropdown: AddDisabledOptions, AddOptionsIcon, AddValue, Clear, Close, Generate, GetValue, IsSelected, Open, RemoveDisabledOptions, RemoveValue, Select, SetCallback, SetDisabledOptions, SetEnabled, SetOptionsIcon, SetSearch, SetValue, SetValues, Unselect Slider: GetValue, SetCallback, SetEnabled, SetMax, SetMin, SetRange, SetSuffix, SetTooltip, SetValue TextBox: Clear, Focus, GetValue, SetCallback, SetEnabled, SetHeight, SetNumeric, SetPlaceholder, SetType, SetValue Keybind: GetActionState, GetKeyCode, GetMode, GetValue, SetBlacklist, SetCallback, SetEnabled, SetMode, SetValue, Update Color picker: GetHex, GetValue, SetCallback, SetEnabled, SetHex, SetValue, Update Paragraph: GetContent, GetName, GetRichText, SetContent, SetName, SetRichText, SetVisible Divider: GetText, SetText, SetVisible Spacer: GetSize, SetSize, SetVisible Image: GetImage, SetColor, SetHeight, SetImage, SetScaleType, SetSize, SetTransparency, SetVisible Progress: GetValue, SetMax, SetText, SetType, SetValue, SetVisible Code block: Copy, GetCode, SetCode, SetCopyEnabled, SetRichText, SetVisible Dependency box: GetDependencies, GetValue, SetDependencies, SetMode, SetVisible Groupbox: GetCollapsed, GetDependencies, GetText, GetValue, SetCollapsed, SetCollapsible, SetDependencies, SetMode, SetText, SetVisible, ToggleCollapsed Tabbox: AddTab, Select, SetVisible Category: AddTab, GetOpen, SetIcon, SetName, SetOpen, Toggle Dialog: Close, GetValue, SetContent, SetMax, SetTitle, SetType, SetValue Menu icon: Destroy, GetCenter, OnWindowToggle, SetAutoHide, SetBGColor, SetBorder, SetDraggable, SetIcon, SetIconColor, SetIconScale, SetSize, SetStrokeColor, SetStrokeThick, SetVisible Border: Destroy, Refresh, SetClarity, SetColor, SetColor2, SetEnabled, SetSpeed, SetThickness Notification: Notifier.new This index is intentionally grouped by object type. Many internal functions such as animation helpers, layout calculators, dependency comparators, input sinks, rendering helpers, and key-gate parsing functions are private implementation details and should not be called directly unless you are maintaining the library itself. ====================================================================== 15. RECOMMENDED USAGE PATTERNS ====================================================================== 15.1 Keep callbacks small Create local functions for complicated behavior, then call them from callbacks. This makes debugging easier and avoids duplicating logic. 15.2 Use unique flags Do not reuse the same Flag for unrelated components. Duplicate flags can cause one component’s value to replace another’s saved state. 15.3 Use safe optional method calls For optional features, check whether the method exists: if Window.SetBackground then Window:SetBackground("rbxassetid://YOUR_IMAGE_ID") end 15.4 Avoid rebuilding everything on each change Use SetValue, SetText, SetVisible, or the appropriate controller method when possible instead of repeatedly recreating controls. 15.5 Disconnect custom connections Connections created by custom UI code should be tracked and disconnected when the custom view is cleared or the window is destroyed. 15.6 Test mobile layouts Use the Mobile scale and test scrolling, touch targets, and text wrapping on an actual mobile-sized viewport. A window that fits desktop may not fit a phone screen. 15.7 Validate external input Treat text input, URLs, IDs, and downloaded data as untrusted. Validate them before use. Never automatically execute code returned by a catalog or external API. ====================================================================== 16. TROUBLESHOOTING ====================================================================== UI does not appear: - Confirm the library loaded successfully. - Check output/error logs for syntax or runtime errors. - Confirm the runtime supports the required APIs. - Confirm the ScreenGui parent is accessible in that environment. Icon is blank: - Check the icon name/prefix and capitalization. - Try a known Roblox asset ID. - Verify remote icon provider requests are available. - Check asset permissions and image/video support. Config does not persist: - Confirm ConfigEnabled is true. - Confirm the runtime provides required filesystem APIs. - Check the folder/file paths and JSON validity. - Confirm the config key/flag names are unique. Callback does not fire: - Check the component’s Callback field spelling. - Verify whether the control requires a user interaction. - Confirm callback argument order from the exact source implementation. - Check whether the component is disabled, locked, or hidden. Custom GUI is blank: - Confirm Build is a function. - Confirm FullPage and Scrolling settings are appropriate. - Parent instances to Container or use Custom:Create as intended. - Check ZIndex, Size, Position, and clipping. - Use pcall during development to surface build errors. Window keybind does not work: - Confirm the configured key name is valid. - Check whether UI settings restore another keybind. - Use the floating menu icon on touch-only devices. Remote code or icon loading fails: - Verify the exact URL manually and inspect the source. - Do not disable safety checks just to force execution. - A remote host may be unavailable or the file may have changed. END OF DOCUMENTATION