Skip to content

Releases: Arturo254/OpenTune

3.0.1

19 Apr 23:41

Choose a tag to compare

🚀 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

30 Mar 00:09

Choose a tag to compare

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

03 Feb 01:39

Choose a tag to compare

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

12 Jan 03:00

Choose a tag to compare

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

21 Dec 21:19

Choose a tag to compare

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.

2.0.9

24 Nov 00:32

Choose a tag to compare

OpenTune 2.0.9

Logo de OpenTune

📌 Notas de la Versión 2.0.9

🔧 Refactor: eliminar componente sin uso y mejorar BottomSheet

Se elimina un componente que ya no se utiliza y se optimiza el comportamiento visual del BottomSheet.

Cambios principales:

  • Eliminado un archivo obsoleto.
  • Simplificada la lógica de opacidad del fondo con pow(0.5f) y mejorado el formateo.

Archivos editados/eliminados:

NavigationTile.kt (eliminado)
BottomSheet.kt (refactor y comentarios añadidos)

🌍 Refactor: corregir traducción en español sobre VISITOR_DATA

Se ajusta la traducción del recurso visitor_data_description para alinearse con el término técnico interno.

Cambios:

  • Se reemplaza el texto para usar VISITOR_DATA.
  • Se mantiene un prefijo inesperado (“i”) que venía del diff original.

Archivo:

values-es/strings.xml

🌐 Refactor: mejoras en polaco y eliminación de chino tradicional (TW)

Actualización extensa de traducciones en polaco y eliminación completa de la localización en chino tradicional.

Cambios:

  • Nuevas traducciones completas (avatar, backups, imágenes de letras, VISITOR_DATA).
  • Correcciones gramaticales y de estilo.
  • Mejora en listas con viñetas.
  • Eliminación total de values-zh-rTW.

Archivos:

values-pl/strings.xml (actualizado)
values-zh-rTW/strings.xml (eliminado)

✨ feat: animación mejorada de badge de actualización del perfil

Se mejora la animación y visibilidad del indicador de actualización sobre el avatar del usuario.

Mejoras destacadas:

  • Animación infiniteRepeatable con pulso y cambio de alpha.
  • Efecto radial externo para atraer atención.
  • Fondo semitransparente, icono más grande (18dp) y animaciones aplicadas al símbolo.

Archivo:

MainActivity.kt

🇵🇱 L10n: mejoras adicionales de polaco

Se completa la traducción del contenido relacionado con VISITOR_DATA y se corrigen errores en la UI.

Cambios:

  • Mejoras en ortografía y mayúsculas.
  • Traducciones completas para la sección informativa de VISITOR_DATA.
  • Nuevas claves para futuras funciones.

Archivo:

values-pl/strings.xml

🆕 feat: agregar catalán y malayalam, y actualizar traducciones

Se amplía la compatibilidad de idiomas y se ajustan otras traducciones existentes.

Cambios:

  • Nuevos idiomas: Catalán y Malayalam.
  • Actualizaciones en ruso, francés, alemán, vietnamita, japonés y catalán (España).
  • Nuevas claves para VISITOR_DATA, selección de avatar y subida a la nube.
  • Normalización de formato con comillas en múltiples archivos.

Archivos:

values-ca/strings.xml (nuevo)
values-ml/strings.xml (nuevo)
🗂️ múltiples archivos de idiomas actualizados

☁️ feat: subida en la nube opcional + cadenas externalizadas

Se agrega preferencia para controlar backups en la nube y se eliminan textos hardcodeados.

Cambios principales:

  • Nuevo toggle para habilitar subida automática a filebin.net.
  • Las tarjetas informan si el backup será local o con nube.
  • Todos los textos pasan a stringResource.
  • Agregado ícono nuevo de seguridad en la nube.

Archivos:

BackupAndRestore.kt (nueva lógica y strings externalizados)
cloud_lock.xml (nuevo ícono)
strings.xml (en/es/pt-rBR → nuevas traducciones)

🎨 feat: rediseño de Backup/Restore + gestión del caché

Se rediseña completamente la pantalla de copias de seguridad y se agrega gestión visible de caché de canciones.

