- Crear /api/frigate/events/:eventId/clip con soporte de range requests
- Crear /api/frigate/events/:eventId/snapshot
- Usar IP interna 192.168.87.29:5000 para evitar autenticacion Authentik
- Actualizar URLs en useFrigateEvents para usar proxies internos
- Agregar toggle Live/Eventos en StreamViewer
- Agregar dropdown para seleccionar eventos recientes (max 10)
- Reproducir clips de eventos en el mismo reproductor
- Crear endpoint proxy /api/frigate/events para listar eventos
- Corregir URL de creacion de eventos: /api/events/:camera/:label/create
- Actualizar useFrigateEvents con fetchEvents, formatEventTime, getEventClipUrl
- El reproductor solo se muestra si hay sesion activa
- Al conectarse exitosamente, el player se refresca automaticamente
- Evita mostrar iframe roto mientras no hay autorizacion
- Banner con gradiente que indica cuando se requiere conexion
- Boton "Iniciar Sesion" abre popup para autenticarse en streams
- El popup se cierra automaticamente despues de autenticar
- El banner desaparece una vez conectado
- /api/streams/list: proxy a streams.nucleoriofrio.com/api/streams
- /api/frigate/event: proxy a camaras.nucleoriofrio.com/api/events
- Actualizar composables para usar los proxies del backend
- Los iframes de streaming siguen usando URLs directas (sesion propia)
- Nuevo composable useFrigateEvents.ts para crear eventos en Frigate
- Boton "Evento Rapido" crea eventoWhisper de 1 minuto
- Boton de configuracion abre modal con campos personalizables
- Modal permite editar: label, sub_label, duration, include_recording
- API: POST camaras.nucleoriofrio.com/api/events/{camera}/create
- Nuevo composable useStreams.ts para gestionar streams de go2rtc
- Componente StreamPlayer.vue para reproduccion (iframe/video/img)
- Componente StreamViewer.vue con dropdowns de seleccion
- Integrado en app.vue despues del card de grabacion
- Soporta WebRTC, MSE, MP4, HLS y MJPEG
Cambios en app.vue:
- Agregar botón Inicio con icono home
- Botón apunta a https://inicio.nucleoriofrio.com
- Color verde coherente con tema de la app
- Posicionado junto al botón de Cerrar Sesión
El botón usa scope extensions para navegar dentro de la PWA.
- Agregar id único (/?app=whisper), launch_handler, handle_links y url_handlers
- Unificar workflow de 2 jobs (build + deploy) a 1 solo job
- Workaround para bug de Gitea que solo ejecuta el primer job
- Agregar capture_links en manifest para mejorar experiencia PWA
- Crear archivo .well-known para asociación con inicio.nucleoriofrio.com
- Configurar Traefik para servir .well-known sin autenticación
Se agregó la variable de entorno OPENAI_API_KEY tanto en el workflow
como en docker-compose.yml para que el secret de Gitea se pase
correctamente al contenedor en producción.
- Configurado proyecto Nuxt 4 con PWA
- Integrado OpenAI Whisper API para transcripción de audio
- Implementada captura de audio desde navegador
- Creada UI con grabación y visualización de transcripciones
- Configurado Authentik Proxy para autenticación
- Setup de Docker y Gitea Actions para despliegue