Soutenir le projet Ko-fi · Patreon · PayPal
Historique des versions

Changelog

Toutes les nouveautés, améliorations et corrections de RustMusic.

v0.1.6

Patch

5 mai 2026

Lecture DSD (DSF + DFF)

  • Support natif des fichiers DSD (.dsf et .dff) en pur Rust, sans Symphonia ni FFmpeg
  • Conversion DSD → PCM via l'algorithme Gesemann (DSD2PCM) avec filtre Blackman-Harris 2048 taps qualité foobar2000
  • Détection automatique du débit DSD64 / 128 / 256 / 512 / 1024 et affichage en MHz
  • Pipeline complète : décodage → conversion → resampling → ring buffer → CPAL avec seek et bit-perfect
  • Badge doré dédié dans toutes les vues (liste, grille, détail, status bar) pour identifier les morceaux DSD au premier coup d'œil

Serveur DLNA / UPnP

  • Diffusion de votre musique vers les amplis et chaînes hi-fi compatibles DLNA sur le réseau local
  • Découverte automatique via SSDP : aucun appairage manuel, l'ampli détecte le serveur tout seul
  • Navigation par Artistes, Albums et Dossiers avec pochettes embarquées dans la métadata DIDL
  • Support multi-bibliothèques : chaque bibliothèque expose ses propres artistes, albums et dossiers
  • Streaming HTTP avec support des requêtes Range pour le seek depuis l'ampli
  • Section Réseau dédiée dans les paramètres : nom du serveur, port, statut, URL d'accès
  • Indicateur de statut dans la barre du lecteur pour vérifier que le serveur tourne

Extracteur de métadonnées maison

  • Refonte complète de l'extraction des tags audio : zéro dépendance externe (plus de lofty ni id3)
  • Parser ID3v2.3 / ID3v2.4 maison supportant 35+ frames (TIT2, TPE1, TALB, TCON, TBPM, POPM, APIC, USLT, etc.)
  • Tous les encodages standards gérés : ISO-8859-1, UTF-16 BE/LE avec ou sans BOM, UTF-8
  • Mapping étendu des notations POPM (rating) avec normalisation 0-5 / 0-100 / 0-255 → étoiles
  • Fallback automatique sur les images de dossier (cover.jpg, folder.jpg, front.jpg/png/webp/avif)

Interface

  • Affichage du débit en Mb/s pour les très hauts débits (au lieu de kbps quand ≥ 1000)
  • Composant NowPlayingCard réutilisable (variantes default + blur), partagé entre la file d'attente et les paroles

