=== WC Account Hub ===
Contributors: juangallardo
Tags: woocommerce, my account, customer portal, reorder, invoice
Requires at least: 6.9
Tested up to: 7.0
Requires PHP: 7.4
WC requires at least: 10.9
WC tested up to: 10.9.4
Stable tag: 1.7.1
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Portal de cliente moderno para WooCommerce, sin SPA ni maquetador, con JavaScript
progresivo apoyado únicamente en las dependencias nativas del checkout.

== Description ==

WC Account Hub sustituye la apariencia de la página «Mi cuenta» por un panel con
navegación por pestañas, foto de perfil, repetición de pedidos y solicitud de
factura por email.

Funciona sobre el sistema nativo de endpoints de WooCommerce: no registra
endpoints propios, ni rutas REST, ni tablas, ni consultas SQL directas. Los
endpoints que añadan otros plugins siguen apareciendo entre las pestañas y
funcionando con normalidad.

**Qué hace**

* Escritorio con banner, foto o inicial, y tarjetas de resumen.
* Navegación en pestañas horizontales con iconos, y un icono genérico de reserva
  para los endpoints de terceros.
* Botón de repetir pedido en el listado, con la URL que genera el propio
  WooCommerce: no se replica la lógica de carrito.
* Solicitud de factura por email, con nonce, comprobación de propiedad del
  pedido y ventana de deduplicación configurable.
* Foto de perfil validada en dos fases, reprocesada con el editor de imágenes de
  WordPress y reverificada antes de guardarse.
* Libreta privada de direcciones adicionales con selector en el checkout clásico,
  validación de propiedad y recálculo del envío, sin cambiar el destino
  predeterminado del perfil.
* Bloque de información del envío en el detalle del pedido: agencia, número y
  enlace de seguimiento. Los datos salen de los campos «Envío» del pedido, de
  Advanced Shipment Tracking o WooCommerce Shipment Tracking, o del filtro
  `wcah_shipping_details`.
* Ajustes integrados en WooCommerce › Ajustes › Account Hub.
* Exportador, borrador y texto sugerido para la política de privacidad de WordPress.

**Versión gratis y Pro**

Gratis: el panel de «Mi cuenta» (escritorio, pestañas e iconos), la foto de
perfil y las herramientas de privacidad.

WC Account Hub Pro (49 € al año): repetir pedido, solicitud de factura por email,
libreta de direcciones con su selector en el checkout, información del envío y
botón de seguimiento, y actualizaciones automáticas. La licencia se activa en
WooCommerce › Account Hub: licencia. Si caduca, vuelve la versión gratis: no se
borra ningún dato, y las direcciones guardadas reaparecen al renovar.

**Qué no hace**

* No es una aplicación de una sola página.
* No sustituye plantillas por su cuenta: solo sobrescribe `myaccount/dashboard.php`,
  y ese override puede desactivarse con un filtro.
* No borra pedidos ni su historial, ni siquiera al desinstalar.

**Compatibilidad**

* Compatible con HPOS (almacenamiento de pedidos en tablas propias).
* Probado con WordPress 7.0 y WooCommerce 10.9.4. Para producción se requiere
  WordPress 7.0.2 o 6.9.5 por las correcciones de seguridad del núcleo.
* El panel mantiene su CSS bajo `body.wcah-panel`; el selector del checkout se
  limita a `.woocommerce-checkout .wcah-checkout-address-picker`.
* Compatible con el checkout clásico nativo y con CartFlows 3.1.x cuando este
  utiliza el formulario clásico de WooCommerce.
* Checkout Blocks todavía no muestra el selector; la libreta de Mi cuenta sigue
  funcionando y el módulo de checkout se degrada de forma segura.

== Servicios externos ==

