home_noticia gana columnas titulo_en/contenido_en (sql/add_news_en.sql). getNoticias(locale)
usa la versión EN si existe, si no cae al español (título y contenido independientes); la fecha
también se formatea por idioma. El panel de admin permite escribir la traducción al crear y EDITAR
noticias existentes (nuevo PUT /api/admin/news/[id], updateNews). Claves Admin nuevas (título/
contenido EN, editar/guardar). Probado: /en/ muestra EN, /es/ ES; PUT guardado (403 sin sesión).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Se externaliza el texto español hardcodeado de ~55 archivos a next-intl y se añaden
traducciones al inglés, con paridad de claves es/en. Nuevos namespaces: History,
CharService, CharServiceB, Points, Legal, UI, Misc (+ altas en Common/Admin).
- Historiales (PD/PV, transacciones, sanciones, seguridad), servicios de personaje
(transfer, send-gift, quest, restore-*, change-*, customize, level-up, gold, rename),
PD/pagos (d-points, trade, promo, transfer-dp, rename-guild, DPointsTabs), páginas
legales (cookies, privacidad, términos, reembolsos, aviso legal, contacto), layout
(cabecera, footer, cookies, 2FA, descargas, jugadores, recluta) y páginas varias
(home, reino, ayuda, addons, 2falogin).
- Textos con markup inline via t.rich; interpolación con ICU.
- Componente <NoteLegend/> para la leyenda NOTA/NOTE compartida.
- payLabel/confirmText de los servicios de pago traducidos.
- Verificado: tsc OK, next build OK, todas las claves t() resuelven en es y en,
todos los t.rich casan etiquetas, páginas 200 en /es/ y /en/ sin claves crudas.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- /rename-character y /customize-character: renombrar/personalizar pagados por SumUp
(getRenamePrice/getCustomizePrice). SumUp ahora es service-aware: columna
home_stripelog.service; createSumUpCheckout guarda service+character;
fulfillSumUpCheckout despacha a la acción del servicio (.char rename/customi) o,
sin service, acredita PD. [service]/checkout acepta provider:'sumup';
PaidServiceForm acepta provider+confirmText; service-success maneja el return SumUp.
Se eliminan las antiguas /rename y /customize (Stripe).
- /revive-character (comparte ReviveServiceContent); se elimina /revive.
- Renombres de ruta + todos sus enlaces:
/account -> /my-account, /recruit -> /recruit-a-friend, /unstuck -> /unstuck-character.
(/select-account y /api/account/* intactos.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
«NovaWoW es una comunidad…» ahora usa el nombre del reino (realmlist).
Se elimina la constante SERVER_NAME (ya sin uso).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
brandify() sustituye «UltimoWoW»/«Nova WoW» por el nombre del reino (realmlist)
en título y contenido de las noticias, SOLO en el texto visible (fuera de las
etiquetas < >) para no romper las URLs de los enlaces (foro.ultimowow.com), y
respetando MAYÚSCULAS (ULTIMOWOW→TRINITY, UltimoWoW→Trinity). No toca dominios.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Menú de navegación: el desplegable «NovaWoW» ahora muestra el nombre del
reino de realmlist (Header pasa realmName a SiteHeader).
- Home: el título «NovaWoW WOTLK 3.4.3» y el nombre del recuadro de estado
(antes home_serverselection.name) usan el nombre del reino de realmlist.
Ahora el reino es «Trinity». El logo (alt) y el texto de intro se mantienen
como marca.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
La home ya lee las noticias de home_noticia; se sembraron las 50 noticias
reales del sitio en la BD. Ajustes de render: fecha en formato español largo
(«21 de junio de 2026») y contenido en <p> (con <br> y enlaces), como el
markup original.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
En el recuadro de estado de la home, la fila del reino mostraba el conteo de
personajes online (0). Ahora muestra Online/Offline según un TCP check al
worldserver (puerto 8085), con color verde/rojo como la fila Login.
lib/home.ts añade world_status (checkServerStatus address:8085).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reescritura completa del frontend Next.js del sistema visual Tailwind
"simulado" al tema Django original (nw-ryu), para paridad pixel con la
web actual antes del cutover.
- Tema real: copia de static/nw-themes/nw-ryu + favicons a public/, el
layout carga el novavow-style.css real de ultimo (gana la cascada sobre
Tailwind) + Font Awesome.
- Shell replicando los partials Django: SiteHeader, Video, Social, Footer,
ServerClock; home con estructura real (main-page/middle-content/...).
- Helpers reutilizables: PageShell (main-page > middle-content > body-content
> title-content) y ServiceBox (title-box-content + back-to-account).
- Paginas migradas a clases reales del tema (fieldset/tool-button/char-box/
item-box/info-box-light/max-center-table/alert-message/botones reales),
eliminando el markup Tailwind (.nw-btn/.nw-card/.nw-input):
auth (login/register/recover/reset/select-account/activate),
cuenta + servicios de personaje (revive/unstuck/rename/customize/
change-race/change-faction/level-up/gold/transfer + pago Stripe),
ajustes (change-password/change-email/security-token),
comunidad (vote-points/recruit/battlepay), foro completo, y
admin (indice + 7 secciones + los Admin*Manager).
- Se conserva el bilingue (next-intl); claves nuevas en messages/es|en.json.
Verificado: typecheck + build OK; rutas protegidas 307->login; sin
MISSING_MESSAGE; cero Tailwind residual (solo .nw-tool-btn/.nw-page,
clases propias en globals.css).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Copia los logos del tema original (nw-logo -> public/brand/logo.webp,
nw-long-logo -> logo-long.webp).
- Header: logo + nombre. Home hero: logo largo con glow dorado.
- Footer: logo + copyright + enlaces (inicio/foros/votar/registro), i18n.
Verificado: logos se sirven (200), home 200.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- globals.css: tokens @theme (nw-bg/panel/border/gold/text/muted), fondo con
degradado + brillo radial, y componentes reutilizables (.nw-btn, .nw-btn-ghost,
.nw-card, .nw-heading con oro degradado).
- Header: sticky con backdrop-blur y marca en oro degradado.
- Home: sección hero (nombre del server + tagline + CTAs Crear cuenta / Foros) y
estado del servidor + noticias en tarjetas (nw-card). Textos hero en catálogos.
Verificado: build OK, home renderiza el hero/tarjetas, los tokens nw compilan en el
CSS. Sistema visual base listo para aplicar al resto de páginas.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- next-intl 4 (compatible Next 16): routing (es default en RAÍZ sin prefijo, en con
/en, localePrefix 'as-needed'), middleware, request config, navigation helpers.
- Estructura app/[locale]/ (layout con <html lang>, NextIntlClientProvider, metadata
SEO por idioma vía generateMetadata; page home con getTranslations).
- Catálogos messages/es.json y en.json: TODOS los textos de la UI (nada hardcodeado
en los .tsx, se usan con t()).
Verificado: / -> español (lang=es, título ES), /en -> inglés (lang=en, título EN),
datos SSR desde MySQL. Añadir idioma = locale en routing + messages/<loc>.json.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>