Skip to content

Releases: Arturo254/OpenTune

3.0.6

Choose a tag to compare

@Arturo254 Arturo254 released this 02 Aug 22:23
4e33eaf

🚀 Release 3.0.6

Versión centrada en reproducción de música local en el dispositivo, sistema de caché persistente para canvases, actualizaciones in-app, mejoras en la biblioteca y diseño Material 3 Expressive.

⚠️ es posible que la aplicacion no se sobre instale debido al cambio de firma. si es asi descargala desde este enlace:

OpenTune


✨ Nuevas Funciones

📱 Reproducción de Música Local en el Dispositivo

¡Llega el soporte completo para audio local! Ahora OpenTune puede escanear, indexar y reproducir archivos de música almacenados en tu dispositivo.

Características:

  • Escaneo automático de archivos de audio (MP3, FLAC, OGG, WAV, etc.) a través de MediaStore
  • Indexación persistente en base de datos (Schema v28-v29)
  • Soporte para extracción robusta de metadatos usando MediaMetadataRetriever
  • Reproducción directa desde URI content:// sin pasar por YouTube
  • Compatibilidad con "Abrir con" desde gestores de archivos (intent VIEW/SEND)
  • Filtrado por carpetas con selección persistente en DataStore
  • Integración completa con el sistema de favoritos (likes locales)
  • Acceso rápido desde "On device" en la pantalla de biblioteca

Beneficios:

  • Escucha tu música sin conexión a Internet
  • Integración perfecta con tu biblioteca existente
  • Misma experiencia de reproducción que el contenido de YouTube Music

📥 Actualizaciones In-App

Nuevo sistema de actualizaciones directas desde la aplicación.

Componentes:

  • Updater con downloadApk e installApk usando Ktor y FileProvider
  • UpdateDetailsBottomSheet con indicador de progreso ondulante
  • Visor de notas de lanzamiento en formato Markdown
  • Permiso REQUEST_INSTALL_PACKAGES para instalación automática

Beneficios:

  • Actualizaciones más rápidas y cómodas
  • Sin necesidad de descargar manualmente desde GitHub
  • Experiencia más profesional y pulida

🎨 Filtrado por Carpetas para Música Local

Nuevo sistema para organizar tu biblioteca local por directorios.

Características:

  • FolderFilterBottomSheet para seleccionar carpetas específicas
  • Persistencia de selección mediante stringSetPreferencesKey (SelectedLocalFoldersKey)
  • Extracción inteligente de nombres de directorio desde rutas localPath
  • Chips interactivos de selección en LocalSongsScreen
  • Estado de escaneo con diálogo informativo searching_for_media

Beneficios:

  • Organiza tu música por carpetas (ej: "Descargas", "Música", "Podcasts")
  • Mejor control sobre qué contenido aparece en tu biblioteca

🎬 Mejoras de Biblioteca y Reproductor

🗂️ Parser de Biblioteca InnerTube Mejorado

Refactorización completa del parseo de LibraryPage para manejar mejor respuestas complejas.

Cambios Principales:

  • Manejo de IDs faltantes: Ahora soporta elementos sin browseId (ej: canciones subidas/local)
  • Mejor mapeo: Extracción mejorada de álbumes y playlists
  • Tokens de like: Implementada extracción correcta de tokens de añadir/eliminar de la biblioteca
  • Logging robusto: Facilita debugging de respuestas de YouTube Music
  • Extracción de autores: Fix para autores de playlists

Beneficio: Menos errores al sincronizar tu biblioteca de YouTube Music.


🖼️ Sistema de Caché Persistente para Canvases

Nuevo sistema de caché en disco para videos de Spotify y canales personalizados.

Características:

  • CanvasCacheManager con almacenamiento persistente via JSON
  • Estrategia "cache-first" para reducir uso de datos
  • Descarga asíncrona y almacenamiento de videos
  • Integración con CustomCanvasProvider y CanvasArtworkPlayer
  • Inicialización en MainActivity.onStart
  • Visualización de uso real en bytes en ajustes de almacenamiento

Beneficios:

  • Reproducción más rápida de canvases
  • Menor consumo de datos móviles
  • Experiencia sin interrupciones en reproducción

🎵 Mejoras en el Reproductor Local

Optimizaciones para una experiencia fluida con música local.

Mejoras:

  • Song.toMediaItem() usa URI content:// directamente para canciones locales
  • MusicService omite resolución de YouTube para URI content://
  • toggleLike() delegado a localToggleLike() para canciones locales
  • Ocultación inteligente de acciones solo-YouTube en SongMenu, PlayerMenu y barra de acciones
  • Soporte para extractores adicionales de audio local

Acciones ocultas para contenido local:

  • Iniciar radio
  • Compartir / Copiar enlace
  • Descargar / Eliminar caché
  • Ver artista / álbum
  • Refrescar metadatos
  • Detalles de formato

Beneficio: Interfaz limpia y relevante según el tipo de contenido.


🔧 Mejoras Internas

Base de Datos y Escaneo

Actualizaciones Schema:

// SongEntity - Schema v28-v29
+ localPath: String?          // Ruta completa del archivo
+ isLocal: Boolean (flags)    // Para artistas, álbumes y playlists

Mejoras en LocalMediaScanner:

  • Extracción de albumart vía URI de MediaStore
  • Fallback a ALBUM_ARTIST y etiquetas ID3/Vorbis
  • Reesolución de mapeo de artistas en rescan (no solo en inserción inicial)
  • Agrupación de medios por directorio con getAvailableFolders

UI y Componentes Material 3 Expressive

Modernización de pantallas:

  • LocalSongsScreen con cabecera sticky y chips de selección
  • StorageSettings con MD3ExpressiveCacheCard y diseño más espacioso
  • BackupAndRestore y AboutScreen con APIs Material 3 Expressive
  • Nuevo indicador de advertencia "⚠️ Casi lleno" en caché (+80%)

Iconos vectoriales actualizados:

  • folder.xml
  • share.xml

Nuevas Preferencias

// Almacenamiento persistente en DataStore
val SelectedLocalFoldersKey = stringSetPreferencesKey("selectedLocalFolders")

// Nuevos recursos de string
- searching_for_media         // Estado de escaneo
- folder_management           // Gestión de carpetas
- filter_by_folder            // Filtrado por carpeta
- no_media_in_folder          // Sin medios en carpeta
- scanning_media              // Escaneando medios

Dependencias y Mantenimiento

Actualizaciones:

  • newpipe-extractor: v0.25.2v0.26.3
  • Estandarización del módulo en libs.versions.toml
  • gradle-daemon-jvm.properties para Java 21 en todos los sistemas
  • Eliminación de configuraciones alternativas obsoletas

