Changelog
v1.1.1 — Hotfix : Incoherence de permission ACE + Erreur actionnable
2026-05-18
Corrections de bugs
- Incoherence du fallback ACE — quand
HZBridge.Panel.AcePermissionetait manquant,nilou vide dansconfig.lua, le panneau se rabattait sur"HZ-Bridge.admin"alors que le defaut documente (et le defaut livre dansconfig.lua) etaient tous deux"admin". Les clients avec unadd_ace group.admin admin allowvalide etaient bloques sans raison. Le fallback se resout maintenant correctement vers"admin", aligne sur la config + la doc. - Corrige dans
modules/panel/api_server.luaetmodules/panel/theme.lua(l'incoherence existait aux deux endroits).
Ameliorations
- Le message d'erreur de permission est maintenant actionnable. Quand la verification ACE de
/hzpanelechoue, la console serveur affiche les deux lignes exactes a copier-coller, avec la licence du joueur deja interpolee :
add_principal license:abcdef... group.admin
add_ace group.admin admin allow
- La notification chat nomme explicitement le noeud ACE manquant au lieu d'un vague
"perm. HZ-Bridge". Les joueurs savent exactement quoi corriger. - La sortie console signale aussi explicitement que
command.hzpaneln'est PAS le bon noeud ACE — les clients essayaient par confusion (source de ticket la plus courante avant v1.1.1).
Notes de mise a jour
- Remplacement direct. Aucun changement de config / DB / evenement / schema.
- Si votre panneau fonctionnait en v1.1.0, il fonctionne toujours en v1.1.1 — la correction ne debloque que les clients bloques par le mauvais fallback.
- Consultez la section Configuration des permissions du guide Panneau d'administration pour la configuration canonique (et le piege du boilerplate qb-core qui explique pourquoi tant de tickets font reference a ceci).
v1.1.0 — Panneau d'administration centralise + Cascade de theme
2026-05-15
Le changement majeur : HZ-Bridge embarque un panneau d'administration complet en jeu. Chaque module HZ-Script declare desormais son schema de config via un petit DSL Lua, et le panneau construit automatiquement un editeur type. Plus de commandes par script, plus besoin de toucher config.lua entre chaque ajustement, plus de redemarrage pour appliquer.
Nouvelles fonctionnalites
- Commande
/hzpanel— ouvre le panneau d'administration central en jeu. Protege par ACE (defautadmin, configurable viaHZBridge.Panel.AcePermission). Ignore la verification ACE entierement quandHZBridge.Panel.DevAllowAll = true(dev seulement — desactivez en production). - DSL de schema (
bridge_schema.lua) — chaque module declare sa config comme un chunk Lua sandbox qui appellemodule()/section()/group()/field()/invariant()/migrations(). Le panneau construit automatiquement un editeur type a partir de la declaration. Types de champ supportes :boolean,number,string,enum,color,keybind,list,list,vehicle-list,weapon-list,action,enum-action,view. - Type de champ
enum-multi— selecteur multi-selection contraint (chips toggle). Stocke enlist, mais l'admin ne peut cocher que les valeurs d'un tableauchoicesfixe. Premier consommateur :BlackoutExceptionsde HZ-Weather. - Vues personnalisees — les modules peuvent enregistrer des composants React pleine largeur dans le panneau sous
web/src/views/. Utilise par HZ-Weather pour fournir un editeur de zones polygone + cercle, une carte satellite, un graphique de previsions, un calendrier, un panneau de saisons et un controleur de temps./ - Cascade de theme (onglet "Apparence") — un seul endroit pour controler la surface visuelle de chaque NUI HZ. Quatre axes orthogonaux :
accent / accentHi / gold) — Trio signature Vice rose / rose vif / dore. Presets : Vice, Industrial.
* Surfaces (surface / subpanel / tint) — panneau exterieur / sous-panneau interieur / teinte hover. RGB seulement — l'opacite est decidee par chaque consommateur via rgb(var(--hz-surface-rgb) / 0.X).
* Mode gradient (gradient / solid) — solid aplatit chaque gradient d'accent en remplissage plat a 1 stop.
* Arrondis (radiusNone / Xs / Sm / Md / Lg / Xl) — echelle de coins a six niveaux. Presets : Sharp (0/2/4/6/8/10), Soft (0/3/6/8/12/16), Round (0/4/8/12/16/20), Industrial (0/0/2/2/4/4).
- Diffusion en direct —
HZ-Bridge:theme:updated(serveur + client) se declenche a chaque sauvegarde. Les ressources s'abonnent et appliquentapplyTheme()a leur propre NUI. Nouvel exportGetTheme()qui retourne le theme effectif actuel de maniere synchrone. - Export serveur
OpenPanel(src, module?)— ouvre le panneau pour un joueur depuis un autre script, en preselectionnant optionnellement l'onglet d'un module.
Securite + ops
- Schemas sandbox — Le DSL s'execute sans
io/os/debugbruts, avec des sous-ensembles restreints destring/table/math. Unbridge_schema.luabuggue echoue au chargement (logue) mais ne peut pas crasher le serveur. - Ecritures rate-limitees — defaut
10 ecritures par 5spar source (configurable). - Tokens de session — chaque ouverture du panneau emet un token ephemere (defaut 5 min TTL) qui protege chaque sauvegarde.
- Verification ACE par source a chaque action — pas seulement a l'ouverture du panneau. Un admin revoque ne peut pas continuer a editer sur un panneau deja ouvert.
- Log d'audit — chaque sauvegarde acceptee ecrit une ligne dans
data/audit-YYYY-MM-DD.log. Les fichiers rotatifs plus anciens queAuditRetentionDays(defaut 90) sont supprimes au demarrage. - Ecritures atomiques — la config effective par module est ecrite via tmpfile + rename (
data/). Les ecritures en attente utilisent.json data/et sont commitees de maniere atomique..pending.json
Performance
- Pre-fetch des tuiles de carte — les 257 tuiles satellite utilisees par les vues Map / ZoneEditor de HZ-Weather sont pre-chargees dans le cache CEF au montage du panneau via
requestIdleCallback, limitees a 12 requetes simultanees. La premiere ouverture d'une vue carte est maintenant instantanee au lieu de 1-3s. - Aucun backdrop-filter nulle part — le flou compositeur a ete supprime de chaque NUI HZ (l'exception precedente "autorise sur les overlays" est revoquee). Meme en pause, les overlays coutaient 8-12 FPS pour un seul flou. Remplace par des scrims alpha plus profonds (
rgba(0,0,0,0.78)+sur les backdrops,0.55-0.92sur les cartes glass).
Ameliorations
- Rendu de cercle Mercator-safe dans les vues HZ-Weather — Cayo Perico (jeu Y ~ -5150) rendait les cercles trop petits car le precedent
ignorait l'etirement Mercator aux hautes latitudes. Utilise maintenant une vraie ellipse projetee avec des px-par-metre locaux sur chaque axe. L'editeur et la vue carte sont d'accord. - La couleur Apparence par defaut correspond au reste de l'ecosysteme HZ — palette Vice + surfaces Vice + arrondis Sharp pre-appliques au premier demarrage.
Notes de mise a jour
- Aucun changement cassant pour les consommateurs des APIs framework / inventaire / notification du bridge — celles-ci continuent de fonctionner a l'identique.
- Les ressources qui veulent exposer leur config dans le panneau fournissent un
bridge_schema.luaa leur racine. Consultez le guide du Panneau d'administration pour la reference du DSL. - Si vous definissez
HZBridge.Panel.DevAllowAll = truependant le developpement, remettez-le a false avant la mise en production — le panneau est un outil serieux, pas quelque chose a laisser ouvert.
v1.0.0 — Version initiale
2026-02-15
- Adaptateur de framework universel — detecte automatiquement ESX, QBCore, QBX, Ox Core, vRP, ou fonctionne en standalone
- Adaptateur d'inventaire — ox\_inventory, qs-inventory, ps-inventory, codem, core, origen, tgiann, ou natif framework
- Adaptateur de notifications — ox\_lib, okokNotify, mythic\_notify, codem, pNotify, framework, ou GTA natif
- Adaptateur de target — ox\_target, qb-target, interact, ou fallback TextUI integre
- Adaptateur de menu / saisie — ox\_lib (complet), qb-menu + qb-input, ESX menu, ou fallback GTA natif
- Adaptateur de dispatch — cd\_dispatch, ps-dispatch, qs-dispatch, rcore\_dispatch, emergencydispatch, ou integre
- Callbacks bidirectionnels (client <-> serveur) avec limitation de debit + timeout
- Minijeux integres — barre de progression, skill check, sequence
- Mode unique
'auto'qui selectionne le bon backend par systeme
