# Cambios · NimiApps 0.2.0 (ENT-002)

Versión anterior: 0.1.0 (ENT-001, «Plataforma de Microapps»).
Fecha: 21/10/2026.

La lista exacta de archivos está en `manifiesto/archivos-nuevos.txt` (168) y
`manifiesto/archivos-modificados.txt` (21) del paquete.

## Novedades

### Marca
- La plataforma pasa a llamarse **NimiApps** (página inicial, panel, correos,
  `microapps:check`, `/estado`). Versión `0.2.0`, entrega `ENT-002`.

### Cuentas de usuario
- Registro con nombre, apellidos, email, contraseña y aceptación expresa de
  condiciones y privacidad (se guarda versión y fecha). Textos legales
  provisionales en `/legal/condiciones` y `/legal/privacidad`, marcados como
  tales.
- Acceso con «recordarme», límites de intentos, cierre de sesión seguro.
- Recuperación de contraseña con enlace temporal de un solo uso.
- Verificación de email con reenvío limitado.
- Perfil: datos, email (con nueva verificación y aviso a la dirección
  anterior), contraseña, organizaciones y cierre de las demás sesiones.

### Espacios de trabajo
- Espacio personal automático para cada usuario (también para los que ya
  existían).
- Organizaciones con nombre, identificador interno único, nombre comercial y
  datos fiscales opcionales. Se pueden tener varias y cambiar entre ellas.
- Roles propietario, administrador y miembro, con permisos comprobados en el
  servidor. Transferencia de propiedad segura. Abandonar una organización.
- Invitaciones por email: token seguro (solo se guarda su hash), caducidad
  configurable, un solo uso, reenvío controlado, revocación, sin duplicados.
- Aislamiento multiempresa: comprobación de la membresía en cada petición,
  rasgo `BelongsToWorkspace` para los futuros módulos, contexto en trabajos en
  cola y comandos.

### Panel
- Nuevo panel privado (`/panel`): barra superior con logo, selector de espacio
  y menú de usuario; menú lateral (Inicio, Mis aplicaciones, Mi espacio,
  Miembros, Invitaciones, Configuración) según permisos; versión móvil.
- Inicio con bienvenida, espacio activo, tipo, resumen de miembros y el
  estado vacío «Todavía no tienes aplicaciones activas».

### Administración interna
- `/admin` separado del panel: resumen, usuarios, organizaciones y miembros
  de cada organización, con búsqueda.
- Comandos `microapps:admin-crear`, `microapps:admin-listar` y
  `microapps:admin-revocar`. Sin contraseñas por defecto ni acceso web para
  hacerse administrador.

### Correo
- Correos transaccionales en español con la identidad de NimiApps:
  verificación, recuperación, invitación, aviso de registro con email
  existente, cambio de email, transferencia de propiedad.
- Comando `microapps:correo-prueba EMAIL`.
- Transporte de pruebas: `MAIL_MAILER=log` + `MAIL_LOG_CHANNEL=correo`
  (`storage/logs/correo-*.log`).

### Seguridad y auditoría
- Registro de auditoría (`audit_logs`) de accesos, registros, invitaciones,
  roles, expulsiones, transferencias y acciones de administración, sin
  contraseñas ni tokens.
- Límites de peticiones por acción, políticas de autorización, protección
  IDOR (identificadores buscados dentro del espacio activo), páginas de error
  propias sin detalles técnicos.

### Diagnóstico
- `microapps:check` comprueba además las tablas y columnas de ENT-002, la
  configuración de autenticación y sesiones, la configuración de correo (sin
  enviar nada), la integridad de los espacios y el número de
  administradores.

## Base de datos

8 migraciones nuevas, todas aditivas:

| Migración | Cambio |
|-----------|--------|
| `2026_10_21_000001_add_profile_columns_to_users_table` | `users`: `last_name`, `current_workspace_id`, `last_login_at` |
| `2026_10_21_000002_create_workspaces_table` | Tabla `workspaces` |
| `2026_10_21_000003_create_workspace_memberships_table` | Tabla `workspace_memberships` |
| `2026_10_21_000004_create_workspace_invitations_table` | Tabla `workspace_invitations` |
| `2026_10_21_000005_create_legal_acceptances_table` | Tabla `legal_acceptances` |
| `2026_10_21_000006_create_platform_admins_table` | Tabla `platform_admins` |
| `2026_10_21_000007_create_audit_logs_table` | Tabla `audit_logs` |
| `2026_10_21_000008_link_users_to_workspaces` | Clave foránea de `current_workspace_id` y espacio personal para los usuarios existentes |

Todas tienen `down()` (probado con `migrate:rollback --step=8`).

## Archivos modificados de ENT-001

| Archivo | Cambio |
|---------|--------|
| `config/microapps.php` | Nombre NimiApps, versión 0.2.0, versiones actualizables, textos legales, invitaciones |
| `config/auth.php` | Duración de «recordarme» y de la verificación de email |
| `config/mail.php` | Tema de correo NimiApps |
| `config/logging.php` | Canal `correo` para el transporte de pruebas |
| `bootstrap/app.php` | Alias de middleware y redirecciones de invitados/usuarios |
| `routes/web.php` | Rutas de acceso, panel, invitaciones, legal y `/admin` |
| `app/Models/User.php` | Verificación de email, apellidos, espacios, relaciones |
| `app/Providers/AppServiceProvider.php` | Políticas, límites, auditoría, contraseña mínima, espacio activo |
| `app/Http/Controllers/Controller.php` | Autorización en controladores |
| `app/Console/Commands/CheckInstallation.php` | Comprobaciones de ENT-002 |
| `resources/views/home.blade.php`, `resources/css/app.css`, `public/build/manifest.json` | Página inicial NimiApps y CSS recompilado |
| `.env.example` | NimiApps, ejemplo de SMTP, transporte de pruebas, caducidad de invitaciones |
| `README.md`, `CHECKSUMS.sha256` | Documentación y huellas de la 0.2.0 |
| `database/factories/UserFactory.php`, `tests/*` | Pruebas |

## Sin cambios

- `composer.json` y `composer.lock` (no hay dependencias nuevas): `vendor/` de
  ENT-001 sigue siendo válido y no se incluye en el paquete.
- `.htaccess` y `public/.htaccess`: no se incluyen en el paquete para no
  sobrescribir la configuración del servidor.
- El JavaScript compilado (`app-MgsdtW8N.js`) es el mismo de ENT-001. El CSS
  anterior (`app-c66wexFq.css`) queda en el servidor sin uso.

## Nuevas variables de `.env` (todas opcionales)

| Variable | Por defecto | Uso |
|----------|-------------|-----|
| `MAIL_LOG_CHANNEL` | (ninguno) | `correo` para guardar los correos de prueba en su propio log |
| `NIMIAPPS_INVITATION_EXPIRE_HOURS` | `72` | Validez de las invitaciones |
| `AUTH_REMEMBER_MINUTES` | `43200` | Duración de «recordarme» (30 días) |
| `AUTH_VERIFICATION_EXPIRE` | `60` | Minutos de validez del enlace de verificación |

## Fuera de alcance (no incluido)

Microapps comerciales, pagos y planes, CMS, eliminación de organizaciones,
textos legales definitivos y todo lo previsto para ENT-003.
