> For the complete documentation index, see [llms.txt](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/jiffy-jr-development-docs/jiffy-ui/changelog.md).

# Changelog

All notable changes to Jiffy UI are documented here. This project follows [Semantic Versioning](https://semver.org/).

## 1.0.0 Public Release (2.0.0 Dev Version) — 2026-07-01

### Added

* **Screen effects** — `FadeOut(duration, color)`, `FadeIn(duration, color)`, `CinematicBars(show, duration)`, `ScreenBlur(show, duration)`. FadeIn/Out use a full-screen NUI overlay; CinematicBars animate letterbox bars in/out; ScreenBlur calls GTA V natives `TransitionToBlurred` / `TransitionFromBlurred`. Server relay exports included for all four.
* **Notification action buttons** — pass `actions = {{ label, action, type }, ...}` and a callback to `Notify()`. Renders inline Accept/Decline-style buttons inside the notification card. NUI focus is acquired automatically when the first action notification appears and released when the last one is dismissed. Reference-counted so multiple concurrent action notifications work correctly. Action notifications bypass the dedup cache and cannot be stack-capped out.
* **In-game config panel** — `/jui_config` (always available to admins; not gated by `EnableTestCommands`). Live accent color picker with swatches, 3×3 notify position selector, type dropdown preview button, and Reset to Defaults. Changes apply immediately for the session.
* **9-position notification grid** — added `center-left`, `center`, `center-right` stacks. All nine positions now fully supported.
* **Position aliases** — both Lua and JS accept shorthand names: `center-top`, `center-bottom`, `middle-left`, `middle-right`, `middle-center`, `center-center`.

### Changed

* Focus management coordinated between the config panel and action notifications. Neither accidentally releases `SetNuiFocus` while the other still needs it.
* `Config.Debug` → `false` (production release).
* `Config.EnableTestCommands` → `false` (production release).

### Fixed

* World text labels disappearing when briefly leaving the screen — race between hide timer and re-add fixed.
* `backdrop-filter` on `.wt-card` caused an opaque black compositing buffer in FiveM's CEF renderer. Removed.
* `goto continue` in `worldTextLoop` failed in FiveM's Lua environment. Replaced with `if` nesting.
* `checkAndGrantByGroup` nil error in `server/testcmds.lua` caused by Lua scoping. Fixed with forward declaration.

## 1.5.0 — 2026-06-30

### Added

* **World text** — NUI-anchored 3D labels. Icon, text, key chip, accent connector, pulsing dot, distance fade, entity tracking, multi-label support. Server relay exports included.
* **Skill check minigame** — rotating needle on a canvas ring. Easy / medium / hard presets, multi-circle mode, optional danger zones.
* **Item notify stack** — rich item-received / item-removed popups with thumbnail, name, quantity badge. QBCore ItemBox intercept. Image URL auto-resolved across major inventory resources.
* **Global announcement banner** — full-width top-of-screen banner with icon, type accent, animated progress bar, and manual close. Server relay exports included.
* **Countdown timer** — persistent on-screen countdown with urgent pulse animation and expiry callback. Server relay exports included.
* **Dynamic theming** — `SetTheme({ accent = '#hex' })` changes the accent color at runtime. All CSS variables update instantly.
* **New input field types** — `slider` / `range`, `color` (native picker + synced hex input).
* **ox\_lib live redirect** — adapter bridging Jiffy's cancel button to ox\_lib's progress loop.
* **Configurable notification stack cap** — `Config.Notify.MaxStack` (default 5).
* **Radial keybind** — `Config.Radial.Key` registers a `RegisterKeyMapping`.
* **`UpdateProgressLabel` export**.
* Server relay exports: `AnnounceAll`, `AnnounceTo`, `ItemNotify`, `ItemNotifyAll`, `StartCountdown`, `StopCountdown`.

### Removed

* **Notification history panel** — stripped.
* **Chat module** — extracted to standalone `jiffy-chat` resource.

## 1.1.0 — 2026-06-28

### Added

* **Full chat system** — proximity channels (Local / me / do), global channels (OOC / Server / System), chat bubbles, command autocomplete, staff badges, anti-spam guard, FiveM color code support.
* **Alert dialog** — single-button dismissable notice.
* **Confirm dialog** — two-button prompt with typed callback.
* **Click-to-dismiss notifications**.
* **TextUI key badges** — `keys` array and `key` shorthand.
* **Nested submenus** — handled entirely in the NUI, no Lua round-trips.
* **Menu keyboard navigation** — arrow keys, Enter, Esc / Backspace.
* **Font Awesome 6** — loaded via CDN.
* **mythic\_notify adapter**.
* **ESX notify adapter**.
* New type aliases: `green`, `red`, `yellow`, `orange`, `blue`, `police`, `announce`.

## 1.0.0 — 2026-06-13

Initial release. One UI system. Every script. In a Jiffy.

### Added

* Unified internal UI API with configurable backends per channel (Notify / TextUI / Progress / Menu / Input).
* Framework auto-detection for QBCore, ESX, and Standalone.
* Backend resolver with automatic fallback.
* Normalization layer (`shared/types.lua`).
* `pcall`-guarded dispatch (`Jiffy.Try`).
* Configurable debug logging.
* Public exports: `Notify`, `TextUI`, `ShowTextUI`, `HideTextUI`, `Progress`, `CancelProgress`, `Menu`, `CloseMenu`, `Input`, `QBNotify`.
* Public client events for all core features.
* Built-in `jiffy` NUI frontend.
* Pass-through backends: ox\_lib, qb, okok, jg-textui, progressbar, none.
* Compatibility adapters: okokNotify, brutal\_notify, rtx\_notify, QBCore:Notify.
* Export shims: okokNotify, brutal\_notify, progressbar, jg-textui.
* Admin test commands gated by ACE.