WC Account Hub se conecta a SupuHub (https://api.supudigital.es), el servidor de
licencias y actualizaciones de SupuDigital, solo si activas una licencia Pro:

* Al activar, comprobar o desactivar la licencia, y cada 12 horas para revalidarla.
* Cuando WordPress busca actualizaciones de plugins.

Se envían la clave de licencia (en una cabecera, por HTTPS), la dirección de la
web, un identificador aleatorio de la instalación y las versiones de WC Account
Hub y de WordPress. Nunca se envían datos de pedidos ni de clientes. Sin
licencia, el plugin no se conecta a ningún servicio externo.

Responsable: SupuDigital (https://www.supudigital.es).

== Installation ==

1. Sube la carpeta `wc-account-hub` a `/wp-content/plugins/`.
2. Actívalo desde el menú «Plugins».
3. Configúralo en WooCommerce › Ajustes › Account Hub.

WooCommerce debe estar activo. Si no lo está, el plugin no arranca y avisa en el
administrador.

== Frequently Asked Questions ==

= ¿Puedo quedarme con el escritorio original de WooCommerce? =

Sí:

`add_filter( 'wcah_override_dashboard_template', '__return_false' );`

= ¿Qué pasa con las fotos de perfil si desinstalo el plugin? =

Se conservan, salvo que actives «Eliminar todos los datos al desinstalar» en los
ajustes. El historial de solicitudes de factura, que vive en los pedidos, no se
borra nunca.

= ¿Sustituye a Gravatar en todo el sitio? =

No. La foto solo se muestra dentro del panel de cliente.

= ¿Funciona el selector de direcciones con CartFlows? =

Sí, cuando el paso utiliza el checkout clásico. La integración usa los hooks y
campos nativos de WooCommerce, por lo que también funciona sin CartFlows.

== Changelog ==

= 1.7.1 =
* Botón «Comprar WC Account Hub Pro» en los ajustes y en la pantalla de licencia, con el enlace de pago.

= 1.7.0 =
* Versión gratis y Pro con licencia de SupuHub (WooCommerce › Account Hub: licencia).
* Pro: repetir pedido, solicitud de factura, libreta de direcciones y selector en el checkout, información del envío y seguimiento.
* Actualizaciones automáticas para licencias válidas.
* Información del envío en cualquier tienda: campos «Envío» propios en el pedido (agencia, número y enlace) y lectura de Advanced Shipment Tracking y WooCommerce Shipment Tracking.
* Sin licencia, las funciones Pro se apagan sin borrar datos; la privacidad (exportar y borrar) sigue funcionando siempre.

= 1.6.2 =
* Añade datos de facturación detallados del cliente (nombre o razón social, DNI/NIF/CIF de facturación, dirección completa, teléfono, email) y desglose del pedido (fecha, método de pago e importe total) en el cuerpo del correo electrónico de solicitud de factura para facilitar el trabajo del departamento de administración.

= 1.6.1 =
* Añade textos explicativos de ayuda debajo de todos los campos de configuración en la pestaña de ajustes de WooCommerce para que el panel sea autodocumentado y fácil de entender.

= 1.6.0 =
* Nuevo botón «Seguimiento» en el listado de pedidos, con el color de acento, para los pedidos que tienen información de envío. Antes el bloque solo se veía entrando en el detalle del pedido y no había forma de saber que estaba ahí.
* El botón lleva directamente al bloque, no al principio de la página: el enlace apunta al ancla `#wcah-envio`.
* No altera las acciones existentes del listado, ni las nativas ni las de otros plugins.

= 1.5.1 =
* El botón «Ver seguimiento del envío» aparece únicamente cuando el pedido tiene una URL de seguimiento guardada. El panel ya no construye ninguna.
* Motivo: el campo del número de seguimiento admite texto libre y se usa como tal («NO TENEMOS», «FABRICANTE DIRECTO»), así que el enlace construido a partir de él llevaba a una página sin envío.
* El número se sigue mostrando aunque no haya enlace, para quien quiera buscarlo por su cuenta.

= 1.5.0 =
* Nuevo bloque «Información del envío» en el detalle del pedido: agencia, número de seguimiento, enlace al seguimiento y nota de entrega. Hasta ahora esos datos solo salían por email.
* Los pedidos marcados sin seguimiento online lo dicen con todas las letras, y la nota de entrega se muestra aunque no haya seguimiento.
* Los datos los aporta un plugin de seguimiento externo. Sin él no se imprime nada, y el filtro `wcah_shipping_details` permite alimentar el bloque desde cualquier otro.

= 1.4.0 =
* La cabecera del panel es ahora la salida: fuera del escritorio, la marca de la tienda se convierte en un enlace «Volver al panel». Antes, con la navegación nativa oculta, las pestañas internas no ofrecían ninguna vuelta.
* Sirve para todos los endpoints, incluidos los de otros plugins, sin repetir un botón en cada pantalla. Se mantiene visible en móvil.

= 1.3.2 =
* La pantalla de la dirección de envío ya no se anuncia como la de facturación: el endpoint llega con el slug traducido y ahora se convierte al identificador interno de WooCommerce.

= 1.3.1 =
* Los campos de media fila de la dirección vuelven a ocupar su columna: WooCommerce les impone un ancho del 47 % que dentro de la rejilla los dejaba a la mitad.

= 1.3.0 =
* Rediseña la pantalla de edición de dirección, que hasta ahora se quedaba con el formulario sin estilar de WooCommerce.
* Añade encabezado propio a esa pantalla, con el nombre de la dirección que se edita y un enlace de vuelta al resumen.
* Los campos se reparten en dos columnas, con el mismo aspecto que el formulario de la cuenta, y el selector de país luce igual en todos los sistemas.
* En móvil el formulario pasa a una columna y el botón ocupa todo el ancho.

= 1.2.0 =
* El avatar se sirve en miniaturas de 96 y 192 px en lugar del original de hasta 512 px: la cabecera del panel baja de 25 KB a unos 3 KB por visita.
* Las miniaturas se generan la primera vez que se piden, sin migración, y si no se pueden crear se sirve el avatar completo como antes.
* Elimina 26 reglas de CSS de componentes que el plugin ya no imprime, restos de rediseños anteriores.
* Nueva herramienta `tools/audit-css.php` y prueba automática que impiden que vuelvan a acumularse estilos huérfanos.

= 1.1.4 =
* Documenta las tres incidencias de compatibilidad de la página de direcciones, con sus causas y los errores descartados por el camino.
* Actualiza la guía de empaquetado al script automatizado y añade el procedimiento de despliegue por SSH con wp-cli.
* Pone al día el documento de traspaso: versión, mapa del código y lecciones de la sesión.

= 1.1.3 =
* Oculta por defecto el bloque de perfil duplicado que añaden algunos temas, ya que el panel imprime su propia cabecera.
* Nuevo ajuste para desactivar la navegación de Mi cuenta cuando el menú ya lo aporta el tema o el maquetador.
* Nuevo filtro `wcah_theme_profile_selectors` para cubrir temas que el plugin todavía no conoce.

= 1.1.2 =
* Compacta las tarjetas de direcciones: desaparece la altura mínima fija que dejaba un hueco bajo la dirección.
* Los enlaces de la cabecera muestran solo «Editar»; el texto completo de WooCommerce se conserva para lectores de pantalla.
* Alinea la dirección con el título de la tarjeta y agranda el objetivo táctil del botón (40 px, 44 px en móvil).

= 1.1.1 =
* Corrige los botones «Editar» de la página de direcciones, que quedaban invisibles cuando el CSS de la página fijaba `color: #fff !important` sobre `.woocommerce-Address .edit`.
* Evita que OceanWP saque el enlace «Editar» del flujo y lo superponga al título de la tarjeta.
* Neutraliza las mayúsculas forzadas por el kit global de Elementor en ese botón.

= 1.1.0 =
* Añade un tracking de progreso visual de 3 estados para los pedidos en el panel de Mi Cuenta.
* Introduce soporte para el estado "Listo para recoger" en pedidos de recogida local, configurable en el administrador.
* Añade un timeline estilizado de notas de pedido públicas del cliente en el detalle del pedido.

= 1.0.0 =
* Versión estable final de producción con optimizaciones de carga y assets.

* Corrige el guardado de avatares menores de 512 × 512 px sin perder el reprocesado seguro de la imagen.
* Alinea el doble de WP_Image_Editor con el contrato real de WordPress y añade una prueba de regresión para 100 × 100 px.
* Documenta el cerrojo de facturas como mecanismo best-effort y conserva la revalidación que reduce solicitudes duplicadas.

= 0.9.0-rc23 =
* Evita agotamiento de memoria con avatares comprimidos de dimensiones extremas.
* Revalida las imágenes justo antes de procesarlas y muestra los fallos de almacenamiento al cliente.
* Reduce las solicitudes de factura concurrentes mediante un cerrojo best-effort con caducidad.
* Integra las direcciones y el avatar con exportación, borrado y texto sugerido de privacidad de WordPress.
* Normaliza y limita los ajustes y los campos de dirección incluso si los metadatos almacenados están dañados.
* Procesa la limpieza de usuarios por lotes para no agotar memoria al desinstalar en sitios grandes.
* Añade PHPStan, WordPress/WooCommerce stubs y una licencia GPL completa al control previo a publicación.
= 0.9.0-rc23 =
* Moderniza los encabezados de Pedidos, Direcciones y Detalles de la cuenta.
* Corrige la regla genérica que reducía los títulos a 13 px y los forzaba a mayúsculas.
* Evita que el grid duplique el espacio vertical alrededor del encabezado de perfil.
* Mantiene una jerarquía compacta y responsive mediante Inter y un acento lateral.

= 0.9.0-rc21 =
* Mantiene los legend semánticos y usa cabeceras visuales dentro de la rejilla.
* Conserva continuos los bordes superiores de Contraseña y Foto de perfil.
* Unifica padding y separación interna de ambos bloques en escritorio y móvil.

= 0.9.0-rc20 =
* Integra los encabezados de Contraseña y Foto de perfil dentro de sus fieldset.
* Neutraliza el borde inferior que Astra aplica a los legend de WooCommerce.
* Anula la propiedad translate de WooCommerce que desplazaba verticalmente los ojos.
* Mantiene una separación lateral uniforme mediante los tokens del panel.

= 0.9.0-rc19 =
* Unifica labels, campos e iconos de contraseña sobre una misma rejilla y línea base.
* Integra título y ayuda dentro de una cabecera semántica sin bordes heredados del tema.
* Centra el control de visibilidad mediante CSS Grid, sin posiciones verticales manuales.
* Normaliza alturas, gaps y paddings en escritorio y móvil.

= 0.9.0-rc18 =
* Corrige la posición del control de mostrar contraseña dentro de los tres inputs.
* Elimina el cálculo vertical dependiente del contenedor y usa una separación fija de 6 px.

= 0.9.0-rc17 =
* Alinea el nombre visible y el correo electrónico en la misma fila.
* Simplifica la etiqueta a «Correo electrónico» sin alterar el campo nativo.
* Rediseña la sección de contraseña con etiquetas cortas, ayuda accesible e icono Font Awesome.
* Unifica el aspecto de los campos añadidos por terceros y el responsive del perfil.
= 0.9.0-rc16 =
* Añade un selector de direcciones guardadas al checkout clásico de WooCommerce.
* Rellena los campos nativos y recalcula el envío al cambiar de destino.
* Valida en servidor que la dirección pertenece al cliente antes de crear el pedido.
* Conserva la dirección predeterminada del perfil cuando la elección es puntual.
* Mantiene compatibilidad con CartFlows 3.1.x sin depender de sus plantillas.

= 0.9.0-rc15 =
* Sustituye el icono roto de la libreta por Font Awesome Location Dot autocontenido.
* Elimina el recuadro que el tema aplicaba al bloque de nombre y dirección.
* Ajusta el padding, la alineación y la altura de las tarjetas de direcciones.

= 0.9.0-rc14 =
* Protege la columna de acciones frente a las reglas de tabla y botones de Astra.
* Mantiene Ver, Repetir pedido y Factura en una sola línea centrada en escritorio.
* Conserva el diseño responsive en tarjetas por debajo de 900 px.

= 0.9.0-rc13 =
* Replantea la tabla de pedidos conservando el comportamiento nativo de sus celdas en escritorio.
* Define proporciones estables para las cinco columnas y reserva más espacio para las acciones.
* Separa correctamente los botones y mejora su adaptación en tarjetas y pantallas móviles.

= 0.9.0-rc12 =
* Centrado real de la columna de acciones mediante flex, incluido el formulario de factura.
* Los controles permanecen en una línea cuando hay espacio y se reorganizan por debajo de 900 px.
* Se eliminan alineaciones, márgenes y flotados anteriores que desplazaban los botones.

= 0.9.0-rc11 =
* Acciones del historial centradas y factura solicitada en rojo pastel.
* Último pedido con iconos Font Awesome Free autocontenidos.
* Libreta privada de direcciones adicionales con selección de envío predeterminado.
* Detalles de cuenta con panel de privacidad y detección local de navegador y sistema.
* Sin servicios externos de geolocalización ni cambios en WooCommerce Core.

= 0.9.0-rc10 =
* Acciones del historial de pedidos convertidas en botones rectos, sobrios y
  accesibles, con borde gris fino y estados interactivos discretos.
* Sin cambios funcionales respecto a 0.9.0-rc9.

= 0.9.0-rc9 =
* Rediseño visual del área «Mi cuenta» basado en el prototipo de Pencil:
  cabecera de cuenta, navegación responsive, escritorio y pantallas interiores.
* Mantiene los endpoints, datos, acciones y filtros nativos de WooCommerce.
* Sin cambios funcionales respecto a 0.9.0-rc8.

= 0.9.0-rc8 =
* Detalle del pedido con diseño propio: tabla de artículos en tarjeta, totales
  con el importe final destacado y acciones como botones redondeados.
* La frase de cabecera deja de llevar el resaltado amarillo del navegador; el
  estado sale como distintivo.
* Las direcciones del pedido comparten el lenguaje de la pantalla de
  direcciones, con la misma defensa contra el clearfix del tema.
* Notas del pedido como tarjetas con filo de acento.
* Sin cambios funcionales respecto a 0.9.0-rc7.

= 0.9.0-rc7 =
* Listado de pedidos rediseñado: cada fila se lee como una tarjeta, con
  cabeceras en versalitas, número destacado y realce al pasar el ratón.
* El estado del pedido se pinta como distintivo con color propio —completado,
  procesando, en espera, cancelado— usando el nombre que da WooCommerce.
* Las acciones del listado, propias y de terceros, comparten aspecto de botón
  redondeado discreto.
* Por debajo de 900 px el listado pasa a tarjetas reales, con la etiqueta de
  cada columna encima del dato. En escritorio se conserva la tabla y con ella
  su semántica para lectores de pantalla.
* Estado sin pedidos y paginación con estilo propio.
* Sin cambios funcionales respecto a 0.9.0-rc6.

= 0.9.0-rc6 =
* El formulario de datos de la cuenta pasa a tener espacio de nombres propio:
  el plugin imprime `data-wcah-form="account"` en la etiqueta del formulario y
  todo su diseño cuelga de ahí, sin depender de las clases de WooCommerce ni
  del tema.
* El botón nativo de mostrar contraseña deja de ser un bloque suelto y se
  integra dentro del campo, con icono de ojo y estado de contraseña visible.
* Medidor de fortaleza de contraseña con aspecto de píldora y color según el
  nivel.
* Los campos que añaden otros plugins entran en la rejilla como una fila más.
* Las etiquetas reservan altura mínima, así que los campos de una misma fila
  quedan alineados aunque una etiqueta ocupe dos líneas.
* Sin cambios funcionales respecto a 0.9.0-rc5.

= 0.9.0-rc5 =
* Corrige la colocación en diagonal de las tarjetas de direcciones: el clearfix
  del tema se convertía en ítem al pasar el contenedor a rejilla. Se neutraliza
  en direcciones, formulario de cuenta y pestañas.
* Las tarjetas de direcciones pasan a disposición flexible, que ignora floats,
  anchos y `clear` heredados del tema.
* Sin cambios funcionales respecto a 0.9.0-rc4.

= 0.9.0-rc4 =
* Tarjetas de direcciones rediseñadas: filo de acento que se enciende al pasar
  el ratón, distintivo con icono propio para facturación y envío, «Editar» como
  botón redondeado y la dirección en texto normal, no en cursiva.
* El titular de cada dirección deja de heredar el tamaño de titular de página.
* Escudo de especificidad para las reglas que el tema pisaba, sin recurrir a
  `!important`.
* Sin cambios funcionales respecto a 0.9.0-rc3.

= 0.9.0-rc3 =
* Las pestañas pasan a control segmentado: carril redondeado y pastilla elevada
  para la activa, en lugar del subrayado.
* El formulario de datos de la cuenta se maqueta en dos columnas sobre el mismo
  marcado nativo: nombre y apellidos a la par, nombre público junto al email, y
  las contraseñas nuevas emparejadas. Alrededor de la mitad de alto.
* Campos más compactos, con etiqueta menor, foco con halo de acento y el campo
  de foto en horizontal.
* Sin cambios funcionales respecto a 0.9.0-rc2.

= 0.9.0-rc2 =
* Navegación de Mi cuenta en pestañas horizontales, con scroll dentro de la
  propia tira y la pestaña activa centrada al cargar.
* Rediseño del panel siguiendo minimalismo suizo: banner sin caja, tarjetas de
  cifra diferenciadas de las de acceso, estado del pedido como píldora.
* Accesibilidad: objetivos de 44 px, `focus-visible` en pestañas, tarjetas y
  botones, botón deshabilitado con contraste suficiente y soporte de
  `prefers-reduced-motion`.
* Sin cambios funcionales respecto a 0.9.0-rc1.

= 0.9.0-rc1 =
* Candidata de publicación. Funcionalidad completa, pendiente de la verificación
  manual en navegador descrita en docs/QA-CHECKLIST.md.

== Upgrade Notice ==

= 1.7.0 =
Repetir pedido, factura, libreta de direcciones y seguimiento pasan a WC Account Hub Pro: activa la licencia antes de actualizar para no perderlos (los datos no se borran).

= 0.9.0-rc24 =
Corrige el guardado de avatares pequeños y documenta con precisión el control de concurrencia de facturas.

= 0.9.0-rc23 =
Refuerza avatares, facturas concurrentes, privacidad y limpieza para instalaciones de mayor volumen.
= 0.9.0-rc23 =
Moderniza los encabezados de Mi cuenta y corrige su espaciado sin alterar WooCommerce.

= 0.9.0-rc21 =
Integra las cabeceras de perfil dentro de sus bloques sin alterar la semántica.

= 0.9.0-rc20 =
Corrige la integración de las cabeceras de perfil y centra los iconos de contraseña.

= 0.9.0-rc19 =
Reorganiza por completo la rejilla visual de la sección de contraseña.

= 0.9.0-rc18 =
Mantiene los iconos de contraseña centrados dentro de sus campos.

= 0.9.0-rc17 =
Refactoriza el formulario de perfil y corrige la alineación del correo y la contraseña.

= 0.9.0-rc16 =
Integra la libreta de direcciones con el checkout clásico y CartFlows.

= 0.9.0-rc15 =
Corrige el icono y el contenedor interior de las direcciones adicionales.

= 0.9.0-rc14 =
Corrige la interferencia de Astra en la alineación y disposición de las acciones.

= 0.9.0-rc13 =
Corrige la estructura, separación y adaptación responsive de la tabla de pedidos.

= 0.9.0-rc12 =
Corrige el centrado y el comportamiento responsive de las acciones del historial de pedidos.

= 0.9.0-rc11 =
Versión de prueba. No apta para producción hasta completar el QA manual.

= 0.9.0-rc10 =
Versión de prueba. No apta para producción hasta completar el QA manual.

= 0.9.0-rc9 =
Versión de prueba. No apta para producción hasta completar el QA manual.

= 0.9.0-rc8 =
Versión de prueba. No apta para producción hasta completar el QA manual.
