¡Gracias por tu interés en contribuir a ProjectJaina_BattlePass! Este documento establece las pautas de calidad, arquitectura y flujo de trabajo necesarias para que cualquier aporte sea aceptado en el proyecto oficial de Project Jaina.
El Pase de Batalla de Project Jaina opera en un entorno híbrido (Cliente WoW 3.3.5a + Servidor Eluna Lua Engine). Todo código debe cumplir:
- Lua 5.1 Estricto: Prohibido el uso de APIs o sintaxis de versiones posteriores.
- Compatibilidad con Cabinas de Internet: Optimizado para bajo consumo de memoria y CPU. No crear widgets dinámicos en bucles; usar el pool virtual de 5 ranuras en UI.lua.
- Cero Fugas de Memoria / Watchdogs Limpios: Todo temporizador
OnUpdatedebe cancelarse (SetScript("OnUpdate", nil)) antes de que su frame sea reciclado u ocultado. - Respeto al Límite de 255 Bytes: Los mensajes de red vía
SendAddonMessagenunca deben exceder 255 bytes. Usar codificación hexadecimal o delimitación compacta. - Sanitización de Consultas SQL: Todo dato proveniente de comandos de usuario en Server/70_BattlePassSystem.lua debe sanitizarse contra inyección (
gsub("['\"\\;%s]", "")).
- Rama Canónica: El repositorio utiliza exclusivamente la rama
main. No crear ni hacer pull requests dirigidos amaster. - Ramas de Trabajo:
- Correcciones de errores:
fix/nombre-del-bug - Nuevas funcionalidades:
feature/nombre-de-la-mejora - Documentación:
docs/nombre-del-cambio
- Correcciones de errores:
- Mensajes de Commit: Seguir la convención de Commits Convencionales:
fix: cancelar timers OnUpdate en reciclaje de slotsfeat: anadir validacion de caracteres latinos en comando .bpdocs: actualizar guia de gobernanza y rolesperf: optimizar parsing de bitmask hexadecimal
Antes de solicitar la integración de código, debes ejecutar y verificar:
- Balance de Sintaxis Lua: Ejecutar el analizador de sintaxis y confirmar balance de bloques en cero (
depth = 0). - Sincronización 1:1 de Recompensas: Las tablas
Config.Levelsen Config.lua yBP_Config.Rewardsen Server/70_BattlePassSystem.lua deben ser idénticas en IDs de ítem, tipos, cantidades y títulos. - Existencia en DBC 3.3.5a: Confirmar que cualquier nuevo ítem o montura exista en el cliente de WotLK 3.3.5a (Build 12340).
- Pruebas de Polimorfismo en Servidor: Asegurar que
OnServerAddonMessagefuncione correctamente tanto con firmas de 5 argumentos como de 6 argumentos. - Sin Taint ni Errores LUA: Probar in-game recargando la interfaz (
/reload) sin generar excepciones de Lua.
- Indentación: 4 espacios (no tabs).
- Nombres de funciones y tablas globales: Prefijo
ProjectJaina_BattlePass_o dentro del namespaceWP_BP. - Variables locales: Declarar siempre como
localpara no contaminar el entorno global_G. - Comentarios: Explicar el "por qué" de las decisiones arquitectónicas, no solo el "qué".
Si descubres una vulnerabilidad que permita duplicar recompensas, inyectar código SQL o manipular la progresión de niveles, NO abras un issue público. Consulta las instrucciones en SECURITY.md.