github Arturo254/OpenTune 3.0.5

8 hours ago

🚀 Release 3.0.5

Versión centrada en mejoras de interfaz Material 3 Expressive, haptic feedback, drag & drop para proveedores de letras, optimizaciones de reproductor con zoom immersivo y experiencia de usuario avanzada.


✨ Nuevas Funciones

🎛️ Sistema de Haptic Feedback Completo

Se introduce un nuevo sistema de feedback háptico con compatibilidad automática entre versiones de Android.

Características:

  • HapticManager con 10+ tipos de vibración
  • Fallbacks automáticos para Android 5.0+
  • Control global mediante EnableHapticFeedbackKey
  • Compatibilidad: Click, Toggle, Confirm, Reject, Keyboard, DragStart, GestureEnd
  • Integración en MiniPlayer y componentes interactivos

📱 Top App Bar Flexible Material 3

Nueva navegación expresiva con LargeFlexibleTopAppBar en pantallas de configuración.

Beneficios:

  • Diseño moderno y responsivo
  • Animaciones suaves al desplazar
  • Mejor aprovechamiento de espacio
  • Consistencia en toda la app

🎵 Reordenamiento Drag & Drop para Proveedores de Letras

Nuevo diálogo para reorganizar el orden de búsqueda de proveedores de letras.

Componente: DragDropLyricsProviderDialog

  • Soporte para LrcLib, Kugou, BetterLyrics, SimpMusic
  • Persistencia automática en DataStore
  • Animations suaves con Spring
  • Hit-testing mejorado para evitar saltos

🎨 LanguageSelector Bottom Sheet Expresivo

Nueva interfaz Material 3 para seleccionar idiomas con búsqueda integrada.

Características:

  • LanguageSelectorBottomSheet reutilizable
  • Sistema de default "System Default"
  • Búsqueda en tiempo real
  • Animaciones de selección
  • Soporte para Android 13+

🎬 Mejoras de Canvas y Reproductor

🖼️ Custom Canvas Provider - Lógica de Matching Mejorada

Se refactoriza completamente el algoritmo de coincidencia del CustomCanvasProvider para manejar mejor casos con metadatos faltantes.

Cambios Principales:

  • Flujo de Matching Optimizado:

    • Prioriza coincidencias por artista primero
    • Seguidas de filtros específicos por álbum o canción
    • Fallback mejorado: cuando el álbum no está disponible, intenta matching por título de canción
    • Si falla, utiliza entradas de artista disponibles como último recurso
  • Helper createArtwork:

    • Estandariza la creación de objetos CanvasArtwork
    • Reduce código duplicado
  • Debug Logging Mejorado:

    • Clarifica tipos de coincidencia: "song (without album)", "exact song", "album (without specific song)"
    • Facilita troubleshooting en desarrollo

🎥 CanvasArtworkPlayer - Zoom Immersivo

Actualización de ResizeMode:

  • Cambio: RESIZE_MODE_FITRESIZE_MODE_ZOOM
  • Beneficio: Experiencia visual más moderna y edge-to-edge
  • Comportamiento: Mantiene aspect ratio mientras llena toda la pantalla

Integración Consistente:

  • PlayerComponents.kt y Thumbnail.kt ahora usan RESIZE_MODE_ZOOM en todas partes
  • Reemplaza RESIZE_MODE_FILL y RESIZE_MODE_FIT
  • Proporciona visual coherente en diferentes vistas del reproductor

Canvas Multi-Proveedor Mejorado

Cambios:

  • Nuevo CanvasArtworkResolver más robusto
  • Soporte para splits de artistas (colabs, feat.)
  • Fix: búsqueda individual por artista secundario
  • Mejor manejo de casos edge

Reproductor V8 Avanzado

Novedades:

  • Integración de Canvas en V8PlayerBackdrop
  • Fullscreen opcional mediante PlayerFullscreenKey
  • Motion Scheme expresivo
  • Mejor sincronización de Insets

🔧 Mejoras Internas

Material 3 Expressive Masivo

  • CircularWavyProgressIndicator en lugar de CircularProgressIndicator
  • LargeFlexibleTopAppBar en configuración
  • ToggleButton con ButtonGroupDefaults
  • Animaciones con spring() y damping ratios
  • ButtonGroupDefaults.connectedShapes() para botones unidos

Refactor de Componentes

Dialog.kt:

  • Parámetro confirmButton personalizable
  • Mejor separación de responsabilidades

PlayerMenu.kt:

  • Nuevo SleepTimerDialog expresivo
  • Visualización mejorada de tiempos

Player Components Cleanup:

  • Eliminado whitespace redundante
  • Limpieza de imports no utilizados
  • Mejor mantenibilidad del código

Nuevas Preferencias

val EnableHapticFeedbackKey = booleanPreferencesKey("enableHapticFeedback")
val PlayerFullscreenKey = booleanPreferencesKey("player_fullscreen")
val ProviderOrderKey = stringPreferencesKey("lyrics_provider_order")
val CustomCanvasEnabledKey = booleanPreferencesKey("custom_canvas_enabled")
val CustomCanvasApiUrlKey = stringPreferencesKey("custom_canvas_api_url")

Don't miss a new OpenTune release

NewReleases is sending notifications on new releases.