feat(oci): GPU selection per host and per image, one notification per update, and App tab for stack containers

- Immich asks what runs its video and its recognition in one menu, in both
  modes, and gives the GPU to the server and to Machine learning; AMD uses ROCm
- Frigate, Ollama, llama.cpp, Faster Whisper and Piper take the image built
  for the chosen GPU
- The acceleration menu offers only what the host can run
- An update or a recreation sends one notification with its result instead of
  the stop, backup and start of each container
- A private bridge with nothing connected is not reported as down
- Secondary containers of a stack appear in the App tab with their version and
  logo; Secure Gateway shows the same update state in both views
- A mistyped value in the wizard asks the same question again
This commit is contained in:
MacRimi
2026-10-02 21:45:38 +02:00
parent 20ee21c08f
commit 9b5cefb81a
55 changed files with 2294 additions and 113 deletions
+26
View File
@@ -1601,6 +1601,8 @@
"hiddenDetectionsHelpPlural": "Tienes {count} detecciones ocultas. Restaure una para recuperarla o registre una aplicación personalizada manualmente.",
"registerCustom": "Registrar una aplicación personalizada",
"noAppsTitle": "No hay aplicaciones registradas",
"stackMemberTitle": "Forma parte de una aplicación multicontenedor",
"stackMemberBody": "Este contenedor da servicio a una aplicación cuyo contenedor principal es {primary}. La aplicación, sus enlaces web y su versión se muestran allí.",
"noAppsBody": "Registre las aplicaciones que se ejecutan en este contenedor. Obtendrá enlaces web y, opcionalmente, seguimiento de versiones disponibles y notificaciones de nuevos lanzamientos.",
"registerApplication": "Registrar aplicación",
"searchApplications": "Buscar aplicaciones",
@@ -1983,6 +1985,10 @@
"update_summary": "Actualizaciones de paquetes del host",
"pve_update": "Actualización de Proxmox VE disponible",
"update_complete": "Actualización del host completada",
"oci_update_completed": "Aplicación OCI actualizada",
"oci_update_failed": "Actualización de aplicación OCI fallida",
"oci_recreate_completed": "Aplicación OCI recreada",
"oci_recreate_failed": "Recreación de aplicación OCI fallida",
"app_update_available": "Actualización de app disponible",
"ai_model_migrated": "Modelo de IA actualizado automáticamente",
"proxmenux_update": "Actualización de ProxMenux disponible",
@@ -6290,6 +6296,26 @@
"body": "{details}",
"label": "Actualización LXC aplicada"
},
"oci_update_completed": {
"title": "{hostname}: {app_name} actualizado",
"body": "{app_name} se ha actualizado a su nueva imagen y sus datos se han conservado.\nContenedores: {containers}",
"label": "Aplicación OCI actualizada"
},
"oci_update_failed": {
"title": "{hostname}: la actualización de {app_name} no se completó",
"body": "La actualización de {app_name} no se completó.\nMotivo: {reason}\nContenedores: {containers}\nAbre Gestionar aplicaciones OCI instaladas para comprobar su estado.",
"label": "Actualización de aplicación OCI fallida"
},
"oci_recreate_completed": {
"title": "{hostname}: {app_name} recreado",
"body": "{app_name} se ha recreado con sus nuevas opciones y sus datos se han conservado.\nContenedores: {containers}",
"label": "Aplicación OCI recreada"
},
"oci_recreate_failed": {
"title": "{hostname}: la recreación de {app_name} no se completó",
"body": "La recreación de {app_name} no se completó.\nMotivo: {reason}\nContenedores: {containers}\nAbre Gestionar aplicaciones OCI instaladas para comprobar su estado.",
"label": "Recreación de aplicación OCI fallida"
},
"app_update_available": {
"title": "{hostname}: actualización de {app_name} disponible en CT {vmid}",
"body": "{app_name} en CT {vmid} ({ct_name}) tiene una nueva versión:\n {installed} → {latest}",