Skip to content

Releases: FrancescoGrazioso/Meld

0.7.2

05 Jun 15:00

Choose a tag to compare

🚀 Meld v0.7.2

This release introduces the first iteration of Qobuz integration, alongside a range of improvements to the Spotify and YouTube backends, the player UI, and
overall stability.

⚠️ Experimental Qobuz Support

Meld now includes an experimental Qobuz backend, available under Settings → Integrations → Qobuz.

Before you get too excited: this integration is currently very unstable and should be considered a preview rather than a finished feature. Some functionality may
not work as expected, playback may fail, and parts of the integration are still incomplete.

If you decide to try it, please expect bugs.

🎵 Why Qobuz?

For those unfamiliar with it, Qobuz is a music streaming service focused on high-fidelity audio quality.

Compared to YouTube Music, Qobuz offers:

  • Lossless FLAC streaming
  • High-resolution audio (up to 24-bit / 192 kHz where available)
  • Rich album metadata and credits
  • A catalog oriented toward audiophile listening

The long-term goal is to make Qobuz available as an alternative playback backend, allowing users to benefit from higher-quality audio sources within Meld.

🧪 Current Status

The integration is still in its early stages:

  • Basic Qobuz support has been added
  • Stability is currently poor
  • Playback reliability varies
  • Some content may fail to load or resolve correctly
  • Expect regressions and edge cases

For this reason, the feature should be considered experimental for now.

✨ Also in This Release

Beyond Qobuz, v0.7.2 brings a number of fixes and improvements across the app.

Spotify

  • Improved queue handling
  • Liked Songs support
  • Playlist pagination fixes
  • Android Auto authentication

YouTube

  • Thumbnail fallback with high-resolution artwork
  • Better handling of playlist fetch timeouts

