# Implemented Changes

## Nexora Cron Realm Isolation V1 — 2026-09-02
- El estado de cron se separa por reino en `cache/realms/<realm>/cron_state.json`.
- Legado y Seasonal dejan de depender de una única marca `cron_last_run` cuando Platform es compartida.
- `UpdateCache()` y `updateCacheFile()` recrean directorios/archivos eliminados mediante escritura atómica.
- `Clear Data` resetea la cadencia del productor correspondiente para que el siguiente ciclo pueda regenerar inmediatamente.
- `Cache Manager` incorpora salud por reino y reconstrucción manual desde SQL.
- `Cron Job Manager` muestra la última ejecución del contexto operativo actual, no una marca ambigua global.
- `Legado + Seasonal` muestra salud de caché y último cron por reino junto al estado SQL.
- Event Rankings y Referral System evitan bucles multi-reino duplicados cuando son invocados por el runner realm-aware.
- Sin cambios SQL y sin cambios en el núcleo transaccional de Arsenal.

## Arsenal Nexora V2 - Fase 7.3

### Pipeline de render
- Nuevo cache estático `itemshop-renders-v1` para los assets técnicos.
- 4.004 derivados válidos generados sobre lienzo transparente 160x160.
- Recorte basado únicamente en alpha; no se elimina color ni se aplica chroma key.
- Upscale máximo 2x para evitar gigantismo de sprites pequeños.
- WEBP quality 82 con transparencia.
- Dos fuentes completamente transparentes quedan en fallback automático.

### Presentación
- La retícula deja de formar parte de la escena principal del render.
- Los ítems técnicos se muestran sobre halo/pedestal CSS discreto.
- Tamaños de render normalizados para destacado, inventario, modal y móvil.
- Artwork promocional mantiene su tratamiento cinematográfico independiente.
- Los badges `Render` y `Artwork` continúan aclarando el tipo de medio.

### Integración
- `catalog.php` usa el cache únicamente cuando existe y conserva el asset original como fallback.
- Nuevo `tools_build_render_cache.php` CLI-only para reconstrucción futura.
- Cache HTTP versionado con `max-age=31536000, immutable`.
- CSS cache-busting actualizado a `v=6`.
- Plugin actualizado a `1.6.3`.

### Sin cambios
- Sin SQL nuevo.
- Sin cambios en `class.itemshop.php`.
- Sin cambios en `itemshop.js`.
- Sin cambios en compra, stock, WCoinC, tokens, serial, Warehouse, encoder 0-511 ni Smart Options.

## Arsenal Nexora V2 - Fase 7.3.1

- Estandariza artwork promocional en 1600 × 900 px / 16:9.
- AdminCP muestra preview 16:9 con zona segura central del 70%.
- AdminCP informa resolución real y calidad recomendada sin bloquear el guardado.
- WEBP pasa a ser el formato recomendado; el límite técnico permanece en 2 MB.
- Las imágenes personalizadas siguen siendo la autoridad visual pública cuando existen.
- El render técnico queda como fallback automático.
- Se eliminan del frontend los badges internos `ARTWORK` y `RENDER`.
- Sin cambios SQL ni cambios en la lógica transaccional.
- Plugin actualizado a `1.6.4`.

## Nexora Speed V4 — 2026-09-02
- Eliminadas capas globales animadas de blur/orbes/brasas y reemplazadas por ambientación estática.
- Reducido uso permanente de `backdrop-filter` en navegación, widgets, UserCP, rankings y footer.
- Twitch/TikTok pasan a montaje bajo demanda y desmontaje al cerrar.
- YouTube Music pasa a carga bajo consentimiento/interacción.
- Eliminados jQuery y Bootstrap JS del template activo; utilidades reescritas en JavaScript nativo.
- Swiper se carga bajo demanda cerca del viewport.
- Reloj servidor embebido; evita request normal a `api/servertime.php`.
- Eventos no consultan API cuando no existen widgets asociados.
- Prefetch por intención para navegación interna, respetando Data Saver/2G.
- `content-visibility:auto` en secciones Home seguras y footer.
- Cache estática + Brotli/DEFLATE configurados por `.htaccess` cuando el servidor los soporta.
- Sin cambios en backend transaccional de Arsenal ni SQL.

