- 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
- Crear error.vue para manejar errores 404 y otros errores de routing
- Crear pages/offline.vue para estado offline
- Ambas páginas incluyen fondo Aurora y diseño glass morphism
- Opciones para volver al menú principal o ir a Authentik
- Agregar /offline a rutas de prerender
- Detección automática de estado de conexión en página offline
- Agregar contador de errores consecutivos
- Detener reproducción después de 2 errores consecutivos
- Mostrar toast de error cuando se alcanza el límite
- Resetear contador cuando una canción carga exitosamente
- Continuar con la siguiente canción en el primer error
- Usar var(--bg-secondary) en lugar de rgba fijo
- Aumentar blur de 20px a 50px para consistencia
- Usar var(--border-glass) para bordes
- Ajustar border-radius de 16px a 12px
- Usar mismo box-shadow que AuthIndicator
- Reducir padding de 12px a 8px
- Agregar z-index: 100 al app-header
- Aumentar z-index del dropdown a 10001 (mayor que AuthIndicator)
- Asegurar que el dropdown se dibuje por encima de todos los elementos
- Cambiar overflow: hidden a overflow: visible en app-header
- Aumentar z-index del dropdown de 1000 a 9999
- Permitir que el dropdown se dibuje por encima de todos los elementos
- Crear componente SettingsMenu.client.vue con tres puntos verticales
- Agrupar AuthIndicator y ThemeToggle en dropdown menu
- Reducir espacio en barra principal para diseño más compacto
- Agregar animaciones y transiciones suaves al dropdown
- Cerrar menú automáticamente al hacer clic fuera o presionar Escape
- Agregar componente SearchFilter.client.vue modular y expandible
- Integrar búsqueda en MainContainer con contador de resultados
- Implementar filtrado de canciones por nombre en pages/index.vue
- Configurar hook PostToolUse para monitorear Gitea Actions
- Copiar y adaptar script monitor-gitea-action.sh para repodructor
- Created /api/auth/userinfo endpoint to fetch user data from Authentik headers
- Added userInfo state and fetchUserInfo() function to useAuth composable
- Implemented compact user info header in dropdown with avatar, name, and email
- Avatar shows user initials with gradient background
- Styled with glassmorphism design matching app aesthetic
- Dropdown aparece al hacer click cuando estás conectado
- Opciones: verificar estado y cerrar sesión
- Logout usa endpoint de Authentik (/outpost.goauthentik.io/sign_out)
- Desregistra Service Worker antes de logout
- Animación smooth del dropdown
- Flecha indicadora que rota al abrir/cerrar
- Diseño glassmorphism consistente con la app
- Desregistrar SW automáticamente cuando se detecta pérdida de auth
- Desregistrar SW antes de triggerAuth para evitar conflictos con Authentik
- Deshabilitar polling y listeners de visibility (causan errores de CORS)
- Confiar en detección reactiva de errores del musicStore
- Usar window.location.href en lugar de reload() para forzar navegación
- Detectar errores "Failed to fetch" y "no response" como pérdida de auth
- Mejor logging para debugging de cambios de estado
- Manejar correctamente redirects 302 de Authentik en fetch
- Agrega @pinia/nuxt, idb y store central (stores/music.ts)
- Cacheo manual desde menú contextual y borrado (TrackContextMenu)
- Ícono verde para canciones cacheadas, sin auto-cache al reproducir
- Toasts de feedback (stores/toast.ts, ToastContainer)
- Fallback offline de listado a IndexedDB; fix MUSIC_DIR absoluto en preview/prod
- Ajustes PWA: navigateFallback '/', devOptions, workbox condicional
- Estilos y animación del context menu (tema light/dark, blur fuerte)
- Correcciones de sintaxis y posicionamiento exacto al cursor
- Fix path traversal security check by using absolute paths
- Remove problematic fetch override that forced JSON headers on all API requests
- Add error tracking and visual indicators for failed tracks
- Correct music directory resolution for both relative and absolute paths
The main issue was the security validation comparing relative paths incorrectly,
causing legitimate music file requests to be rejected with 403 errors.
- Replace emoji icons with professional SVG icons from Lucide Vue
- Add collapsible MusicControls with compact top-right collapse button
- Improve icon system with dynamic sizing and proper prop handling
- Disable SSR to prevent hydration issues with audio APIs
- Update IconButton to support both emoji strings and SVG components
- Optimize bottom positioning for expanded vs collapsed states
- Document new icon system in DESIGN_SYSTEM.md
- Add PWA icons in multiple sizes (192px, 512px, maskable)
- Configure manifest.webmanifest with proper icon references
- Implement PWA install prompt with custom notification
- Add manual manifest route for development compatibility
- Update meta tags for iOS and Android PWA support
- Configure service worker with music and image caching
- Enable auto-updates and offline functionality
PWA now fully installable on all platforms with proper branding.
- Nuxt 3 app with glassmorphism design
- Music streaming from local files
- Player controls with shuffle/repeat
- PWA support
- Responsive design for mobile
- Configured for proxy deployment