Interface

  • High-resolution artwork in the player
  • Improved rendering for complex-script lyrics
  • MiniPlayer refinements
  • New toggles to hide the "Recognize Music" and "Play Random" buttons on the Home screen (#135)

Stability

  • Benign crash reports are now suppressed
  • More reliable queue persistence

💬 Feedback Needed

If you encounter issues, please open a GitHub issue and include as much information as possible:

  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Logs (if available)

Detailed reports dramatically reduce the time required to track down and fix problems.

❤️ Open Source Reminder

Meld is developed and maintained by a single person in their spare time. Between work, testing, bug fixing, and life outside of software, development time is
limited.

If you have ideas, improvements, or fixes, pull requests are always welcome. Every contribution helps make Meld better for everyone.

0.7.1

03 May 10:25
9299288

Choose a tag to compare

Meld 0.7.1

A big jump from 0.6.7: a much deeper Spotify integration, new SponsorBlock feature, more reliable lyrics and fewer crashes.

Highlights

SponsorBlock (opt-in)

Automatically skip non-music segments (intros, outros, sponsor reads, talking sections) using the SponsorBlock community database. Fully optional and disabled by default — find it under Settings → Player → SponsorBlock.

  • Pick which categories to skip (default: only "non-music section")
  • Silent skipping, or enable a toast when something is skipped
  • Works with the screen locked and when seeking back into a segment
  • Privacy-friendly: the video ID is never sent in plaintext to the server

Spotify-powered home

The Home tab is now populated directly with your Spotify recommendations (your mixes, recent plays, recommended albums and playlists), so the first thing you see when opening Meld actually reflects your Spotify world.

Deeper Spotify integration

  • Play Spotify albums directly (previously limited)
  • Spotify library folders are now visible and browsable
  • All your Spotify playlists are loaded (some used to go missing)
  • Liked Songs sync from Spotify
  • Liked songs and Spotify playlists are also available on Android Auto
  • Faster loading: optimized parallel Spotify→YouTube matching with an in-memory cache

Smoother lyrics

  • When you scroll lyrics manually, auto-scroll resumes after a moment and re-aligns with the song (issue #80)
  • If lyrics load late, they now correctly sync to the current playback position instead of starting from line one (issue #79, #90)
  • Tapping a line jumps the song to that point and auto-scroll resumes immediately

Reliability

  • New crash reporting flow via GitHub Issues, making it easier to report problems
  • No more spurious crash reports for transient YouTube errors (expired URLs, "missing stream expire time", brief audio-decoder hiccups): they're now recovered silently
  • More resilient image loading — a network error on a thumbnail no longer breaks the library screen
  • Wider unit-test coverage in CI

Under the hood

  • Auto-updating Spotify GraphQL hashes
  • Performance: in-memory LRU cache for Spotify matching, in-memory DataStore snapshot
  • StrictMode enabled in debug builds to catch main-thread I/O early

0.6.7

15 Apr 19:17

Choose a tag to compare

🚀 Meld v0.6.7 — Changelog

Fixed error for updates after previous version.

I'm very sorry for the inconvenience 😔

0.6.6

15 Apr 13:58

Choose a tag to compare

🚀 Meld v0.6.6 — Changelog

This update introduces powerful new features, important bug fixes, and upstream improvements to enhance performance, usability, and reliability.

✨ New Features

  • Intelligent Pre-Caching
    Meld can now automatically download the next N tracks in the queue (3/5/10/20) in the background, ensuring seamless offline playback. Configurable in Settings → Storage, with an optional Wi-Fi only mode.

  • Followed Artists Sync from Spotify (#13)
    Artists followed on Spotify are now synchronized with the local library and marked with a dedicated Spotify chip.

  • Bulk Download for Spotify Playlists (#34)
    Download an entire Spotify playlist with a single tap directly from the overflow menu.

🐛 Bug Fixes

  • Speed Dial Fix
    Pinning Spotify’s Liked Songs no longer triggers the "no content in fetchPlaylist response" error.

  • Build and Branding Improvements
    Fixed build and branding issues following the latest upstream rebase.

🔼 Upstream Updates (Metrolist v13.4.0)

  • Varispeed Mode — Link playback pitch with speed
  • Expanded Library Search — Search functionality extended across all library screens
  • Play Music from URL — Stream tracks directly from a URL via the search bar
  • Lyrics Fix — Added timeout handling for lyrics providers
  • Playlist Sync Fix — Downloaded tracks are preserved during synchronization
  • Queue Improvements — Fixed play-next behavior and ghost additions
  • Player Navigation Fix — Improved back gesture handling in the expanded player
  • Track Labels Fix — Corrected cached/downloaded indicators
  • Updated Translations

💙 Enjoying Meld? Consider supporting the project and sharing your feedback!

0.6.2

26 Mar 12:02
8967359

Choose a tag to compare

v0.6.2 — Dynamic Spotify GQL Hash Management

What's new

Spotify periodically rotates the SHA-256 hashes required by its internal GraphQL API. Previously, these hashes were hardcoded — meaning a new app release was needed every time Spotify rotated them, leaving users unable to access Spotify features in the meantime.

This release introduces a fully automated hash synchronization system that keeps the app working transparently, without user intervention.

How it works

  • Remote hash registry — A GitHub Actions workflow runs daily, extracts the latest hashes from the Spotify web player bundle, and publishes them to a publicly accessible JSON endpoint.
  • Startup sync — Every time the app launches, it fetches the latest hashes from the remote registry in the background, ensuring maximum freshness.
  • Local caching — Fetched hashes are persisted via DataStore so they're available immediately on next launch, even before the remote fetch completes.
  • Automatic retry with fallback — If a GQL request fails with PersistedQueryNotFound (HTTP 412), the app automatically retries with the previous known hash. If all known hashes fail, a force-refresh from the remote registry is triggered.
  • Hardcoded safety net — If both the remote registry and local cache are unavailable (e.g. first launch with no internet), the app falls back to hashes hardcoded at build time.

0.6.0

23 Mar 18:18

Choose a tag to compare

Metrolist v0.6.0 — Spotify Deep Integration

This release brings full two-way Spotify integration: edit playlists, reorder tracks, and sync your likes — all from within the app.

New Features

Bidirectional Like Sync with Spotify

  • New "Sync Likes with Spotify" toggle in Spotify integration settings
  • When enabled, every like/unlike action in the app (player, context menu, multi-select) is automatically synced to your Spotify Liked Songs
  • On first activation, all your Spotify liked songs are imported and matched to their YouTube equivalents
  • The local "Liked" playlist is replaced by your Spotify library — one source of truth

Edit Spotify Playlists from the App

  • Add tracks to any of your Spotify playlists directly from song menus
  • Works with both Spotify tracks (direct add) and YouTube tracks (automatic reverse lookup finds the Spotify match)
  • Remove tracks from Spotify playlists with swipe-to-remove
  • New playlist picker dialog for quick playlist selection

Sort & Refresh for Spotify Playlists

  • Sort by: original order, name, artist, or duration
  • Pull-to-refresh to reload playlists in real time
  • Available in both Spotify playlists and liked songs screens

Drag-to-Reorder in Spotify Playlists

  • Reorder tracks in your Spotify playlists via drag-and-drop
  • Changes are synced to Spotify in real time via GraphQL
  • Lock mechanism prevents accidental reordering
  • Optimistic UI updates with server-side confirmation

Under the Hood

Spotify GraphQL Hash Audit

  • Verified all 15 hardcoded GQL hashes against the current Spotify web player bundle
  • Updated 5 rotated hashes: libraryV3, fetchPlaylist, queryArtistOverview, addToLibrary, removeFromLibrary
  • Identified 2 at-risk hashes (searchDesktop, editPlaylistAttributes) not present in the current web player — functional for now but may require future attention

Architecture

  • All like sync logic (YouTube, Spotify, Last.fm) is now centralized in SyncUtils and runs independently of YouTube login state
  • SongEntity.toggleLike() handles local state only — remote sync is fully delegated to SyncUtils

0.5.0

13 Mar 12:15
cab51e1

Choose a tag to compare

Meld v0.5.0

✨ New Features

  • Local Files Playback

    • Scan and play audio files stored on your device
    • Supports advanced formats including Dolby Atmos
    • Added a new Local Files section in the Library
  • Fast Playlist Scrolling

    • Added a draggable side scrollbar for navigating very large playlists (thousands of tracks)
  • Search in Spotify Playlists

    • Added search bar for Spotify playlists and Liked Songs
    • Quickly find tracks without scrolling through the entire list
  • Pin Spotify Playlists

    • Ability to pin favorite Spotify playlists for quick access in the Library

🔧 Improvements

  • Improved Audio Compatibility

    • Fixed playback issues with multi-channel audio
    • Better handling of non-standard audio formats across devices
  • Listen Together Stability

    • Improved connection stability for synchronized listening sessions

🐞 Bug Fixes

  • Shuffle Behavior
    • Shuffle mode no longer reshuffles the queue on every track change
    • The random order is now generated once and preserved for the entire session

⚙️ Internal Changes

  • Stronger code protection rules
  • Various stability and internal optimizations

0.4.5

06 Mar 15:45
0192c45

Choose a tag to compare

Release of version 0.4.5

Shuffle across the whole playlist

  • Shuffle is applied to the entire playlist without restarting playback.
  • Current playback position is preserved (no restart).

Spotify context menu

  • New context menu entries for tracks linked to Spotify (e.g. open in Spotify, add to playlist, etc.).

Fix for 0:00 duration

  • Fixed the bug that showed 0:00 duration for some tracks when not available from the service.

Preload and loading

  • Preload: improved track preloading to reduce startup delays.
  • Lazy load: lazy loading of lists for better performance and memory usage.

Batch sync

  • Batch synchronization with Spotify to reduce API calls and improve stability.

Technical fixes

  • getFullStatus: now always includes all tracks (0..N) in the returned state.
  • Other minor stability and playback state consistency fixes.

0.4.0

27 Feb 20:22
aa66f17

Choose a tag to compare

Release Notes — v0.4.0

New Features

New Releases — Hybrid Spotify + YouTube Integration

The "New Releases" section has been completely redesigned with a hybrid approach combining Spotify and YouTube Music data.

  • "Following" tab: shows new releases from artists you follow on Spotify, filtered from your personalized queryWhatsNewFeed
  • "Discover" tab: discover new releases from artists related to your favorites, sourced from the YouTube Music catalog via fuzzy matching
  • "For You" tab: combined Following + Discover view for a complete overview
  • Smart caching: followed artists (12h TTL) and related artists (24h TTL) via GQL with no rate limiting
  • ChipsRow with dynamic counts per tab

Manual Spotify → YouTube Match Override

When automatic matching picks the wrong version of a song (e.g. live instead of studio), you can now fix it manually.

  • Dedicated dialog to paste the correct YouTube/YouTube Music URL
  • Automatic preview of the new video with metadata before confirmation
  • Manual matches are never overwritten by automatic matching
  • 3 entry points:
    • Player menu (three dots) during playback
    • Context menu of any song in the app
    • Long-press on Spotify playlists and Liked Songs

Podcast Support (from upstream)

Integrated the podcast infrastructure added by upstream, including database entity, Home screen sections, and episode browsing.

Improvements

Smarter Home Screen

  • Less biased Home sections: REST timeout increased from 3s to 8s, cooldown from 5min to 1min, automatic retry. Tier 3 (most played songs from local DB) is now used as an active fallback, not just a last resort
  • Differentiated cache TTL: 6 hours for complete data, 30 minutes for degraded data (liked songs only)
  • Mood and Genres automatically hidden when "Use Spotify for Home" is active, for a more consistent experience
  • Improved "Recently Played" section

Library

  • Removed song count subtitle from Spotify playlists in the Library section for a cleaner look

Last.fm

  • Improved Last.fm integration initialization and error handling
  • Fixed scrobbling to prevent regressions compared to the original app

Playback

  • Improved audio focus handling and loudness enhancer management
  • Spotify playlist integration in the player
  • Centralized Spotify token management with better error handling

Bug Fixes

  • Fixed Home section rendering when a filter chip is selected
  • Fixed foreground service start failure on Android 15
  • Fixed ClassCastException on crossfade duration key migration
  • Fixed crash when creating local or editable playlists
  • Solid color shimmer placeholder for Home screen chips
  • Fixed playlist navigation from Home screen to the correct route
  • Stale auth data cleared after backup restore to prevent playback issues

Performance

  • Parallelized HomeScreen loading to reduce startup time
  • Optimized caching strategy for Spotify REST APIs

Version: 0.4.0 (versionCode 6)

0.3.0

27 Feb 14:26
55adf3a

Choose a tag to compare

What's New in 0.3.0

New Features

  • Recently Played section — A new "Recently Played" section on the home screen shows your last 40 listened tracks, always visible regardless of Spotify-only mode
  • Spotify playlists in Android Auto — Your Spotify playlists now appear in the Android Auto media browser alongside local and YouTube playlists, with full track browsing, shuffle support, and playback via YouTube Music matching

Bug Fixes

  • Home screen loads faster — Spotify REST API calls (top tracks/artists) now fail fast on 429 rate limits instead of retrying for up to 10 seconds, falling back immediately to cached data
  • Home sections no longer biased towards recent likes — Improved the 3-tier profile cache with dynamic TTL (30min for degraded data vs 6h for full data) and local play count reordering when REST data is unavailable
  • Last.fm scrobbling fixed — Added ProGuard keep rules for the Last.fm module to prevent class stripping in release builds, and fixed a duration overflow when the player reports unknown track length
  • Spotify queue now loads more tracks — When playing from Spotify liked songs or playlists, the queue now resolves ~25 tracks around the selected song (5 before + 20 after) instead of just 1, with larger progressive batches of 20

Other

  • Added account risk FAQ entry to README for transparency about third-party API usage
  • Version bump to 0.3.0 (versionCode 5)