Stabilité

  • Correction du décodage de la colonne modified_at dans plusieurs requêtes SQL (provoquait l'invisibilité des morceaux dans la vue dossiers DLNA)
  • Logs réduits : niveau d'information minimal au démarrage, plus de spam pendant la lecture

v0.1.5

Patch

2 mai 2026

Paroles synchronisées

  • Affichage des paroles synchronisées style Apple Music avec défilement automatique sur le morceau actif
  • Récupération automatique via l'API LRCLIB (cascade /get + /search pour trouver la version synchronisée)
  • Support des fichiers sidecar .lrc placés à côté du fichier audio
  • Cache local en base SQLite pour éviter les appels réseau répétés
  • Fond flou de pochette + voile dégradé pour une immersion cinématique

Apparence

  • Nouvelle section « Apparence » dans les paramètres avec sélecteurs visuels
  • Choix du thème : Auto (système), Clair ou Sombre — appliqué instantanément
  • Aperçus visuels compacts pour chaque option (cartes responsive)
  • Suivi automatique du thème système quand le mode Auto est activé

Contrôles de fenêtre

  • Quatre styles disponibles : Auto, macOS (traffic lights), Windows ou Linux (boutons GNOME)
  • Position des contrôles configurable : à gauche ou à droite de la titlebar
  • Le mode Auto choisit le style en fonction du système d'exploitation détecté
  • Aperçus visuels dans les paramètres pour chaque combinaison

Instance unique

  • Empêche le lancement de plusieurs instances simultanées de RustMusic
  • Restaure la fenêtre existante si l'utilisateur tente de relancer l'application
  • Demande d'attention sur la barre des tâches pour notifier le retour au premier plan

v0.1.4

Patch

21 avril 2026

Pochettes d'albums

  • Récupération automatique des pochettes via l'API Deezer depuis le menu contextuel album
  • Recherche manuelle avec un popin premium et une grille de résultats
  • Sélection d'un fichier local comme pochette
  • Action groupée « Pochettes d'albums » dans les paramètres pour traiter tous les albums sans pochette
  • Nouveau filtre « Sans pochette » pour isoler les albums sans visuel

Notation des morceaux

  • Extraction automatique du tag POPM/Rating lors du scan (support des formats 0-5, 0-100 et 0-255)
  • Composant d'étoiles cliquable avec aperçu au survol et mise à jour en temps réel
  • Colonne de notation dans les vues liste et grille, ainsi que sur la page détail du morceau
  • Tri des morceaux par notation (les morceaux non notés sont placés en fin de liste)

Navigation alphabétique

  • Ascenseur A-Z sur les pages albums, artistes et morceaux pour sauter directement à une lettre
  • Lettres grisées automatiquement quand aucun élément ne commence par cette lettre
  • Bouton dédié dans la barre de vue pour afficher ou masquer la navigation

Filtres et tri

  • Refonte premium de la barre de filtres avec un menu déroulant pour le tri et un bouton de direction intégré
  • Filtre « Sans pochette » étendu aux morceaux
  • Direction descendante par défaut pour la notation, la durée et la date (plus intuitif)
  • Mémorisation du tri par contexte (morceaux, albums, artistes, genres)

Interface

  • Option « Simple clic = lecture » dans les paramètres pour lancer un morceau en un seul clic
  • Sous-menu « Ajouter à une playlist » dans les menus contextuels (ajout groupé depuis les albums ou une sélection multiple)

Stabilité

  • Double protection contre les crashs de scan avec fallback séquentiel fichier par fichier en cas de batch défaillant
  • Journalisation des fichiers problématiques pour faciliter l'identification des coupables

Corrections

  • Le tri des morceaux n'est plus réinitialisé à chaque changement de bibliothèque

v0.1.3

Patch

7 avril 2026

Sélection multiple

  • Mode sélection sur les listes de morceaux avec barre d'actions flottante (lire, ajouter à la file, ajouter à une playlist)
  • Boutons « Sélectionner » et « Tout sélectionner » dans la barre de filtres

Albums & Artistes

  • Boutons play et menu contextuel au survol des covers d'albums
  • Ajout à une playlist depuis le menu contextuel (tous les morceaux d'un album)
  • Tri des morceaux (N°, titre, durée) et des albums (année, titre) sur les pages album et artiste
  • Zoom lightbox sur les covers d'albums et photos d'artistes

File d'attente & Lecteur

  • Drag & drop fonctionnel pour réorganiser la file d'attente
  • Bouton play/pause dans le header de la file
  • Correction du bouton pause qui remettait le morceau à zéro

Stabilité & Compatibilité

  • Protection contre les crashs sur fichiers audio corrompus ou formats exotiques
  • Ajout des formats WAV, AIFF, OPUS et AAC au scan de bibliothèque
  • Grilles responsives avec breakpoints pour grands écrans (6, 7, 8 colonnes)

v0.1.2

Patch

5 avril 2026

Profils

  • Bouton « Modifier » visible sous chaque profil dans la popin de sélection
  • Confirmation de suppression : il faut taper « supprimer » pour valider
  • La création d'un profil ne quitte plus la popin et ne le sélectionne plus automatiquement

Performance — Page artiste

  • Chargement progressif avec skeletons : le header s'affiche instantanément, les sections se remplissent au fur et à mesure
  • Nouvelles commandes backend ciblées (get_albums_by_artist, get_similar_artists) au lieu de tout charger
  • Optimisation des requêtes SQL : suppression des sous-requêtes coûteuses
  • Ajout de 6 index SQLite manquants pour accélérer les pages artiste, album et recherche

Playlists & Corrections

  • Ajout du bouton « Tout lire » sur la page playlist
  • Correction du lien artiste dans les résultats de recherche
  • Page feedback redessinée avec lien contact@rustmusic.dev (suppression des mentions RiffFlow)

v0.1.1

Patch

30 mars 2026

Linux

  • Correction de l'affichage des covers sur Linux (contournement du bug WebKitGTK 2.50 avec le protocole asset://)
  • Correction de l'encodage %2F dans les URLs asset sur Linux
  • Ajout du support de compilation .deb et .rpm
  • Correction du warning GTK gtk_widget_get_scale_factor

Covers & Miniatures

  • Nouveau composant CoverImg avec chargement async et cache LRU (max 300 entrées, ~40 Mo)
  • Commande Rust read_cover_as_base64 pour servir les covers via IPC (fallback base64)
  • Fonction assetSrc() pour corriger l'encodage des chemins Linux
  • Support des tailles de miniatures (full, 1x, 2x) avec génération en background
  • Réorganisation des covers : covers/albums/ et covers/artists/ avec sous-dossiers full/1x/2x
  • Migration automatique des anciennes covers vers la nouvelle structure
  • Redimensionnement rapide via fast_image_resize (SIMD) au lieu du crate image
  • Génération à la volée des miniatures manquantes (resolve_thumbnail) avec fallback sur full
  • Pool de threads dédié (50% des cores) pour la génération de miniatures en arrière-plan
  • Double mode d'affichage : protocole asset (direct, rapide) ou base64 IPC (fallback)
  • Filtrage des images artistes par défaut de Deezer (détection du pattern URL sans hash)

Images artistes

  • Live update des images artistes : apparition en temps réel pendant le fetch Deezer
  • Store réactif artistImageReadyStore avec event artist-image-ready
  • Récupération des images artistes en mode force (re-télécharge même si le chemin existe en base)
  • Sauvegarde des images artistes dans covers/artists/full/ avec miniatures en background

Import & Progression

  • Nouveau composant d'import premium : cercle de progression avec glow, shimmer, ETA
  • Estimation du temps restant en live pendant l'import
  • StatusBar redesignée : gradient, shimmer, pourcentage, bouton d'annulation au hover
  • Refresh automatique des données après import (libraryContentStore.refresh())
  • Correction du freeze de 30s à l'annulation du dialogue d'import
  • Loader d'import ajouté aux pages Genres et Explorateur de fichiers
  • Migration des covers avec progression dans la statusbar

Paramètres

  • Ajout du bouton « Ouvrir le dossier de données » (ouvre l'explorateur sur le dossier AppData)
  • Notifications désactivées par défaut (option retirée des paramètres, sera réintroduite plus tard)
  • Traductions ajoutées (FR, EN, ES, DE) pour les nouvelles entrées

Optimisation

  • Tailles de covers adaptées par contexte : 1x pour les listes, 2x pour les grilles, full pour les pages détail
  • Transaction SQL pour les migrations de covers (rollback en cas d'erreur)
  • Génération des miniatures en 2 passes : déplacement + DB (rapide) puis resize en parallèle

UI

  • Correction de la troncature des titres longs (noms de fichiers) dans toutes les vues (album, playlists, queue, player, stats, recherche)
  • Ajout du title (tooltip au hover) pour afficher le nom complet des titres tronqués

v0.1.0

Beta

Première version publique

Tout commence ici — la première version de RustMusic pose les bases d'un lecteur pensé pour les audiophiles.

  • Lecture HD bit-perfect : FLAC, WAV, AIFF jusqu'à 24bit/192kHz, plus MP3, AAC, OGG et M4A
  • Bibliothèque SQLite embarquée avec import parallèle et scan incrémental ultra-rapide
  • Interface sombre et soignée propulsée par Svelte 5 et Tailwind CSS
  • Statistiques détaillées : formats, qualité, top artistes, genres avec graphiques SVG
  • Multi-profils et multi-bibliothèques pour organiser sa musique sans compromis
  • Récupération automatique des pochettes artistes via l'API Deezer