Changelog
Every lation ui release, newest first, with what it added, changed and fixed.
A rebuilt theme editor with a gallery of presets, three new presets including a light one, colors that read on light themes, and fixes for limits of 0, date ranges, the radial key and progress bar props.
Added
- A rebuilt theme editor behind
/uithemeand/uisettings, laid out like the admin panels of lation jobs, lation shops and lation banking. Its pages sit in a rail down the side, and the editor itself wears the theme as you edit it, so it is the preview. Nothing reaches players until you save.- Presets is a gallery of cards, each a real notification and menu in that preset's look. One click re-themes the whole editor. The preset your theme is built on says In use, or Edited once you've changed it.
- Colors and Shape & type are settings pages. A dot marks every value that differs from your preset, each one has its own reset, and each page can be reset as a whole.
- Components is a grid of the 13 components that shows which ones override the general theme. Each opens its own page, with Clear overrides at its foot.
- One Export or import button in the header for share codes: Copy your theme's code, or paste one and it's checked as you type.
- A Server theme or Personal theme pill in the header says whose theme you're editing.
- Three presets:
- Paper, a light theme: warm paper, ink text and an ink-blue accent.
- Glass: smoked see-through panels with the roundest corners and no border, a periwinkle accent and the Outfit font.
- Poster: white panels, black type and heavy square borders, one magenta accent and the Space Grotesk font.
- Every preset's text passes the web's contrast standard (WCAG AA), measured on the real components.
Changed
- Saved server themes, personal themes and share codes carry over as they are.
- Picking a preset replaces the colors, shape and type, and keeps every component's overrides. Importing a code still replaces everything.
- Reset to defaults (or Reset to server theme for a player) is on the Presets page and asks first. Closing the editor with unsaved changes asks before discarding them.
- Save stays greyed out until something has changed, and Unsaved changes shows beside it once something has.
- Corner radius, UI scale and panel opacity are whole numbers you type, in place of sliders.
- The editor loads the first time it opens, so what every player loads when they join is smaller.
- On a light theme such as Paper, soft colors are worked out toward black, colors your scripts pass for icons and progress bars are drawn 30% darker, disabled rows, fields and menu descriptions fade less, and Signal Breach's "hard" label reads on Paper.
- Text on a solid accent is white, or black when white wouldn't read on that accent.
- The radial menu's count badge picks whichever text color reads on it.
- Muted text is a little brighter (
#91919Aby default) and passes the contrast standard on every built-in surface. - A
date-rangefield in the input dialog opens a range picker and returns both days in itsformatas a two-value table (values[n][1]andvalues[n][2]), or''until both are picked. It used to show the single date picker and return one date, so update scripts that read it. - Glass and Poster load their font from Google Fonts. A player who can't reach it sees the next font in the stack.
Fixed
- A
minormaxof0on a number field is enforced like any other bound, somin = 0no longer lets a player submit a negative number. Bounds are checked on submit and by the up and down buttons, and after a failed submit again as the player types. A field without them still takes any number. A character limit of0on a text field works the same way. - Progress bar props seen by other players: a bar cancelled as it starts no longer leaves its prop in the player's hand, the next bar's props always show, and back-to-back bars both show theirs.
- The Open Radial Menu key (
Zby default) closes an open radial menu, as inox_lib. - A required
dateordate-rangefield left empty says "... is required" under it. - A field that fails its check shows only its red error state; the accent focus ring no longer sits on top of it.
- A notification's
titleColorcolors its title. iconAnimation = 'spinReverse'spins counter-clockwise. It didn't move before.- Timeline tasks are readable on every preset: a completed task is struck through in the theme's secondary text, its check and line still green, and a failed one is in a lighter red.
- Pattern lock dots glow in the theme's accent, success and error colors instead of a fixed blue, green and red.
- The console's warning for a renamed resource folder reads "An error has occurred".
- The links in the README and
config.luapoint to these docs.
A Well color in the theme editor, an event for scripts that follow the player's theme, and fixes for the editor's swatches and for input dialogs with no fields.
Added
- A Well color in the theme editor, for recessed areas: key hints, list menu progress bars, and the background behind cards in lation banking and lation shops. Before, it couldn't be changed from the editor, so that background stayed dark gray whatever your theme. Set it globally or per component.
- Scripts can listen for
lation_ui:themeChangedto restyle their own UI whenever the player's theme changes, personal themes from/uisettingsincluded.
Fixed
- Color swatches in the theme editor update straight away instead of lagging one change behind.
- An input dialog opened with no fields shows its message with Cancel and Submit buttons, as
ox_libdoes. Before, it didn't open at all and the script acted as if the player had cancelled.
List menus reopen on the row you left, color fields can be typed into, and two drawer fixes.
Added
- Color fields in input dialogs can be typed into (hex, rgb or hsl) as well as picked.
Changed
- A list menu reopens on the row you last had highlighted, as it already did for scroll and checkbox state.
Fixed
- The drawer's scrollbar matches your theme.
- Closing a drawer no longer takes the cursor away from a menu or dialog open alongside it.
The Signal Breach minigame runs at the same speed on every PC and always opens with a way out, and typing in the theme editor no longer sets it off.
Fixed
- The Signal Breach dial could freeze, crawl or race depending on the PC. It moves at the intended speed for everyone now.
- Signal Breach could fail to open and leave the player stuck until a restart. It always opens now, and Escape or Backspace gives up the breach (it counts as a fail), so there is always a way out.
- Typing next to the Signal Breach preview in the theme editor no longer starts the minigame.
Progress bars always return the right result, list menus catch the first arrow press, and notifications show above everything.
Fixed
- On PCs with frame hitches, longer progress bars could finish on screen but return
false, or leave the player stuck if the UI stalled. The game itself now tracks completion, so a finished bar always returns the right result and never soft-locks anyone. - The first arrow-down after opening a list menu moved the highlight but never reached the script, leaving it one selection behind. It fires like every other press now.
- Notifications could hide behind other UI, most noticeably open dialogs. They show above everything now.
Font Scale becomes UI scale with a lower floor, plus fixes for radial menu icons at high resolutions, menus with no options and the list menu's closing animation.
Changed
- The theme editor's Font Scale slider is now UI scale, since it scales the whole interface, not just text. Its floor drops from 0.75 to 0.5, so players at 4K can bring the UI further down. See UI scale.
Fixed
- Radial menu icons no longer clip at high resolutions (1440p and 4K). They scale exactly with the wheel at every resolution instead of overflowing their box.
- Menus and list menus registered with no options open and show normally, instead of refusing to show (with a console warning) when there was nothing to list.
- The list menu no longer flashes to the top-left corner for a frame when it closes. It closes in place, with the same animation as the regular menu.
A keyboard list menu that stands in for ox_lib's, scaling with the screen's resolution for the whole UI, success, error and warning colors per component, and panel opacity on every component.
Added
- A keyboard list menu, the long-requested drop-in for
ox_lib'slib.registerMenuandlib.showMenu, with the same behavior, callbacks and keybinds. Existing scripts port with a rename.- It goes further than
ox_lib: update an open menu's options live without registering or opening it again, menus remember their scroll and checkbox state between opens, and options can bedisabled. - A description panel and key hints are built in instead of a tooltip, with a live position counter.
- It goes further than
- Success, Error and Warning colors in every component section of the theme editor, so you can color the Skill Check's success zone, the Timeline's task statuses and more without touching the rest of your theme.
Changed
- The whole UI (every component, the theme editor and the rest) scales properly with the screen's resolution, replacing the old partial scaling. See UI scale.
- lation ui no longer ships a default
data/theme.json, so updating by dragging in the new files no longer resets your server's saved theme. The file is created the first time an admin saves a theme in game. See files.
Fixed
- The Panel Opacity setting applies to the Drawer, Radial Menu, Notifications, Text UI and Timeline.
- Hover and selected highlights follow panel opacity too, instead of showing as solid blocks on see-through panels.
- A hex code can be typed into the theme editor's color pickers; before, only pasting worked. A typed code applies as soon as it's valid.
A full theming system with an in-game editor, personal themes and share codes, plus keyboard navigation, a faster load, theme exports and the end of the old init.lua bridge.
Added
- A theming system with an in-game editor. Every color, corner radius, font, font scale, shadow, border width and panel opacity can be set, globally or per component, with live previews of the real components as you edit. Admins run
/uitheme(it needs thelation_ui.adminACE permission) to style the UI for the whole server; the theme is saved todata/theme.jsonand sent to every player. See server theme. - Personal themes. Set
setr lation_ui:allowUserThemes 1and players can run/uisettingsto style their own UI. A personal theme is kept on the player's own client, with no database, and sits on top of your server theme: anything a player leaves alone follows it. See personal themes. - Share codes. Share Theme and Import Theme in the editor give one copy-and-paste code that holds a whole theme: paste a code from any player or server to get their exact look. See share codes.
- Preset themes to start from, and a font picker with a curated set of fonts. See presets and fonts.
- Keyboard navigation. Menus take Arrow Up and Down, Enter, and Home and End; submenus keep Backspace to go back; the radial menu takes Arrow Left and Right and Enter; dialogs keep Tab focus inside them.
- Theme exports:
getThemeandsetThemeon the client,getServerThemeandsetServerThemeon the server, for scripts that read or apply themes. See theme exports.
Changed
- A refined default look: the same identity, with better depth, contrast and typography on every component. Change nothing and it simply looks a little better.
- The default fonts are bundled with the resource instead of loading from a CDN.
- A faster load. The UI bundle was restructured so the core loads at a fraction of its old size, and the icon packs load later, in a chunk of their own.
- The theme editor and every other new line in version 2 are translated in all 13 locale files, and several lines that weren't translated before now are. See language.
- Removed: the old
init.luaox_libcompatibility bridge, as announced over the past several months. This breaks any script that still loads@lation_ui/init.lua: switch it to the lation ox_lib fork or call the exports directly. If you already run the fork, nothing changes for you, since it forwardslib.*calls on its own. Nothing else changed: no payload shapes, export names or NUI callbacks.
Still stuck? Ask in our Discord: the people who write the scripts answer.
Last updated
Configuration
Every lation ui option in config.lua with its default, the convars it reads, language files, the admin permission, commands and key bindings.
Shared options
The icon, icon animation, color, text formatting and position values that every lation ui component accepts, and how its exports are called.