Efecto Visual Liquid Glass:

  • Efecto de desenfoque "Liquid Glass" en Navigation Bar y MiniPlayer (Merge #705)

Correcciones:

  • Fix para UnrecognizedInputFormatException en reproducción local
  • Mejor manejo de content:// URIs en pipeline de caché

📦 Versionado

versionCode: 132 → 133
versionName: 3.0.5 → 3.0.6

🎯 Resumen de Impacto

Área Cambio Impacto
🎵 Reproducción Local NUEVO Alta - Experiencia offline
📥 Actualizaciones In-App NUEVO Alta - Mayor comodidad
🖼️ Caché de Canvases NUEVO Media - Rendimiento y datos
🗂️ Filtrado por Carpetas NUEVO Media - Mejor organización
🎨 UI Material 3 Mejora Media - Diseño moderno
🔧 Parser de Biblioteca Mejora Media - Estabilidad
🚀 Dependencias Actualización Baja - Mantenimiento

3.0.5

Choose a tag to compare

@Arturo254 Arturo254 released this 14 Jul 15:13

🚀 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")

3.0.4

Choose a tag to compare

@Arturo254 Arturo254 released this 20 Jun 23:44

🚀 Release 3.0.4

Versión centrada en Canvas dinámico multi-proveedor, nuevo diseño del reproductor estilo Apple Music, widgets de pantalla de inicio y mejoras visuales inmersivas.


✨ Nuevas Funciones

🎨 Sistema Canvas Multi-Proveedor

Se reemplaza el antiguo sistema de Canvas por una arquitectura modular capaz de obtener fondos animados desde múltiples proveedores.

Nuevos proveedores soportados:

Proveedor Tecnología Descripción
Apple Music HLS Extracción de vídeos animados mediante streams HLS
Tidal MP4 Obtención de vídeos mediante API pública
API interna Fallback Compatibilidad con fuentes existentes

🖼️ Nueva arquitectura Canvas

El sistema Canvas ahora utiliza un modelo unificado y un resolvedor inteligente.

Archivos nuevos:

  • CanvasArtwork.kt

    • Nuevo modelo estándar para artwork animado horizontal/vertical.
  • CanvasArtworkResolver.kt

    • Sistema encargado de seleccionar automáticamente la mejor fuente.
  • AppleMusicCanvasProvider.kt

    • Extracción de Canvas desde Apple Music.
  • AppleMusicArtistBackgroundProvider.kt

    • Obtención de fondos animados para artistas.
  • TidalCanvasProvider.kt

    • Integración con vídeos MP4 de Tidal.

⚙️ Características del nuevo sistema Canvas

Característica Detalle
Multi-provider Selección automática entre Apple Music, API y Tidal
Prioridad configurable Orden inteligente de búsqueda
Validación avanzada Comprueba artista, álbum y título antes de aceptar resultados
Normalización metadata Limpieza de feat., "Official Video" y caracteres innecesarios
Cache LRU Reduce consultas repetidas mediante memoria y disco
Soporte horizontal/vertical Adaptación para distintos formatos de vídeo

🎬 Fondos dinámicos para artistas

ArtistScreen ahora puede mostrar vídeos personalizados relacionados con el artista.

Características:

  • Fondos animados detrás del contenido.
  • Reproducción mediante CanvasArtworkPlayer.
  • Zoom dinámico.
  • Overlay translúcido para mantener legibilidad.
  • Obtención automática basada en nombre del artista.

🎵 Nuevo diseño del reproductor V8 (Apple Music Style)

Se introduce una nueva variante del reproductor inspirada en Apple Music con diseño glassmorphism.


🌈 Player Design Style V8

Nuevo estilo disponible dentro de las preferencias de apariencia.

Características:

Elemento Descripción
Glass UI Componentes translúcidos con blur y bordes
Backdrop dinámico Fondo personalizado con degradados
Progress Track Barra de progreso estilo vidrio
Volume Slider Control integrado dentro del diseño
Next Up Preview Vista previa de siguiente canción
Footer Apple Music Style Controles inferiores renovados

🆕 Nuevos componentes del reproductor

Archivos añadidos:

  • AppleDeviceSelector.kt

    • Selector de dispositivos de audio.
  • V8PlayerBackdrop

    • Fondo dinámico con blur y gradientes.
  • V8PlayerControlsContent

    • Controles principales del reproductor.
  • QueueCollapsedContentV8

    • Controles inferiores cuando la cola está colapsada.
  • GlassTrack

    • Componente reutilizable para barras con efecto vidrio.

🔊 Selector de dispositivos de audio

Nuevo selector para cambiar rápidamente la salida de audio.

Compatible con:

  • Bluetooth.
  • Altavoces internos.
  • Dispositivos cableados.

Incluye:

  • BottomSheet personalizado.
  • Lista dinámica de dispositivos.
  • Integración con AudioManager.

🏠 Widget de pantalla de inicio

Se añade un nuevo widget de reproducción usando Jetpack Glance.


📱 OpenTune Player Widget

Nuevo widget interactivo para controlar la reproducción directamente desde el launcher.

Funciones:

  • Play/Pause.
  • Siguiente canción.
  • Canción anterior.
  • Información del tema actual.
  • Barra de progreso.
  • Artwork dinámico.

🎨 Personalización del Widget

Nueva pantalla de configuración con vista previa en tiempo real.

Opciones disponibles:

Opción Descripción
Modo Blur Fondo desenfocado usando RenderEffect (Android 12+)
Color dominante Extrae color desde artwork usando Palette API
Color sólido Fondo personalizado simple
Scrim Ajuste de opacidad del overlay
Corner Radius Personalización de esquinas
Progress Bar Mostrar u ocultar progreso

⚙️ Arquitectura del Widget

Nuevos archivos:

  • OpenTunePlayerWidget.kt

    • Implementación del widget Jetpack Glance.
  • OpenTunePlayerWidgetReceiver.kt

    • Receiver del widget.
  • PlayerWidgetUpdater.kt

    • Sincronización con reproducción.
  • PlayerWidgetState.kt

    • Estado y procesamiento de metadata.
  • WidgetSettings.kt

    • Configuración visual.
  • WidgetPreferences.kt

    • DataStore independiente del widget.

🔄 Integración con MusicService

El servicio de música ahora actualiza automáticamente el widget.

Actualizaciones al cambiar:

  • Canción.
  • Estado Play/Pause.
  • Artwork.
  • Progreso.

✨ Mejoras de Animaciones

Se agregan animaciones más naturales en controles del reproductor.

Mejoras:

  • Spring animations.
  • Escalado al interactuar.
  • Mejor feedback táctil.
  • Seguimiento mediante interactionSource.

Aplicado a estilos existentes:

  • V1
  • V2
  • V3
  • V4
  • V5
  • V6
  • V8

🎨 Recursos y Assets

Nuevos iconos y mejoras visuales:

Añadidos:

  • airplay.xml
  • speaker.xml
  • favorite_filled.xml
  • favorite_outline.xml

Actualizados:

  • queue_music.xml
  • lyrics.xml

🔧 Correcciones y Mantenimiento

Área Mejora
Canvas Sustitución del sistema antiguo por arquitectura modular
Player Mejor manejo de fondos animados
Metadata Normalización mejorada para búsquedas
Cache Reducción de llamadas repetidas mediante LRU
UI Limpieza de imports y comentarios redundantes
Apple Music Provider Tokens actualizados para mantener compatibilidad

📦 Dependencias

Dependencia Uso
androidx.glance:glance-appwidget Widgets de pantalla de inicio
androidx.glance:glance-material3 Componentes Material 3 para widgets

🌍 Localización

Nuevos textos añadidos:

  • Configuración del widget.
  • Modos de fondo.
  • Opciones visuales.
  • Selector de dispositivos.
  • Apple Music style.

Idiomas afectados:

  • Inglés.
  • Español.

🧠 Refactor Interno

Canvas

Migración de:


OpenTuneCanvas

a:


CanvasArtwork
|
├── AppleMusicCanvasProvider
├── TidalCanvasProvider
└── API Provider


Estado del reproductor

Nuevo flujo:


MusicService
↓
PlayerWidgetUpdater
↓
PlayerWidgetState
↓
Jetpack Glance Widget


🔢 Versión

  • versionCode: 131
  • versionName: 3.0.4

💡 Una release enfocada en convertir OpenTune en una experiencia más cercana a un reproductor premium moderno: Canvas animado desde múltiples servicios, reproductor estilo Apple Music, widgets personalizados y una interfaz más inmersiva.


🔗 Full Changelog:
3.0.3...3.0.4

3.0.3

Choose a tag to compare

@Arturo254 Arturo254 released this 09 Jun 22:56

🚀 Release 3.0.3

Versión centrada en Material 3 Expressive, mejoras de reproducción, sistema de descargas, autenticación InnerTube y optimizaciones visuales.


✨ Nuevas Funciones

🎵 MiniPlayer completamente rediseñado

El MiniPlayer recibe una renovación completa utilizando Material 3 Expressive para ofrecer una experiencia más moderna, compacta e interactiva.

Características principales:

Característica Detalle
Nuevo diseño tipo píldora Contenedor compacto de 64dp usando surfaceContainer
Acceso rápido al artista Nuevo botón para abrir directamente el perfil del artista actual
Botón Favoritos Animaciones spring, escalado dinámico y estados visuales mejorados
Play/Pause expresivo Uso de Cookie9Sided y transiciones avanzadas con AnimatedContent
Indicador de carga Nuevo CircularProgressIndicator integrado
Animaciones fluidas Escalado, crossfade y cambios de estado más naturales

🎶 Nueva experiencia para "New Releases"

La pantalla de lanzamientos recientes evoluciona hacia una experiencia totalmente categorizada y visual.

Características:

  • Clasificación automática de:

    • Álbumes
    • Singles
    • EPs
  • Hero card con estadísticas.

  • Carruseles horizontales independientes.

  • Headers expresivos con badges dinámicos.

  • Nuevos placeholders shimmer.

  • Estados Empty/Error completamente rediseñados.

  • Mejor relevancia para artistas favoritos.


🎤 Reconocimiento Musical Modernizado

Se rediseña completamente la experiencia de reconocimiento musical.

Mejoras:

  • Nuevo diseño Material 3 Expressive.
  • Layout adaptable para tablets y escritorio.
  • Mejor manejo de permisos y errores de grabación.
  • Nuevo flujo de resultados enriquecidos.
  • Botón de cancelación durante escucha.
  • Soporte para lanzamiento automático mediante intents.

📜 Letras más avanzadas y personalizables

Se agregan nuevas capacidades de sincronización y efectos visuales.

Nuevas funciones:

Función Descripción
Lyrics Sync Offset Ajuste manual del tiempo de sincronización
Blur dinámico Desenfoque configurable para líneas inactivas
Karaoke mejorado Nuevos gradientes animados y efectos visuales
Romanización mejorada Gestión centralizada para japonés y coreano
Tipografía refinada Mejor legibilidad y jerarquía visual

🎨 About Screen renovado

La pantalla Acerca de adopta Material 3 Expressive y obtiene datos dinámicos desde GitHub.

Características:

  • Carga automática de contribuidores desde GitHub API.
  • Estados de carga con shimmer.
  • Sistema de fallback offline.
  • Nuevas tarjetas de contribuidores.
  • Diseño visual expresivo con animaciones.

🔐 InnerTube y Reproducción

Nuevo sistema PlaybackAuthState

Se introduce un sistema avanzado para gestionar autenticación y reproducción.

Incluye:

  • Cookies centralizadas.
  • VisitorData.
  • DataSyncId.
  • PoToken.
  • Reintentos automáticos ante errores de autenticación.
  • Mejor compatibilidad con clientes Web y TV.

🌐 Sistema de proxies rotativos

Nueva infraestructura para mejorar confiabilidad y disponibilidad.

Características:

  • Rotación automática de proxies.
  • Failover inteligente.
  • Cooldowns automáticos.
  • Soporte DNS-over-HTTPS.
  • Configuración manual de proxies.
  • Compatibilidad con listas públicas.

🎵 Mejoras de Audio

Crossfade completamente optimizado

Se reescribe gran parte del procesamiento de crossfade.

Mejoras técnicas:

  • Buffers circulares optimizados.
  • Menor uso de memoria.
  • Curvas de transición más naturales:
    • Fade-In cuadrático.
    • Fade-Out exponencial/cosenoidal.
  • Sistema anti-clipping Soft Knee.
  • Calidad adaptativa según duración.

📥 Sistema de Descargas

Nueva Download Queue

Se añade una pantalla dedicada para la gestión de descargas.

Funciones disponibles:

  • Ver descargas activas.
  • Pausar/Reanudar todas.
  • Cancelar individualmente.
  • Cancelar toda la cola.
  • Orden FIFO.
  • Estado reactivo en tiempo real.

Notificaciones avanzadas

Las descargas ahora ofrecen controles completos desde la notificación.

Acciones disponibles:

  • Pause
  • Resume
  • Cancel
  • Cancel All

Mejoras:

  • Muestra el nombre de la canción descargada.
  • Persistencia al pausar.
  • Navegación directa a Download Queue.

🎤 Letras Multi-Fuente

Se amplían las fuentes disponibles para obtener letras.

Novedades:

  • Integración de Kugou.
  • Mejor sistema de búsqueda multi-fuente.
  • Mayor tasa de coincidencias.
  • Mejor soporte para idiomas CJK.

⚙️ Sistema de Build y Versionado

Integración avanzada con Git

Mejoras:

  • versionName incluye hash Git.
  • Nuevo campo BuildConfig.GIT_COMMIT.
  • Fallback automático mediante GitHub API cuando Git local no está disponible.
  • Mejor trazabilidad de builds Nightly.

🔧 Correcciones

Área Corrección
Related Songs Consultas SQL ahora son determinísticas
Quick Picks Solucionadas desapariciones aleatorias
Download Notifications Persistencia y acciones corregidas
Download Queue Manejo seguro de valores nulos
AOD Corrección de fullscreen e immersive mode
Lyrics Corrección de espacios extra en idiomas CJK
Changelog Mejor manejo de Stable y Nightly
BetterLyrics Limpieza de formato y mantenimiento

🧠 Refactor Interno

Material 3 Expressive

Migración masiva hacia componentes expresivos:

  • HorizontalMultiBrowseCarousel
  • SquigglySlider
  • Cookie9Sided
  • AnimatedContent
  • Nuevas Shapes expresivas
  • Spring Animations

InnerTube

Refactor profundo de:

  • Parsing de álbumes.
  • Parsing de búsquedas.
  • Playlists.
  • New Releases.
  • Modelos de thumbnails.
  • Gestión de autenticación.

🎨 UI/UX Mejoras

Componente Mejora
MiniPlayer Nuevo diseño tipo píldora
FloatingNavigationToolbar Indicador animado deslizante
Crossfade Settings Nuevo diálogo moderno
NumberPicker Mejor presentación visual
New Releases Hero card + carruseles
Music Recognition Diseño adaptativo y expresivo
About Screen Contribuidores dinámicos
Lyrics Blur, escalado y karaoke avanzado

🌍 Localización

Nuevos strings añadidos:

  • Descripciones de Crossfade.
  • Tooltips de Crossfade.
  • Categorías de New Releases.
  • Estados Empty/Error.
  • Download Queue.
  • Nightly Builds.
  • Nuevas preferencias AOD.

🤝 Pull Requests Integrados

PR Autor Descripción
#644 thankz173 Corrección de consultas relacionadas y Quick Picks
#632 CiroZDP Integración de Kugou para letras multi-fuente
#631 RajnishKMehta Correcciones de notificaciones de descargas
#624 RajnishKMehta Optimización de metadata y descargas
#622 RajnishKMehta Corrección de texto LICENSE
#618 RajnishKMehta Workflow CI/CD para APKs Debug
#613 RajnishKMehta Mejoras en documentación y CI

🔢 Versión

  • versionCode: 130
  • versionName: 3.0.3

💡 Una release enfocada en Material 3 Expressive, experiencia visual moderna, descargas avanzadas, autenticación robusta de YouTube Music y una reproducción más estable y fluida.


🔗 Full Changelog: 3.0.2...3.0.3

3.0.2

Choose a tag to compare

@Arturo254 Arturo254 released this 24 May 00:37

🚀 Release 3.0.2

Versión centrada en Always On Display (AOD) completo, caché de thumbnails y estabilidad del reproductor.


✨ Nuevas Funciones

📱 Always On Display (AOD) – Sistema completo

Se introduce una pantalla "Always On Display" que mantiene la pantalla encendida mientras el reproductor está activo, ideal para montar el dispositivo en el auto o usar como reloj musical.

Archivos nuevos:

  • AlwaysOnDisplayScreen.kt – Pantalla principal AOD con 5 estilos visuales
  • AlwaysOnDisplaySettings.kt – Pantalla de configuración completa
  • fullscreen.xml – Icono vectorial para modo inmersivo

Archivos modificados:

  • PlayerMenu.kt – Nuevo entry point para AOD en el bottom sheet
  • NavigationBuilder.kt – Nuevo route always_on_display como Dialog fullscreen
  • AppearanceSettings.kt – Preferencias de estilo, forma, oscuridad y tamaño
  • PreferenceKeys.kt – Nuevas keys: AodStyleKey, AodShapeKey, AodDarknessKey, AodArtworkSizeKey, AodFullscreenKey, AodAutoActivationKey

Características del AOD:

Característica Detalle
5 estilos CLASSIC (clásico), BACKGROUND (fondo con blur), MINIMAL (mínimo), LARGE (artwork grande), SPOTLIGHT (destacado)
8 formas de artwork Rounded, Circle, Squircle, Diamond, Hexagon, Star, Arch, Petal (usando GenericShape)
Efecto Cloudy Blur + viñeta dual (exterior e interior) para fondos artísticos
Activación automática Timer por inactividad: Never, 15s, 30s, 1m, 2m (integración con Player.kt)
Modo inmersivo Oculta status bar y navigation bar usando WindowInsetsControllerCompat
Soporte landscape Layouts separados para orientación horizontal en todos los estilos
Controles animados MinimalAnimatedButton y AnimatedButton con feedback visual al presionar
Marquee text Título y artista con scroll automático si exceden ancho

🖼️ Sistema de Thumbnails de alta calidad

Se implementa un sistema de caché dual (memoria + disco) para thumbnails de YouTube, mejorando drásticamente la experiencia visual.

Archivos modificados:

  • YouTubeUtils.kt – Nueva función getHighQualityThumbnail() y resize() mejorado
  • Thumbnail.kt – Integración del preloading de thumbnails de alta resolución
  • App.kt – Inicialización de ThumbnailCache al arrancar la app

Nuevo archivo:

  • ThumbnailCache.kt – Objeto con caché LruCache en memoria y caché persistente en disco (50MB límite)

Detalles técnicos:

  • Soporte de calidades: maxres (1080px), sd (640px), hq (480px), mq (320px), default (120px)
  • Redimensionamiento automático según resolución solicitada
  • Limpieza automática del disco cuando se supera el límite
  • Preloading en CanvasArtworkPlayer para animaciones fluidas

🎨 Canvas Artwork refactorizado

El sistema de Canvas Artwork se rediseña completamente para ser más modular, cacheable y eficiente.

Archivos nuevos:

  • CanvasArtworkResolver.kt – Lógica de resolución de artwork por título/artista
  • CanvasArtworkPlayer.kt – Reproductor de canvas extraído y modularizado
  • CanvasArtwork.kt – Data model para URLs estáticas, animadas o de video

Archivos modificados:

  • CanvasArtworkPlaybackCache.kt – Convertido a LRU cache con persistencia JSON y trimming automático
  • Player.kt – Integración del nuevo sistema de canvas

Mejoras:

  • Normalización inteligente de strings (eliminación de caracteres especiales, limpieza de feat., etc.)
  • Persistencia en disco para no re-descargar artwork entre sesiones
  • Soporte para artwork estático, GIF animado y video

🔧 Correcciones

Archivo Corrección
UpdateScreen.kt URL de nightly builds actualizada de GitHub releases a Cloudflare R2 (pub-2218e6bbd5b948e1b5d882cf4d92086d.r2.dev)
Player.kt Queue sheet ahora tappable y visible cuando está colapsado
PlayerMenu.kt Bottom sheet ahora soporta scrolling + layout unificado
DiscordLoginScreen.kt setWebContentsDebuggingEnabled restringido solo a BuildConfig.DEBUG
AlwaysOnDisplayScreen.kt Supresión de lint ConfigurationScreenWidthHeight + mejor manejo de duración C.TIME_UNSET
makeTimeString (utils) Manejo correcto de C.TIME_UNSET y duraciones negativas

🧠 Refactor Interno

Validación de duración simplificada

Se reemplazan comprobaciones redundantes de C.TIME_UNSET por una lógica más limpia basada en duration > 0L.

Archivos afectados:

  • AlwaysOnDisplayScreen.kt
  • Player.kt
  • PlayerMenu.kt

Importaciones y código muerto

  • Limpieza de imports no utilizados
  • Eliminación de código comentado y boilerplate
  • Estandarización de indentación en NavigationBuilder.kt

Anotaciones experimentales

  • @OptIn(ExperimentalMaterial3Api::class) – Para SquigglySlider
  • @file:OptIn(ExperimentalMaterial3ExpressiveApi::class) – Para nuevas shapes M3

🎨 UI/UX Mejoras

Componente Mejora
PlayerMenu.kt Card de volumen con mute/unmute toggle + slider sincronizado
AlwaysOnDisplayScreen.kt Reemplazo de Slider estándar por SquigglySlider (expresivo)
Thumbnail.kt Icono por defecto cambiado a opentune_monochrome

🌍 Localización

Archivos modificados:

  • values/strings.xml – Strings en inglés para AOD (estilos, formas, tiempos, modo inmersivo)
  • values-es/strings.xml – Traducción completa al español
  • values-hi/strings.xml – Traducción expandida al hindi (contribución @Gorupa)

Nuevos strings incluidos:

  • aod_style_* (5 estilos)
  • aod_shape_* (8 formas)
  • aod_auto_activation_* (Never, 15s, 30s, 1m, 2m)
  • aod_immersive_mode y descripción
  • aod_background_darkness y aod_artwork_size

⚙️ Dependencias

Cambio Detalle
Nueva dependencia me.saket.squiggles:squiggles-slider – SquigglySlider expresivo
Nota No se actualizaron AGP, Kotlin, Compose, Media3, Ktor en esta versión

🔢 Versión

  • versionCode: 129 (inferido de changelog 3.0.1 → 3.0.2)
  • versionName: 3.0.2

💡 Una release centrada en Always On Display premium, rendimiento visual con caché de thumbnails y estabilidad general del reproductor.


📦 Pull Requests (What's Changed)

PR Autor Archivos afectados Descripción
#548 @Gorupa values-hi/strings.xml Hindi strings expandido
#540 @Gorupa Player.kt Fix: queue sheet no era tappable ni visible cuando colapsado
#588 @Aeshp PlayerMenu.kt Fix: scrolling habilitado y layout unificado en bottom sheet
#597 @jim-daf DiscordLoginScreen.kt Gate setWebContentsDebuggingEnabled a BuildConfig.DEBUG

🎉 New Contributors


📂 Listado completo de archivos modificados

app/src/main/java/com/arturo254/opentune/
├── ui/screens/
│   ├── AlwaysOnDisplayScreen.kt (nuevo)
│   ├── AlwaysOnDisplaySettings.kt (nuevo)
│   ├── UpdateScreen.kt (modificado)
│   └── DiscordLoginScreen.kt (modificado)
├── ui/components/
│   ├── PlayerMenu.kt (modificado)
│   ├── Thumbnail.kt (modificado)
│   └── Player.kt (modificado)
├── ui/navigation/
│   └── NavigationBuilder.kt (modificado)
├── ui/settings/
│   ├── AppearanceSettings.kt (modificado)
│   └── PreferenceKeys.kt (modificado)
├── utils/
│   ├── YouTubeUtils.kt (modificado)
│   ├── ThumbnailCache.kt (nuevo)
│   └── makeTimeString (modificado)
├── canvas/
│   ├── CanvasArtworkResolver.kt (nuevo)
│   ├── CanvasArtworkPlayer.kt (nuevo)
│   ├── CanvasArtwork.kt (nuevo)
│   └── CanvasArtworkPlaybackCache.kt (refactorizado)
├── App.kt (modificado)
└── res/
    ├── drawable/fullscreen.xml (nuevo)
    ├── values/strings.xml (modificado)
    ├── values-es/strings.xml (modificado)
    └── values-hi/strings.xml (modificado)

🔗 Full Changelog

3.0.1

Choose a tag to compare

@Arturo254 Arturo254 released this 19 Apr 23:41

🚀 Release 3.0.1


✨ Nuevas Funciones

  • 🎚️ Nuevo PlayerSlider completamente personalizado con renderizado en Canvas, soporte para RTL y ticks.
  • 🎤 Sistema de letras avanzado con múltiples estilos de animación:
    • Karaoke
    • Apple (palabra por palabra)
    • Fade, Glow y Slide
  • 📤 Función de compartir letras como texto o imagen con personalización avanzada.
  • 🌫️ Nuevo estilo visual “Liquid Glass” para la barra de navegación (Beta).
  • 🎨 Presets visuales y estilos tipo glass para imágenes de letras.
  • 🔤 Romanización automática para letras en japonés y coreano.
  • 📄 Soporte para formato TTML y sincronización por palabra.

🎧 Mejoras en el Reproductor

  • Reproductor con controles más precisos y visuales más expresivos.
  • Nuevo indicador CircularWavyProgressIndicator.
  • Mejor sincronización y centrado automático en letras.
  • Feedback visual al reactivar auto-scroll.

🧠 Mejoras Internas

  • Refactor completo del motor de letras para mejor rendimiento y escalabilidad.
  • Nueva lógica centralizada para resolución de clientes de streaming (YouTube).
  • Mejor manejo de headers (User-Agent, Origin, Referer) en requests.
  • Código más limpio, modular y mantenible.

⚙️ Dependencias Actualizadas

  • AGP → 9.1.1
  • Kotlin → 2.3.20
  • Compose → 1.11.0-beta02
  • Material3 → 1.5.0-alpha17
  • Media3 → 1.10.0
  • Ktor → 3.4.2
  • Actualización del extractor de YouTube

🌍 Localización

  • Nuevos strings añadidos (ej. Liquid Glass Navbar)
  • Mejoras en traducciones y consistencia general

🧹 Limpieza y Refactor

  • Limpieza menor de código y formateo
  • Eliminación de redundancias
  • Mejora de type-safety en múltiples componentes

🔧 Otros Cambios

  • Actualización de FileProvider a ${applicationId}.fileprovider
  • Limpieza de file_paths.xml
  • Mejoras menores en ViewModels y recursos

🔢 Versión

  • versionCode: 128
  • versionName: 3.0.1

💿 Una actualización centrada en potencia, personalización y experiencia visual avanzada.

What's Changed

New Contributors

Full Changelog: 3.0.0...3.0.1

3.0.0

Choose a tag to compare

@Arturo254 Arturo254 released this 30 Mar 00:09

3.0.0

feat: rediseño masivo de la interfaz y adición de múltiples nuevas funciones

Este commit introduce una actualización a gran escala en toda la aplicación, centrada en ampliar significativamente la funcionalidad y mejorar la experiencia general del usuario. Se añadieron numerosas nuevas funciones, mejoras visuales y optimizaciones de comportamiento en distintas áreas del proyecto.

La actualización incluye la incorporación de nuevas capacidades del reproductor, mejoras en la interacción con letras sincronizadas, opciones avanzadas de personalización, patrones de navegación modernizados, ampliación de ajustes de apariencia y múltiples componentes de interfaz completamente nuevos diseñados para ofrecer una experiencia más dinámica y expresiva.

Además de las nuevas funciones, varias pantallas y flujos existentes fueron rediseñados para adaptarse a las nuevas características, logrando una mejor usabilidad, layouts más claros y un comportamiento más consistente en toda la aplicación. Muchos componentes internos fueron refactorizados o reemplazados para facilitar la escalabilidad futura y simplificar el mantenimiento del código.

En conjunto, este commit representa una evolución importante del proyecto, incorporando una gran cantidad de nuevas funciones y estableciendo una base sólida para futuras mejoras y desarrollo continuo.

2.0.12

Choose a tag to compare

@Arturo254 Arturo254 released this 03 Feb 01:39

OpenTune 2.0.12

Logo de OpenTune

📌 Notas de la Versión 2.0.12


🆕 New

🎶 Apple Music–style lyrics blur

  • Nuevo efecto de desenfoque dinámico para letras sincronizadas, inspirado en Apple Music.

  • Preferencia dedicada apple_music_lyrics_blur para activar/desactivar el efecto.

  • El blur se aplica solo a líneas no activas, manteniendo el foco visual en la línea actual.

  • El efecto se desactiva automáticamente durante:

    • Modo selección de letras.
    • Auto-scroll deshabilitado.
  • Transiciones suaves de blur, alpha y escala mediante animaciones reactivas.


🎨 Nuevo estilo de fondo Apple Music para el reproductor

  • Fondo dinámico con thumbnail difuminado y máscara de gradiente vertical.
  • Mejora la legibilidad del contenido sin depender de blobs de color.
  • Integración completa con el sistema de estilos del reproductor.

⏱️ Sleep Timer integrado directamente en el reproductor

  • El temporizador de apagado ahora forma parte del menú del reproductor.

  • Nuevo diálogo de configuración:

    • Duraciones predefinidas.
    • Opción Final de la canción.
  • Estado activo visible en el menú con:

    • Cuenta regresiva en tiempo real.
    • Indicador End of song cuando aplica.

✨ Improved

📝 Refactor completo del renderizado de letras

  • Extracción de la lógica de cada línea a un nuevo componente LyricsLine.

  • Código más limpio, reutilizable y fácil de mantener.

  • Animaciones de línea activa refinadas:

    • Glow más eficiente.
    • Pulso más estable y menos costoso.
  • Espaciado, alineación y jerarquía visual estandarizados.


⏳ Mejor feedback visual del Sleep Timer

  • Indicador circular de progreso alrededor del icono cuando está activo.

  • Animaciones suaves de:

    • Progreso.
    • Color.
    • Pulso al acercarse al final.
  • Cambio dinámico de color según el tiempo restante:

    • Primary → Secondary → Tertiary → Error.
  • Texto porcentual y etiqueta “¡Pronto!” en estados críticos.

  • Al tocar el icono con el temporizador activo, ahora se cancela directamente.


🖼️ Manejo optimizado de thumbnails

  • Thumbnail.kt refactorizado para:

    • Mejor rendimiento.
    • Consistencia entre estilos de fondo.
  • El radio de esquina ahora se obtiene desde preferencias del usuario.

  • Carga reactiva del valor guardado al inicializar el componente.


🔄 Changed

🧩 Simplificación del diseño del reproductor

  • Eliminada la lógica del Extra Button configurable.
  • El temporizador sustituye completamente este comportamiento.
  • Layout de botones secundarios reorganizado para mejor centrado y claridad visual.

🌐 Actualización y mejora de traducciones

  • Nuevas y refinadas cadenas en múltiples idiomas:

    • Francés, Turco, Árabe, Chino, Checo, Español y Portugués.
  • Soporte textual para:

    • Sleep Timer avanzado.
    • Advertencias de compatibilidad con streams en vivo.
    • Herramientas de diagnóstico (reset de VISITOR_DATA).
  • Ajustes contextuales en francés:

    • “Humeur” → “Ambiance”
    • “Aimés” → “Favoris”

🖌️ Modernización de selectores visuales

  • El selector de radio de esquina del thumbnail ahora usa ModalBottomSheet.

  • Diseño Material 3 Expressive:

    • Drag handle.
    • Jerarquía tipográfica mejorada.
    • Fondo surfaceContainerLow.
  • Vista previa dinámica con el artwork actual.


🛠️ Technical

🔐 Refactor profundo de la desencriptación de streams

  • Migración completa a MetroExtractor.

  • Lógica más robusta para:

    • signatureCipher
    • Parámetro n en URLs.
  • Soporte para desencriptación por lotes.

  • Caché thread-safe de información del reproductor.

  • Mejor tracking de reproducción y compatibilidad con historial de YouTube.

  • Reordenamiento de clientes fallback para mayor estabilidad.


🔄 Reset de Visitor Data más seguro

  • El reset de VISITOR_DATA ahora fuerza un reinicio completo de la app.
  • Garantiza consistencia total tras el cambio de identidad.
  • Logging mejorado para detectar fallos.

📦 Dependencies

  • material3 actualizado (alpha12 → alpha13 según commit).
  • Migración completa del extractor a MetroExtractor.
  • Nuevas reglas Proguard para Netty, Reactor, Wire y dependencias relacionadas.
  • Exclusiones de recursos META-INF para evitar conflictos de build.

🧹 Removed

❌ Limpieza de código y preferencias

  • Eliminadas claves de preferencias no usadas:

    • Extra buttons.
    • URLs de foto de cuenta.
  • Corrección de escapes incorrectos en strings (\').


🔄 Changed

📂 Actualización del FileProvider

  • Se cambió la autoridad del FileProvider a ${applicationId}.fileprovider, alineándose con la convención estándar de Android.
  • Evita inconsistencias al construir URIs y posibles errores al compartir archivos.
  • Cualquier referencia previa a la autoridad antigua fue ajustada para mantener compatibilidad.

Archivos afectados:

AndroidManifest.xml

🧹 Improved

🧾 Limpieza de file_paths.xml

  • Eliminados comentarios y líneas en blanco innecesarias.

  • Se mantiene intacta la configuración funcional de rutas:

    • downloads
    • external_files
    • cache
    • files
  • El archivo queda más claro y fácil de mantener sin cambios de comportamiento.

Archivo afectado:

app/src/main/res/xml/file_paths.xml

📊 Estadísticas de la Versión:

  • 🔄 Lanzada: Fecha de Lanzamiento
  • 📦 Descargas: Descargas
  • 🛠️ Commits: Commits

🤝 Colaboración de Código Abierto

OpenTune es un proyecto de código abierto y siempre estamos buscando colaboradores para mejorar el proyecto. ¡Tu contribución es bienvenida!

🛠️ Cómo Contribuir:

  1. Haz un fork del repositorio: Clona el repositorio para trabajar en mejoras.
  2. Envía pull requests: Una vez que hayas realizado tus cambios, envía un pull request para que podamos revisar y fusionar tus contribuciones.
  3. Explora y mejora el código fuente: Si encuentras algún error o tienes una idea para mejorar el proyecto, ¡no dudes en compartirla!

📄 Licencia

Este proyecto está bajo la licencia MIT y GPL 3


📝 Registro de Cambios

Full Changelog: 2.0.11...2.0.12


Hecho con amor
OpenTune: Tu música. Tu ritmo. Tu control.

2.0.11

Choose a tag to compare

@Arturo254 Arturo254 released this 12 Jan 03:00

OpenTune 2.0.11

Logo de OpenTune

📌 Notas de la Versión 2.0.11


🆕 New

🎵 Nuevo estilo de fondo Apple Music

  • Se añade el estilo APPLE_MUSIC para el reproductor, con gradiente difuminado avanzado y “color blobs” dinámicos.
  • Integrado en el sistema de temas y fondos del player.
Theme.kt
Thumbnail.kt
PreferenceKeys.kt

🎤 Mejora completa de la pantalla de Artista

  • Nuevo header con imagen grande de alta calidad y degradados más suaves.
  • Soporte para contador de suscriptores obtenido desde InnerTube.
  • Nueva barra de acciones moderna (Suscribirse, Radio, Shuffle).
  • Botón de compartir directo en la TopAppBar.
  • Se añade descripción del artista visible.
ArtistScreen.kt
YouTube.kt
SubscriptionButton.kt

🖼️ Personalización avanzada de imágenes para compartir letras

  • Nuevas opciones de estilo:

    • Forma del cover (Redondeado, Círculo, Cuadrado).
    • Estilo de letra (Normal, Itálica, Condensada).
    • Línea decorativa opcional bajo la metadata.
    • Control de espaciado entre líneas y elementos.
  • Panel de personalización reorganizado por secciones plegables.

ShareLyricsDialog.kt
ShareLyrics.kt
LyricsImageGenerator.kt

✨ Improved

▶️ Reproductor con miniaturas paginadas

  • La portada ahora es un pager horizontal (anterior / actual / siguiente).
  • Snap centrado con desplazamiento suave.
  • Gestos habilitados solo en modo expandido.
  • Texto “Reproduciendo desde” reposicionado para mayor claridad.
Player.kt
Thumbnail.kt

📝 Letras más expresivas e interactivas

  • Botón Auto scroll al desplazar letras manualmente.

  • Animación avanzada de la línea activa con:

    • Gradiente animado.
    • Efecto glow, rebote y sombra.
  • Colores de letras adaptativos según el fondo (Blur, Gradient, Apple Music).

  • Soporte para selección de líneas y compartir fragmentos.

Lyrics.kt

🎨 Extracción de color más precisa

  • Nuevo PlayerColorExtractor con mejor scoring.
  • Mayor precisión en gradientes dinámicos.
  • Colores del slider adaptativos según el fondo del reproductor.
Theme.kt

📀 Rediseño moderno de Álbumes, Playlists y Player

  • Nuevos headers con artwork centrado.
  • Barras de acción con botones agrupados.
  • Listas tipo Quick Pick con tarjetas conectadas.
  • Scrollbar vertical interactivo con feedback háptico.
  • Controles del player con animaciones por resorte.
AlbumScreen.kt
AutoPlaylistScreen.kt
LocalPlaylistScreen.kt
Player.kt
Menu.kt

🔄 Changed

🧱 Refactor de menús y componentes

  • Migración a nuevos componentes expresivos (MenuGroup, NewActionGrid).
  • PlayerMenu reorganizado con mejor jerarquía visual.
  • Lógica de letras y carga de estado simplificada.
PlayerMenu.kt
Items.kt
Lyrics.kt

🧩 Ajustes de estilo y formas

  • Actualización del UnifiedShapeSelector.
  • Gestión centralizada de estilos para botones y miniaturas.
  • Eliminada la rotación continua del thumbnail del MiniPlayer.
ShapeSelector.kt
MiniPlayer.kt

🧹 Removed

❌ Eliminado swipe para borrar canciones locales

  • Se retira el gesto swipe-to-dismiss en playlists locales.
  • Simplificación de lógica y estados internos.
LocalPlaylistScreen.kt

🧼 Limpieza general

  • Eliminación de código comentado o redundante.
  • Ajustes menores de padding y layouts no relacionados.

📦 Dependencies

  • Material3 1.5.0-alpha11
  • Material Ripple 1.10.0
  • AndroidX Navigation, Hilt y Foundation actualizados.
  • NewPipeExtractor actualizado a snapshot reciente.
libs.versions.toml

🌍 Localization

  • Nuevas cadenas para:

    • Auto scroll
    • Apple Music
    • Carga de letras
    • Estilos terciarios
  • Mejora en textos dinámicos con valores interpolados.

strings.xml

🔢 Versión

  • VersionCode: 125
  • VersionName: 2.0.11

📊 Estadísticas de la Versión:

  • 🔄 Lanzada: Fecha de Lanzamiento
  • 📦 Descargas: Descargas
  • 🛠️ Commits: Commits

🤝 Colaboración de Código Abierto

OpenTune es un proyecto de código abierto y siempre estamos buscando colaboradores para mejorar el proyecto. ¡Tu contribución es bienvenida!

🛠️ Cómo Contribuir:

  1. Haz un fork del repositorio: Clona el repositorio para trabajar en mejoras.
  2. Envía pull requests: Una vez que hayas realizado tus cambios, envía un pull request para que podamos revisar y fusionar tus contribuciones.
  3. Explora y mejora el código fuente: Si encuentras algún error o tienes una idea para mejorar el proyecto, ¡no dudes en compartirla!

📄 Licencia

Este proyecto está bajo la licencia MIT y GPL 3


📝 Registro de Cambios

Full Changelog: 2.0.10...2.0.11


Hecho con amor
OpenTune: Tu música. Tu ritmo. Tu control.

2.0.10

Choose a tag to compare

@Arturo254 Arturo254 released this 21 Dec 21:19

OpenTune 2.0.10

Logo de OpenTune

📌 Notas de la Versión 2.0.10


🎧 Reproductor — Rediseño profundo

🖼️ Nuevo Thumbnail paginado

  • El thumbnail estático fue reemplazado por un pager horizontal basado en LazyHorizontalGrid.

  • Permite deslizar entre:

    • Canción anterior
    • Canción actual
    • Canción siguiente
  • Usa SnapFlingBehavior para un centrado suave y natural.

  • El gesto de swipe solo se habilita cuando el reproductor está expandido, evitando conflictos.

  • Toda la lógica de estado, errores y gestos ahora vive en Thumbnail.kt, mejorando mantenibilidad.

🧭 Layout del Player

  • El texto “Playing from” ahora se muestra sobre el thumbnail, logrando una jerarquía visual más clara.
  • Mejor alineación y estructura general del reproductor.

🎶 Letras — Más expresivas y controlables

✨ Animaciones avanzadas

  • La línea activa ahora incluye:

    • Gradiente animado con efecto de relleno y pulso.
    • Sombra sutil y efecto rebote para mayor énfasis visual.
  • Transiciones suaves de color, escala y opacidad usando animaciones reactivas.

📜 Auto-scroll inteligente

  • Si el usuario desplaza manualmente las letras, aparece un botón “Auto scroll” para reactivar el seguimiento automático.
  • La lógica de scroll fue centralizada para mayor consistencia.

🎨 Colores adaptativos

  • El color de las letras se adapta dinámicamente al fondo del reproductor.
  • Para fondos BLUR y GRADIENT, se usa el color tertiary para mejor contraste.

⚙️ Control de animaciones

  • Nuevo ajuste “Animate lyrics” permite activar o desactivar animaciones de letras.

🎨 Colores dinámicos y theming mejorado

🌈 Extracción de colores más robusta

  • Nuevo sistema de extracción usando PlayerColorExtractor.
  • Selección de colores más precisa con scoring y mayor cantidad máxima de colores.
  • Fallbacks garantizados para evitar estados inválidos.

🎚️ Slider y controles adaptativos

  • Nuevo PlayerSliderColors ajusta colores según el estilo de fondo:

    • Default
    • Blur
    • Gradient
  • Los estilos de botones del reproductor se redefinen:

    • SECONDARYPRIMARY
    • TERTIARY ahora es una opción clara y diferenciada.

🔄 Animaciones dinámicas en Player y MiniPlayer

  • Botón Play/Pause:

    • Rota infinitamente mientras se reproduce.
    • Cambia de forma: cuadrado (pausado)forma personalizada (reproduciendo).
  • MiniPlayer:

    • El thumbnail rota durante la reproducción.
    • Soporte completo para formas dinámicas según preferencias del usuario.

🧩 Personalización — Sistema de shapes unificado

🧱 Selector de formas avanzado

  • Nuevo selector unificado con pestañas para configurar:

    • Botones pequeños
    • Botón Play/Pause
    • Thumbnail del MiniPlayer
  • Lógica centralizada en ShapeUtils.kt.

  • Nuevas preferencias y valores por defecto añadidos.

🗑️ Limpieza

  • Eliminadas pantallas y componentes antiguos de shapes y Mood & Genres (integrado en Explore).

📊 OpenTune Insight (beta – bases)

Se establecen los cimientos para OpenTune Insight, un resumen anual tipo “Wrapped”:

  • Nuevos componentes UI (InsightBottomSheetContent, InsightFeatureItem).

  • Preparación de estado y navegación (aún no visible para usuarios).

  • Nuevas dependencias:

    • MPAndroidChart (gráficas).
    • iText (exportación PDF).
  • Recursos y drawables añadidos.


🧾 Widget de música — Rediseño completo

📐 Layout renovado

  • Diseño vertical más compacto y legible.
  • Controles agrupados en una fila inferior centrada.
  • Tamaños ajustados para mejor balance visual.

🪟 Android 12+

  • Layouts específicos para API 31+.
  • Mejor soporte de redimensionado y celdas objetivo.

🧹 Limpieza

  • Comentarios traducidos a inglés.
  • Configuración de widget simplificada y más flexible.

⚙️ BottomSheets y Settings

🧩 BottomSheetMenu → Material 3

  • Migración completa a ModalBottomSheet.
  • Eliminada lógica manual de gestos, scrim y back handling.
  • Drag handle personalizado y mejor integración con Material 3.

🛠️ Settings unificados

  • Nuevo diseño base para todas las pantallas de ajustes.

  • Migración completa de:

    • Cuenta
    • Privacidad
    • Reproductor
    • Contenido
    • Apariencia
    • Backup & Restore
  • Padding, scroll e insets consistentes.


🌍 Localización y textos

  • Nuevas cadenas para:

    • Auto scroll
    • Colores terciarios
    • Animación de letras
  • Mejora de textos dinámicos (incluye límites numéricos).

  • Eliminación de strings hardcodeados en Player.

  • Traducciones y consistencia mejoradas.


🧹 Refactor y limpieza general

  • Eliminación de código comentado y redundante.
  • Traducción de comentarios internos a inglés.
  • Ajustes de padding y layout en múltiples pantallas.
  • Actualizaciones de dependencias clave (Material3, Navigation, Hilt, Foundation, NewPipeExtractor).

🔢 Versión

  • VersionCode: 124
  • VersionName: 2.0.10

📊 Estadísticas de la Versión:

  • 🔄 Lanzada: Fecha de Lanzamiento
  • 📦 Descargas: Descargas
  • 🛠️ Commits: Commits

🤝 Colaboración de Código Abierto

OpenTune es un proyecto de código abierto y siempre estamos buscando colaboradores para mejorar el proyecto. ¡Tu contribución es bienvenida!

🛠️ Cómo Contribuir:

  1. Haz un fork del repositorio: Clona el repositorio para trabajar en mejoras.
  2. Envía pull requests: Una vez que hayas realizado tus cambios, envía un pull request para que podamos revisar y fusionar tus contribuciones.
  3. Explora y mejora el código fuente: Si encuentras algún error o tienes una idea para mejorar el proyecto, ¡no dudes en compartirla!

📄 Licencia

Este proyecto está bajo la licencia MIT y GPL 3


📝 Registro de Cambios

Full Changelog: 2.0.9...2.0.10


Hecho con amor
OpenTune: Tu música. Tu ritmo. Tu control.