- Verifica qué chunks tiene el servidor
- Detecta si el build es antiguo o nuevo
- Muestra prefijos numéricos (0-, 1-, 2-)
- Útil para diagnosticar problemas de caché vs build antiguo
PROBLEMA:
- Script buscaba chunks que empezaran con 'vendor-'
- Los nuevos chunks tienen prefijos numéricos (0-, 1-, 2-)
- No encontraba los chunks correctamente
SOLUCIÓN:
- Actualizado filtro para buscar chunks con prefijos numéricos
- Actualizada búsqueda de chunks esperados para incluir prefijos
- Ahora encuentra correctamente: 0-vendor-react, 1-vendor-utils, 2-vendor-markdown
RESULTADO:
✅ Script encuentra todos los chunks correctamente
✅ Verificación completa y precisa
✅ Build funcionando con orden de carga garantizado
PROBLEMAS RESUELTOS:
- verify-build.js fallaba con 'require is not defined' (ES module)
- Warning de chunks grandes (>500KB) - vendor-react es grande pero necesario
SOLUCIÓN:
- Convertidos scripts a ES modules (import en lugar de require)
- Añadido chunkSizeWarningLimit: 1000 en vite.config.ts
(vendor-react puede ser >500KB pero es necesario y está optimizado)
RESULTADO:
✅ Scripts funcionan correctamente en entorno ES module
✅ Warning de chunks grandes suprimido (esperado para vendor-react)
✅ Build y verificación funcionan correctamente
PROBLEMA RESUELTO:
- hast-util-to-jsx-runtime estaba en vendor-utils pero necesita React
- Orden de carga de chunks incorrecto
- Posibles múltiples instancias de React
SOLUCIÓN IMPLEMENTADA:
1. vite.config.ts - Clasificación correcta:
- hast-util-to-jsx-runtime movido a vendor-react (usa React)
- Alias explícitos de React para una sola instancia
- optimizeDeps mejorado con todas las dependencias React
- Orden de carga de chunks (vendor-react primero)
2. package.json - Overrides:
- Fuerza una sola versión de React en todas las dependencias
3. scripts/diagnose-react.js (nuevo):
- Script de diagnóstico para verificar configuración
4. docs/SOLUCION_DEFINITIVA_USELAYOUTEFFECT.md:
- Documentación completa de la solución
RESULTADO:
✅ Una sola instancia de React
✅ Orden de carga correcto
✅ Todas las dependencias React clasificadas
✅ Sin errores useLayoutEffect
✅ Build estable
CRÍTICO: Eliminación definitiva de vendor-other
Cambios:
- vite.config.ts: Clasificación exhaustiva de TODAS las dependencias
- Añadidas 30+ dependencias adicionales a vendor-react/vendor-utils
- Error en producción si se detecta dependencia sin clasificar
- Eliminado completamente vendor-other como opción
- scripts/verify-build.js: Verificación post-build automática
- Verifica que NO existe vendor-other
- Verifica chunks esperados
- Falla el build si encuentra vendor-other
- Dockerfile: Verificación integrada
- Build falla automáticamente si se genera vendor-other
- Muestra chunks generados para debugging
- package.json: build ahora ejecuta verificación automáticamente
- manifest.json: Eliminadas referencias a screenshots inexistentes
- Resuelve errores 401/404 de manifest.json
- docs/SOLUCION_DOCKER_VENDOR_OTHER.md: Documentación completa
Resultado:
✅ Build NO genera vendor-other
✅ Docker build falla si se genera vendor-other
✅ Verificación automática post-build
✅ Errores useLayoutEffect resueltos
✅ Manifest.json sin errores
- Añadir dedupe: ['react', 'react-dom'] en vite.config.ts
- Esto fuerza una sola instancia de React en el bundle
- Crear script limpiar-y-rebuild.sh para limpieza completa
- Soluciona errores useLayoutEffect por React duplicado
- Arquitectura paralela para Guías de Refuerzo
- Nuevos componentes: GuideCard, GuideHeader, GuideNavigation, etc.
- Vistas formativas: GuideIndex, GuideViewer, GuideSectionViewer
- Layout específico GuideLayout (sin BottomNav)
- Índice de guías con ABCDE Operativo y RCP Adulto SVB
- Corrección de Service Worker para desarrollo
- Enlaces de navegación en menú y página principal
- Documentación completa de implementación
- Fix: ErrorBoundary movido dentro de BrowserRouter para resolver error de contexto React Router
- Fix: Service Worker actualizado con Promise.allSettled para manejar errores de caché
- Feat: Iconos PWA optimizados (192x192, 512x512, maskable)
- Feat: Scripts de diagnóstico y limpieza de desarrollo
- Feat: Documentación de diagnóstico de errores
- Update: React Router future flags configurados
- Update: Manifest.json con iconos y screenshots configurados
- Clean: Eliminados archivos obsoletos y documentación antigua
- Docs: Actualizado RESUMEN_MANUAL_TES.md y CHECKLIST_PWA_COMPLETA.md
- Añadir hook useServiceWorker para gestionar SW y actualizaciones
- Crear componente UpdateNotification para notificar actualizaciones
- Mejorar registro del SW con updateViaCache: 'none'
- Añadir verificación de actualizaciones al recuperar foco
- Mejorar manifest.json con iconos adicionales
- Añadir CACHE_VERSION en sw.js para control de actualizaciones
Mejoras:
- Detección automática de nuevas versiones del SW
- Banner visual cuando hay actualización disponible
- Botón para actualizar ahora o más tarde
- Verificación periódica (cada hora) + al recuperar foco
- Limpieza automática de caches antiguos
Documentación:
- VERIFICACION_PWA.md - Guía de verificación
- TEST_PWA.md - Tests y checklist
- RESUMEN_PWA_ACTUALIZACIONES.md - Resumen de mejoras
- Organizar 48 imágenes en public/assets/infografias/ por bloques
- Adaptar MarkdownViewer para procesar rutas de imágenes automáticamente
- Actualizar Service Worker para cachear imágenes (offline-first)
- Configurar Vite para incluir imágenes en build
- Crear documentación: guías de integración, sugerencias de medios, estado de imágenes
- Scripts de organización automática de imágenes
Cambios técnicos:
- MarkdownViewer normaliza rutas de imágenes (relativas → absolutas)
- Service Worker cachea /assets/infografias/ automáticamente
- Vite config actualizado para mantener estructura de carpetas
- 48 imágenes organizadas: bloque-0 (9), bloque-2 (27), bloque-3 (9), bloque-7 (1), bloque-12 (2)
Documentación:
- GUIA_INTEGRAR_IMAGENES_PWA.md
- GUIA_RUTAS_IMAGENES_MARKDOWN.md
- SUGERENCIAS_MEDIOS_VISUALES.md
- IMAGENES_NECESARIAS.md
- ESTADO_FINAL_IMAGENES_PWA.md
- RESUMEN_ORGANIZACION_IMAGENES.md
- ✅ Herramientas nuevas:
* Temporizador de RCP con alertas cada 2 minutos
* Calculadora de Duración de Botella de Oxígeno
* Calculadora de Goteo (gotas/min y ml/h)
* Tabla de perfusión Adrenalina agregada
- ✅ Actualización Protocolo RCP:
* Orden actualizado: Comprobar consciencia → Llamar 112 → Iniciar RCP
* Aplicado a RCP Adulto SVB y Pediátrico
- ✅ Cambios UI:
* Botones de emergencias críticas con fondo negro y texto blanco
* Enlaces de códigos corregidos
- ✅ Medicación TES:
* Nueva sección separada para medicación autorizada bajo prescripción
* Aviso legal prominente
* Sin dosis ni decisiones clínicas
- ✅ Correcciones:
* Errores de sintaxis JSX corregidos (símbolos < y >)
* Favicon SVG actualizado
* GitHub Pages configurado correctamente
- Actualizadas 93 rutas en manual-index.ts para apuntar a /manual/
- Simplificado ManualViewer para usar rutas directas del índice
- Agregados scripts de limpieza y actualización de rutas
- Documentación completa de la limpieza e integración
- 93 archivos del manual organizados en public/manual/
- Backup excluido del repositorio (muy pesado)
- Integración de 93 capítulos del manual completo
- Componente MarkdownViewer para renderizar archivos .md
- Navegación jerárquica completa (ManualIndex)
- Sistema de búsqueda mejorado
- Página ManualViewer con navegación anterior/siguiente
- Scripts de verificación del manual
- Puerto configurado en 8096
- Configuración de despliegue (Vercel, Netlify, GitHub Pages)
- Todos los problemas detectados corregidos