10 Commits

Author SHA1 Message Date
d9795f6752 fix: permitir reintentar canciones que fallaron previamente
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 25s
El Set failedTracks marcaba canciones como fallidas permanentemente
durante toda la sesión, sin permitir reintentarlas. Esto causaba que
canciones que fallaban por razones temporales (ej: sesión expirada)
quedaran marcadas como error incluso después de resolver el problema.

Cambios implementados:
- Limpiar estado de error al inicio de playTrack() antes de reintentar
- Agregar watcher que limpia todos los errores cuando se restablece auth
- Agregar watcher que limpia errores cuando se cargan canciones exitosamente

Con esto, las canciones con error pueden reintentarse haciendo click
nuevamente, y todos los errores se limpian automáticamente cuando
la autenticación se restablece o se cargan canciones exitosamente.
2025-10-17 03:47:23 -06:00
b46d15145f fix: evitar error CORS al expirar sesión de Authentik
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 28s
Cuando la sesión de Authentik expira, los fetch() a /api/music recibían
un redirect (302) a la página de login. Por defecto, fetch intenta seguir
el redirect pero falla por CORS porque Authentik no tiene el header
Access-Control-Allow-Origin.

La solución es usar redirect: 'error' en todos los fetch() a endpoints
protegidos, lo que convierte los redirects en errores que podemos capturar
y manejar apropiadamente. Esto coincide con la estrategia que ya usa
useAuth.ts.

Cambios:
- stores/music.ts: Agregar redirect: 'error' a fetchTracks() y cacheByName()
- pages/index.vue: Agregar redirect: 'error' a playTrack()
- Mejorar detección de errores de autenticación para incluir 'Failed to fetch'
  y errores de tipo TypeError relacionados con redirects
2025-10-17 03:40:12 -06:00
7705f13297 feat: agregar páginas personalizadas de error y offline
All checks were successful
build-and-deploy / build (push) Successful in 22s
build-and-deploy / deploy (push) Successful in 3s
- 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
2025-10-14 01:55:13 -06:00
b8408cad96 feat: agregar manejo de errores consecutivos al cargar canciones
All checks were successful
build-and-deploy / build (push) Successful in 23s
build-and-deploy / deploy (push) Successful in 3s
- 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
2025-10-14 01:46:24 -06:00
de3ffbe05f feat: agregar búsqueda de canciones y configurar hook de Gitea Actions
All checks were successful
build-and-deploy / build (push) Successful in 25s
build-and-deploy / deploy (push) Successful in 4s
- 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
2025-10-14 01:14:19 -06:00
98fb972a4e vamos
All checks were successful
build-and-deploy / build (push) Successful in 23s
build-and-deploy / deploy (push) Successful in 3s
2025-10-12 00:59:50 -06:00
81330de97e feat(pwa-offline): Pinia store + IndexedDB; contexto para cache/eliminación; toasts; compatibilidad PWA offline
All checks were successful
build-and-deploy / build (push) Successful in 40s
build-and-deploy / deploy (push) Successful in 4s
- 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
2025-08-10 02:51:38 -06:00
bf7413b45f Fix 403 error when loading music files
- 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.
2025-08-10 01:28:16 -06:00
7cb35b8c27 Implement Lucide Vue icon system and UI improvements
- 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
2025-08-03 20:01:31 -06:00
2f90d92ad9 Initial commit: RepoDructor music player
- 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
2025-08-03 17:14:05 -06:00