## Nexora Security & Audit V2

- Security & Audit convertido en readiness center con bloqueos esenciales y advisories separados.
- Platform ya no se presenta como requisito de seguridad cuando está deshabilitado.
- Audit local visible desde AdminCP sin requerir Platform.
- Gestión privada de `NEXORA_PAYMENT_SIGNING_KEY` y `NEXORA_CRON_API_KEY` mediante `nexora.secrets.php`.
- Key de Cron API mostrada una sola vez cuando se genera para scheduler externo.
- Opción para cerrar Cron API pública cuando el cron local está reciente en ambos reinos.
- Trusted proxy seguro por allowlist con CIDR IPv4/IPv6.
- PayPal deja de confiar directamente en `CF-Connecting-IP` / `X-Forwarded-For` y utiliza la IP normalizada central.
- `SQL_PASSWORD_ENCRYPTION=none` clasificado como compatibilidad legacy, no como error falso.
- Trigger Legado -> Seasonal clasificado como puente de compatibilidad hasta reconciliación.
- CLI `tools/nexora_security_bootstrap.php` para generar secretos sin imprimirlos.

## Arsenal Nexora 1.6.6 - Bulk Catalog

- Nuevo navegador visual de los 1.839 ítems técnicos en AdminCP.
- Búsqueda, filtros por Section/capacidad, paginación y selección múltiple.
- Preset `Full Excellent +0 - Skill/Luck auto`.
- Preset alternativo sin Excellent para perfiles especiales pendientes.
- Precio, stock, límite por cuenta y orden aplicables al lote.
- Previsualización server-side antes de importar.
- Detección y omisión de códigos ya existentes.
- Límite operativo de 500 ítems por lote.
- Productos importados siempre ocultos.
- Sin SQL y sin cambios en purchase/encoder/frontend público.

## Arsenal Nexora 1.6.7 - Bulk Publish + Presets

- Publicación masiva de todos los ocultos del reino activo en una sola operación SQL.
- Publicar/Ocultar seleccionados desde Catálogo.
- Selección masiva respetando filtros visibles.
- Auditoría `itemshop.bulk_visibility`.
- Preset `Full Excellent +0 · 5 Sockets si corresponde`.
- Preset `+0 · 5 Sockets si corresponde · sin Excellent`.
- Los sockets se abren como cinco `Free Slot` (`254`) solo en ítems marcados Socket-capable.
- Los ítems no Socket permanecen con cinco `No Slot` (`255`).
- Importación continúa creando productos ocultos.
- Sin cambios SQL ni al flujo de compra.

## Arsenal Nexora 1.6.8 - Catalog Operations & Readiness

- Edición masiva de precio, stock, límite por cuenta, categoría, orden, destacado y promociones.
- Previsualización de diff antes de aplicar.
- Lotes de edición limitados a 500 configuraciones y cancelación completa ante estados inválidos.
- Presets personalizados por reino con preset técnico + valores comerciales + categoría opcional.
- Nueva sección `Operaciones` con readiness integral del catálogo.
- Inspector separa bloqueos, warnings y advisories sin modificar datos.
- Snapshots SQL de rollback para visibilidad y edición masiva.
- Rollback con detección de concurrencia: no sobrescribe filas cambiadas después de la operación original.
- Nuevas tablas administrativas `NEXORA_ITEMSHOP_PRESETS` y `NEXORA_ITEMSHOP_BULK_HISTORY`.
- Diagnóstico `Operaciones, presets y rollback 1.6.8` en Configuración.
- Auditoría para bulk edit, bulk visibility, rollback y gestión de presets.
- `purchase()`, `encodeItem()`, `saveItem()` y `deleteItem()` permanecen idénticas a 1.6.7.

## Arsenal Nexora 1.6.9 - Analytics

