Commit Graph

5 Commits

Author SHA1 Message Date
Milton Gonzalez 22071b344a fix: version 2.18.3 -- F5 normal ya no muestra la version anterior tras actualizar
El service worker servia index.html desde su precache en cada navegacion.
Navegaciones pasan a NetworkFirst (cache solo offline), serve.json agrega
no-cache a html/sw.js e immutable a /assets, y se chequean actualizaciones
del SW cada 30 min y al volver a la pestaña.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 08:34:18 -05:00
Milton Gonzalez 62f94b09ee fix: version 2.2.3 -- auto-reload al tomar control el service worker nuevo
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 12:34:10 -05:00
Milton Gonzalez 08e6db0b6f feat: app instalable desde el navegador (PWA)
vite-plugin-pwa genera manifest.webmanifest + service worker en el build. Iconos nuevos
generados a partir del logo actual (192, 512, maskable para Android). El service worker
precachea solo assets estaticos (JS/CSS/iconos) -- /api nunca se cachea, siempre va a la red, asi
los datos no quedan desactualizados. Se actualiza solo (autoUpdate) sin pedirle nada al usuario.

Probado: build genera sw.js/manifest correctamente, el service worker registra y activa en un
browser real, y la app (login, listado de proyectos, llamadas a /api) sigue funcionando igual
que antes -- sin regresiones.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 15:25:04 -05:00
Milton Gonzalez dec8891506 feat: log de errores para el admin (backend + frontend)
Panel nuevo en Configuracion ("Errores del sistema", solo superadmin): errores de backend
(excepciones 500 no manejadas, con stack/ruta/metodo/usuario) y de frontend (errores JS y
promesas sin catch en el navegador del usuario, antes invisibles para cualquiera mas alla de esa
persona). Filtro por origen, boton para limpiar el historial.

Error Boundary de React: si algo rompe el render, ya no queda pantalla en blanco -- aviso simple
con boton de recargar, y el error queda reportado igual.

Nuevo error_logs (tabla, se recorta sola a 1000 filas) + GET/DELETE /api/error-logs (superadmin)
+ POST /api/error-logs (publico, rate-limited, para reportar incluso sin sesion).

Probado de punta a punta en dev: error real de backend (500) capturado con stack completo y
usuario correcto, error JS global y promesa rechazada capturados desde el navegador, panel
muestra ambos y el boton de limpiar funciona. Se encontro y corrigio un bug real en el camino: la
identificacion de usuario opcional leia jwt.payload.id en vez de .sub (como realmente lo firma
auth/service.js), asi que nunca identificaba a nadie.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:31:40 -05:00
Milton Gonzalez 1d22adc42e chore: estructura inicial del MVP
Backend (Express + MariaDB) y frontend (React + Vite, identidad Fluent/Windows) con el
nucleo funcional: seguridad, organizacion, proyectos, actividades, subtareas, dependencias,
dashboard, calendario, gantt, comentarios, adjuntos, notificaciones in-app y catalogos.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 08:37:58 -05:00