Cambios destacados:

  • Nueva interfaz con tarjetas minimalistas (Minimal*Cards).
  • Indicador visual del uso del caché y tamaño en tiempo real.
  • “Resetear” ahora limpia caché y VISITOR_DATA en una sola acción.
  • Indicadores de carga durante la limpieza.
  • Nuevas dependencias y animaciones para una experiencia moderna.

Archivos:

BackupAndRestore.kt (nueva UI + lógica de caché)
build.gradle (añade WorkManager)

⚡ feat: fast scroller en la Library

Se agrega VerticalFastScroller para desplazamiento rápido en listas largas de la biblioteca.

Cambios:

  • Se usa lazyListState para controlar el scroll.
  • Las pantallas de biblioteca quedan envueltas con el scroller.

Archivos:

LibraryScreen.kt

📊 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.8...2.0.9


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

2.0.8

09 Nov 23:46

Choose a tag to compare

OpenTune 2.0.8

Logo de OpenTune

📌 Notas de la Versión 2.0.8


📌 Cambios Principales

🎨 Refactor: Reestructuración de componentes UI y actualización de dependencias

Este cambio introduce una refactorización profunda en los componentes visuales de la app para hacer el código más modular, reutilizable y coherente, además de actualizar librerías y pulir el diseño del reproductor.


🧩 Reestructuración en Items.kt

Se centralizan medidas, opacidades y tamaños mediante:

  • ItemDimensions y ItemAlpha, garantizando consistencia visual en toda la app.

  • Creación de componentes reutilizables y limpios:

    • ThumbnailImage: imagen estandarizada con AsyncImage.
    • PlayButton: botón circular de reproducción con fondo uniforme.
    • DownloadStateIcon: muestra el estado de descarga (completo, en cola o en curso).
    • BadgeIcon y StandardBadges: unifican íconos comunes como “like”, “descargado” o “explícito”.
    • SelectionOverlay: capa visual para ítems seleccionados.

Además:

  • Se simplificaron los Composable principales (SongListItem, AlbumGridItem, ArtistListItem, YouTubeListItem, etc.) reemplazando código repetido con los nuevos componentes.
  • Se extrajo la lógica de descarga de álbumes en la nueva función rememberAlbumDownloadState.
  • Se mejoró la accesibilidad, agregando contentDescription y roles semánticos a los elementos de lista.
Items.kt

🎵 Ajustes visuales en el reproductor

Se optimiza la disposición de elementos en ambas orientaciones:

  • El texto “Reproduciendo desde” ahora se agrupa con la miniatura del álbum para mantener alineación central.
  • Se eliminaron fillMaxSize y statusBarsPadding del componente Thumbnail, delegando el control de diseño al Player.
  • Se ajustaron los márgenes y espaciados para una vista más equilibrada y limpia en el reproductor expandido.
Player.kt  
Thumbnail.kt

⚙️ Actualización de dependencias

Se actualizaron versiones clave para estabilidad y compatibilidad:

  • lifecycle: 2.8.7 → 2.9.4
  • media3: 1.5.1 → 1.8.0
  • materialRipple: 1.9.0-beta02 → 1.9.4
    También se incrementó la versión de la app:
  • versionCode: 121 → 122
  • versionName: 2.0.7 → 2.0.8
gradle/libs.versions.toml  
app/build.gradle.kts

🎧 Refactor: Ajuste de diseño y espaciado en Player

Se reorganiza la interfaz del reproductor para mejorar el espaciado y estructura visual, especialmente al mostrar el título de la cola actual.

  • El texto “Reproduciendo desde” y el título de la cola se movieron fuera del Box principal hacia la Column superior.

  • Se añadió un Spacer de 35.dp para mantener un margen superior consistente y evitar solapamientos.

  • Se ajustaron los márgenes inferiores en secciones del contenido principal y vista de letras.

    Player.kt
    

⚙️ Refactor: Mejora visual de ajustes y eliminación de importación de playlists

