El parámetro fields="name,description,images" causaba error en playlists
curadas de Spotify (ej. "This Is ..."), haciendo que el nombre cayera
al fallback con el spotify_id.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reemplaza los bind mounts individuales de cantina.db y .spotify_cache
por un único directorio ./data/ montado en /app/data. El entrypoint
crea el directorio y los archivos vacíos si no existen, evitando que
Docker los cree como directorios al hacer un despliegue limpio.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cambia la grilla de cajas a una lista vertical donde cada playlist
ocupa una fila con imagen/emoji a la izquierda y nombre + descripción
a la derecha. En modo votación, la barra y conteo quedan en el bloque
de info y el botón de voto se desplaza al extremo derecho.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cada fila del mantenedor ahora tiene un botón "▶ Reproducir" que fuerza
la reproducción inmediata en Spotify, sin necesidad de ir al reproductor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nuevo endpoint GET /admin/status devuelve si el usuario está logueado como admin
- Navbar muestra botón "Admin" que lleva a /admin/login si no hay sesión,
o "⚙ Admin" → /admin/playlists si ya está autenticado
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tarjetas de votación ahora abren el modal de canciones al hacer clic en la imagen/nombre
- Botón "Votar" siempre alineado al fondo independiente del alto de cada tarjeta
- Muestra descripción de la playlist en modo votación
- Emoji de playlist escala proporcionalmente usando container queries (55cqi)
- Al cerrar la votación, reproduce automáticamente la playlist con más votos
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>