Changelog
All the new features, improvements and fixes in RustMusic.
v0.4.3
NewNovember 3, 2026
Names that bring several artists together, such as “Chris Brown/Nicki Minaj”, finally become separate artists, without breaking up bands like “AC/DC”: every doubtful case is checked, live, and everything can be undone. Composers get their own view and page, input fields have a sharper focus, the day/night button remembers your choice, big titles no longer clip the bottom of letters and the macOS icon is the same size as the others.
Multiple artists
A duo becomes two artists, a band stays a band: RustMusic checks before touching anything.
Chris Brown/Nicki Minaj
Billie Eilish & Khalid
AC/DC
Simon & Garfunkel
- ●Settings → Storage & data → “Check multiple artists”, or an artist’s “…” menu → “Is this several artists?”. Each doubtful name (comma, slash, “&”, “x”…) is checked once: first the file’s ARTISTS tag, otherwise MusicBrainz, which only receives artist names
- ●Without a sure answer, nothing changes: the name is left for you to split or keep as one artist
- ●The window follows the check live (progress, results, photos of known artists) and can let it keep going in the background; it then becomes the summary, where each split can be undone
- ●“Check after each scan” option for new names, and ARTISTS tag (Picard, Mp3tag) read during the scan: a track’s exact list of artists is used as is
- ●Your files are never modified: only the links between tracks and artists change
Composers
For classical music, film scores or simply knowing who wrote what: composers get their own shelf.
- ●The Artists tab switches between “Artists” and “Composers” (composer tag), and the choice is remembered
- ●Each composer has a page: their albums, tracks and performers, and a “…” menu to play, shuffle, queue or add to a playlist
- ●You also get there from a track’s page, the Composer column and search. Lists like “Hans Zimmer, James Newton Howard” are split, and meaningless credits like “Various Composers” are left out
- ●Photo: that of the artist with the same name, otherwise a Deezer portrait, otherwise two colored initials
Interface
- ●Redesigned focus for input fields: searches, filters and forms light up as a whole in the accent color; in high contrast, a crisp outline follows the field’s rounded corners
Fixes
- ●The day/night button in the top bar remembers its choice after a restart, and always shows the theme actually displayed, including in “System” mode
- ●The big titles on artist, album, track, genre, playlist and podcast pages no longer cut off the bottom of letters such as “g”, “p” or “y”
- ●On macOS, the icon is the same size as other apps’ icons in the Dock and the ⌘ Tab switcher
- ●The back button in Settings always takes you home on macOS and Linux, and to the previous page on Windows
v0.4.2
NewOctober 31, 2026
Your listens now go to Last.fm too, the Folders view shows what folders contain, .m4a tags can finally be edited and ALAC is recognised as lossless. A rescan follows renamed files, music can start as soon as the app opens, RustMusic can be controlled from the command line, and you choose when a track counts as played.
Last.fm
The most widely used listening history service, linked in one click, without ever giving your password.
- ●Settings → Online listening → “Connect Last.fm”: RustMusic opens Last.fm in your browser, you click “Allow”, and you’re done. Your password never goes through RustMusic
- ●Same rules as ListenBrainz: a track counts at half or after 4 minutes, the track now playing shows on your profile if you wish, and offline listens are sent later
- ●Each profile links its own account, and Last.fm and ListenBrainz can receive your listens at the same time
- ●Your own Last.fm API key if you prefer, with a three-step guide to create it
Folders
- ●Each folder shows the cover art of what it contains (a mosaic when it holds several albums), its track count and its best quality, such as “FLAC 24/96” or “DSD128”
- ●Files show their title, artist and duration, and play from a button on hover
- ●“Covers” option in the toolbar: without it, folders and files get illustrations tinted by quality
- ●Redesigned breadcrumb, and a toolbar on a single line
Playback
- ●Play on startup (Settings → General → Startup): the last track starts on its own, at the exact second if “Resume where I left off” is on
- ●Adjustable listen threshold (Settings → General → Playback): a track counts as played after 1 minute or half, or at 25, 50, 75, 80 or 90% of its length. Last.fm and ListenBrainz keep their own rule
- ●Launch commands: /play, /pause, /playpause, /stop, /next, /prev, /show and /exit. If RustMusic is open, the command is passed to it without raising the window: control your music from a Stream Deck, a shortcut or a script
Tags
- ●.m4a and .m4b files (AAC and ALAC) can be edited: title, artists, album, year, genre, comment, composer, track and disc numbers, cover art. The audio is never rewritten, and other data (lyrics, ReplayGain, MusicBrainz) is kept
- ●The composer of .m4a files, stored by iTunes in a separate field, now shows up
- ●Track and disc totals are read in every format
Library
- ●ALAC and AIFF recognised as lossless: files already imported are fixed during the update
- ●A rescan removes files that are gone and follows files renamed or moved within the same library folder: no more duplicates, and rating, plays, playlists and likes are kept. Nothing is removed if the scan is cancelled or a folder suddenly looks empty
- ●Genres merged regardless of case: “Classical” and “classical” are now one
Interface
- ●Genre page like the year page: an Albums / Tracks / Artists selector, and albums sorted by year, title or artist
- ●Play count updated live, in lists and on a track’s page
- ●“See all” for recently played, and liked tracks, also show tracks outside the library
- ●Long titles cut off cleanly on macOS on the home page
Under the hood
- ●Database access reorganised: every query goes through repositories, and the 269 interface commands are sorted by domain
v0.4.1
NewOctober 27, 2026
Podcasts play faster without a distorted voice and can be browsed by chapter, plays are sent to ListenBrainz, playlists move in and out as .m3u, and a server's compilations are no longer split into dozens of albums. The app speaks the system language from the first launch, each profile has its own picture, and settings groups can be collapsed.
Podcasts
Faster, without the “chipmunk” voice, and chapter by chapter.
- ●Playback speed from 0.5× to 3× from the player (presets from 0.75× to 2×), with the voice pitch kept. Each show remembers its speed; a default speed is set in Settings → Online listening. During an episode, exclusive output gives way to shared output
- ●Chapters, when the show provides them (in the feed or in the MP3 file): markers on the progress bar, the current chapter under the title, and a list to jump to them, with previous and next
- ●Adjustable new-episode check: never, every hour, every 6 hours or once a day
- ●Clear listening history: every episode becomes unplayed again, with no resume position
- ●“Clear the list” in the “…” menu of “Up next”: each show comes back with its next episode
- ●“…” menu on “Up next” cards: remove the show from the list, mark the episode played, open the show
Listening history
ListenBrainz- ●ListenBrainz (Settings → Online listening): each profile links its account with its personal token. Tracks played halfway (or for 4 min) are sent, with the track now playing if you wish; offline, plays wait and are sent later; disconnecting asks for confirmation, showing any listens still waiting
Playlists
.m3u · .m3u8- ●Import and export .m3u / .m3u8: each list becomes a playlist, its tracks found even if it was written on another computer; “Export as .m3u8” in a playlist’s menu
Music servers
- ●Compilations merged: without an “album artist” tag, Navidrome or Jellyfin split a compilation into one album per artist. RustMusic merges them into a single “Various Artists” album, as for local folders, and two different albums with the same title stay separate
Interface
- ●System language at first launch (French, English, German, Spanish or Italian, otherwise English); an existing installation keeps its language
- ●Profile picture: a photo or an image of your choice, cropped to a square, instead of the initial
- ●Collapsible settings: clicking a group title collapses or expands it, and the app remembers; a search reopens everything
- ●No more browser menu on right-click where the app has no menu of its own; copy and paste still work in text fields
Radio
- ●Clear history: recently played stations and songs heard on air; favourite stations stay
Under the hood
- ●Album counts per artist in server libraries recalculated at every sync
- ●Cleanup: about 1,000 unused lines of code removed and a duplicate database index dropped
v0.4.0
Major releaseOctober 23, 2026
Radio, podcasts and your music servers come to RustMusic. Thousands of live stations with time-shift pause, podcasts from every country, and Navidrome, Jellyfin or your NAS as sources, with offline listening.
Radio
LIVEThousands of stations from around the world, live, with a pause that makes you miss nothing.