Renueva el diseño del perfil en la pantalla de ajustes y elimina la opción de importar playlists desde respaldo.

  • Settings:

    • El avatar ahora mide 96.dp con borde degradado y estado “en línea”.
    • Se rediseña el modo sin sesión, mostrando un logo más grande y el subtítulo “Tu música, sin límites”.
    • El nombre de usuario usa AnimatedContent y se incrementa el padding general.
  • BackupAndRestore:

    • Se elimina la sección “Importar Playlists” (M3U, CSV), ahora movida a otra parte de la app.
    SettingsScreen.kt  
    BackupAndRestore.kt
    

🌐 Refactor: Nuevo selector de idioma con búsqueda integrada

El selector de idioma fue completamente rediseñado con una interfaz más moderna, eficiente y una barra de búsqueda.

  • UI Modernizada:

    • Se reemplazan Cards por Surfaces al estilo Material 3 Expressive.
    • Los idiomas ahora muestran esquinas redondeadas, elevación y badges compactos.
    • Se renombraron los componentes a LanguageItem y CurrentLanguageBadge.
  • Nueva búsqueda:

    • Se añade un SearchBar para filtrar idiomas por nombre o código.
    • Muestra el mensaje “Sin resultados” cuando no hay coincidencias.
  • Optimización:

    • Se reduce la lista de idiomas experimentales y los retrasos de reinicio (de 1200 ms a 800 ms).
    • Se mejora la lógica al limpiar o seleccionar idioma.
    LocaleManager.kt
    

🎶 feat: Mostrar título de cola en Player y mejorar traducciones

Se añade la sección “Reproduciendo desde” en la pantalla del reproductor, mostrando el nombre de la playlist o álbum actual.

  • Animación fluida de entrada/salida y efecto marquee para títulos largos.

  • Nuevas cadenas añadidas y traducidas en:

    values/strings.xml  
    values-es/strings.xml  
    values-pt-rBR/strings.xml
    

👤 Refactor: Rediseño de ArtistScreen y ajustes del reproductor

Rediseño completo de la pantalla de artista con un estilo más moderno inspirado en YouTube Music y nuevos valores por defecto del reproductor.

  • ArtistScreen:

    • Nuevo encabezado “Hero” de 380 dp con imagen completa y degradado múltiple.
    • Avatar circular de 110 dp con sombra flotante.
    • Botones reorganizados (Suscribirse, Aleatorio, Compartir) con colores de contenedor distintos.
    • TopAppBar con transición de transparencia y comportamiento de desplazamiento suave.
  • Player:

    • Alineación de texto por defecto ahora centrada.
    • SliderStyleSQUIGGLY y botones del reproductor → SECONDARY.
    ArtistScreen.kt  
    Player.kt
    

🧩 feat: Añadir dependencias de Glance

Se agregan las librerías glance-appwidget y glance-material3 (v1.1.1) para preparar el soporte de widgets modernos con Jetpack Glance.

build.gradle

feat: Actualización de Material3 y mejora del fondo en letras

Actualiza la versión de Material3 y optimiza el efecto difuminado en el fondo de la pantalla de letras.

  • Dependencia:

    • material3 actualizada de 1.5.0-alpha04 a 1.5.0-alpha07.
  • UI:

    • El blur() se aplica antes de graphicsLayer() para un difuminado más suave.
    • Se incrementa el escalado de fondo de 1.8f a 2.5f.
    Lyrics.kt  
    MainActivity.kt
    

🧹 Refactor: Eliminación de componentes obsoletos

Se eliminan los composables PreferenceGroup y PreferenceCategory, ya sin uso, para limpiar el código.

Preference.kt

📊 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.7...2.0.8


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

2.0.7

19 Oct 20:49

Choose a tag to compare

OpenTune 2.0.7

Logo de OpenTune

📌 Notas de la Versión 2.0.7


📌 Cambios Principales

🔹 Refactor: Reemplazo de SelectionSongsMenu con diseño en cuadrícula

Este cambio rediseña por completo el menú de selección múltiple de canciones usando una cuadrícula más compacta y organizada.

  • Se reemplaza el LazyColumn por el nuevo composable GridMenu, que muestra las acciones del menú en formato de cuadrícula.

  • Cada acción (Reproducir, Aleatorio, Añadir a cola, etc.) ahora se renderiza como GridMenuItem.

  • Se introduce DownloadGridMenu, que gestiona el progreso y estado de las descargas dentro de la cuadrícula.

  • La acción “Añadir a playlist” ahora llama correctamente a YouTube.addToPlaylist para cada canción seleccionada.

  • Se simplifica la lógica de “Me gusta / No me gusta todo” y “Añadir / Quitar de la biblioteca”.

  • Limpieza menor en:

    SyncUtils.kt  
    PlaylistMenu.kt  
    LibraryPlaylistsScreen.kt
    

