45 KiB
45 KiB
Changelog
[1.24.3] - 2026-10-30
Fixed
- Sincronización Recíproca de Metadatos y Auto-Conexión Mercure (
PluginService,GroupsComponent):- Solucionado el fallo de actualización del tiempo restante en vivo:
meta.remaining_minutes(snake_case fijado en la carga inicial HTTP) bloqueaba la lectura de las actualizaciones reactivas de Mercure emitidas en camelCase (remainingMinutes). setPluginMetadatanormaliza y actualiza recíprocamente ambas claves (remainingMinutesyremaining_minutes) en cada evento recibido.- Auto-conexión garantizada de Mercure en
PluginService: si la URL de Mercure se resuelve de forma asíncrona tras la carga de la configuración, se conecta de manera transparente al solicitar estados o badges. - Implementado sondeo de seguridad en segundo plano cada 30 segundos en
GroupsComponentpara mantener siempre sincronizados los minutos y badges de plugins ante micro-cortes o reconexiones de SSE.
- Solucionado el fallo de actualización del tiempo restante en vivo:
[1.24.2] - 2026-10-30
Fixed
- Actualización Reactiva en Tiempo Real de Tooltips y Badges de Plugins (
PluginService,groups.component,execute-command.component):- Solucionado el problema por el cual el tiempo restante en el tooltip de los badges no se actualizaba en vivo al recibir eventos Mercure o tras ejecutar acciones como "Renovar tiempo", requiriendo recargar la página manualmente.
- La recepción de eventos SSE de Mercure en
PluginServicese ejecuta ahora dentro deNgZone.run(), emitiendo a través del nuevo flujo observable reactivostatusUpdates$. - Suscripción reactiva en
GroupsComponentapluginService.statusUpdates$, activando la detección de cambios (cd.detectChanges()) de manera inmediata ante cualquier actualización de estado o metadatos de puestos. - En
groups.component.htmlyclient-details.component.html, la expresión de seguimiento del control de flujo (@for) incorpora ahora el tooltip (track ... + (badge.tooltip || '')), forzando la actualización instantánea del enlace[matTooltip]en el DOM al cambiar los minutos restantes o datos del alumno. - Tras procesar con éxito un comando de plugin en
ExecuteCommandComponent, se dispara automáticamente una recarga de estados en segundo plano (loadActivePluginsStatus()).
[1.24.1] - 2026-10-30
Fixed
- Detección Dinámica de Lenguaje y Resaltado en Editor de Scripts de Plugins (
PluginSettingsComponent,PluginService):- Corregido el badge de cabecera del editor de código en
plugin-settingsque mostraba estáticamentePOWERSHELLincluso en scripts de Bash/Linux (#!/bin/bash). - Incorporada la propiedad declarativa
language?: stringenSchemaField(PluginService), permitiendo a los plugins especificar directamente su sintaxis (ej.bash,powershell,sh). - Detección automática inteligente como respaldo según el atributo
field.language, el nombre de la clave (linux,bash,ps1, etc.) o el shebang del script (#!/bin/bash,#!/bin/sh). - Adaptación contextual del motor de coloreado de sintaxis para comandos (
echo,mount,losetup,update-initramfs, etc.), palabras clave (if,fi,then,do,done, etc.) y banderas de Linux (--bind,-o, etc.).
- Corregido el badge de cabecera del editor de código en
[1.24.0] - 2026-10-28
Added
- Control de Acceso y Visibilidad de Funciones de Plugins por Rol (
PluginService,PluginSettingsComponent,ExecuteCommandComponent):- Incorporada especificación declarativa de roles autorizados (
roles?: string[]) en la interfazPluginCommand. - Creada matriz interactiva de permisos en
PluginSettingsComponentdentro de la nueva subpestaña "Funciones y Roles", permitiendo a los administradores activar o revocar gráficamente el acceso a cada comando expuesto por cualquier plugin para cada rol del sistema. - Los roles disponibles se extraen dinámicamente desde
ogcore(GET /user-groups), con respaldo seguro en los roles canónicos de OpenGnSys (ROLE_SUPER_ADMIN,ROLE_ORGANIZATIONAL_UNIT_ADMIN,ROLE_ORGANIZATIONAL_UNIT_OPERATOR,ROLE_ORGANIZATIONAL_UNIT_MINIMAL). - La personalización se persiste en la base de datos dentro de
configData.command_rolesde forma 100% desacoplada sin requerir alteraciones en el esquema backend. - En
PluginService.getPluginGroups(), los comandos disponibles en los menús de acción (ExecuteCommandComponent) se filtran reactivamente en función del rol y permisos del usuario autenticado, ocultando totalmente aquellas opciones que no le correspondan (ej. un conserje con perfil básico solo visualiza Reservar, Liberar y Renovar puesto, permaneciendo invisibles las funciones de instalación o mantenimiento). - Total adhesión a la sintaxis moderna de control de flujo Angular (
@if,@for) y diseño modular de estilos CSS sin atributos inline. - Soporte de internacionalización integral (
@ngx-translate) con catálogos actualizados en español (es.json), inglés (en.json) y catalán (cat.json) para todos los textos, pestañas, cabeceras y notificaciones toast de la configuración de roles.
- Incorporada especificación declarativa de roles autorizados (
[1.23.0] - 2026-10-27
Added
- Enriquecimiento Contextual de Tooltips en Badges de Plugins (
PluginService,groups.component):- Incorporada caché reactiva de metadatos de clientes (
clientPluginMetadataMap) enPluginService, extrayendo automáticamente atributos contextuales proporcionados por cualquier plugin tanto en la consulta inicial (statusEndpoint) como en las actualizaciones en tiempo real recibidas por Mercure. - Al renderizar los badges (
getClientBadges), si existen atributos contextuales como el identificador del alumno/usuario (dni,user) y el tiempo restante (remaining_minutes,remainingMinutes), se añaden dinámicamente al texto del tooltip (ej."Puesto reservado y en uso (DNI: 44212977P · 58 min restantes)"), preservando el badge visualmente limpio y compacto (Ocupado,A punto de expirar). - Limpieza automática y atómica de metadatos cuando el puesto queda libre (
FREE) o se reinicia (NONE), manteniendo sincronizada la consola web en todo momento sin acoplamiento a ningún plugin en concreto.
- Incorporada caché reactiva de metadatos de clientes (
[1.22.0] - 2026-10-27
Added
- Diálogos Dinámicos de Parámetros y Confirmación en Comandos de Plugins (
PluginCommandModalComponent,ExecuteCommandComponent):- Incorporada especificación de parámetros interactivos (
params?: CommandParam[]) y mensajes de confirmación (confirm?: string; confirmKey?: string) en la interfaz declarativaPluginCommand. - Creado el componente modal genérico
PluginCommandModalComponentque renderiza dinámicamente formularios reactivos con soporte para campos de texto, números, selectores y conmutadores (checkbox), respetando validaciones de obligatoriedad (required) e internacionalización con@ngx-translate. - En
ExecuteCommandComponent, al disparar un comando de cualquier plugin que requiera parámetros o confirmación, se abre automáticamente el modal interactivo, inyectando los valores resultantes en el cuerpo de la petición POST enviada al endpoint del plugin de forma 100% desacoplada. - Total adhesión a la sintaxis moderna de control de flujo Angular (
@if,@for,@switch) y separación estricta de estilos sin atributos inline.
- Incorporada especificación de parámetros interactivos (
[1.21.1] - 2026-10-27
Fixed
- Desacoplamiento Total y Agnóstico en Plugins (
PluginService,PluginSettingsComponent):- Eliminado cualquier acoplamiento o referencia estática a nombres de plugins en la consola web (
PluginSettingsComponent,PluginServicey catálogos globaleslocale/*.json). - El sistema opera de forma 100% agnóstica y dinámica: la presencia de la sub-pestaña "Historial y Registros" responde exclusivamente a la declaración de
recordsEndpointen el manifiesto de cualquier plugin. - La internacionalización de plugins se carga dinámicamente en caliente mediante
@ngx-translateconsultando el endpoint/i18n/{lang}de cada plugin, respetando la estructura estándar de namespaces anidados como enogfreeze.
- Eliminado cualquier acoplamiento o referencia estática a nombres de plugins en la consola web (
[1.21.0] - 2026-10-26
Added
- Sub-pestaña Genérica de Historial y Registros en Plugins (
PluginManifest,PluginSettingsComponent):- Incorporado soporte en
PluginManifestpararecordsEndpointyrecordsColumns(RecordColumn), permitiendo a cualquier plugin declarar un origen de datos tabular desacoplado. - Añadido selector de sub-pestañas en
plugin-settingspara alternar entre "Configuración" e "Historial y Registros". - Vista de registros completa con buscador en tiempo real (por DNI, puesto o aula), ordenación cronológica, paginación reactiva y contador de resultados.
- Soporte de exportación a archivo CSV con descarga directa desde backend (
${recordsEndpoint}/export) y fallback automático de generación en cliente con BOM UTF-8 para compatibilidad universal. - Renderizado adaptativo de celdas con soporte de badges semánticos para identificadores (DNI), duraciones y motivos de cierre de sesión (
TIMEOUT,RELEASED_BY_CONCIERGE,DISABLED_BY_ADMIN). - Total adhesión a la sintaxis moderna de control de flujo Angular (
@if,@for,@switch) y estilos reutilizables sin atributos inline.
- Incorporado soporte en
[1.20.0] - 2026-10-26
Added
- Soporte de Estados y Badges a Nivel de Partición en Plugins (
PluginService,groups.component):- Incorporada gestión granular de estados por partición (
${plugin}:${clientId}:${disk}:${partition}). - En eventos Mercure con
status === 'NONE'en una partición específica, se limpia la clave de la partición y cualquier estado transitorio global obsoleto (REMOVING,CHECKING, etc.), permitiendo quegetClientBadgesevalúe de inmediato y preserve el badge activo de cualquier otra partición protegida del equipo. - Soporte de invalidación granular por disco y partición en eventos de imagen y particionado.
- Incorporada gestión granular de estados por partición (
[1.19.0] - 2026-10-23
Added
- Activación y Desactivación Dinámica de Plugins (
PluginService,plugins.component,plugin-settings.component):- Incorporada la capacidad de activar y desactivar plugins en caliente sin desinstalarlos del sistema.
- Al desactivar un plugin, sus comandos contextuales y badges se ocultan automáticamente de las tarjetas y menús de clientes en toda la consola web, preservando íntegra su configuración en base de datos.
- En la vista de administración
/plugins, se integró un interruptor deslizante (mat-slide-toggle) en la cabecera de configuración para conmutar entreActivoeInactivocon notificación toast y actualización reactiva. - Añadido indicador visual de estado y conteo en la cabecera del panel (
X Activo(s) / Y Instalado(s)) y badgeInactivoen las pestañas de los plugins deshabilitados.
[1.18.0] - 2026-10-23
Added
- Desacoplamiento Total de Plugins y Eventos Mercure (
PluginService,groups.component,execute-command.component):PluginService: Suscripción dinámica y agnóstica al topic genérico de Mercureplugins, procesando eventos de cualquier plugin de forma desacoplada y actualizando el estado de los clientes en tiempo real sin hardcoding.- Consulta agnóstica de endpoints de estado (
statusEndpoint) y reglas de badges (badges) declaradas dinámicamente en los manifiestos de los plugins. - Inferencia dinámica de badges contextuales en clientes (
getClientBadges) mapeados directamente desde la especificaciónbadgesdel manifiesto del plugin. - Limpieza de estilos en
groups.component.css, adoptando clases semánticas universales (.badge-info,.badge-neutral,.badge-pending,.badge-error,.badge-success,.badge-warning).
- Sistema Estandarizado de Internacionalización Dinámica de Plugins (
PluginService,plugins.component,plugin-settings.component,execute-command.component):- Incorporada la carga e inyección en caliente de traducciones (
i18n) desde el endpoint/api/plugins/{name}/i18n/{lang}de cada plugin directamente en@ngx-translate, sin necesidad de alterar los ficheros de idioma en disco ni requerir recompilación. - Soporte completo para claves semánticas (
titleKey,descriptionKey,labelKey,tooltipKey) en comandos, badges y formularios de configuración de plugins, con reactividad automática ante el cambio de idioma en la cabecera.
- Incorporada la carga e inyección en caliente de traducciones (
[1.17.2] - 2026-10-22
Revert
- Cancelación de Tareas (
task-logs.component):- Revertida la modificación temporal que permitía seleccionar y cancelar trazas en estado
Enviado(sent). Se mantiene la regla del sistema que solo permite seleccionar y cancelar trazas en estadopendingoin-progress.
- Revertida la modificación temporal que permitía seleccionar y cancelar trazas en estado
[1.17.0] - 2026-10-22
Added
- Encolado Inteligente por Sistema Operativo Destino (
execute-command.component):- Al ejecutar comandos de plugins específicos de un sistema operativo (como
ogfreezepara Windows), si hay equipos apagados, desconectados o actualmente iniciados en un SO diferente (ej.og-live), se ofrece la confirmación de encolado (QueueConfirmationModalComponent) enviando el metadatotarget_os. - La tarea encolada esperará de forma segura en
ogcorea que el equipo arranque en el sistema operativo compatible antes de ser despachada.
- Al ejecutar comandos de plugins específicos de un sistema operativo (como
[1.16.0] - 2026-10-22
Added
- Soporte Dinámico para Plugins (
PluginService,PluginsComponent,PluginSettingsComponent):- Incorporada infraestructura agnóstica para descubrimiento y gestión de plugins desacoplados a través de
/api/plugins. - Agrupación ordenada de comandos de plugins en submenús dedicados en la consola de comandos (
execute-command), organizados por plugin para mantener el menú limpio. - Comprobación y filtrado dinámico de compatibilidad por Sistema Operativo (
os: ['windows']), deshabilitando automáticamente los comandos en puestos con sistemas incompatibles. - Estándar de Contrato y Acciones de Campos para Plugins (
PluginSettingsComponent): Incorporado soporte para acciones declarativas por campo (field.action) ejecutadas contra el backend del plugin mediante el contrato estándar{ config: ... }->{ data: { [key]: value }, message: "..." }. Los botones de asistencia (como la generación de scripts) se integran directamente en la cabecera de la caja del script y la lógica reside 100% en el backend del plugin, manteniendo el núcleo deogguicompletamente agnóstico y desacoplado. - Soporte de insignias de estado (badges) contextuales por cliente en las vistas de mosaico y lista de equipos (
groups.component). - Nuevo elemento condicional "Plugins" en el menú lateral (
sidebar), visible únicamente cuando existen plugins activos en el sistema. - Resaltador de sintaxis enriquecido y visor de terminal para scripts de configuración con numeración de líneas, colores semánticos (comentarios en verde itálica, comandos, parámetros, cadenas), botón de copiado rápido y alternancia entre vista coloreada y editor manual.
- Comportamiento 100% neutro e idéntico a 1.15.0 si no hay plugins instalados.
- Incorporada infraestructura agnóstica para descubrimiento y gestión de plugins desacoplados a través de
Fixed
- Recarga de página en Plugins (
plugins.component,plugin-settings.component): Corregido el problema de sincronización reactiva al refrescar directamente (F5) la vista de/plugins, añadiendo un estado de carga visual y suscripción aplugins$para evitar mostrar prematuramente la pantalla de "No hay plugins instalados". - Rutas excluidas vacías en ogfreeze (
plugin-settings.component): Corregida la regeneración de scripts cuando el campo de rutas excluidas se deja intencionadamente en blanco; ahora omite de forma limpia el bloque de exclusiones en lugar de forzar los valores predeterminados. - Ejecución y Validación de Comandos de Plugins (
execute-command.component): Implementado el envío HTTP real de las órdenes de plugins (POST /api/plugins/...), validación de estado del SO activo (aviso si están ejecutando Linux u og-live cuando se requiere Windows) y diálogo de confirmación de encolado (QueueConfirmationModalComponent) cuando los equipos seleccionados se encuentran apagados o desconectados.
[1.15.0] - 2026-10-20
Added
- Ejecución y Encolado Automático en Clientes Offline (
execute-command,boot-so-partition,queue-confirmation-modal):- Permitida la ejecución de comandos y scripts (incluyendo inicio de sesión en partición / arranque de SO) sobre equipos apagados o grupos con estados mixtos.
- El modal de confirmación detecta automáticamente equipos apagados o estados no ejecutables de inmediato, pre-seleccionando la opción de encolado y mostrando avisos visuales informativos (disponible en ES, EN y CA).
- Unificada y estandarizada la matriz de estados de todos los comandos en la consola de comandos.
Fixed
- Selección de Clientes en Unidades Organizativas (
groups.component.html): Solucionado el problema al invocar comandos o tareas desde el menú contextual de un Aula / OU donde solo se seleccionaban los equipos mostrados en la página actual de la tabla en lugar de todos los clientes pertenecientes a la OU.
Changed
- Refactorización Angular (
boot-so-partition): Migradas directivas estructurales (*ngIf,*ngFor) a la sintaxis moderna de control de flujo (@if,@for) y extraídos los estilos inline a clases CSS reutilizables.
[1.14.4] - 2026-10-09
Fixed
- UI/UX (Componentes Genéricos): Solucionado un error en los componentes de añadir equipos a una subred (
add-clients-to-subnet) y configuración de ficheros de arranque PXE (pxe-boot-files) introducido en versiones previas. Estos componentes enviaban un identificador URI (ej./organizational-units/uuid) o el propio UUID en sus peticiones de búsqueda (GET) en lugar del ID numérico esperado por la base de datos (Doctrine), lo que impedía listar los equipos de las aulas seleccionadas. Ahora resuelven correctamente el ID numérico de la unidad seleccionada antes de realizar la petición al backend.
[1.14.3] - 2026-10-09
Fixed
- UI/UX (Componentes Genéricos): Solucionado un problema de regresión introducido en la versión 1.14.2 donde múltiples componentes de creación y edición (Crear/Editar Tarea, Usuarios, Aula, Cliente, Crear Múltiples Clientes y Mover Clientes) enviaban un identificador numérico en el payload en lugar del identificador URI (
@id) esperado por el backend para las relaciones deorganizationalUnit, provocando errores al intentar guardar. Ahora, estos componentes detectan automáticamente el identificador devuelto por el selector genérico y construyen la URI correcta antes de realizar la petición HTTP.
[1.14.2] - 2026-10-06
Fixed
- UI/UX (Componentes Genéricos): Refactorizado el comportamiento de
app-ou-selectpara que devuelva siempre el identificador URI (@id) de la unidad organizativa en lugar de su ID numérico. Esto corrige varios errores críticos en cadena (como el error al mover clientes) provocados porque la API de Symfony (API Platform) requiere referencias URI (/api/organizational_units/X) para mapear entidades relacionales, en vez de identificadores enteros puros. Adicionalmente, el componente de mover clientes se ha hecho más robusto para prevenir envíos mal formateados.
[1.14.1] - 2026-10-06
Fixed
- DHCP Subnets: Solucionado un error al añadir equipos a una subred donde la petición al servidor enviaba la unidad organizativa como "undefined", impidiendo listar los equipos del aula seleccionada.
[1.14.0] - 2026-10-05
Added
- UI/UX: Añadido buscador en todos los desplegables de selección de Unidad Organizativa gracias al nuevo componente reutilizable
OuSelectComponent.
Changed
- UI/UX: Estandarizada la selección de Unidades Organizativas en toda la consola para mostrar de forma consistente la ruta jerárquica (breadcrumb) del elemento.
- Refactor: Extraída la lógica de selección de Unidades Organizativas a un componente genérico (
OuSelectComponent) para cumplir con el principio DRY. - Refactor: Migrada la sintaxis de plantillas (directivas estructurales
*ngIf,*ngFor,*ngSwitch) a la nueva sintaxis de control de flujo de Angular 18 (@if,@for,@switch) en los componentes afectados por la refactorización.
[1.13.0] - 2026-10-02
Added
- RemotePC: Añadido un botón deslizable (toggle) en el panel de configuración de Unidades Organizativas (aulas) para habilitar el reinicio de equipos en lugar de apagado cuando son liberados por UDS.
Fixed
- UI/UX: Solucionado un error de compilación y renderizado en
partition-assistant.component.csscausado por la inserción involuntaria de caracteres nulos (UTF-16) ocultos en el código fuente.
[1.12.0] - 2026-09-30
Added
- UI/UX: Implementada persistencia en localStorage para el ancho del panel lateral del árbol de jerarquías, individualizada por usuario.
- RemotePC: Añadida la insignia indicadora de conexión remota en la vista de lista (tabla) de clientes para unificar la experiencia con la vista de tarjetas.
Changed
- UI/UX: Refinados los estilos visuales de la insignia de RemotePC (colores sutiles, bordes redondeados y tamaño reducido) para armonizar con el resto de etiquetas (ej: velocidad de red).
[1.11.1] - 2026-09-24
Fixed
- UI Layout: Corregido el problema de desbordamiento de barras de desplazamiento (scrollbars) globales forzando un diseño con flexbox en el layout principal de los clientes.
- Jerarquía de Unidades Organizativas: Se ha reemplazado la visualización del "padre inmediato" por una ruta recursiva completa (ej: Sede / Edificio / Planta / Aula) en los desplegables de aulas de ogDHCP y ogBoot.
- Auto-selección de PXE: Al elegir una partición destino en la ventana de "Despliegue de Imagen" y seleccionar "Cambiar Plantilla PXE", el sistema auto-seleccionará automáticamente la plantilla correspondiente al disco y partición (ej:
firstDisk_firstPartition).
[1.11.0] - 2026-09-23
Added
- Desplegar Imagen: Añadidas acciones post-despliegue ("Iniciar Sistema Restaurado" y "Seleccionar Plantilla PXE") que permiten encadenar comandos de configuración de inicio y reinicio directamente tras programar el despliegue.
- Preferencias de Usuario: Las opciones elegidas para el despliegue (acción post-despliegue y tipo de PXE) se persisten automáticamente en el navegador de manera segura e individual por usuario.
[1.10.2] - 2026-09-22
Fixed
- Crear/Desplegar Imagen: Eliminada la dirección IP del listado de repositorios en los selectores de despliegue, mostrando únicamente el nombre del repositorio.
[1.10.1] - 2026-09-18
Fixed
- Editor de Menús: Corregida la previsualización del diseño HTML en entornos con proxy inverso (Nginx). Se delega la resolución de los 'assets' al backend proporcionándole el
baseUrlcompleto, asegurando que las imágenes de los iconos se carguen correctamente tanto en la "Vista Global" como al previsualizar desde "Editar HTML".
[1.10.0] - 2026-09-17
Added
- Permisos de Operador (ou-operator):
- Añadido permiso explícito para que los operadores de aula puedan ejecutar el comando
createImage. - Restringida la creación de nuevas unidades organizativas de tipo "Centro" para los usuarios con rol de operador.
- Añadido permiso explícito para que los operadores de aula puedan ejecutar el comando
[1.9.0] - 2026-09-17
Added
-
Visualización y Estructura Organizativa:
- Implementados diferentes colores para las etiquetas de velocidad de las tarjetas de red en la vista de equipos, facilitando su identificación visual.
- Añadido un botón de búsqueda interactivo en el árbol organizativo (OUs) que permite ocultar/mostrar los campos de búsqueda para ahorrar espacio visual en pantalla.
- Componentes
pxe-boot-filesyadd-clients-to-subnet: Añadido buscador en los menús desplegables (dropdowns) de selección de unidades organizativas y aulas, facilitando la búsqueda en jerarquías grandes.
-
Creación de Imágenes:
- Permitida la creación de imágenes (
createImage) a partir de particiones de datos que no contienen Sistema Operativo (Data partitions).
- Permitida la creación de imágenes (
Changed
- Refactorización de plantillas HTML en
groups,pxe-boot-filesyadd-clients-to-subnetpara migrar de directivas estructurales legacy (*ngIf,*ngFor) a la nueva sintaxis de control de flujo de Angular (@if,@for).
[1.8.3] - 2026-07-31
Added
- Inventario Hardware: Añadida visualización gráfica en la interfaz web para los nuevos campos reportados por los clientes.
- Las vistas "Tarjeta" y "Lista" de equipos muestran ahora un indicador ('badge') con la velocidad de la interfaz de red (ej. 1000 Mbps).
- El Asistente de Particionado muestra el tipo de disco físico ('SATA', 'NVMe', 'USB', etc.) junto al nombre del disco.
[1.8.2] - 2026-07-27
Added
- Task Logs (
task-logs.component): ConsumeoutputandfinishedAtproperties from Mercure events to update trace outputs in real-time without reloading the page.
Fixed
- Creación de imágenes (
create-image.component): Al seleccionar la acción "Actualizar Imagen", ahora se filtran correctamente las imágenes para mostrar solo aquellas que pertenecen al repositorio objetivo asignado al cliente. - Menú de opciones de cliente (
groups.component.html): Unificado el menú de acciones (tres puntos verticales) usandomatMenuContent. Se elimina la duplicidad de código que causaba divergencias de comportamiento entre la vista tarjeta y la vista lista. Ahora la opción de "Logs en tiempo real" está siempre disponible en ambas vistas, al igual que los bloqueos al sincronizar. - Detalles de tareas (
OutputDialogComponent): Ampliado el ancho de la ventana modal de detalles a70vwpara facilitar la lectura de trazas largas y comandos de OGAgent/OGLive. - Repositorios Git (
show-git-images.component): Corregido el cierre abrupto de la ventana modal al borrar un repositorio. Ahora, la interfaz recarga la lista de repositorios, permitiendo seguir operando sin tener que volver a abrir el gestor.
[1.8.1] - 2026-07-17
Added
- Formulario de despliegue (
Deploy Image): Añadido selector de repositorio origen (OG Repository) al menú de despliegue para permitir al usuario elegir desde dónde descargar la imagen.
Changed
- Modal de partición de arranque (
boot-so-partition): Refactorizado para usar el componente compartidoapp-disk-partition-selector, eliminando código duplicado y unificando el diseño y comportamiento de la selección de discos y particiones con el resto de modales.
Fixed
- Detalles de tareas (
OutputDialogComponent): Corregido el formateo de los detalles mostrados desde los agentes (OGAgent) para renderizar el texto en crudo manteniendo los saltos de línea (usando pre-wrap por CSS ytag), y dándole formato monoespaciado en lugar de intentar forzar un parseo estricto JSON que rompía la salida de comandos.
- Formulario de despliegue (
Deploy Image): Solucionado el problema que ocultaba las comandos (instructions) cuando el despliegue era en modo caché. El código ha sido refactorizado y limpiado usando directivas estructurales estándar de Angular (*ngIf,*ngFor). - Roles: Permisos actualizados en vistas para reflejar recientes cambios de backend en la gestión de perfiles de software.
[1.8.0] - 2026-06-16
Added
- Sistema de permisos por rol en la interfaz gráfica para los cuatro perfiles:
ROLE_SUPER_ADMIN,ROLE_ORGANIZATIONAL_UNIT_ADMIN,ROLE_ORGANIZATIONAL_UNIT_OPERATORyROLE_ORGANIZATIONAL_UNIT_MINIMAL. roleGuard: protección de rutas según rol; ou-operator accede a operaciones de equipos (despliegue, particionado, scripts, imagen); ou-minimal y ou-operator son redirigidos a/groupssi intentan acceder a rutas de administración.- Botones de creación/edición de infraestructura (DHCP, Boot servers,
repositorios, comandos) ocultos para ou-admin con
*ngIf. - Botones de creación de OU y cliente ocultos para ou-operator y ou-minimal.
- Tests unitarios de permisos:
auth.service.spec.ts(5 roles × métodos de rol),role.guard.spec.ts(matriz 26 rutas × 4 roles),sidebar.component.spec.ts(visibilidad de ítems por rol). - Infraestructura E2E con Playwright:
playwright.config.ts, helpers de autenticación y API, y 4 specs de permisos (super-admin, ou-admin, ou-operator, ou-minimal) que verifican sidebar, rutas y botones. - Botón de cerrar en la ventana de plano de aula.
Improved
- La petición de equipos al hacer clic en un aula y la actualización de su estado se ejecutan de forma secuencial en lugar de en paralelo, evitando el loader general mientras se resuelven los estados individuales.
- Ficheros de idiomas (es, en, cat) ordenados alfabéticamente; revisión completa del fichero catalán.
[1.7.0] - 2026-05-14
Added
- Visor de logs de disco en las páginas de estado de ogcore, ogboot, ogdhcp y ogrepository: muestra entries del journal en tiempo real sin necesidad de oglog/OpenSearch, con polling cada 5 segundos y modo live/pausa
- Soporte de múltiples
SYSLOG_IDENTIFIERpor componente: ogdhcp incluye kea, ogrepository incluye samba, ogboot incluye tftpd-hpa - Host basado en IP del servidor seleccionado para lectura del fichero de
journal remoto (
/var/log/journal/remote/<IP>.journal)
Changed
StatusLogsComponent:@Input() identifierreemplazado por@Input() identifiers: string[]; respuesta parseada como array de entries JSON estructurados con formato[timestamp] IDENTIFIER: mensaje
[1.6.1] - 2026-05-14
Improved
- Modificada recepcion de mensajes de mercure durante la importación
[1.6.0] - 2026-05-08
Added
- Añadida opción en Administración para importar una base de datos OG 1.1 en la nueva version. Permite subir fichero .sql o .zip o usar parametros de conexión a la base de datos de OG 1.1
[1.5.9] - 2026-05-07
Fixed
- Asistente de particionado: en discos GPT se elimina el límite de 4 particiones primarias, se oculta la opción de añadir partición lógica/extendida y se suprime el estilo visual de partición lógica (borde amarillo e icono └)
Added
- En acciones programadas, la acción "Iniciar Sesión" ahora permite configurar disco y partición de arranque como parámetros
[1.5.8] - 2026-05-06
Added
- Añadido polling en la vista de logs de disco para refresco automático en tiempo real
[1.5.7] - 2026-05-05
Fixed
- Modificada vista para eliminar imagen de cache, se muestra la lista de ficheros de imagen contenida en la cache y se borra el fichero
[1.5.6] - 2026-05-05
Fixed
- Corregida edicion de menus
[1.5.5] - 2026-05-04
Fixed
- Corregida gestion de oglives
[1.5.4] - 2026-04-24
Improved
- Modificado script de post instalación debian para añadir a config.json las nuevas variables.
[1.5.3] - 2026-04-24
Improved
- Corregidas traducciones
[1.5.2] - 2026-04-24
Added
- Añadido campo resolución en los ajustes de red de aulas y grupos para propagarlo a los equipos.
- Rediseño del menú de configuracion de una Unidad Organizativa
[1.5.1] - 2026-04-23
Improved
- Creadas claves de traducción para idiomas, añadido menu para cambiar de idioma en la barra superior
[1.5.0] - 2026-04-21
Added
- Añadida gestión de múltiples ogBoot Servers
- Si es un ogBoot existente, permite sincronizar su información sobre oglives y plantillas pxe.
- En los Ajustes de red de equipos, aulas y grupos, ahora se debe seleccionar servidor ogBoot y luego oglive y plantilla dentro de dicho servidor.
[1.4.0] - 2026-04-16
Added
- Añadida gestión de múltiples Dhcps
- Si el Dhcp tiene ordenadores añadidos en su fichero kea, se pueden sincronizar para añadirlos a la estructura de Grupos actual.
[1.3.3] - 2026-04-13
Improved
- Mejorada la visualizacion del selector de particiones mostrando el contenido de cache y la imagen asociada a la partición.
- Mejorada usabilidad de la funcion updateCache para que no haga falta elegir disco y particion para lanzar el comando.
[1.3.2] - 2026-04-13
Added
- Añadida opción para restaurar sólo cache o cache y particion.
[1.3.1] - 2026-04-09
Added
- Añadida información de la fecha de despliegue de una imagen en una particion.
[1.3.0] - 2026-03-31
Added
- Añadido comando "Refrescar" tanto en un cliente como en un grupo de clientes, de forma que se ejecuta el comando Actualizar en el ogAgent y se actualiza la información de las particiones del cliente y se recarga el menú del ogbrowser.
[1.2.7] - 2026-03-31
Added
- Rediseño de la plantilla para seleccion de particiones, se ha creado un componente compartido por la vista de crear imagen y deploy de imagenes.
[1.2.6] - 2026-03-30
Added
- Rediseño de la pantalla detalles de un equipo, en la partición CACHE, se muestra el listado de ficheros que contiene con el tamaño de cada uno.
[1.2.5] - 2026-03-27
Fixed
- Corregido error 401 Unauthorized en la edición de menús con nombres que contienen la palabra "login". Se ha refinado el interceptor para aplicar el prefijo "Bearer" de forma selectiva mediante validación exacta del path
/auth/login.
[1.2.4] - 2026-03-20
Added
- Se ha mejorado el editor de menus para poder editar directamente la plantilla twig en lugar del html renderizado.
[1.2.3] - 2026-03-17
Added
- Se ha creado una nueva opción para gestionar assets en la pantalla de menus.
[1.2.2] - 2026-03-17
Added
- Se ha integrado un editor interactivo en texto plano para los menús HTML directamente en la pantalla de edición, permitiendo previsualizar y modificar el código en vivo sin necesidad de resubir archivos. Utiliza la sintaxis moderna
@if/@elsede Angular 17+ para su lógica de renderizado.
[1.2.1] - 2026-03-11
Added
- Se ha añadido la funcionalidad para poder adjuntar un fichero HTML local en la creación/edición de menús, codificándolo y enviándolo en Base64 de forma transparente.
Improved
- Se ha mejorado la UX integrando el campo de subida de ficheros en el formulario de menús (
create-menu) utilizando la estética nativa de Angular Material.
[1.2.0] - 2025-10-21
Added
- Se ha añadido una nueva funcionalidad la cual permite poder borrar varios equipos a la vez.
Improved
- Ahora no se pueden añadir equipos si no hay OUs creadas en el sistema.
- Ahora aparecen los logs del cliente en tiempo real en estados mas alla de "og-live".
- Se ha añadido el campo "mac" en el ogbrowser
Fixed
- Se ha corregido un error de sintaxis a la hora de cargar los iframe del ogLog.
[1.1.0] - 2025-10-17
Added
- Se han incorporado opciones para poder seleccionar tamaños de pantalla para visualizar en los menu ogBrowser
Improved
- Se han incluido cambios en el particionador que mejoran la experiencia de usuario.
- Se ha incluido un parametro en el "config.json" para poder integrar los logs desde el instalador.
Fixed.
- Se han corrgido los test que no se realizaban correctamente.
[1.0.0] - 2025-10-09
Added
- Se ha añadido nuevo readme
[0.26.0] - 2025-10-09
Improved
- Se han eliminado campos redudantes en la creacion/edicion de cliente
- En el particionador, ahora el despleagble del disco se autocompleta en caso de ser 1.
[0.25.0] - 2025-10-08
Added
- Se ha añadido una logica en el particionador, el cual filtra las opciones del sistema de ficheros, segun el tipo de particion seleccionado.
Fixed
- Se ha corregido el componente "estado global" ya que no funcionaba correctamente para el repositorio-
[0.24.1] - 2025-10-06
Fixed
- Se ha corregido un error en los casos de 2 discos o mas en el asistente de particionado.
[0.24.0] - 2025-09-23
Added
- Se han añadido nuevos componentes de visualizacion de todos los apartados de hardware y hardware profile.
[0.23.4] - 2025-09-22
Fixed
- Se ha arreglado en error a la hora de mandar el ambito de ejecucion en lso asistentes
[0.23.3] - 2025-09-10
Improved
- Se han realizado mejoras sobre la funcionalidad de tareas programadas.
[0.23.2] - 2025-09-09
Fixed
- Se ha corregido un bug en el asistente de particionado relacionado con las tareas programadas.
[0.23.1] - 2025-09-09
Fixed
- Se ha corregido el formato de la fecha a la hora de cambiar las tareas programadas
[0.23.0] - 2025-09-08
Added
- Se ha añadido la funcionalidad para crear backups de repositorios GIT.
[0.22.2] - 2025-09-05
Improved
- Se ha mejorado la UX en el asistente de ejecurcion de scripts.
Fixed
- Se ha corregido en el particionador, el que el tamaño de las particiones EFI no esten fijas a 512 cuando ya haya datos almacenados.
- Se ha corregido un bug que hacia que no pasara los clientes seleccionados en el asistente de script, y en las tareas programadas.
[0.22.1] - 2025-09-05
Improved
- Se ha mejorado la experiencia de usuario con el despleable de "tipos de particion" en el asistente de particonado.
[0.22.0] - 2025-09-03
Added
- Nueva ux a la hora de gestionar tareas programadas.
- En modificar imagen git, nueva opcion para "forzar push".
Improved
- Nuevo manejo de errores en el modulo de ogRepository.
[0.21.0] - 2025-08-28
Added
- Se ha incluido una integracion con el agente, para generar los scripts que se llaman al particionar.
[0.20.1] - 2025-08-28
Improved
- Se ha mejorado la UX de los asistentes.
Fixed
- Se han corredigo errores en la seccion clientes de los asistentes.
[0.20.0] - 2025-08-25
Added
- Se ha añadido un nuevo boton en "Trazas" para marcar la misma como completada cuando se requiera.
- Nuevo estado "ocupado" en las trazas para indicar que el cliente envia un "409" y que ya esta ejecutando una accion
Improved
- Mejorada la interfaz para gestionar las tareas.
[0.19.0] - 2025-08-06
Added
- Se ha añadido un nuevo estado "enviado" para cuando se ejecuten acciones a equipos en estado Windows o Linux
[0.18.0] - 2025-08-04
Added
- Se ha añadido la posibilidad de visualizar logs en tiempo real de Grafana. Tanto en los componentes como en los clientes.
- Se ha añadido la funcionaldad e integracion con OgGit.
- En el particionador, se ha añadido una integracion para comprobar los tamaños de las particiones.
Improved
- Sistema de cola de acciones.
[0.17.0] - 2025-07-15
Added
- Se ha añadido la funcionalidad para tagear commits en el apartado de imágenes git.
Improved
- Se ha corregido el particionador, para cuando un equipo es EFI, ahora aparece la primera particion completada.
[0.16.0] - 2025-06-27
Added
- Sistema de logs en tiempo real.
Improved
- Se ha mejorado el comportamiento de algunos filtros en la parte de trazas.
[0.15.0] - 2025-06-26
Added
- Se ha añadido integracion con OgGit. Ahora se pueden crear y desplegar imagenes.
- Ahora se pueden gestionar cola de acciones y vaciarlas tanto a nivel de aula como de cliente.
- Nuevos componentes que ayudan a la mejora general de la UX
- Mejora en el comportamiento de los asistentes.
- Se puede cancelar tareas desde la parte de Trazas
Changed
- Se ha cambiado la vista de las imagenes de Git
[0.14.1] - 2025-06-09
Fixed
- Se han corregido los errores en produccion que hacia que no salieran mensajes desde la API correctamente.
[0.14.0] - 2025-06-02
Added
- Se ha añadido funcionalidad de usuarios/roles para separar las vistas segun los permisos.
- Nuevo boton de "mover" en la pantalla de grupos, para mover equipos entre aulas y grupos.
Improved
- Se ha completado la opcion de inicion de sesion y eliminar imagen cache.
[0.13.1] - 2025-05-23
Changed
- Desactivado temporalmente la funcionalidad de ogGit.
[0.13.0] - 2025-05-20
Added
- Se ha añadido nuevo campo "SSL_ENABLED" en el apartado configuracion.
Improved
- Mejoras en el asistente de particionado.
- Se han añadido mejoras en los filtros de las trazas.
[0.12.0] - 2025-5-13
Added
- Se ha añadido un nuevo modal del detalle de las acciones ejecutadas por cada cliente.
- Se ha añadido un modulo para la gestion de las tareas y acciones programadas.
- Se han añadido nuevos campos en el listado general de clientes.
Improved
- Se ha cambiado la pagina de detalles de un cliente, por un modal.
- Se han actualizado gran parte de las ayudas contextuales de las distintas parrillas de datos.
- Se ha mejorado y corregido los errores del particionador.
- Mejoras en la pantalla de trazas.
- Cambios en la estetica general de la aplicacion
- Añadida la primera version de la la integracion con ogGit
- Se ha mejorado la responsividad de la aplicacion, para pantallas pequeñas.
Fixed
- Se ha corregido un error que hacia que no apareciesen los calendarios en la pantalla de editar OU.
- En la pantalla de hacer deploy, al seleccionar imagen ahora deja desmarcarla.
[0.11.2] - 2025-4-16
Fixed
- Se ha corregido un error en la actualizacion del estado de los pcs en la vista tarjetas.
[0.11.1] - 2025-4-16
Improved
- Nuevos campos en la tabla de clientes. Tipo de firmware y mac.
Fixed
- Se ha corregido error al crear OUs, que no refrescaba la web.
- Se ha corregido error en el formulario de creacion de imagenes. Si se seleccionaba una imagen para un versionado, no dejaba deseleccionar.
- Se ha corregido un bug en el particionador que impedia ejecutar, cuando eliminabamos una particion.
[0.11.0] - 2025-4-11
Added
- Se ha diseñado el nuevo formulario para poder ejecutar script. Sistema mejorado con variables etiquetadas.
- Se puede añadir descripcion a una imagen.
- Se han añadido al formulario de crear/editar repositorio, la posibilidad de añadir usuario y puerto ssh.
- Nuevo estado en pc => desconectado.
- Se ha añadido nueva accion para renombrar imagen monolitica.
Improved
- Se ha mejorado la interfaz de usuario tanto para el despliegue de imagenes, como el particionado.
- Se ha mejorado la responsividad de la vista de grupos.
- Cambios en el comportamiento general de muchos componentes modales. Se han añadido spinners de carga mas intuitivos.
[0.10.1] - 2025-3-27
Improved
- Mejoras en el comportamiento del arbol de grupos.
- Nueva regexp para controlar las "macs" en la creacion de clientes.
[0.10.0] - 2025-3-25
Added
- Nuevo componenten de estado global.
- Servicio para que el ogGui obtenga de forma dinamica las variables de entorno.
- Nueva funcionalidad para convertir imagen en imagen virtual.
- Nueva funcionalidad para importar imágenes externas al sistema.
- Despliegue de imangenes sin cache. Cambios en el formulario de "despliegue".
Improved
- Mejoras en la internacionalización.
- Nueva UX ogRepository. Ahora se gestionan las imagenes de forma mas sencilla.
- Cambios en ogLive. Mejora en la sincronizacion y obtención de datos en la API
Fixed
- Cambios en la expresion regular para la validacion de documentos DHCP en la carga masiva de pc.
[0.9.2] - 2025-03-19
Changed
- Jenkinsfile to pubilsh packages in repo in case og release
[0.9.1] - 2025-03-12
Changed
- Se ha modificado el acceso a Mercure añadiendo nueva variable de entorno.
[0.9.0] - 2025-3-4
Added
- Integracion con Mercure. Subscriber tanto en "Trazas" con en "Clientes".
- Nueva funcionalidad para checkear la integridad de una imagen. Boton en apartado "imagenes" dentro del repositorio.
- Centralizacion de estilos.
- Nueva funcionalidad para realizar backup de imágenes.
- Botón para cancelar despliegues de imagenes. Aparece en "trazas" tan solo para los comendos "deploy" y para el estado "en progreso".
Changed
- Nueva interfaz en "Grupos". Se ha aprovechado mejor el espacio y acortado el tamaño de las filas, para poder tener mas elementos por pantalla.
- Cambios en filtros de "Grupos". Ahora se pueden filtrar por "Centro" y "Unidad Organizativa" y estado. Ahora se busca en base de datos, y no en una lista de clientes dados.
- Refactorizados compontentes de crear/editar clientes en uno solo.
- Cambios en DHCP. Nueva UX en "ver clientes". Ahora tenemos un buscador detallado.
- Para gestionar/añadir clientes a subredes ahora tenemos un botón para "añadir todos" y tan solo nos aparecn los equipos que no estén previamente asignados en una subred.
[0.7.0] - 2024-12-10
Refactored
- Refactored the group screen, removing the separate tabs for clients, advanced search, and organizational units.
- Added support for partitioning functionality in the client detail view.
[0.6.1] - 2024-11-19
Improved
- Introduced a new automatic sync mode for the ogdhcp and ogBoot components.
- Improve test coverage.
- New view for clients inside the classroom on the main page.
[0.6.0] - 2024-11-19
Added
- Added functionality to execute actions from the menu in the general groups screen.
- Displayed the selected center on the general screen for better context.
- Implemented the option to collapse the sidebar for improved usability.
- Introduced a dropdown menu to select boot files (BootfileNames).
- Simplified the process of adding multiple clients in the subnets section.
- Enabled ogBoot to manage storage units more intuitively.
- Added preloading of template models in ogBoot for faster setup.
- Created a contextual help tour to guide users through various components and features.
Improved
- Renamed the field "Reserved Room" to "Available RemotePC" for better clarity.
- Added view sizes for visual cards.
- Refactored the task stepper to improve efficiency and readability.
- Replaced red "X" icons with more consistent and user-friendly visuals.
- Allowed logical names for IP addresses in the subnets section.
- Enabled reordering of commands when creating a command group.
- Made predefined commands read-only to prevent accidental modifications.
- Simplified the task creation modal to enhance user experience.
- Adjusted the translation system to cover new elements and improve consistency (work in progress).
- New element view from clients on groups main view.
Fixed
- Resolved an issue that prevented editing software profiles correctly.
- Fixed a bug where newly created commands failed to execute in the commands section.