# Changelog - project.linkedcorp.net ## [1.2.0] - 2026-09-06 ### Added - Cambiar clave desde la app: `PUT /api/auth/change-password` (exige la clave actual) + opción "Cambiar clave" en el menú de usuario (popup), disponible para cualquier usuario logueado. ## [1.1.0] - 2026-09-06 ### Added - Autorregistro público (`/registro`) con verificación de correo (enlace de un solo uso, 24h) y aprobación posterior por Administrador/Superadministrador (`/api/users/:id/approve|reject`). - Recuperación de clave (`/olvide-clave` → `/restablecer-clave`), respuesta siempre genérica. - Rol `superadmin`: el usuario más antiguo del sistema (bootstrap automático al primer registro). - Configuración → Correo (SMTP), solo visible/editable por el superadmin; clave cifrada (AES-256-GCM) en `system_settings`, nunca expuesta por la API. Sin configurar, los correos de verificación/recuperación se loguean en vez de enviarse (modo dev, no rompe el flujo). ### Fixed - Bug real: `React.StrictMode` disparaba dos veces el efecto de `VerifyEmailPage`, y la segunda llamada (token ya consumido) mostraba "enlace inválido" aunque la verificación sí había funcionado. Corregido con una guarda por token ya solicitado. - Reordenado el montaje de rutas del backend: `subtasksRoutes` (mount genérico en `/api`) queda al final, para no interceptar con su `requireAuth` interno una request sin token dirigida a un router más específico registrado después (ver deuda técnica de la v1.0.0). ## [1.0.0] - 2026-09-06 ### Added - Primer despliegue a producción: `https://project.linkedcorp.net` (arquetipo B, dos servicios). - `create-admin.js`: bootstrap del usuario Administrador de producción con clave fuerte generada. ### Changed - `seed-db.js` separa catálogos (universal) de datos de ejemplo (solo entornos no productivos). - Logo real de LinkedCorp (sidebar, login) en vez del placeholder "LC"; tamaño duplicado. - `ComboBox`/`Flyout` se posicionan con portal a `document.body` (ya no se recortan dentro de un `Expander` o `DetailPopup`). - Master-detail de listados unificado en `DetailPopup` (popup de tamaño fijo, no se cierra con clic afuera) en Proyectos, Actividades, Departamentos, Usuarios, Miembros y Catálogos. - "Miembros" del proyecto pasa a ser su propia pestaña (antes vivía dentro de "Info"). ## [0.1.0] - 2026-09-03 ### Added - Estructura inicial del proyecto (backend Express + frontend React/Vite + MariaDB). - Modelo de datos MVP: usuarios/roles, departamentos, proyectos, actividades, subtareas, dependencias, comentarios, adjuntos, notificaciones, auditoría, catálogos. - Identidad UI/UX Fluent/Windows 11 (UI-UX-WINDOWS) adaptada a app web.