Historique des versions
Changelog
Toutes les nouveautés, améliorations et corrections de RustMusic.
v0.2.6
Nouveautés27 septembre 2026
Lecture
- ●Un double-clic ne lance plus deux fois le même morceau. En mode « simple clic = lecture », le navigateur envoie click, click, dblclick — trois demandes pour un seul geste. Une demande identique qui suit de moins de 700 ms est ignorée
- ●Le lecteur ne se croit plus à l'arrêt pendant qu'il joue : un arrêt retardataire n'écrase plus l'état d'une lecture plus récente (bouton figé sur « lecture », barre à 00:00 alors que la musique tourne)
- ●Un fichier illisible ne bloque plus le lecteur : les drapeaux internes is_playing et is_stream_alive sont rabaissés en cas d'échec, plus de refus de lecture ni d'attente de trois secondes dans le vide
v0.2.5
Nouveautés25 septembre 2026
Albums
- ●Une compilation ne forme plus 52 fiches d'un titre chacune : l'album se reconnaît à son titre et à son dossier, les CD1/Disc 2/Disque 3 rattachés au coffret. 333 fiches en trop sur 1 236 pour « NRJ Hit Music Only 2019 », « NRJ Music Awards 2012 », « Taxi 4 »…
- ●Rassemblement automatique au premier démarrage : l'album fusionné garde son tag « artiste de l'album » majoritaire, ou « Various Artists » sinon. Les homonymes légitimes (Best Of d'AC/DC vs Suprême NTM) restent séparés
Artistes
- ●« Various Artists » ne remplace plus le vrai artiste d'un morceau : 309 morceaux avaient un nom qui n'était pas le leur (PJ Harvey, The White Stripes, Arctic Monkeys, Nick Cave…). Un bouton « Réparer les liaisons d'artistes » corrige les anciens fichiers
- ●Un artiste n'affiche plus zéro album : 504 sur 1 512 avaient des titres mais rien à voir. Une section « Apparaît dans » réunit les disques où ils ne font que figurer
Lecture
- ●La musique enchaîne avec la suivante : cliquer un morceau réduisait la file à ce seul morceau — la liste d'où vient le clic devient la file (bibliothèque, album, artiste, playlists, recherche, dossiers, accueil)
- ●La file s'écrit en base en arrière-plan : une bibliothèque entière représente ~6 Mo, l'attendre repoussait le son à chaque clic
- ●En mode « double-clic pour lire », un simple clic ne coupe plus le morceau en cours
Navigation
- ●Le titre, l'artiste et l'album du lecteur sont cliquables : ouvrent la fiche correspondante, soulignement au survol. Un fichier ouvert à la volée reste du texte simple
- ●Dans « Récemment joués », l'artiste et l'album d'un morceau ouvrent leur fiche. Le titre continue de lancer la lecture
Menus
- ●Un bouton « … » sur Playlists, Bibliothèque et Ouvrir : réafficher les playlists masquées, déplacer les sections, en masquer une
- ●Clic droit sur une ligne de playlist : lire, modifier, supprimer
- ●Option pour masquer « Ajouter aux favoris » partout où il apparaît
Mémoire et processeur
- ●La pochette ne traverse plus deux fois le pont vers l'interface : les octets bruts voyageaient en clair à chaque lecture — plus d'un mégaoctet sérialisé pour rien. Un test vérifie que la charge utile reste sous 4 Ko
- ●Le cache de données est borné à quarante fiches, les listes principales protégées
- ●Survol d'une grille throttlé à 250 ms, cache consulté avant toute requête
- ●Les lignes hors écran des grilles ne sont plus mises en page ni gardées en mémoire
Affichage
- ●Les playlists masquées n'apparaissent plus deux secondes au démarrage : les réglages sont lus avant le premier rendu
Sécurité des données
- ●Revenir à une 0.2.4 après une 0.2.5 ne casse plus l'ajout de fichiers : l'ancienne contrainte d'album est conservée à côté de la nouvelle
- ●Une sauvegarde est prise avant toute migration de la base, par instantané cohérent (journal d'écriture inclus). Une seule copie conservée, à côté de la base
v0.2.4
Nouveautés19 septembre 2026
Lecture
- ●File d'attente des actions : un double-clic envoyait click, click, dblclick, et l'arrêt d'une sélection finissant en retard coupait la lecture qui venait de partir
- ●Le titre et la pochette déclenchaient deux actions par clic — corrigé
- ●Liker un morceau ou ouvrir son menu ne le lance plus par accident
Tags multi-artistes
- ●Nouveau bouton « Réparer les liaisons d'artistes » dans Réglages → Stockage. Ne relit aucun fichier, relançable sans créer de doublon
- ●Un lien par artiste crédité sur la fiche d'un morceau — les artistes invités existent vraiment maintenant
Artistes
- ●Le compteur de titres n'affiche plus 0 : un artiste est rattaché de deux façons, la liste n'en comptait qu'une
- ●Les artistes sans piste ni album sont écartés, en-tête compris
- ●Le top artistes des statistiques n'est plus vide
- ●Artistes et albums similaires tirés au hasard
Sections de la bibliothèque
- ●Placement à gauche, en haut ou les deux, avec choix des sections à afficher
- ●« Explorateur » devient « Dossiers » partout dans l'app
Affichage
- ●Barres de défilement visibles en mode clair ; le bouton des colonnes n'est plus recouvert par la barre du système
- ●L'en-tête et les sections du bas ne sortent plus de l'écran au défilement horizontal
- ●Titres likés, Récemment joués et boutons Ouvrir masquables
v0.2.3
Nouveautés27 août 2026
Colonnes — Largeur
- ●Redimensionnement à la souris par une poignée sur le bord droit de chaque en-tête, hors du bouton de tri
- ●Double-clic sur la poignée : la colonne s'ajuste à son contenu (mesure via canevas, pas via le DOM, pour tenir compte des lignes hors-écran)
- ●Largeurs enregistrées par colonne, avec « Rétablir les largeurs » pour revenir à l'origine
- ●Le titre ne descend plus sous 180 pixels — seule colonne compressible, il absorbait tout et disparaissait au-delà de quelques colonnes ajoutées
Colonnes — Affichage
- ●En-tête qui reste visible au défilement — une valeur sans intitulé ne veut rien dire, surtout quand ce sont des tags choisis soi-même
- ●Numéro, pochette et titre entrent dans le sélecteur : les trois premières colonnes se masquent et se réordonnent comme les autres
- ●Les réglages écrits avant ce changement sont repris, sans quoi les trois auraient disparu d'un coup
Modes d'affichage
- ●Vue tableau disponible pour les onglets Genres et Dossiers, qui n'avaient que la grille
- ●Bascule grille/liste affichée aussi sur les pages de détail — le mode y existait sans qu'on puisse le demander
- ●Les sous-sections des pages de détail suivent le mode : autres albums de l'artiste, albums du même genre, artistes similaires, discographie
Sélection multiple
- ●Fonctionne sur les albums, artistes et genres, en grille comme en liste. Cocher un album développe ses pistes : le compteur annonce « 47 titres », pas « 3 éléments »
- ●Le bouton « Sélectionner » passe dans la barre d'onglets — il n'existait que sur quatre pages, l'onglet Dossiers et les pages de détail n'y avaient pas accès
- ●Maj + clic étend depuis le dernier élément cliqué, comme dans un explorateur
- ●« Tout » fonctionne partout — il s'appuyait sur une liste que seul l'onglet Morceaux remplissait
- ●Un clic droit sur une ligne déjà cochée porte sur toute la sélection
Playlists
- ●Le nombre d'écoutes s'affiche sur chaque ligne, et seulement s'il y en a
- ●Les playlists intelligentes se reconnaissent à une pastille dans la barre latérale, et leur compteur se recalcule au lieu de rester figé
- ●L'en-tête d'une playlist intelligente écrit ses règles en clair
- ●Les recettes sont disponibles à la modification, sous « Remplacer par une recette » — repartir d'une recette est précisément ce qui répare une playlist mal réglée
Corrections
- ●« Simple clic = lecture » désactivé : cliquer une piste affichait « Préparation du morceau… » puis rien. Un clic produisait deux intentions concurrentes qui s'annulaient
- ●Le titre était la seule colonne qu'on ne pouvait pas redimensionner : flex écrasait la largeur qu'on lui donnait
- ●Une playlist intelligente refusait de s'afficher — toutes ses lignes portaient la même clé
- ●Modifier une playlist intelligente réécrivait sa couleur et son icône : ni l'une ni l'autre n'était rechargée
- ●Une recette appliquée après une autre gardait le nom de la première
- ●Mode clair : cases à cocher blanches sur blanc, menu de sélection resté entièrement sombre, pastilles de tri quasi invisibles
- ●Le menu contextuel ne propose plus « Retirer » sur une playlist intelligente — l'action n'aurait rien fait tout en semblant marcher
v0.2.2
Nouveautés24 août 2026
Playlists intelligentes
- ●Règles sur 24 champs de la bibliothèque et sur n'importe quel tag présent dans les fichiers, avec groupes imbriqués, tri et coupe
- ●Le nombre de morceaux retenus se recalcule en direct pendant qu'on écrit les règles
- ●Huit recettes toutes faites pour démarrer, dont « les styles les plus écoutés » qui somme les écoutes par genre au lieu de figer une liste
- ●Aucun nom de champ ni valeur de règle n'entre dans le texte d'une requête : tout part en valeur liée, tags des fichiers compris
Compteur d'écoutes
- ●Il n'existait pas — la fonction était écrite mais jamais appelée, et play_count valait zéro sur toute la bibliothèque
- ●Une écoute compte au-delà de la moitié du morceau, plafonnée à une minute
Colonnes au choix dans les listes de pistes
- ●21 champs de la bibliothèque et tous les tags réellement présents dans les fichiers, recensés avec leur effectif
- ●Tri par en-tête sur n'importe lequel, dans les deux sens — en base pour l'onglet Morceaux, en mémoire ailleurs
- ●La vue tableau s'étend aux albums, artistes, genres et playlists
Export et import
- ●Réglages, profils, playlists et titres aimés exportables et réimportables
- ●Les playlists n'emportent pas d'identifiants (qui n'auraient aucun sens ailleurs) : chaque piste part avec son chemin et de quoi la reconnaître si ce chemin a changé
- ●L'import annonce ce qu'il fera avant de l'écrire
Notation en demi-étoiles
- ●Notation en décimal (0.5, 1.0, 1.5…) — les notes existantes valent déjà 1,0 à 5,0, aucune donnée n'est transformée
Corrections
- ●La file ne s'enchaînait pas en bit-perfect : le Drop des sorties exclusives levait le drapeau d'arrêt, et playback-ended n'était jamais émis. WASAPI et ALSA étaient touchés
- ●Les compteurs de playlist mentaient : retirer un dossier efface en cascade fichiers, pistes et entrées de playlist, mais le compteur restait sur son ancienne valeur. Il se lit désormais au lieu d'être cru
- ●Défilement absent sur les trois pages de playlist
- ●Menus déroulants blancs en thème sombre : color-scheme n'était pas déclaré, et un fond translucide ne peut pas servir de surface à une liste déroulante
- ●Listes plus fluides : content-visibility sur les lignes, et un flou d'arrière-plan par piste supprimé (son fond était uni)
- ●Le téléchargement des portraits d'artistes est débrayable
- ●La fenêtre retient sa taille et sa position entre les sessions
Notes techniques
- ●Les tags des fichiers remontent jusqu'à l'interface, qui y puise les colonnes choisies
- ●Aucun nom de champ ni valeur de règle n'entre dans le texte d'une requête : tout part en valeur liée, y compris les noms de tags
- ●285 tests, dont une trentaine qui exécutent le SQL contre une base migrée
v0.2.1
Nouveautés20 août 2026
Atelier — Inventaire « à corriger »
- ●L'atelier ouvert sans sélection montre ce qu'il y a à reprendre : fichiers sans titre, sans artiste, sans album, sans année, sans numéro, sans pochette, ou en format non réinscriptible
- ●Détection des incohérences d'album : années divergentes, compilation sans artiste d'album, numéros de piste en double, trous dans la numérotation
- ●Détection des doublons : même titre et même artiste, à deux secondes près, chaînés de proche en proche pour attraper les variations
- ●Un clic sur une catégorie charge directement les fichiers concernés dans le tableur
Atelier — Renommage de fichiers
- ●Motifs avec champs, complément par des zéros (track:02), repli (albumartist|artist) et groupes optionnels qui disparaissent quand le champ est vide
- ●Aperçu avant/après ligne par ligne, recalculé à la frappe, avec sélection individuelle : on décoche ce qu'on ne veut pas renommer
- ●Détection avant exécution des collisions, des cibles déjà occupées, des renommages en chaîne et des chemins trop longs
- ●Assainissement Windows/macOS/Linux : les séparateurs / \ : | deviennent un tiret plutôt qu'une suite de soulignés, les caractères interdits sont retirés
- ●Le motif s'applique aux tags corrigés : on corrige dans le tableur, on renomme d'après ce qu'on vient d'écrire
Atelier — Réorganisation des dossiers
- ●Le motif recompose l'arborescence complète, avec quatre modèles courants proposés
- ●Les fichiers compagnons suivent : .lrc et .cue avec leur piste, pochettes et .m3u avec leur dossier (si tout le dossier part au même endroit)
- ●Nettoyage des dossiers devenus vides, jamais au-delà des racines de la bibliothèque
- ●Changement de volume traité proprement : copie, vérification, puis suppression de la source — jamais l'inverse
Atelier — Journal et annulation
- ●Chaque lot est journalisé : renommages, déplacements, et l'état des tags avant réécriture
- ●Écran d'historique avec le motif employé, les compteurs, et l'annulation en deux temps. Les 50 derniers lots sont conservés
- ●L'annulation rend compte comme un lot et peut échouer : un fichier retouché depuis l'opération n'est pas remis en place
Atelier — Règles de nettoyage
- ●Cinq règles, aucune cochée d'office : soulignés en espaces, retrait du numéro en tête de titre, uniformisation de « feat. », espaces en trop, capitales à l'anglaise
- ●Aperçu cellule par cellule, le résultat va dans les modifications en attente, pas directement dans les fichiers
Corrections
- ●Un morceau renommé devenait illisible : la file d'attente conservait l'ancien chemin. Corrigé, et couvert par l'annulation
- ●L'atelier et le cache de la bibliothèque se remettent à jour après un déplacement (ils gardaient les chemins d'avant)
- ●L'application ne démarrait plus après une mise à jour partielle : quand la base était migrée par une version plus récente, l'erreur restait silencieuse sous Windows. Un message clair s'affiche désormais
Interne
- ●Tout le SQL de données est passé dans repository/ : 31 requêtes vivaient encore dans les commandes et les services
- ●197 tests Rust
v0.2.0
Version majeure14 août 2026
Sortie bit-perfect sur les 3 systèmes
- ●DoP natif sous Linux via ALSA en accès exclusif : le DSD part au DAC sans conversion PCM. Équivalent Linux du WASAPI exclusive de Windows.
- ●DoP natif sous macOS via CoreAudio hog mode : mêmes garanties bit-perfect, le DAC affiche « DSD »
- ●Sortie exclusive PCM également disponible sur macOS et Linux (en plus du DSD)
- ●Réservation D-Bus : PipeWire/WirePlumber libère la carte pour l'accès exclusif, plus aucune manipulation manuelle nécessaire
- ●Persistance du périphérique de sortie : le choix est restauré au démarrage, énumération nettoyée (fin des doublons dans la liste)
Replay Gain
- ●Lecture des tags REPLAYGAIN_* et application du gain sans base de données, chaîne DoP préservée
- ●Préampli réglable, modes piste / album, dans les Réglages Audio
Édition complète des tags (MP3, FLAC, DSF, DFF)
- ●Écriture des tags texte ET des pochettes sur les 4 formats — rien n'est perdu : frames et blocs non édités recopiés à l'identique
- ●Corriger un titre ne fait perdre ni pochette, ni note, ni identifiants MusicBrainz. Une image conservée est recopiée octet pour octet.
- ●Écriture en place quand possible (2613 ms → 20 ms sur un FLAC de 34 Mo via SMB), repli sur réécriture atomique sinon
- ●Éditeur individuel en popin deux colonnes, suivi des modifications champ par champ, gestion complète des médias intégrés
Atelier de tags par lot
- ●Nouvelle page dédiée avec deux vues au choix : tableur ou liste + panneau
- ●Édition multiple intelligente : un champ inchangé est omis et non envoyé vide (distinction « ne touche pas » vs « efface »)
- ●Remplissage vers le bas, numérotation automatique, tri par colonne, pochette commune
- ●Lecture parallèle des fichiers : 769 ms → 35 ms à froid pour 16 fichiers, avec progression et rapport d'échecs
Récupération de tags depuis Deezer
- ●Recherche d'album, appariement des pistes par titre, durée et numéro, avec score et niveau de confiance
- ●Écran de revue par morceau : valeurs du fichier en regard de celles de Deezer, dépliables champ par champ
- ●Trois niveaux de choix : une valeur, un morceau, un champ sur toute la sélection. Pochette avec dimensions et poids affichés
- ●Rien n'est écrit directement : tout passe par les modifications en attente de l'atelier avant d'écrire
Réglages en sous-pages
- ●Page monolithique éclatée en sous-pages : Général, Apparence, Audio, Réseau, Stockage, À propos
- ●Navigation latérale par sections, en-tête fixe, composants réutilisables (OptionRow, ToggleSwitch, ActionButton)
Fiabilité du rendu sous Linux
- ●Auto-fallback en rendu logiciel : si le démarrage GPU plante avant d'afficher l'interface, l'app bascule automatiquement au lancement suivant (fichier sentinelle + écoute WebKit)
- ●Détection SteamOS : rendu logiciel d'office sur Steam Deck
- ●Variable RUSTMUSIC_RENDER=gpu|software|auto pour forcer le mode. Script fix-appimage-wayland.sh pour corriger le crash EGL sur SteamOS/Arch
Mode contraste élevé
- ●Nouveau mode d'accessibilité : tous les gris secondaires deviennent lisibles d'un coup, sans reprendre les composants
- ●Flous d'arrière-plan désactivés (ils brouillaient le texte), focus clavier franchement visible
- ●Cases à cocher entièrement redessinées : coche SVG de fond, rendu propre sur WebKit et sur les états vides
Bibliothèque & fiabilité réseau
- ●Bibliothèque par défaut : marqueur par profil, reprise automatique à la création de la première bibliothèque et à la suppression de celle par défaut
- ●Fix édition sur NAS SMB : les lecteurs mappés (S: pour \\NAS\music) sont maintenant reconnus comme réseau, préchargement en RAM correct
- ●« Corriger les tags » ajouté dans les menus contextuels des albums et listings, menu contextuel dans « Récemment joués »
Dépendances & projet
- ●Symphonia 0.5.5 → 0.6.0 (nouvelle API probe/décodeur), rubato 2 → 3, Tauri 2.11.5, alsa 0.11, zbus 5
- ●Feature isomp4 activée : les AAC en conteneur M4A sont désormais lisibles
- ●SvelteKit 2.69.2, Vite 8.1.4. Bouton mini-lecteur déplacé dans la barre de titre (3 styles OS supportés)
v0.1.9
Nouveautés5 août 2026
Minuteur de veille
- ●Nouveau bouton dans le header de l'app pour arrêter la lecture après un délai choisi
- ●Durées rapides 15 / 30 / 45 / 60 min ou saisie personnalisée en minutes
- ●Mode « Fin du morceau » : la lecture s'arrête proprement à la fin de la piste courante, sans enchaîner
- ●Toggle dans les Réglages pour masquer le bouton si vous ne l'utilisez pas
Mini-lecteur (fenêtre compacte)
- ●Nouveau mode mini-lecteur : une fenêtre réduite toujours au premier plan pour garder RustMusic visible pendant votre travail
- ●Bouton dédié dans le player pour basculer entre mode plein et mini, retour à la fenêtre normale en un clic
- ●Cover, transport (précédent/play-pause/suivant), seek cliquable et badges qualité (DSD / Hi-Res, fréquence)
- ●Panneau File d'attente déroulant : navigation dans la queue et sélection directe d'un morceau
- ●Panneau Paroles synchronisées avec ligne active surlignée et auto-scroll
Internationalisation
- ●Nouvelles traductions pour le minuteur, le mini-lecteur et les réglages associés (FR, EN, ES, DE, IT)
Maintenance & corrections
- ●Mise à jour des dépendances audio et réseau (cpal, rubato, reqwest, image) pour une meilleure stabilité
- ●Correction d'une régression de compilation sous Linux
- ●Correction d'un souci d'affichage du panneau Paroles sous Linux
v0.1.8
Nouveautés1 juillet 2026
WASAPI exclusive — bit-perfect (Windows)
- ●Backend WASAPI exclusive event-driven : bypass complet du mixeur Windows, format natif envoyé au DAC (vraie sortie bit-perfect)
- ●Pré-négociation du format avant le décodeur → aucun resampling parasite (le décodeur produit directement au rate natif du DAC)
- ●Ciblage précis du périphérique, lecture FullBuffer et pré-remplissage anti-clic au démarrage
- ●Activation dans les Réglages et le popup des sorties audio du player, badge permanent dans la barre d'état
DSD natif (DoP — DSD over PCM)
- ●Les fichiers DSD (.dsf / .dff) sont envoyés tels quels au DAC compatible DoP, qui les décode nativement — plus de conversion PCM
- ●Le DAC affiche « DSD » et reconstruit le flux 1-bit d'origine (bit-perfect) — DSD64 / DSD128 / DSD256
- ●Moteur DoP persistant gapless : le DAC ne se verrouille qu'une seule fois, les pistes DSD s'enchaînent instantanément et sans clic
- ●Repli automatique vers DSD→PCM si le DAC refuse le format ; volume géré par le DAC/ampli (bit-perfect oblige)
Périphériques de sortie enrichis
- ●Capacités détaillées par périphérique : fréquences supportées, formats, canaux, détection Hi-Res
- ●Probing WASAPI du DAC pour connaître ses capacités RÉELLES en mode exclusive (au-delà de la table générique de l'OS)
- ●Fiche détaillée par périphérique et sélection de la sortie directement depuis le player et les Réglages
Réglages & Player
- ●Refonte des Réglages : mode pleine page avec navigation par sections (Général, Apparence, Audio, Réseau, Stockage, À propos)
- ●Popover pipeline enrichi (bit-perfect / DSD natif / transport DoP) et info source→sortie affichée en permanence dans la barre d'état
- ●Section « À propos » intégrée directement dans les Réglages
v0.1.7
Patch21 mai 2026
Profils de qualité audio
- ●5 profils audio : Auto, Qualité maximale, Équilibré, Compatibilité, Mode dégradé
- ●Détection automatique de la machine (VM, nombre de cœurs) pour choisir le preset adapté
- ●Mode dégradé : filtre DSD 256 taps, sortie 44,1 kHz, pré-décodage complet en RAM (zéro underrun garanti)
- ●Filtre DSD configurable par profil : 2048 / 1024 / 512 / 256 taps
- ●Resampler chunk size et sub-chunks adaptés au profil choisi
- ●Nouvelle section Réglages : 5 cartes de sélection et bloc d'information avec profil résolu et machine détectée
DSD multicanal — décodage parallèle & downmix
- ●Parallélisation du DSD2PCM via rayon : 1 thread par canal pour les fichiers 3+ canaux (SACD 5.0 / 5.1)
- ●Stéréo et mono conservés en mode séquentiel (overhead non justifié)
- ●Speedup quasi-linéaire : un SACD DSD64 5.0 en Qualité maximale est désormais lisible sans grésillement sur CPU normal
- ●Downmix multicanal vers stéréo conforme ITU-R BS.775 (3.0, 4.0 quad, 5.0, 5.1 avec LFE intégré)
- ●Les SACD multicanaux s'écoutent désormais correctement en stéréo (voix centrale et surrounds préservés)
Pré-chargement, seek & robustesse audio
- ●Pré-chargement en RAM des fichiers sur partage réseau (GVFS/SMB/NFS/SSHFS) ou en profil Bas — élimine les coupures liées à l'I/O
- ●Seek instantané en Mode dégradé pour DSD : drain du ring buffer dans un Vec<f32>, CPAL en mode FullBuffer indexé
- ●Correction d'une race condition CPAL sur le seek en Mode dégradé Symphonia (atomique dédié pending_seek_frames)
- ●CPAL BufferSize::Fixed désormais clampé dans la plage supportée par le périphérique (fix stream silencieux sur certaines cartes Intel HD)
- ●Log des erreurs CPAL rate-limité (1ère, puis 1 sur 100 jusqu'à 1000, puis 1 sur 1000) — sur VM faible on peut en recevoir des centaines/seconde
- ●Defense-in-depth scanner DSD : catch_unwind à l'entrée DSD — impossible de tuer le batch d'import sur un fichier corrompu
- ●Agrégation des fichiers ignorés à l'import + event Tauri enrichi (compteur skipped)
Notifications & contrôles média OS
- ●Notification native au changement de morceau : Windows Action Center, macOS, libnotify Linux (titre + artiste)
- ●Toggle des notifications dans les Réglages (icône cloche)
- ●System Media Transport Controls : le morceau apparaît dans le mini-player Windows (volume flyout) et l'écran de verrouillage
- ●MPRIS Linux (KDE Plasma, GNOME) et widget Now Playing macOS
- ●Les touches média du clavier (play/pause/next/prev) fonctionnent désormais
- ●Serveur HTTP local dédié pour servir les covers cross-OS — contourne la limitation Windows unpackaged qui rejette les file:// (basé sur souvlaki)
Rendu Linux & icônes hors-ligne
- ●Render mode : override manuel Automatique / Accélération GPU / Rendu logiciel
- ●Détection automatique des VMs avec bascule en software rendering pour la stabilité
- ●Section Réglages dédiée avec bannière « Redémarrage requis »
- ●Iconify offline : pré-bundling de 7 collections (lucide, heroicons, mynaui, ph, radix-icons, tabler, uit) — fix des icônes invisibles sur Debian 12 + WebKitGTK 2.40
- ●Auto-config Linux : variables d'environnement WebKitGTK / GDK appliquées avant Tauri pour éviter les freezes (KVM, KDE Wayland, AMD Mesa)
Player & Pipeline UI
- ●Popover hover stylé sur le badge source→sortie : affichage Source / Décodage / Resampling / Sortie / Profil avec badges Bit-perfect, DSP, DSD→PCM
- ●Indication multicanal correcte dans le popover : 3.0 / 4.0 / 5.0 / 5.1 / 6.1 / 7.1
- ●Layout responsive sur 3 breakpoints : mobile empilé, intermédiaire 500-768px (cover + actions en haut, transport en bas), desktop ≥768px (3 colonnes)
- ●Fallback titre depuis le nom de fichier pour les DSF/DFF sans tag DITI/ID3
- ●Indicateur de pré-décodage dans la StatusBar (Mo décodés / total) au lieu d'un loader dans le Player
Internationalisation
- ●Parité totale des 4 langues : FR, EN, DE, ES (282/282 clés strictement identiques)
- ●Sections rattrapées : bibliothèque (genres, total_duration), réglages (audio_quality, render_mode, scan_on_startup, album_covers), pipeline, statistiques, recherche
Stabilité & corrections
- ●Détection automatique du format réel des images via magic bytes : fix des covers PNG/WebP renommées en .jpg (warning « Format error decoding Jpeg » éliminé)
- ●svelte-check : 10 erreurs préexistantes corrigées (EditPlaylistPopin, ProfilSelectorPopin, page détail morceau avec library_artist_id côté TS + SQL JOIN library_artists)
v0.1.6
Patch5 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
Patch2 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
Patch21 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
Patch7 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
Patch5 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
Patch30 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
BetaPremiè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