Configuration

Ember.Configure — storage, themes, effects and window defaults, set once for the whole script.

Ember.Configure sets defaults for everything your script creates. Call it before Ember.new.

Luau
Ember.Configure({
    Storage = { Folder = "myscript" },
    Themes  = { Default = "Midnight" },
    Window  = { SaveLayout = true },
})

Everything is optional, and unspecified values keep their defaults.

Storage#

OptionTypeDefaultWhat it does
EnabledbooleantrueSet false to disable all disk writes, whatever individual controls ask for.
Folderstring"ember"Folder under the executor's workspace.
Filestring"settings"File name inside that folder.
Debouncenumber0.4Seconds to wait before writing, so a dragged slider does not write per frame.
UniquebooleanfalseClaim the folder, suffixing _2, _3 if another owner has it.
OwnerstringIdentity for that claim. Defaults to the folder name.

See Saving settings.

Themes#

OptionTypeDefaultWhat it does
Defaultstring"Dark"The theme new windows open with.
Onlystring[]Restrict the selectable list to exactly these, in this order.
Hidestring[]Remove these from the selectable list.
CustomtableRegister custom palettes at configure time.

Effects#

The dissolve, the particles and the toast animations.

OptionTypeDefaultWhat it does
EnabledbooleantrueSet false for no animation at all.
RespectReducedMotionbooleanfalseHonour Roblox's ReducedMotionEnabled accessibility flag.
Qualitystring"Balanced"Overall effect budget.
MaxTilesnumber460Tiles the dissolve breaks the window into.
Samplesnumber3Colour samples per tile. 3 is what makes a control read as itself in the mosaic.
Particlesnumber52Sparks trailing the dissolve edge.
ToastParticlesnumber14Sparks on a notification.
MaxToastsnumber5How many notifications stack before the oldest is dismissed.

RespectReducedMotion is off on purpose

Roblox reports that flag from an accessibility setting most players never knowingly touched. Honouring it by default meant the library silently deleted the dissolve with no message and nothing to explain it. That reads as a broken install, not an accommodation. Turn it on if your audience chose the setting on purpose.

Lowering the budget on weaker machines:

Luau
Ember.Configure({
    Effects = { MaxTiles = 200, Particles = 20 },
})

Or turning animation off entirely:

Luau
Ember.Configure({ Effects = { Enabled = false } })

Window#

Defaults for every window created afterwards. Each is overridable per window on Ember.new.

OptionTypeDefaultWhat it does
SizeVector2Vector2.new(700, 452)Starting size.
MinSizeVector2Vector2.new(560, 300)Resize floor.
MaxSizeVector2Resize ceiling. Defaults to the viewport.
PositionVector2Where windows open. Centred if unset.
Railnumber176Sidebar width.
MinRailnumber132Narrowest sidebar.
MaxRailnumber320Widest sidebar.
MinContentnumber300The content pane never shrinks past this.
SearchbooleanfalseWindow-wide search box in the rail.
SaveLayoutbooleanfalseRemember geometry per window.
SafeAreabooleantrueKeep windows inside the usable viewport.
ReplaceExistingbooleantrueRe-running the script replaces its window instead of stacking.

Reading it back#

Luau
Ember.Config.Storage.Folder   --> "ember"
Ember.Config.Effects.MaxTiles --> 460

A typical setup#

Luau
local Ember = loadstring(game:HttpGet('https://rbx.lol/ember.lua'))()
 
Ember.Configure({
    Storage = {
        Folder = "bloxburg-helper",
        Owner  = "bloxburg-helper",
        Unique = true,
    },
    Themes = {
        Default = "Midnight",
        Only    = { "Dark", "Midnight", "Nord", "Ember" },
    },
    Window = {
        SaveLayout = true,
        Search     = true,
    },
})
 
local win = Ember.new({ Title = "Bloxburg Helper", Subtitle = "v2.1" })