🎨 feat: Personalización avanzada para compartir letras como imagen (Beta)

Esta mejora introduce opciones avanzadas para crear imágenes de letras totalmente personalizadas.

  • Nueva clase ImageCustomization que gestiona estilos de fondo (SOLID, GRADIENT, PATTERN), tipo de fuente, visibilidad y posición del logo, opacidad y radio de bordes.

  • En ShareLyricsDialog.kt, se añade una sección expandible “Configuración avanzada” con controles FilterChip, Switch y Slider.

  • Los presets ahora usan el nuevo modelo de personalización; se agregan temas como Spotify Style, Sunset y Púrpura Profundo.

  • LyricsImageGenerator.kt fue reescrito para generar imágenes 1080x1080 de alta calidad con todas las nuevas opciones visuales.

  • Refactor de composables en:

    ShareLyrics.kt  
    ShareLyricsDialog.kt
    

    El preview ahora se llama LyricsImageCardPreview y el código es más modular y limpio.


🧩 Refactor: Rediseño del sistema “Compartir letras” con Bottom Sheets

La función de compartir letras fue rediseñada con ModalBottomSheet, mejorando usabilidad y apariencia.

  • El diálogo principal ahora presenta las opciones “Compartir como texto” e “Imagen” en una hoja inferior moderna.

  • Se introduce ShareLyricsImageCustomizationSheet con selector de temas, vista previa en vivo y mejor extracción de color del cover.

  • Se incrementa la resolución del arte (512 px) y se mejora el recorte y los bordes de la portada.

  • Correcciones visuales menores en:

    Lyrics.kt  
    ShareLyrics.kt
    

    y nuevos textos para la interfaz actualizada.


🖼️ feat: Introducción del diálogo para compartir letras como imagen

Nueva función que permite generar y compartir imágenes personalizadas de letras.

  • Nuevo composable ShareLyricsDialog.kt con vista previa en tiempo real y sugerencias de colores basadas en la portada.
  • Permite elegir colores de fondo, texto principal y secundario, además de tonos blancos, negros o de marca.
  • Reemplaza el antiguo ColorPickerDialog, simplificando Lyrics.kt.
  • Limpieza y eliminación del archivo obsoleto LyricsImageGenerator.kt.

🎵 feat: Mejoras en la UI y manejo de estado de las letras

Optimiza el rendimiento y las animaciones de las letras, asegurando sincronización precisa y actualizaciones inmediatas.

  • El estado de las letras ahora se obtiene directamente de playerConnection.currentLyrics, manteniéndolo siempre actualizado.

  • Se añade un LaunchedEffect(lines) para reiniciar selección, scroll y estado al cambiar la canción.

  • Animación de línea actual más fluida, con efectos de alpha y scale.

  • Claves de LazyColumn simplificadas para evitar recomposiciones innecesarias.

  • Nuevo callback onLyricsUpdated en LyricsMenu.kt, que actualiza la UI al modificar, volver a buscar o limpiar letras.

  • Archivos modificados:

    Lyrics.kt  
    LyricsMenu.kt
    

📊 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.6...2.0.7


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

2.0.6

05 Oct 23:09

Choose a tag to compare

OpenTune 2.0.6

Logo de OpenTune

📌 Notas de la Versión 2.0.6


📌 Cambios Principales

Discord Rich Presence (RPC) y ajustes

UI/UX y preview mejorado

  • Se reemplazó el antiguo RichPresence por EnhancedRichPresence, con:

    • Gradiente de fondo animado al reproducir música.
    • Layout optimizado con mejor tipografía, espaciado e íconos.
    • Indicador de “Playing” cuando la canción está activa.
    • Avatar del artista sobre la miniatura de la canción con borde limpio.
    • Botones de acción (“Listen on YouTube Music”, “Visit OpenTune”) con iconos y mejor disposición.
  • Barra de progreso EnhancedProgressBar con 3 estilos (DEFAULT, SQUIGGLY, SLIM), mostrando tiempo actual y total.

  • Sección de cuenta rediseñada:

    • Icono de Discord grande, cambia de color según estado de login.
    • Botón de login ahora es FilledTonalButton.
  • Banner informativo superior con color primaryContainer y tipografía más clara.

