Skip to main content
Each GitHub release lists every commit. This page covers what actually changed for you — see the full history on GitHub. bmux and @bmux/core release together as one version — see Publishing for why.
No user-facing changes — fixes to the npm release workflow only (trusted publishing via OIDC wasn’t actually authenticating; releases now publish successfully).
  • bmux tag writes title, artist, album, track, year, and cover art on one mp3/flac/m4a file, so Spotify’s Local Files feature shows it correctly
  • bmux batch applies the same artist/album/year/cover art to every audio file in a directory
  • bmux cover extracts or replaces embedded cover art on its own — always resized to fit Spotify’s 300x300 local-art limit before embedding
  • bmux inspect reads audio tags too, alongside its existing image support
  • --unique-artist-tag works around Spotify’s bug where one album’s cover art gets duplicated onto an artist’s other albums, via an invisible per-album suffix — off by default
  • --musicbrainz on bmux batch looks up missing metadata and cover art on MusicBrainz — the one thing in bmux that contacts a third party, off by default with a warning when enabled
  • The browser app gained a Spotify Tracks tab alongside the existing image workbench, with drag-and-drop tagging, ranked MusicBrainz search results, album/tracklist browsing, batch matching across selected files, a live cover-art preview, and export as downloads or a ZIP — audio tagging still runs entirely in your own tab, with MusicBrainz lookups proxied through bmux’s own server so devtools only ever show a first-party request
  • bmux convert turns files, folders or globs into JPEG, PNG, WebP or AVIF, with quality, resizing, and several output formats at once
  • bmux optimize runs a whole folder through a web, social or email preset
  • bmux inspect reports what a file actually is, read from its contents rather than its name
  • File type is detected from content, so a mislabelled .jpg is still handled correctly
  • Originals are never overwritten — colliding names are renamed unless you pass --collision
  • Metadata is stripped by default, with photos rotated upright first; --preserve-metadata keeps it
  • --dry-run shows exactly what would be written, and --manifest writes a JSON report for CI
  • A failed file doesn’t cancel the rest of the batch, and the command exits non-zero
  • Colour is used for status only, and honours NO_COLOR