- ●Turn it on in Settings → Online listening: a “Radio” entry appears in the sidebar, showing the logo of the last station you played
- ●Radio Browser, the open directory: search by name, “Most popular” in the chosen country, genres (News, Pop, Rock, Jazz, Classical…) or a stream address (.mp3, .m3u, .pls)
- ●Time-shift pause: the station keeps coming in while paused, up to 30 minutes kept. “Back to live” catches up
- ●The player switches to radio mode: logo, station, current song when the station sends it, and a “LIVE” band. Previous and Next move between favorite stations
- ●Favorite stations, the last 30 played, history of songs heard, stream quality choice (AAC, MP3, bitrate) and HLS streams (Radio France…)
- ●Automatic reconnection after a network drop, and playback on a UPnP network player or Sonos speaker
Podcasts
Podcasts from Apple Podcasts or any RSS feed, with the chart for each country.












- ●Turn them on in Settings → Online listening. Search Apple Podcasts or paste an RSS feed address; “Top podcasts” follows the Apple chart for the chosen country, by category
- ●A click opens the show’s page, with its episodes and playback; right-click offers a preview without subscribing
- ●Listen while downloading: playback starts within seconds, even after a jump far ahead
- ●Pick up where you left off, unplayed episodes play next, and an episode queue separate from music
- ●Automatic download per show, played episodes deleted after 24 h (adjustable), and a Downloads page showing the space used
- ●Favorite shows pinned in the sidebar, and subscriptions imported or exported as OPML
Music servers
BetaYour self-hosted music becomes a source, just like your folders.
- ●Navidrome and any Subsonic server (Gonic, Airsonic…), Jellyfin (password or API key) and NAS DLNA servers (MiniDLNA…), found automatically or by address, in Settings → Storage & data → Servers
- ●Instant playback while the track arrives. Original file (bit-perfect possible, DSD included) or MP3 at 320, 192 or 128 kbps transcoded by the server, with a 2 GB cache
- ●“Keep offline” a track, album, artist, genre or playlist: they stay playable with the server off
- ●Likes, ratings, plays and now playing sent back to the server; server playlists imported and editable both ways; server lyrics when available
- ●The password is never stored: only a hash, a session token or the API key
Music servers are in beta. Radio and podcasts are off by default: turn them on in Settings → Online listening.
Sources
- ●“Source” button at the top of the sidebar: “This computer”, each server or “All sources”. It only appears once a server is added
- ●Each source has its own libraries, playlists, liked songs, history, search and home; switching source does not stop playback
- ●“All sources”: an album both local and on a server is a single result, played in the version you prefer
Search
- ●Rebuilt results page: top result, tracks with quality and duration, albums, artists, type filters and “Play all”
- ●Search now only looks in the active profile’s libraries
Interface
- ●A megaphone in the top bar presents each version’s new features in a few slides, with a “Try it” button
- ●Customizable sidebar: sections, pinned playlists, “Liked songs” and “Recently played” can be moved, and the order is kept
- ●Megaphone and theme button can be hidden (Settings → General → System integration)
Playback
- ●“Recently played” and resume positions are now per profile
- ●At the end of the queue, playback stops cleanly and the progress bar returns to the start
- ●A single track in the queue on “Repeat all” is played again as expected
Examples taken from Radio Browser and the Apple Podcasts charts (October 2026). Logos and artwork belong to their owners; RustMusic is not affiliated with any of these stations or shows.
v0.3.1
NewOctober 18, 2026
The remote now handles Denon, Marantz and Yamaha amplifiers, and finds an amplifier again after it changes address. Output settings apply right away, without restarting the app, and an output that drops out mid-playback is reopened on its own. The amplifier finally plays through tracks served by the DLNA server.
Amplifier remote
BetaDenon, Marantz and Yamaha join Onkyo, Pioneer and Integra.
- ●Denon, Marantz and Yamaha (MusicCast) are found on the network, with the same controls: power, volume in half-decibel steps, inputs with their custom names, modes, bass and treble, zone 2. The model (“SR6015”) shows under the amplifier’s name
- ●On the network input, the list and the now-playing screen are shown; on Yamaha, with the cover art
- ●Amplifier found again after its network address changes (new lease from the router). Discovery also finds amplifiers that don’t answer broadcast announcements: it queries every address on the local network
- ●iPod-style click wheel for navigation: press the ring for a direction, circle with a finger (or the mouse wheel) to scroll, OK in the centre. A more compact row of buttons can replace it
- ●A long list on the network screen scrolls inside its box and follows the cursor, instead of stretching the panel
Playback
- ●Output settings applied right away: switching output, exclusive or shared mode, native DSD or the quality profile restarts the current track at the same spot, without restarting the app. When paused, the change applies on resume
- ●Audio output lost mid-playback (flaky USB cable, DAC reset, format changed in Windows): it is reopened on its own and the track resumes where it cut out. If it doesn’t come back within 5 s, playback moves to the system output, with a message
- ●Linux, exclusive mode: the DAC stays in the output list, selected, instead of giving way to “Dummy Output”
- ●Linux: sound restored with PipeWire alone, without a PulseAudio cookie (notably in the Flatpak package), instead of a silent ALSA output
- ●Leaving a network player for a local output resumes directly on the chosen output
DLNA server
DLNA- ●The amplifier plays through the tracks of an album or folder instead of stopping after the first one, and finds the pause control. An album or folder reports its real number of tracks
Library
- ●Faster import, especially from a NAS: a folder’s cover art is read once per folder, and each file is opened only once. On 10,000 FLAC files over a network share: 15 files per second instead of 1.6. A rescan no longer rereads unchanged files
- ●Folder missing during a scan (share not mounted, disk unplugged): it is marked “Unavailable”, a message says so, and its tracks are kept instead of being reset to zero
- ●Network share remounted under another name (by its address, then by its name, or the other way round): RustMusic recognises the same share and offers to update the library; tracks, playlists, favourites and queue follow
- ●Selection: the same checkbox in every track list, even when the “#” column is hidden, and a single “Select” button per page
- ●Readable status bar during an import: a single badge follows the rescan with the current file, without overlapping anything
Installation and system
- ●Windows: RustMusic is on winget (package LaRevueGeeK.RustMusic). “winget install rustmusic” installs it, “winget upgrade” keeps it up to date
- ●Linux: Flatpak package (dev.rustmusic.RustMusic) prepared for Flathub
- ●Sharp logo on high-density screens: the window and dock icon now starts from the 512 px image
- ●Linux: starts under Wayland without XWayland, and the .deb package shows a real description in software centres
Support and licence
- ●After an update, a small card suggests supporting the project, once per version and never on first install; “Later” or “Don’t show again”
- ●Settings → About → Support RustMusic: Patreon, Ko-fi, PayPal and a star on GitHub
- ●Licence fixed in About: the text now presents the GNU GPL v3, with a link to the full text, in all 5 languages
v0.3.0
Major new featuresOctober 14, 2026
RustMusic steps beyond the computer: music plays on the network players, amplifiers and AirPlay devices around the house, and the amplifier can be controlled from the app. The tag workshop has been rebuilt and fetches its values from MusicBrainz as well as Deezer.
Network
BetaPlay on the network players, Sonos speakers and AirPlay devices around the house.
UPnP/DLNA network players
- ●Turn on in Settings → Network. WiiM, amplifiers and network players (Onkyo, Denon, Marantz, Yamaha…) appear in the player's output menu, under "Network players"
- ●The device does the playing: the file is sent as is, without conversion, so in hi-res if the device supports it
- ●Queue, seek, pause, volume and gapless playback work just as they do locally; title, artist, album and cover art show on the device
- ●Switching output mid-listen resumes the track at the same spot, and the chosen player is restored at launch. A format the device reports it can't play (often DSD) is flagged right away
- ●Sonos: speakers appear under their room name, and in a group playback is handed to the speaker that leads it. Up to 24-bit / 48 kHz, with a short gap between tracks
AirPlay
- ●AirPlay 1: Onkyo, Denon, Marantz… amplifiers, AirPort Express, Apple TV and Shairport Sync appear in the same section, with their icon
- ●Here RustMusic does the playing and sends the sound in CD quality (16-bit / 44.1 kHz): its queue, gapless playback, Replay Gain, seek and pause all stay active
- ●The displayed position follows what you hear despite the device's 2 s delay; title, artist, cover art and progress show on the device, depending on what it can display
- ●Not supported yet: password-protected devices, AirPlay 2-only devices, and DSD
DLNA server and network
- ●With a VPN active (WireGuard, OpenVPN…), the server no longer announces itself inside the tunnel: living-room amplifiers find it instead of showing "No server"
- ●Pause and seeking from the amplifier or its app, including on devices (Onkyo in particular) that used to refuse them
- ●Device discovery starts from every network adapter: a VPN or virtual adapter no longer hides the living-room devices
- ●A "Network" button in the player shows what is active (players, AirPlay, DLNA sharing) and turns each one on or off with a click
- ●macOS: RustMusic asks for local network access, without which macOS 15 silently blocks discovery and the DLNA server
Amplifier remote
BetaControl your Onkyo, Pioneer or Integra amplifier without leaving RustMusic.
- ●Turn on in Settings → Remote: amplifiers on the network are found automatically, then a remote slides out from the right edge of the window by its tab
- ●A display styled like an amplifier's front panel (source, listening mode, volume), the volume and three tabs: Sources, Sound (listening modes, bass, treble, zone 2) and Navigation
- ●It adapts to the amplifier: its actual inputs, its volume and tone ranges, its zone 2. Changes made on the front panel or the original remote show up instantly
- ●Navigation: on the NET or USB input, the amplifier's screen as in its own app, with its services, its folders and the current track with cover art
- ●Mini mode cut down to the display, power, source and volume. Standby needs a long press: a stray click no longer switches the amplifier off
Services shown from the amplifier
Network playback, AirPlay and the amplifier remote are in beta and off by default: RustMusic contacts no device on the network until you turn them on in the settings. Feedback on your hardware is welcome.
Tag workshop
- ●Rebuilt workshop: a table, a collapsible edit panel, Undo (Ctrl+Z) and Write (Ctrl+S). The tools are grouped in two menus, Tags and Files
- ●Items to check: missing title, artist, album or genre, empty album artist, "feat." in the artist, each fixed with one button
- ●Editing in the table (double-click or F2, then Enter or Tab) and a per-column menu: copy across the selection, Title Case, clear, hide
- ●MusicBrainz joins Deezer: composers, 1200 px cover art (Cover Art Archive), and editions told apart by year, country and format
- ●Complete online in two steps: pick the edition ("Best match" first), then Fill the blanks, Update everything or Custom, field by field
- ●Multi-disc albums: tracks with the same number on two discs are no longer mixed up, and the disc number is suggested
Playback and window
- ●Reliable resume at startup: playback restarts at the right position instead of playing silence while the decoder catches up
- ●The window remembers its size, position, maximized state and full screen across changes; the micro player remembers its position
- ●Linux: the mini and micro player keep their size, the micro player's handle works and its controls follow the pointer
v0.2.10
NewOctober 11, 2026
Mini and micro player
- ●Volume in the mini player: a button at the end of the controls opens mute and the slider, and the mouse wheel sets the volume. Vertical or horizontal popup, your choice in Appearance → Mini player
- ●New micro player: the window shrinks to a square of album art. On hover: previous, play, next, the timeline and volume. The corner handle enlarges the cover up to three times, and the size is remembered
- ●The mini and micro players stay fully on screen: docked to an edge, they no longer spill over when they grow
Playback
- ●More precise gapless playback: the next track starts in the same audio block as the end of the previous one. With resampling (a 44.1 kHz file on a 48 kHz output), the end of the track is no longer cut short and the start no longer has a brief silence
- ●Instant start in shared mode: the output stays open from one track to the next. Some USB DACs took over 1.5 s to reopen their stream; only the first track now pays that delay
- ●A track no longer drops out mid-playback when decoding falls behind (on a network drive, for example): the transition waits until the track is fully decoded
- ●Replay Gain mode and preamp apply immediately to the current track, not only from the next one
- ●Linux: exclusive output works again on USB DACs that PipeWire and ALSA name differently. DAC capabilities (sample rates, bit depth) are shown in the output list
Playlists and library
- ●Playlists, Liked tracks and Recently played use the library table: same columns, same sorting, same menu. "Remove from playlist" and "Remove from likes" are in each track's menu
- ●Select button on a playlist, on the Playlists page (several playlists at once) and on artist, genre and year pages
- ●Faster Albums and Artists tabs on large collections: covers load as they approach the screen instead of all at once
- ●Tracks from a compilation without an "album artist" tag are no longer lost on import: a new scan brings them back
- ●Manage a library from the sidebar (⋯ button), rename it and set it as default
Appearance
- ●Choose your accent color in Appearance → Theme: ten presets or any color. The logo, buttons, selections and links follow it
- ●Every dialog (libraries, playlists, tag editor, import, audio outputs…) adopts the settings look and follows the theme and accent color
- ●Visual effects Auto, Full or Light (Appearance → Expert options). Auto lightens the interface with software rendering, in a virtual machine or on a modest computer, and says why
- ●Hide the sidebar playlists in one click, like pinned albums and artists
- ●Linux: no more flickering while scrolling. The "Auto" DMA-BUF setting turns it off based on the actual graphics driver (virtual GPU, older Radeon, proprietary NVIDIA)
Shortcuts and settings
- ●Customizable keyboard shortcuts in Settings → Shortcuts: a key already in use is refused with the action that uses it, and each shortcut can be reset on its own or all at once
- ●Switch to the mini player: Ctrl + Shift + M (⌘ + ⇧ + M on Mac). Mute (M) now responds to the M key on an AZERTY keyboard
- ●The settings Back button always returns to the page you came from, and "Restart now" applies a rendering mode or DMA-BUF change
v0.2.9
FixesOctober 5, 2026
Playback
- ●DSD converted to PCM finally moves on to the next track (macOS, DACs without native DSD): when decoding returned slightly less than the announced length, the end of the track was never signaled and the queue got stuck
- ●"Open a folder": tracks arrive in album order and play one after another
- ●Exclusive mode on Mac speakers: no more silence with the system output (CoreAudio "!obj" error). Native DSD gets the same fix
Library
- ●Adding an external drive no longer blows up memory: the scan no longer loops forever through folder shortcuts that point back on themselves, skips the trash and "System Volume Information", keeps only the cover of tracks that embed a whole booklet, and no longer decodes giant images
Window
- ●macOS-style window buttons in the system order (red, yellow, green), with their symbols: close, minimize, full screen. The settings preview too
Under the hood
- ●The log also records information useful for diagnosis (selected output, audio chain, conversions), not just errors
v0.2.8
NewOctober 4, 2026
Audio
- ●True bit-perfect in exclusive mode on Windows, Linux and macOS: the output lowered the volume by 2% even in exclusive mode, and the conversion to the DAC wasn't the exact inverse of decoding. At 100% volume with no ReplayGain, every sample now arrives untouched, verified by tests on 16- and 24-bit reference files
- ●The "Bit-perfect" badge no longer claims it wrongly: it also requires matching channels, a lossless source and neutral ReplayGain. An "Exclusive" badge flags a reserved DAC whose sound is still altered
- ●Exclusive mode on Windows: the DAC went silent for 2 to 4 seconds at every track change. It now stays open as long as the format doesn't change, and the next track starts in 30 ms
- ●AIFF, ALAC and Opus are actually played, and uppercase extensions are recognized. WMA and APE, which never played, are removed
- ●Gapless native DSD (DoP) on Linux and macOS, as on Windows; on Windows, the start of the first DSD track is no longer cut
- ●When exclusive mode or native DSD doesn't go through, the app tells you why (format rejected, DAC busy, output without direct access, DoP rejected, sample rate converted): in the audio chain, on the player badge and in Settings → Audio
- ●On Linux, shared output goes through the sound server (PipeWire or PulseAudio): picking your DAC no longer blocks other apps, real output names are shown, and the "f32 format not supported" and "device busy" errors are gone
- ●The selected output is remembered between launches; exclusive mode and native DSD on Linux hand the card back to the system cleanly, without sending other apps' sound to the HDMI display
- ●No system sleep during playback (setting, on by default); on Linux, playback pauses cleanly when the computer goes to sleep
- ●A ring spins around the play button until sound starts; system media controls no longer get inverted; in shared mode on Linux, pause, volume and seeking react instantly
Understanding sound
- ●Explanation bubbles: DAC, DSD, DoP, PCM, bit-perfect, resampling… are underlined and a click shows the definition. They can be turned off in Appearance
- ●New "Understanding sound" page in settings: the sound path in shared and exclusive mode, what the player badges mean, and a glossary
- ●Settings → Audio texts explain more clearly what each mode does
Years and mixes
- ●Years tab: a timeline by decade, most recent first, with a page for each decade or year (albums, tracks, artists) and a mix of the era
- ●Mixes page: daily mixes, one mix per genre and per decade, and your own
- ●Create a mix: a recipe (genres, ratings, never played, Hi-Res…) from which RustMusic draws 30, 50 or 100 tracks every day. New draw, and "Keep as playlist" to freeze today's draw
- ●Varied mixes: a genre only gets a mix from 5 artists and 30 tracks, and an artist places no more than about 3 tracks in it. "For you" changes genres every day
- ●Mix and smart playlist editor redesigned: thumbnail preview, recipes as cards, live count of matching tracks
Playlists
- ●Playlists page: all playlists, with search, regular / smart filter, sorting, grid or list
- ●The sidebar only shows pinned playlists, like albums and artists. All are pinned on update, and new ones are pinned automatically
- ●"Your playlists", "Your mixes", "All mixes" and "All years" on the home screen
- ●"Add to playlist" no longer offers smart playlists, which received nothing
Import and first launch
- ●Imports can be followed live: the folder shows up right away in "Synced folders", with the file search, progress and current file. On a network share, the screen no longer stays silent
- ●An import or rescan can be stopped at any time: what's imported is kept, and a message says how many tracks, albums and artists were added
- ●After an import, even a stopped one, Home, Tracks, Genres and Folders reload; an import no longer prevents saving playback position and history
- ●Welcome screen without a library: "Import my music", the three steps, a preview of the sections, or just play a folder without importing anything
- ●Import page: library name, import a folder or files, supported formats. In an empty library, every tab offers the import directly
Navigation and library
- ●Tabs in the order Tracks, Artists, Albums, Genres, Years, Folders, Mixes, Playlists; Years, Mixes and Playlists can be toggled in Appearance. In "tabs on top" mode, the sidebar no longer has tiles
- ●Selection checkboxes in Folders and in every track list; off-screen columns are no longer empty, only the list scrolls horizontally
- ●Covers and portraits: fetching can be cancelled, no longer re-downloads everything, and a network outage no longer marks an artist "not found". "Clean up image cache" removes unused images; file tags are never touched
- ●Genre page redesigned in the style of the other pages; track page shows cover and artist portrait even when the file has none
- ●Light mode finally readable everywhere (profiles, menus, Feedback); DLNA menus appear in the app's language on the amplifier
Window and Linux
- ●No more white screen at launch: a loading screen in the theme's colors fades out when the app is ready
- ●macOS: the green button goes full screen, like in other apps; ⌥ + click keeps zoom
- ●Linux: no more grey window at startup (Flatpak font cache cleaned), scrolling twice as smooth in 4K (37 frames per second instead of 17), blurred backgrounds much lighter on the CPU
- ●Settings → Appearance → Expert options: rendering mode, DMA-BUF transfer and blurred backgrounds, for machines that need it
Under the hood
- ●Moved to SvelteKit 3, Tauri 2.12, sqlx 0.9 and rubato 5; no more issues reported by npm audit, and dynamically built SQL queries reviewed one by one
- ●Settings export keeps smart playlists, mixes and pinning; Home, statistics and the import page are no longer cut off in a small window
v0.2.7
NewOctober 1, 2026
Home
- ●Resume where you left off: the top of Home shows the current or last-played track over its blurred cover, with « Resume » at the saved position and an « Up next » panel
- ●« For you » mixes: two genres of the day, « Forgotten » (not played for over six months) and « High resolution », each as an album mosaic. « New mixes » shuffles others
- ●« Through the decades »: one tile per decade in your library, starting a mix of that era
- ●« Browse by genre » as icon tiles, « Recently added », and « Recently played »: a click resumes the album at the last-played track
Sidebar and title bar
- ●Redesigned sidebar: tile sections, library picker, playlists with their cover mosaic, live scan status, profile at the bottom. Collapses to icons
- ●Pin albums and artists from their menu: they stay one click away in the sidebar
- ●A single 60px bar at the top: logo, navigation, search (Ctrl K), timer, theme, profile and window buttons. The old header is gone
- ●The « Synced folders » window is redesigned and no longer trapped at sidebar width
- ●Light mode moves to warm tones, softer than pure white
- ●Disabling favorites also hides « Liked tracks » in the sidebar
Player
- ●A floating dock tinted by the cover art: its color follows the current album. Status line with format, depth, frequency, bitrate, path and audio chain as colored pills (bit-perfect, native DSD, processing, output, DLNA)
- ●Output menu: readable device names, quality badge per output (CD, Hi-Res, Ultra Hi-Res), toggles for exclusive mode and native DSD (DoP)
- ●The album year is clickable: it opens the albums of that year
- ●Mini-player redesigned, also tinted, with queue and synced lyrics as tabs. Returning to the full player no longer leaves a tiny window
Library
- ●Shared header across all tabs: name, counts (albums, artists, tracks, size, last scan) and a « Manage » menu (rescan, folders, covers, artist images, import, deletion)
- ●Albums: search, filters Hi-Res / Compilations / No cover / Genre / Year, sort by title without article, grid or list, quality badge on the cover
- ●Artists: same toolbar, « No portrait » filter, sort by number of albums, tracks or listening time
- ●Tracks: Compact / Detailed densities, Quality column, filters Hi-Res / Lossless / Favorites / No cover / Genre, resizable columns. « Play all » plays the list as displayed
- ●Genres: colored mosaics, three key artists, library share, « Main » and « Without genre » filters, « Random mix »
- ●Folders: cards or rows, breadcrumbs, per-folder scan status, « Play folder »
- ●A–Z navigation on Albums, Artists, Genres and Tracks when the sort is alphabetical
Pages
- ●Album: best-quality badge, play, shuffle, favorite the whole album, genres, release date and label from tags, tracks grouped by disc, similar albums. Previous/Next follows the Albums view order
- ●Artist: portrait, active period, discography carousel, tracks grouped by album (collapsible), « Appears on », similar artists
- ●Track: full details: audio, tags, file, plays, rating, « Play next », other tracks from the same album
- ●The top of each page lights up with its cover's color
Settings
- ●New layout: section column, settings search, « n modified · Reset » counter on each page
- ●Appearance: live previews of theme, sidebar and navigation; window-button style as illustrated cards
- ●Audio: output list with connection type and actual tier, « Test DAC » on the chosen output, decoding quality and Replay Gain as illustrated selectors
- ●Playback resume (on by default): the session's first playback picks up where you left off. « Gapless » moves to General
- ●New Shortcuts section; Network, Storage and About redesigned
Fixes
- ●Queue missing covers and titles from the Folders view: on a network drive, paths took their UNC form. They now keep the imported folder's form, and already-saved queues are repaired on open
- ●« Add music » then Cancel no longer freezes the UI
- ●Drag-and-drop of files into a library works: paths now arrive
- ●A genre like « 100% Hits » opens again
- ●The maximize / restore button tracks the actual window state
- ●A late response no longer shows stale content (lyrics, folders, autocomplete, covers, library, A–Z letters)
- ●« Léa » or « The-Dream » keep their initial in sort order; Shift+click selects a range again after leaving selection mode
Translations
- ●About 400 texts that remained in French are translated to English, Spanish, German and Italian: menus, notifications, forms, windows, columns, smart playlists. Plurals are correct, and numbers/sizes/durations/dates follow the language
Performance
- ●Opening a library no longer loads all its tracks, only albums and artists
- ●Genre statistics come from the database in one query instead of one per genre
- ●The Tracks tab keeps at most 500 rows while scrolling, smoothly, and only renders those approaching the viewport
- ●Lists no longer redraw on every playback position update (around ten times per second)
- ●Album and Artist search no longer re-sorts on every keystroke; cover thumbnails aren't re-requested on each display
- ●Only the actually-used icons are bundled: UI code drops from 12 MB to 2.5 MB
Internals
- ●Shared UI components (buttons, menus, fields, carousels, page scaffolding). The large tag-edit and renaming windows are split into readable pieces. Unused SQL extension removed, dead code deleted
- ●Dependencies updated for three npm audit vulnerabilities (devalue, nanoid, sharp)
v0.2.6
NewSeptember 27, 2026
Playback
- ●A double-click no longer starts the same track twice. In « single-click to play » mode, the browser sends click, click, dblclick: three requests for one gesture. An identical request within 700 ms is now ignored
- ●The player no longer thinks it's stopped while it's playing: a late stop no longer overwrites the state of a more recent playback (button stuck on « play », progress bar frozen at 00:00 while music is running)
- ●An unreadable file no longer blocks the player: internal flags is_playing and is_stream_alive are now lowered on failure: no more refused playback or three-second empty waits
v0.2.5
NewSeptember 25, 2026
Albums
- ●A compilation no longer becomes 52 one-track albums: an album is now recognized by its title and folder, with CD1/Disc 2/Disc 3 attached to the parent set. 333 spurious entries out of 1,236 for « NRJ Hit Music Only 2019 », « NRJ Music Awards 2012 », « Taxi 4 »…
- ●Automatic merge on first startup: the merged album keeps its majority « album artist » tag, or « Various Artists » otherwise. Legitimate homonyms (AC/DC's Best Of vs Suprême NTM's) stay separate
Artists
- ●« Various Artists » no longer replaces a track's real artist: 309 tracks had the wrong name (PJ Harvey, The White Stripes, Arctic Monkeys, Nick Cave…). A « Repair artist links » button fixes older files
- ●An artist no longer shows zero albums: 504 out of 1,512 had tracks but nothing to display. An « Appears on » section gathers the records they only feature on
Playback
- ●Music now flows to the next track: clicking a track used to reduce the queue to just that one: the list you clicked from now becomes the queue (library, album, artist, playlists, search, folders, home)
- ●The queue is written to the database in the background: a full library is ~6 MB, waiting for it delayed the sound on every click
- ●In « double-click to play » mode, a single click no longer cuts the current track
Navigation
- ●The player's title, artist and album are clickable: they open the matching page, with an underline on hover. A file opened on the fly stays plain text
- ●In « Recently played », a track's artist and album open their page. The title still starts playback
Menus
- ●A « … » button on Playlists, Library and Open: unhide masked playlists, move sections, hide one
- ●Right-click on a playlist row: play, edit, delete
- ●Option to hide « Add to favorites » everywhere it appears
Memory and CPU
- ●Cover art no longer crosses the IPC bridge twice: raw bytes were traveling in the clear on every read: over a megabyte serialized for nothing. A test now checks the payload stays under 4 KB
- ●The data cache is bounded to forty entries, with main lists protected
- ●Grid hover throttled to 250 ms, cache checked before any query
- ●Off-screen grid rows are no longer laid out or kept in memory
Display
- ●Hidden playlists no longer flash for two seconds at startup: settings are now read before the first render
Data safety
- ●Rolling back from 0.2.5 to 0.2.4 no longer breaks adding files: the old album constraint is kept alongside the new one
- ●A backup is taken before any database migration, by consistent snapshot (write-ahead log included). A single copy is kept, next to the database
v0.2.4
NewSeptember 19, 2026
Playback
- ●Action queue: a double-click was sending click, click, dblclick, and stopping a selection that finished late was cutting the playback that had just started
- ●Title and cover art were triggering two actions per click: fixed
- ●Liking a track or opening its menu no longer starts it by accident
Multi-artist tags
- ●New « Repair artist links » button in Settings → Storage. Doesn't re-read any file, can be run again without creating duplicates
- ●One link per credited artist on a track's page: featured artists actually exist now
Artists
- ●The track counter no longer shows 0: an artist is linked in two ways, the list only counted one
- ●Artists without tracks or albums are filtered out, header included
- ●The top artists in statistics is no longer empty
- ●Similar artists and albums drawn at random
Library sections
- ●Placement on the left, top or both, with choice of which sections to display
- ●« Explorer » is now called « Folders » everywhere in the app
Display
- ●Scrollbars now visible in light mode; the column button is no longer covered by the system bar
- ●Header and bottom sections no longer go off-screen on horizontal scroll
- ●Liked tracks, Recently played and Open buttons are hideable
v0.2.3
NewAugust 27, 2026
Columns: Width
- ●Mouse resize via a handle on the right edge of each header, outside the sort button
- ●Double-click on the handle: column auto-fits its content (measured via canvas, not DOM, to account for off-screen rows)
- ●Widths saved per column, with « Restore widths » to reset
- ●Title no longer shrinks below 180 pixels: the only compressible column, it absorbed everything and vanished past a few added columns
Columns: Display
- ●Sticky header on scroll: a value without a label means nothing, especially with self-chosen tags
- ●Number, cover and title enter the picker: the first three columns can be hidden and reordered like the others
- ●Settings written before this change are carried over, otherwise the three would have disappeared at once
View modes
- ●Table view available for the Genres and Folders tabs, which only had grid
- ●Grid/list toggle also shown on detail pages: the mode existed there but couldn't be requested
- ●Sub-sections on detail pages follow the mode: other albums by the artist, albums in the same genre, similar artists, discography
Multiple selection
- ●Works on albums, artists and genres, in grid or list. Checking an album expands its tracks: counter shows « 47 tracks », not « 3 items »
- ●The « Select » button moves to the tab bar: it only existed on four pages, the Folders tab and detail pages had no way to enter selection
- ●Shift + click extends from the last clicked item, like in a file explorer
- ●« All » works everywhere: it relied on a list only the Tracks tab filled
- ●Right-click on an already-checked row acts on the whole selection
Playlists
- ●Play count shows on each row, only when there is one
- ●Smart playlists have a badge in the sidebar, and their counter recomputes instead of staying frozen at save time
- ●The header of a smart playlist spells out its rules in plain text
- ●Recipes are available in edit mode, under « Replace with a recipe »: starting over from a recipe is exactly what fixes a badly-tuned playlist
Fixes
- ●« Single click = play » disabled: clicking a track showed « Preparing track… » then nothing. A single click produced two competing intents that cancelled each other
- ●Title was the only column that couldn't be resized: flex was overriding the given width
- ●A smart playlist refused to display: all its rows carried the same key
- ●Editing a smart playlist rewrote its color and icon: neither was reloaded
- ●A recipe applied after another kept the first one's name
- ●Light mode: white checkboxes on white, selection menu still fully dark, sort chips nearly invisible
- ●The context menu no longer offers « Remove » on a smart playlist: the action would do nothing while seeming to work
v0.2.2
NewAugust 24, 2026
Smart playlists
- ●Rules on 24 library fields and any tag present in your files, with nested groups, sort and limit
- ●The number of matching tracks updates live as you write the rules
- ●Eight ready-made recipes to get started, including « most-played genres » which sums plays per genre instead of freezing a list
- ●No field name or rule value ever enters a query string: everything goes as bound values, including tag names from your files
Play counter
- ●It didn't exist: the function was written but never called, and play_count was zero across the entire library
- ●A play counts past half the track, capped at one minute
Custom columns in track lists
- ●21 library fields and every tag actually present in your files, listed with their frequency
- ●Header-based sorting on any of them, both directions: in-database for the Tracks tab, in-memory elsewhere
- ●The table view now extends to albums, artists, genres and playlists
Export and import
- ●Settings, profiles, playlists and liked tracks are now exportable and re-importable
- ●Playlists don't carry IDs (which would be meaningless elsewhere): each track leaves with its path and enough info to be recognized if the path has changed
- ●Import announces what it will do before writing anything
Half-star ratings
- ●Decimal ratings (0.5, 1.0, 1.5…): existing ratings already sit at 1.0 to 5.0, no data is transformed
Fixes
- ●The queue wouldn't chain in bit-perfect: the Drop of exclusive outputs was raising the stop flag, and playback-ended was never emitted. WASAPI and ALSA both affected
- ●Playlist counters were lying: removing a folder cascades-deletes files, tracks and playlist entries, but the counter stayed on its old value. It's now read instead of trusted
- ●Missing scroll on the three playlist pages
- ●White dropdowns in dark theme: color-scheme wasn't declared, and a translucent background can't serve as a dropdown surface
- ●Smoother lists: content-visibility on rows, and a per-track background blur removed (its background was uniform)
- ●Artist portrait downloads can be disabled
- ●The window remembers its size and position between sessions
Technical notes
- ●File tags now surface all the way to the UI, which pulls chosen columns from them
- ●No field name or rule value ever enters a query string: everything goes as bound values, including tag names
- ●285 tests, about thirty of which execute SQL against a migrated database
v0.2.1
NewAugust 20, 2026
Workshop: « To fix » inventory
- ●The workshop opened without a selection now shows what needs attention: files without title, artist, album, year, track number, cover art, or in a non-writable format
- ●Detection of album inconsistencies: diverging years, compilations without album artist, duplicate track numbers, gaps in numbering
- ●Duplicate detection: same title and same artist, within 2 seconds, chained proximity-based to catch variations
- ●Clicking a category loads the concerned files directly into the spreadsheet
Workshop: File renaming
- ●Field-based patterns with zero-padding (track:02), fallbacks (albumartist|artist) and optional groups that disappear when the field is empty
- ●Before/after preview line by line, recomputed as you type, with individual selection: uncheck what you don't want to rename
- ●Pre-execution detection of collisions, already-taken targets, chained renames and too-long paths
- ●Windows/macOS/Linux sanitization: / \ : | separators become a dash instead of underscores, forbidden characters removed
- ●The pattern applies to the fixed tags: correct in the spreadsheet, rename based on what you just wrote
Workshop: Folder reorganization
- ●The pattern rebuilds the full tree, with four common templates suggested
- ●Companion files follow: .lrc and .cue with their track, cover art and .m3u with their folder (if the whole folder moves to the same place)
- ●Cleans up folders that became empty, never beyond your library roots
- ●Cross-volume moves handled properly: copy, verify, then delete source: never the other way around
Workshop: Log and undo
- ●Each batch is logged: renames, moves, and the state of tags before rewrite
- ●History screen with the pattern used, counters, and two-step undo. Last 50 batches kept
- ●Undo reports as a batch and can fail: a file touched since the operation is not put back
Workshop: Cleanup rules
- ●Five rules, none checked by default: underscores to spaces, leading-number removal from titles, « feat. » unification, extra spaces, English title case
- ●Cell-by-cell preview, the result goes into pending changes, not directly to files
Fixes
- ●A renamed track became unplayable: the queue kept the old path. Fixed and covered by undo
- ●The workshop and library cache now refresh after a move (they were keeping old paths)
- ●The app wouldn't start after a partial update: when the database was migrated by a newer version, the error was silent on Windows. Clear message now displayed
Internal
- ●All data SQL moved to repository/: 31 queries still lived in commands and services
- ●197 Rust tests
v0.2.0
Major releaseAugust 14, 2026
Bit-perfect output on all 3 systems
- ●Native DoP on Linux via ALSA exclusive access: DSD goes straight to the DAC, no PCM conversion. Linux equivalent of Windows WASAPI exclusive.
- ●Native DoP on macOS via CoreAudio hog mode: same bit-perfect guarantees, DAC displays « DSD »
- ●Exclusive PCM output now also available on macOS and Linux (in addition to DSD)
- ●D-Bus reservation: PipeWire/WirePlumber releases the card for exclusive access, no more manual intervention
- ●Persistent output device: choice restored at startup, cleaner enumeration (no more duplicates)
Replay Gain
- ●Read REPLAYGAIN_* tags and apply gain without database, DoP chain preserved
- ●Adjustable preamp, track / album modes, in Audio Settings
Full tag editing (MP3, FLAC, DSF, DFF)
- ●Write text tags AND cover art on all 4 formats: nothing lost: unedited frames and blocks copied identically
- ●Fixing a title doesn't lose the cover, rating, or MusicBrainz IDs. A preserved image is copied byte for byte.
- ●In-place write when possible (2613 ms → 20 ms on a 34 MB FLAC over SMB), atomic full rewrite fallback otherwise
- ●Individual editor as two-column popup, per-field change tracking, complete embedded media handling
Batch tag workshop
- ●New dedicated page with two view modes: spreadsheet or list + panel
- ●Smart multi-edit: an unchanged field is omitted, not sent empty (« don't touch » vs « erase » distinction)
- ●Fill down, auto-numbering, column sorting, common cover art
- ●Parallel file reading: 769 ms → 35 ms cold for 16 files, with progress and error report
Tag import from Deezer
- ●Album search, track matching by title, duration and number, with score and confidence level
- ●Per-track review screen: file values next to Deezer's, expandable field by field
- ●Three choice levels: a value, a track, a field across the whole selection. Cover art with dimensions and weight shown
- ●Nothing written directly: everything goes through workshop pending changes before writing
Settings as sub-pages
- ●Monolithic page split into sub-pages: General, Appearance, Audio, Network, Storage, About
- ●Sidebar navigation by section, sticky header, reusable components (OptionRow, ToggleSwitch, ActionButton)
Linux rendering reliability
- ●Auto-fallback to software rendering: if GPU startup crashes before the UI shows, app auto-switches on next launch (sentinel file + WebKit listener)
- ●SteamOS detection: software rendering by default on Steam Deck
- ●RUSTMUSIC_RENDER=gpu|software|auto env variable to force mode. fix-appimage-wayland.sh script fixes EGL crash on SteamOS/Arch
High contrast mode
- ●New accessibility mode: all secondary grays become readable at once, without touching individual components
- ●Background blurs disabled (they blurred text), keyboard focus clearly visible
- ●Checkboxes fully redrawn: SVG check background, clean rendering on WebKit and in empty states
Library & network reliability
- ●Default library: per-profile marker, automatic pickup when creating first library or deleting the default
- ●SMB NAS editing fix: mapped drives (S: for \\NAS\music) now recognized as network, RAM preloading works correctly
- ●« Fix tags » added to album and listing context menus, right-click menu in « Recently played »
Dependencies & project
- ●Symphonia 0.5.5 → 0.6.0 (new probe/decoder API), rubato 2 → 3, Tauri 2.11.5, alsa 0.11, zbus 5
- ●isomp4 feature enabled: AAC in M4A container is now playable
- ●SvelteKit 2.69.2, Vite 8.1.4. Mini-player button moved to titlebar (3 OS styles supported)
v0.1.9
NewAugust 5, 2026
Sleep timer
- ●New button in the app header to stop playback after a chosen delay
- ●Quick durations 15 / 30 / 45 / 60 min or custom minute input
- ●« End of track » mode: playback stops cleanly at the end of the current track, without going to the next one
- ●Toggle in Settings to hide the button if you don't use it
Mini-player (compact window)
- ●New mini-player mode: a small always-on-top window to keep RustMusic visible while you work
- ●Dedicated button in the player to toggle between full and mini modes, return to normal window in one click
- ●Cover, transport (previous/play-pause/next), clickable seek and quality badges (DSD / Hi-Res, sample rate)
- ●Slide-down Queue panel: browse the queue and pick a track directly
- ●Synchronized Lyrics panel with active line highlighting and auto-scroll
Internationalization
- ●New translations for the sleep timer, mini-player and related settings (FR, EN, ES, DE, IT)
Maintenance & fixes
- ●Updated audio and network dependencies (cpal, rubato, reqwest, image) for better stability
- ●Fixed a Linux compilation regression
- ●Fixed a Lyrics panel display issue on Linux
v0.1.8
NewJuly 1, 2026
WASAPI exclusive: bit-perfect (Windows)
- ●Event-driven WASAPI exclusive backend: full Windows mixer bypass, native format sent to the DAC (true bit-perfect output)
- ●Format pre-negotiation before the decoder → no stray resampling (the decoder outputs directly at the DAC's native rate)
- ●Precise device targeting, FullBuffer playback and anti-click buffer pre-fill on start
- ●Toggle in Settings and in the player's audio-output popup, permanent badge in the status bar
Native DSD (DoP: DSD over PCM)
- ●DSD files (.dsf / .dff) are sent as-is to a DoP-capable DAC, which decodes them natively: no more PCM conversion
- ●The DAC shows "DSD" and rebuilds the original 1-bit stream (bit-perfect): DSD64 / DSD128 / DSD256
- ●Persistent gapless DoP engine: the DAC locks only once, DSD tracks chain instantly with no click
- ●Automatic fallback to DSD→PCM if the DAC rejects the format; volume handled by the DAC/amp (bit-perfect requires it)
Enriched output devices
- ●Detailed per-device capabilities: supported sample rates, formats, channels, Hi-Res detection
- ●WASAPI probing of the DAC to reveal its REAL exclusive-mode capabilities (beyond the OS's generic table)
- ●Detailed device sheet and output selection directly from the player and Settings
Settings & Player
- ●Settings redesign: full-page layout with section navigation (General, Appearance, Audio, Network, Storage, About)
- ●Enriched pipeline popover (bit-perfect / native DSD / DoP transport) and source→output info shown permanently in the status bar
- ●"About" section now embedded directly in Settings
v0.1.7
PatchMay 21, 2026
Audio quality profiles
- ●5 audio profiles: Auto, Maximum quality, Balanced, Compatibility, Degraded mode
- ●Automatic machine detection (VM, CPU core count) to choose the right preset
- ●Degraded mode: 256-tap DSD filter, 44.1 kHz output, full pre-decoding in RAM (zero underrun guaranteed)
- ●DSD filter configurable per profile: 2048 / 1024 / 512 / 256 taps
- ●Resampler chunk size and sub-chunks adapted to the chosen profile
- ●New Settings section: 5 selection cards and information block showing resolved profile and detected machine
Multichannel DSD: parallel decoding & downmix
- ●DSD2PCM parallelization via rayon: 1 thread per channel for 3+ channel files (SACD 5.0 / 5.1)
- ●Stereo and mono kept in sequential mode (overhead not justified)
- ●Near-linear speedup: a DSD64 5.0 SACD in Maximum quality is now playable without artifacts on a normal CPU
- ●Multichannel to stereo downmix following ITU-R BS.775 (3.0, 4.0 quad, 5.0, 5.1 with integrated LFE)
- ●Multichannel SACDs now play correctly in stereo (center voice and surrounds preserved)
Pre-loading, seek & audio robustness
- ●RAM pre-loading of files on network shares (GVFS/SMB/NFS/SSHFS) or Low profile: eliminates I/O-related dropouts
- ●Instant seek in Degraded mode for DSD: ring buffer drained into a Vec<f32>, CPAL in indexed FullBuffer mode
- ●Fixed CPAL race condition on seek in Symphonia Degraded mode (dedicated atomic pending_seek_frames)
- ●CPAL BufferSize::Fixed now clamped to the device-supported range (fixes silent stream on some Intel HD cards)
- ●CPAL error logging rate-limited (first one, then 1 in 100 up to 1000, then 1 in 1000): on weak VMs hundreds per second can occur
- ●Defense-in-depth DSD scanner: catch_unwind at DSD entry: impossible to kill the import batch on a corrupted file
- ●Aggregation of skipped files during import + enriched Tauri event (skipped counter)
OS notifications & media controls
- ●Native notification on track change: Windows Action Center, macOS, Linux libnotify (title + artist)
- ●Notification toggle in Settings (bell icon)
- ●System Media Transport Controls: track appears in Windows mini-player (volume flyout) and lock screen
- ●MPRIS on Linux (KDE Plasma, GNOME) and macOS Now Playing widget
- ●Keyboard media keys (play/pause/next/prev) now work
- ●Local HTTP server dedicated to serving covers cross-OS: bypasses Windows unpackaged file:// limitation (based on souvlaki)
Linux rendering & offline icons
- ●Render mode: manual override Auto / GPU acceleration / Software rendering
- ●Automatic VM detection with switch to software rendering for stability
- ●Dedicated Settings section with "Restart required" banner
- ●Iconify offline: pre-bundling of 7 collections (lucide, heroicons, mynaui, ph, radix-icons, tabler, uit): fixes invisible icons on Debian 12 + WebKitGTK 2.40
- ●Linux auto-config: WebKitGTK / GDK environment variables applied before Tauri to prevent freezes (KVM, KDE Wayland, AMD Mesa)
Player & Pipeline UI
- ●Styled hover popover on the source→output badge: Source / Decoding / Resampling / Output / Profile with Bit-perfect, DSP, DSD→PCM badges
- ●Correct multichannel indication in popover: 3.0 / 4.0 / 5.0 / 5.1 / 6.1 / 7.1
- ●Responsive layout with 3 breakpoints: mobile stacked, intermediate 500-768px (cover + actions on top, transport at bottom), desktop ≥768px (3 columns)
- ●Title fallback from file name for DSF/DFF without DITI/ID3 tag
- ●Pre-decoding indicator in the StatusBar (MB decoded / total) instead of a loader in the Player
Internationalization
- ●Full parity across 4 languages: FR, EN, DE, ES (282/282 strictly identical keys)
- ●Sections caught up: library (genres, total_duration), settings (audio_quality, render_mode, scan_on_startup, album_covers), pipeline, statistics, search
Stability & fixes
- ●Automatic image format detection via magic bytes: fixes PNG/WebP covers renamed to .jpg (eliminates "Format error decoding Jpeg" warning)
- ●svelte-check: 10 pre-existing errors fixed (EditPlaylistPopin, ProfilSelectorPopin, track detail page with library_artist_id in TS + SQL JOIN library_artists)
v0.1.6
PatchMay 5, 2026
DSD playback (DSF + DFF)
- ●Native DSD playback (.dsf and .dff) in pure Rust, without Symphonia or FFmpeg
- ●DSD → PCM conversion via the Gesemann algorithm (DSD2PCM) with a 2048-tap Blackman-Harris filter
- ●Automatic detection of DSD64 / 128 / 256 / 512 / 1024 rates with MHz display
- ●Full pipeline: decoding → conversion → resampling → ring buffer → CPAL with seek and bit-perfect output
- ●Dedicated golden badge across all views (list, grid, detail, status bar) to spot DSD tracks at a glance
DLNA / UPnP server
- ●Stream your music to DLNA-compatible amps and hi-fi systems on your local network
- ●Automatic discovery via SSDP: no manual pairing, the amp finds the server on its own
- ●Browse by Artists, Albums and Folders with cover art embedded in DIDL metadata
- ●Multi-library support: each library exposes its own artists, albums and folders
- ●HTTP streaming with Range request support so you can seek directly from the amp
- ●Dedicated Network section in settings: server name, port, status, access URL
- ●Status indicator in the player bar so you can check the server is up at a glance
Custom metadata extractor
- ●Complete rewrite of audio tag extraction: zero external dependencies (no more lofty or id3 crates)
- ●In-house ID3v2.3 / ID3v2.4 parser supporting 35+ frames (TIT2, TPE1, TALB, TCON, TBPM, POPM, APIC, USLT, ...)
- ●All standard encodings handled: ISO-8859-1, UTF-16 BE/LE with or without BOM, UTF-8
- ●Extended POPM rating mapping with 0-5 / 0-100 / 0-255 normalization to stars
- ●Automatic fallback to folder images (cover.jpg, folder.jpg, front.jpg/png/webp/avif)
Interface
- ●Display bitrate in Mb/s for very high rates (instead of kbps when ≥ 1000)
- ●Reusable NowPlayingCard component (default + blur variants), shared between the queue and lyrics panels
Stability
- ●Fixed modified_at column decoding in several SQL queries (was causing tracks to be invisible in DLNA folder view)
- ●Quieter logs: minimal info at startup, no more spam during playback
v0.1.5
PatchMay 2, 2026
Synchronized lyrics
- ●Synchronized lyrics with auto-scroll on the active line
- ●Automatic fetch via the LRCLIB API (cascading /get + /search to find the synced version)
- ●Support for sidecar .lrc files placed next to the audio file
- ●Local SQLite cache to avoid repeated network calls
- ●Blurred cover background with gradient veil for cinematic immersion
Appearance
- ●New "Appearance" section in settings with visual selectors
- ●Theme choice: Auto (system), Light or Dark: applied instantly
- ●Compact visual previews for every option (responsive cards)
- ●Automatic system theme tracking when Auto mode is enabled
Window controls
- ●Four available styles: Auto, macOS (traffic lights), Windows or Linux (GNOME buttons)
- ●Configurable position: left or right side of the titlebar
- ●Auto mode picks the style based on the detected operating system
- ●Visual previews in settings for every combination
Single instance
- ●Prevents launching multiple RustMusic instances at the same time
- ●Restores the existing window if the user tries to launch the app again
- ●Taskbar attention request to bring the window back to the foreground
v0.1.4
PatchApril 21, 2026
Album covers
- ●Automatic cover fetching via the Deezer API from the album context menu
- ●Manual search with a premium popin and a grid of results
- ●Pick a local file as album cover
- ●Batch action "Album covers" in settings to process every album without a cover
- ●New "Missing cover" filter to isolate albums without artwork
Track rating
- ●Automatic extraction of POPM/Rating tags during scan (supports 0-5, 0-100 and 0-255 formats)
- ●Clickable star component with hover preview and real-time updates
- ●Rating column in list and grid views, and on the track detail page
- ●Sort tracks by rating (unrated tracks placed at the end)
Alphabet navigation
- ●A-Z jump bar on albums, artists and tracks pages to skip straight to a letter
- ●Letters dimmed automatically when no entry starts with that letter
- ●Dedicated toggle button in the view bar to show or hide the navigation
Filters and sort
- ●Premium filter bar redesign with a sort dropdown and integrated direction toggle
- ●"Missing cover" filter extended to tracks
- ●Default descending order for rating, duration and date (more intuitive)
- ●Sort preference memorized per context (tracks, albums, artists, genres)
Interface
- ●New "Single-click to play" option in settings to start a track in one click
- ●"Add to playlist" submenu in context menus (batch add from an album or a multi-selection)
Stability
- ●Double crash protection during scan with sequential fallback when a batch fails
- ●Logging of problematic files to help identify culprits
Fixes
- ●Track sort is no longer reset when switching library
v0.1.3
PatchApril 7, 2026
Multi-selection
- ●Selection mode on track lists with floating action bar (play, add to queue, add to playlist)
- ●"Select" and "Select all" buttons in the filter bar
Albums & Artists
- ●Play and context menu buttons on album cover hover
- ●Add to playlist from context menu (all tracks of an album at once)
- ●Track sorting (number, title, duration) and album sorting (year, title) on album and artist pages
- ●Lightbox zoom on album covers and artist photos
Queue & Player
- ●Functional drag & drop to reorder the queue
- ●Play/pause button in the queue header
- ●Fixed pause button that was restarting the track from the beginning
Stability & Compatibility
- ●Crash protection for corrupted or exotic audio files
- ●Added WAV, AIFF, OPUS and AAC formats to library scanning
- ●Responsive grids with breakpoints for large screens (6, 7, 8 columns)
v0.1.2
PatchApril 5, 2026
Profiles
- ●Visible "Edit" button under each profile in the selection popup
- ●Delete confirmation: you must type "delete" to confirm
- ●Creating a profile no longer closes the popup or auto-selects it
Performance: Artist page
- ●Progressive loading with skeletons: the header appears instantly, sections fill in progressively
- ●New targeted backend commands (get_albums_by_artist, get_similar_artists) instead of loading everything
- ●SQL query optimization: removed expensive subqueries
- ●Added 6 missing SQLite indexes to speed up artist, album and search pages
Playlists & Fixes
- ●Added "Play all" button on the playlist page
- ●Fixed artist link in search results
- ●Redesigned feedback page with contact@rustmusic.dev link (removed RiffFlow references)
v0.1.1
PatchMarch 30, 2026
Linux
- ●Fixed cover display on Linux (WebKitGTK 2.50 bug workaround with asset:// protocol)
- ●Fixed %2F encoding in asset URLs on Linux
- ●Added .deb and .rpm build support
- ●Fixed GTK gtk_widget_get_scale_factor warning
Covers & Thumbnails
- ●New CoverImg component with async loading and LRU cache (max 300 entries, ~40 MB)
- ●Rust command read_cover_as_base64 to serve covers via IPC (base64 fallback)
- ●assetSrc() function to fix Linux path encoding
- ●Thumbnail size support (full, 1x, 2x) with background generation
- ●Cover reorganization: covers/albums/ and covers/artists/ with full/1x/2x subfolders
- ●Automatic migration of old covers to the new structure
- ●Fast resizing via fast_image_resize (SIMD) instead of the image crate
- ●On-the-fly thumbnail generation (resolve_thumbnail) with full fallback
- ●Dedicated thread pool (50% of cores) for background thumbnail generation
- ●Dual display mode: asset protocol (direct, fast) or base64 IPC (fallback)
- ●Filtering of default Deezer artist images (URL pattern detection without hash)
Artist images
- ●Live update of artist images: real-time appearance during Deezer fetch
- ●Reactive artistImageReadyStore with artist-image-ready event
- ●Force mode for artist image fetching (re-downloads even if path exists in database)
- ●Artist images saved in covers/artists/full/ with background thumbnails
Import & Progress
- ●New premium import component: progress circle with glow, shimmer, ETA
- ●Live ETA estimation during import
- ●Redesigned StatusBar: gradient, shimmer, percentage, cancel button on hover
- ●Automatic data refresh after import (libraryContentStore.refresh())
- ●Fixed 30s freeze when canceling the import dialog
- ●Import loader added to Genres and File Explorer pages
- ●Cover migration with progress in the statusbar
Settings
- ●Added "Open data folder" button (opens the file explorer to the AppData folder)
- ●Notifications disabled by default (option removed from settings, will be reintroduced later)
- ●Translations added (FR, EN, ES, DE) for new entries
Optimization
- ●Context-aware cover sizes: 1x for lists, 2x for grids, full for detail pages
- ●SQL transaction for cover migrations (rollback on error)
- ●2-pass thumbnail generation: move + DB (fast) then parallel resize
UI
- ●Fixed truncation of long titles (file names) across all views (album, playlists, queue, player, stats, search)
- ●Added title attribute (hover tooltip) to display the full name of truncated titles
v0.1.0
BetaFirst public release
It all starts here: the first release of RustMusic lays the foundation for a player built for audiophiles.
- ●Bit-perfect HD playback: FLAC, WAV, AIFF up to 24bit/192kHz, plus MP3, AAC, OGG and M4A
- ●Embedded SQLite library with parallel import and ultra-fast incremental scanning
- ●Dark, polished interface powered by Svelte 5 and Tailwind CSS
- ●Detailed statistics: formats, quality, top artists, genres with interactive SVG charts
- ●Multi-profiles and multi-libraries to organize your music without compromise
- ●Automatic artist artwork fetching via the Deezer API