- Agregado campo 'environment' a MonitoredApp para almacenar variables ADICIONALES
- Solo se almacenan en JSON las variables agregadas manualmente desde el panel
- Las variables del .env del proyecto se cargan automáticamente con EnvironmentFile
- Modificado service_generator.rs para usar directiva EnvironmentFile en systemd
- Fix: Usuario ahora se lee correctamente del JSON sin fallback a 'root'
- Edit.html pre-carga variables adicionales del JSON al editar
- Separación clara: .env (proyecto) vs variables adicionales (JSON)
- Transparencia total con .env nativo del proyecto
Beneficios:
✅ No duplicación de variables (.env es la fuente de verdad)
✅ JSON solo guarda variables extras (pequeño y limpio)
✅ .env funciona igual que en desarrollo
✅ systemd lee .env con EnvironmentFile
✅ Variables adicionales se persisten en JSON
✅ Al editar, se pre-cargan variables adicionales guardadas
- Agregado campo 'user: String' a MonitoredApp
- Función default_user() que obtiene usuario del sistema ($USER/$LOGNAME)
- Actualizado todos los lugares donde se crea MonitoredApp:
* config.rs (add_app)
* app_manager.rs (register_app) - usa config.user
* discovery.rs (sync) - extrae de .service file
* handlers.rs (update_app) - usa config.user
- El campo se guarda en monitored_apps.json
- Formulario de edición ahora carga el usuario correcto
- Resuelve problema: antes ponía 'pablinux' por defecto
- Ahora muestra el usuario real (ej: 'user_apps')
- Construir script_path completo combinando path + entry_point
- Usar valores por defecto cuando campos no existen en JSON
- Agregar console.log para debug
- El campo user usa 'pablinux' por defecto (no está en JSON)
- Ahora los campos se llenan correctamente en lugar de mostrar solo placeholders
Backend:
- Endpoint PUT /api/apps/:name para actualizar configuración completa
- Endpoint GET /api/apps/:name para obtener datos de una app específica
- update_app_handler(): detiene servicio, regenera .service, daemon-reload, actualiza JSON, reinicia
- Soft delete de versión anterior al actualizar (mantiene historial)
- Logs detallados en cada paso del proceso de actualización
- Recarga automática de variables desde .env al actualizar
Frontend:
- Nueva página /edit?app=NOMBRE para editar apps
- Formulario pre-poblado con datos actuales de la app
- Nombre de app readonly (no se puede cambiar para evitar inconsistencias)
- Botón Editar (morado) en panel principal junto a logs/eliminar
- PUT en lugar de POST, mensaje de éxito actualizado
- Redirección automática al panel después de 2 segundos
Casos de uso resueltos:
✅ Cambiar usuario (ej: GatewaySIGMA con usuario incorrecto)
✅ Actualizar puerto
✅ Modificar variables de entorno
✅ Cambiar política de reinicio
✅ Actualizar ruta del script
✅ Recargar .env sin eliminar la app
Completa el patrón CRUD: Create, Read, Update, Delete ✨