- Nueva sección `AdminCP -> Arsenal Nexora -> Analytics`.
- Rangos de 7, 30, 90 y 365 días por reino.
- KPIs de moneda consumida, entregas, compradores únicos, ticket medio, productos vendidos y rotación publicada.
- Tendencia temporal sin librerías externas.
- Top productos y top compradores.
- Rendimiento por categoría usando la categoría congelada en `item_snapshot`.
- Métricas promocionales comparando `price_paid` contra `price_wc` histórico del snapshot.
- Listado de productos publicados sin rotación.
- Alertas de stock para publicados con 0-5 unidades.
- Analytics contabiliza únicamente órdenes `delivered`; no inventa conversión ni fallos que la base actual no registra.
- Sin migración SQL y sin nuevas tablas.
- `purchase()`, `encodeItem()`, `saveItem()` y `deleteItem()` permanecen idénticos a 1.6.8.

## Arsenal Nexora 1.6.9.1 - Test Data Hygiene

- Las entregas confirmadas pueden reclasificarse como `delivered_test` sin borrar historial.
- `delivered_test` queda fuera de Analytics y de `max_per_account`.
- Filtro por cuenta exacta y estado en Entregas.
- Selección de hasta 500 órdenes con marcado/restauración transaccional.
- Acceso directo `Datos de prueba` en el menú de Arsenal.
- Auditoría `itemshop.testdata_mark` y `itemshop.testdata_restore`.
- No revierte moneda, Warehouse, stock ni seriales.
- Sin SQL nuevo y sin cambios en `purchase()` ni `encodeItem()`.


## Arsenal Nexora 1.7.0 - Collections + Campaign Manager

- Nueva sección `Colecciones` por reino con agrupaciones reutilizables de configuraciones.
- Nueva sección `Campañas` para programar publicación, destacado y descuentos porcentuales.
- Snapshot `before/after` de los campos realmente modificados.
- Restauración automática al finalizar con detección de concurrencia y conflictos.
- Guard de `price_wc` para no restaurar promociones sobre un precio base editado durante la campaña.
- Bloqueo de campañas superpuestas cuando sus colecciones comparten configuraciones.
- Inicio/cierre manual para QA y procesamiento manual de pendientes.
- Nuevo cron realm-aware `itemshop_campaigns.php` cada 60 segundos.
- `Instalar / validar tablas` registra/habilita el cron automáticamente.
- Nuevas tablas `NEXORA_ITEMSHOP_COLLECTIONS`, `NEXORA_ITEMSHOP_COLLECTION_ITEMS` y `NEXORA_ITEMSHOP_CAMPAIGNS` por reino.
- FK con `ON DELETE CASCADE` desde membresías a catálogo/colecciones para evitar relaciones huérfanas.
- Sin cambios en `purchase()`, `encodeItem()`, `saveItem()`, `deleteItem()`, Warehouse, seriales o frontend público.

## Arsenal Nexora 1.7.1 - Purchase Center + Support Console

- UserCP: nueva pantalla `Mis compras` con las 100 entregas reales más recientes de la cuenta y realm de sesión.
- Privacidad UserCP: no expone serial, Warehouse slot, IP, HEX, user ID ni snapshot JSON raw.
- AdminCP: nueva consola `Soporte` con filtros por Order ID, cuenta, serial, producto y estado.
- AdminCP: ficha histórica con snapshot, Section:Index, serial, Warehouse slot y vínculo al catálogo actual si existe.
- Las órdenes `delivered_test` se pueden diagnosticar en Soporte pero quedan fuera de `Mis compras`.
- Nuevo registro idempotente y atómico del enlace `usercp/purchases` desde Configuración.
- Nuevo diagnóstico `Purchase Center + Soporte 1.7.1`.
- Sin SQL nuevo y sin acciones de reentrega, reembolso, borrado de orden o mutación de Warehouse.
- `purchase()`, `encodeItem()`, `saveItem()` y `deleteItem()` permanecen idénticos a 1.7.0.