Lógica y preferencias

  • Nueva preferencia SliderStyleKey para personalizar el estilo de la barra de progreso.
  • Estado de reproducción (isPlaying) y duración de la canción ahora impulsan las animaciones del preview.
  • Opción useDetails (discord_use_details) permite mostrar título o artista de manera destacada.
  • Texto clickeable para stateUrl y detailsUrl.

Refactor de la librería kizzy

  • Migración a Kotlin (src/main/kotlin) y actualización a Java 21.
  • Endpoint de proxy de imágenes actualizado.
  • Manejo seguro de errores con runCatching en ApiService.
  • Se removió la funcionalidad de subir imágenes, ya no utilizada.

🎨 Preferencias y UI general

Refactor de Preference Components

  • PreferenceEntry modernizado:

    • Iconos con fondo tintado y esquinas redondeadas.
    • Espaciado y padding mejorados, alineado a Material 3.
    • Todo el entry está recortado con esquinas redondeadas.
  • Nuevos composables:

    • PreferenceGroup y PreferenceCategory para agrupar preferencias en tarjetas con título.
    • PreferenceGroupTitle ya no está en mayúsculas y tiene padding ajustado.
  • EnumPreference ahora permite personalizar los valores mostrados.

  • Animación de tamaño (animateContentSize) para transiciones más suaves.

Limpieza de código

  • Eliminada la función logErrorToDownloads, reemplazada por e.printStackTrace().
  • SwitchPreference movida a paquete común ui.component.

🎤 Letras y reproducción de música

ArtistScreen y ArtistSongsScreen

  • ArtistScreen:

    • Cabecera estilo YouTube Music, con fondo full-width y overlay degradado.
    • Imagen circular del artista y nombre prominente.
    • Botones de acción: Subscribe, Shuffle, Share, ahora con estilo consistente y adaptativo.
    • TopAppBar transparente solo cuando se está en la parte superior de la lista.
  • ArtistSongsScreen:

    • Barra de búsqueda integrada en el TopAppBar.
    • Filtrado de canciones por título o artista.
    • Multi-selección por long-press, con contador de elementos seleccionados.
    • TopAppBar contextual: cambia iconos y acciones según modo (búsqueda o multi-select).
    • VerticalFastScroller añadido para listas largas.

Letras

  • Mejoras de rendimiento, caché de letras y scroll automático más suave.
  • Funcionalidad de compartir como imagen: selección de colores, vista previa en tiempo real y generación de bitmap.
  • Modos fullscreen y flotante, con header dinámico y control de back handler.

⚙️ SettingsCategory Composable

  • Nuevo composable SettingsCategory para agrupar opciones de configuración con estilo uniforme Material 3.

  • SettingsCategoryItem permite:

    • Icono, título, descripción, contenido trailing, badges y resaltar elementos.
    • Click handlers configurables.
  • Reemplazo de PreferenceEntry por SettingsCategory en SettingsScreen y ChangelogButton.

  • Categorías de configuración más limpias y visualmente consistentes.


🌐 LocaleManager

  • Icono de idioma actualizado: languagetranslate.
  • Se eliminó el tint dinámico; ahora usa el tint por defecto o heredado del padre.

Otros cambios importantes

  • Dependencias actualizadas en libs.versions.toml y build.gradle.kts (incluyendo extractor, uiAndroid).
  • Limpieza general de código y refactors menores en todos los archivos de UI.
  • Preparación de la base para futuras integraciones y mejoras en RPC, letras, y theming.

📊 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.5...2.0.6


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

2.0.5

21 Sep 01:20

Choose a tag to compare

OpenTune 2.0.5 (Fix)

Logo de OpenTune

📌 Notas de la Versión 2.0.5


📌 Cambios Principales

