Releases: Eldur4023/Localify
Release list
v2.1.4 — Relanzamiento restaura la ventana; Discord arreglado
Sigue marcada como inestable.
Arreglos sobre v2.1.3
- Hacía falta abrir la app varias veces: si ya estaba corriendo
(minimizada desde el arranque de sesión), lanzarla otra vez no hacía
nada visible — el candado de instancia única simplemente rechazaba el
segundo intento en silencio. Ahora se le pide a la instancia que ya
corre que restaure su ventana. - Discord no funcionaba: no era un fallo de código — era un dato mal
migrado. Los ajustes de integración se guardaron en el formato de la
Tauri original (claves sueltas) en vez del formato que usa la app
nueva (un único JSON bajosettings_json), así que Discord siempre
leía "desactivado" sin importar lo que dijera de verdad el ajuste
guardado. Corregido en los datos de este usuario; verificado en vivo
contra un Discord real (conecta y manda la actividad correctamente).
Sobre el audio que sigue sonando al cerrar
Reproducido el cierre exacto (clic derecho en la barra de tareas →
cerrar) dos veces con reproducción activa: el proceso principal, sus dos
subprocesos de WebKit y el stream de PipeWire desaparecen todos juntos
en segundos, sin nada huérfano. Sigo sin poder reproducirlo — si vuelve
a pasar, la próxima vez que ocurra sería muy útil saber cuánto dura
"un rato" y si justo antes se había minimizado/restaurado la ventana.
Paquetes
Mismo contenido que releases anteriores (binario suelto
localify-2.1.4-linux-x86_64 y .deb para Debian/Ubuntu).
v2.1.3 — Sincroniza la posición durante la reproducción
Sigue marcada como inestable.
Arreglo sobre v2.1.2
- La barra de progreso de la tarjeta "reproduciendo ahora" no
avanzaba:player_state.position_msen el servidor solo se
actualizaba en momentos puntuales (pausa, seek, cambio de pista) —
correcto para la propia ventana (el<audio>es su propia fuente de
verdad), pero dejaba la posición clavada para todo lo que lee el
estado desde fuera del navegador: MPRIS y, sobre todo, la tarjeta del
borde derecho. Ahora el cliente reporta su posición cada ~3s mientras
suena, así que la posición vista desde fuera se mantiene al día.
(Esto es distinto del arreglo de v2.1.2, que era sobre la barra de la
propia ventana principal cuando WebKitGTK frenaba sus temporizadores al
minimizarla — ese seguía funcionando bien; este es sobre lo que ve
cualquiera que consulta el estado desde fuera.)
Paquetes
Mismo contenido que releases anteriores (binario suelto
localify-2.1.3-linux-x86_64 y .deb para Debian/Ubuntu).
v2.1.2 — Portadas de pista, pausa instantánea, progreso resistente
Sigue marcada como inestable — más ajustes encontrados con uso real
sobre v2.1.1.
Arreglos sobre v2.1.1
- Portadas de pista con margen gris/negro:
/api/cover/track/:id
usaba solo la miniatura de YouTube, que en vídeos de "audio oficial"
suele traer la carátula centrada sobre un lienzo más ancho con el
margen incrustado en los propios píxeles —object-fit: coverno
puede recortar eso, forma parte de la imagen. Ahora prueba primero la
portada del álbum. - Delay al pausar el audio: se corta la ganancia del mezclador en el
acto en vez de esperar a que el decodificador de WebKitGTK/GStreamer
reaccione apause()(latencia variable, a veces perceptible). - Barra de progreso congelada al minimizar: ya no depende solo de un
setInterval, que WebKitGTK puede frenar con la ventana minimizada.
Ahora también escuchatimeupdatedel propio<audio>, que sigue
llegando aunque el temporizador se congele.
Paquetes
Mismo contenido que releases anteriores (binario suelto
localify-2.1.2-linux-x86_64 y .deb para Debian/Ubuntu), solo con
estos arreglos encima.
v2.1.1 — Carátulas, volumen y respuesta de play/pausa (inestable)
Marcada como inestable: corrige tres fallos reales encontrados justo
después de migrar de Tauri, pero recién probados — si algo más se rompe,
repórtalo.
Arreglos sobre v2.1.0
- Carátulas invisibles en toda la app: el código que ponía la imagen
nunca llegaba a pedirla la primera vez (resto de un mecanismo de doble
esquema de la Tauri original que ya no aplica aquí). No cargaba ninguna
portada, en ningún sitio. - El volumen no subía ni bajaba: una vez el audio pasa por Web Audio
(el ecualizador de 10 bandas), WebKitGTK deja de respetar el.volume
del elemento<audio>— el control real pasa a ser elGainNodedel
motor de crossfade, que hasta ahora ignoraba el volumen del usuario por
completo. De paso, el volumen guardado tampoco se aplicaba al abrir la
app. - El botón de play/pausa (y siguiente/anterior) tardaba en reaccionar:
no repintaban el icono con la respuesta del propio clic, solo con el
siguiente sondeo de estado (hasta 1 s después).
Paquetes
Mismo contenido que v2.1.0 (binario suelto localify-2.1.1-linux-x86_64
y .deb para Debian/Ubuntu), solo con estos arreglos encima.
v2.1.0 — Minimizar ventana y descubrimiento de puerto
Novedades sobre v2.0.0
POST /api/window/minimize: no hay modo--headlessen el port a
Lux, así que esta ruta permite que un script de arranque de sesión
minimice la ventana justo después de lanzarla (en vez de mostrarla
siempre).- Descubrimiento de puerto: el servidor HTTP arranca en un puerto
aleatorio por diseño; ahora lo escribe a./port(relativo al
directorio de datos persistente,~/.local/share/lux-desktop/localify/)
para que herramientas externas en la misma máquina —un script de login,
un widget de "reproduciendo ahora"— puedan encontrarlo sin depender de
un puerto fijo.
Pensado para integrar la app con MPRIS (org.mpris.MediaPlayer2.localify,
ya presente desde v2.0.0) y con scripts de sesión sin necesitar la vieja
API de control de la versión Tauri.
Paquetes
localify-2.1.0-linux-x86_64: binario suelto, sin empaquetar —
dale permisos de ejecución y listo.localify_2.1.0_amd64.deb: paquete Debian/Ubuntu (instala en
/usr/bin, añade el lanzador al menú y los iconos). Requiere
libgtk-3-0ylibwebkit2gtk-4.1-0(se resuelven solos víaapt).
yt-dlpyffmpeg/ffprobesiguen sin empaquetarse: deben estar en
elPATHpara el catálogo remoto y las descargas.
v2.0.0 — Port a Lux (Linux)
Cambio de plataforma: de Tauri (Windows) a Lux (Linux)
Esta versión sustituye por completo la aplicación anterior (Rust + Tauri,
Windows) por un port nativo construido sobre Lux: ventana
GTK3 + WebKitGTK, LuxScript en el backend en vez de Rust/Node, un único
binario nativo sin runtime que instalar. A partir de aquí la app es
Linux-only.
Novedades sobre el diseño original
- MPRIS (integración con los controles multimedia del sistema).
- Discord Rich Presence.
- Crossfade/gapless real con doble elemento
<audio>. - El resto de funcionalidad (biblioteca, cola estilo Spotify, descargas vía
yt-dlp con emparejamiento por puntuación, letras sincronizadas,
importación de playlists de YouTube Music/Spotify, ecualizador de 10
bandas, ajustes, estadísticas) es 1:1 con la app original, verificada en
vivo durante el port.
Requisitos en tiempo de ejecución
libgtk-3-0ylibwebkit2gtk-4.1-0(o-4.0en distros más antiguas).yt-dlpyffmpeg/ffprobeen elPATHpara el catálogo remoto y las
descargas.
Instalación
tar -xzf localify-2.0.0-linux-x86_64.tar.gz
./localify # ejecutar directamente
./localify --install-desktop # añadirlo al menú de aplicacionesLa biblioteca (audio + carátulas) se guarda por defecto en
~/Music/Localify/, configurable desde Ajustes.
v1.2.7
Novedades
- Arreglado el salto al arrastrar canciones dentro de una playlist: tras mover una fila (suave, al instante), la lista se recargaba igualmente y eso reseteaba el scroll y repoblaba todo desde cero — el "teletransporte" que se notaba al reordenar. Ahora solo se recarga si el reordenamiento falla de verdad.
- Reordenar playlists en la barra lateral: ya se pueden arrastrar para ponerlas en el orden que prefieras, en vez de quedar fijas por fecha de actividad.
- Varios arreglos de fluidez en la interfaz:
- El ecualizador ya no se interrumpe a mitad de arrastre si mueves una banda más de un instante sin soltar.
- La búsqueda rápida ya no se cierra sola justo después de volver a hacer clic en ella.
- Cambiar el orden de la biblioteca rápido, o borrar/renombrar playlists seguidas, ya no deja restos de datos viejos en pantalla.
- Mejor emparejamiento con YouTube en colaboraciones: cuando el vídeo está en el canal del segundo artista de una canción (frecuente con productores y DJs), ahora también cuenta como señal válida, en vez de mirar solo al primero de la lista de Spotify.
Nota de compatibilidad (Linux)
Compilado en este equipo con una toolchain que enlaza contra glibc 2.39. No arrancará en distribuciones con una libc más antigua (Ubuntu 22.04, Debian 12, RHEL 9 y derivadas). Si tu distribución es más antigua, compílalo tú mismo con cargo tauri build.
Sin binarios de Windows en este release: no hay entorno de compilación para Windows disponible desde aquí.
v1.2.6
Novedades
- Ajustes en pestañas: la pantalla de Ajustes era una sola página larga de siete secciones seguidas; ahora son pestañas (General, Audio, Descargas, Integraciones, Estadísticas, Almacenamiento).
- Estadísticas de escucha, pestaña nueva: tiempo total escuchado, reproducciones, canciones distintas, y los rankings de canciones y artistas más escuchados por tiempo real acumulado.
- Importar canciones propias: en Ajustes, para que convivan con lo descargado (con deduplicación de artista y álbum entre pistas del mismo disco).
- Progreso de descarga visible: porcentaje en vivo mientras se descarga, e icono persistente en lo ya descargado.
- Gestión individual por pista: borrar la canción por completo, resetear sus metadatos a "sin identificar", o reasignarlos buscando en el proveedor activo y eligiendo entre varios candidatos.
Nota de compatibilidad (Linux)
Este build se compiló con glibc 2.39. Funciona en Ubuntu 24.04+, Debian 13+ y distribuciones comparables o más recientes; no arrancará en Ubuntu 22.04, Debian 12 ni RHEL 9. Si necesitas esa compatibilidad, compílalo tú sobre una base más antigua siguiendo CONTRIBUTING.md.
v1.2.5
Novedades
- Importar canciones propias: en Ajustes, para que convivan con lo descargado (con deduplicación de artista y álbum entre pistas del mismo disco).
- Progreso de descarga visible: porcentaje en vivo mientras se descarga, e icono persistente en lo ya descargado — revierte la regla anterior de "descargas invisibles".
- Gestión individual por pista: borrar la canción por completo, resetear sus metadatos a "sin identificar", o reasignarlos buscando en el proveedor activo y eligiendo entre varios candidatos.
Nota de compatibilidad (Linux)
Este build se compiló con glibc 2.39, más reciente que builds anteriores (2.34). Funciona en Ubuntu 24.04+, Debian 13+ y distribuciones comparables o más recientes; no arrancará en Ubuntu 22.04, Debian 12 ni RHEL 9. Si necesitas esa compatibilidad, compílalo tú sobre una base más antigua siguiendo CONTRIBUTING.md.
🤖 Generated with Claude Code
v1.2.4
Se arregla
Tres roturas de layout en Linux que solo aparecían con la ventana sin maximizar, todas relacionadas con cómo WebKitGTK calcula tamaños en el primer pintado o por debajo de ciertos anchos:
- Las carátulas de álbumes, canciones y playlists (sin portada propia) no cargaban. Usaban
loading="lazy"; con la ventana sin maximizar, WebKitGTK calculaba mal el contenedor en el primer pintado y elloadde la imagen no llegaba a dispararse nunca. - El ecualizador se dibujaba horizontal en vez de vertical. Orientaba el slider con
writing-modey el atributoorient, que es propietario de Firefox; WebKit necesita-webkit-appearance: slider-verticalpara dibujar el widget nativo en vertical. - Las miniaturas de las playlists desaparecían de la barra lateral en ventanas de menos de 1000px de ancho. La media query que colapsa la barra a modo iconos ocultaba todos los
<span>, incluida la miniatura (que también es un<span>) — el mismo bug que el colapso manual de la barra ya tenía resuelto, pero sin la misma excepción.
Nota sobre esta versión
Compilada en Linux Mint 22.3 (glibc 2.39): los binarios de Linux están listos, pero los de Windows (.exe/.msi) todavía no — llegarán en un release aparte.