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

Changelog

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

v0.2.6

Nouveautés

27 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és

25 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és

19 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és

27 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és

24 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és

20 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 majeure

14 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és

5 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és

1 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

Patch

21 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

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