🎨 Fondo del reproductor (gradientes + contraste de texto)

  • Se creó GradientState y rememberGradientState para manejar colores, contraste de texto e íconos según la portada del álbum.
  • Extracción de colores mejorada con extractGradientColors(): usa cuantización, descarta colores extremos y selecciona los más dominantes.
  • Cálculo automático de colores óptimos (calculateOptimalColors()) para asegurar accesibilidad.
  • Nuevo composable PlayerBackground: maneja animaciones de fondo (BLUR, GRADIENT, DEFAULT) con transiciones suaves.
  • Los colores de controles, títulos, sliders y botones ahora se derivan del gradientState para garantizar contraste consistente.
    Player.kt

🔄 Animaciones y overlays dinámicos

  • Fondos blur y gradiente ahora cambian suavemente con animate*AsState.
  • Se agregó overlay oscuro dinámico para mejorar la legibilidad del texto.
  • Se reestructuró con Box + AnimatedVisibility para mostrar/ocultar capas según expansión del player o letras activas.
    Player.kt

🎶 Letras: caché + compartir como imagen

  • Nuevo lyricsCache con ConcurrentHashMap para guardar letras ya cargadas y reducir llamadas a API/DB.
  • Sincronización mejorada del scroll con animateScrollBy, evitando saltos bruscos.
  • Modos fullscreen y flotante para letras con top bar personalizada.
  • Diálogo de compartir: permite exportar letras como texto o imagen, con color de texto y fondo configurables, más vista previa en tiempo real.
    Lyrics.kt, ShareLyricsDialog.kt, ColorPickerDialog.kt

🎨 Theming dinámico con Material Kolor

  • Implementación de esquemas dinámicos usando material-kolor: genera paletas desde bitmaps de portadas con PaletteStyle.TonalSpot.

  • Integración en Theme.kt con rememberDynamicColorScheme para Compose.

  • Actualización de dependencias clave:

    • Compose 1.9.1
    • Kotlin 2.2.10
    • Hilt 2.55
    • Room 2.7.2
    • Material3 1.3.2
  • Versión de app actualizada a 2.0.5 (117).
    Theme.kt, build.gradle.kts, libs.versions.toml, strings.xml


📱 Pantalla de Backup & Restore

  • UI migrada a Scaffold con TopAppBar y padding correcto.
  • Botones de Backup y Restore ahora se deshabilitan durante subida.
  • URL de archivo subido se muestra en fuente monoespaciada.
  • Manejo de errores más robusto (SecurityException, IOException), con logs más claros y limpieza garantizada del archivo temporal.
  • Back button: navegación segura con fallback si no hay pantalla previa.
  • Tamaño de archivo más preciso usando OpenableColumns.SIZE.
    BackupRestoreScreen.kt

❤️ Botón de "Like" optimista

  • toggleLike actualiza primero el estado local (optimista) y luego sincroniza con el servicio.
  • Si ocurre un error, revierte el estado.
  • El botón cambia a color #E91E63 al estar activo, asegurando feedback inmediato.
    PlayerConnection.kt, Player.kt

🧹 Limpieza y refactors

  • Eliminado ProblemSolver.kt y su ruta en NavigationBuilder.kt (pantalla de ayuda/FAQ).
  • CachePlaylistScreen.kt: corrección de posible NullPointerException.
  • AppearanceSettings.kt: uso de HorizontalDivider en lugar de Divider para alinear con Material3.
  • MainActivity.kt: logging de errores de imágenes más claro.
  • ArtistSongsScreen.kt: se quitó el VerticalFastScroller, ya no disponible en esa vista.
    ProblemSolver.kt, NavigationBuilder.kt, CachePlaylistScreen.kt, AppearanceSettings.kt, MainActivity.kt, ArtistSongsScreen.kt

📝 Formato y consistencia de código

  • Revisión de varios archivos con mejor indentación, saltos de línea y limpieza general.
  • Sin cambios de lógica, solo mejoras de legibilidad y mantenibilidad.
    Varios archivos

👉 En conjunto, estos cambios mejoran accesibilidad, diseño dinámico, rendimiento y experiencia de usuario, además de preparar la base para futuras funciones (compartir letras, theming avanzado, manejo de errores más robusto).


📊 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.4...2.0.5


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