Releases: MissingCore/Music
Release list
v3.3.0
Some QOL improvements, bug fixes, and a faster method of getting through the initial track indexing.
🧪 Experimental Features
- New
Use MediaStore Scanneroption to obtain track metadata from MediaStore.- This method is extremely fast, however may not be as accurate.
- Indexing new tracks should be finished almost immediately, though saving the artwork for those newly indexed tracks will still be a bottleneck.
- Only available on Android 11+ due to most of the MediaStore metadata fields being introduced in this version.
- This method is extremely fast, however may not be as accurate.
🎉 Added
- Multi-select support on tracks.
- Clicking on a (non-active) synchronized lyric line will seek to that position.
⚡ Changes
- Hopefully the final redesign of "bottom actions" (for v3).
- Move toggle to display lyrics from the "Playback Options" sheet to be directly on the "Now Playing" screen.
- Redesigned "Lyrics Settings" screen, moving the
Lyrics Providers&Use Embedded Lyricsactions here.Lyrics Providersis still an experimental feature (for now).
🛠️ Fixes
- Unexpected "Unsaved Changes" warning when leaving "Edit Lyrics" screen when no changes were made.
- This is due to not trimming the returned lyrics in our "automatic" detection. This should be fixed on new lyric entries.
- Staying on the splash screen for an unnecessarily long time due to inefficiency of comparison logic when cleaning up images.
- This only happens if the app has a lot of images due to lots of singles or albums.
- "Junk" in front of embedded lyrics that are stored in ID3's binary frame.
- This is most likely the cause of why embedded synchronized lyrics didn't work (normally, you would manually clean them up to fix it).
- We have a (temporary) patch, which attempts to remove the "junk" at the start of existing lyric entries if detected.
- Playing the wrong track after removing items on the "Upcoming Tracks" screen and then clicking on a track to play.
🔠 Translations
- Updated
Polskitranslations by @p-krystian - Updated
Françaistranslations by Mickael81 - Updated
Españoltranslations by @G4b-0 - Updated
Русскийtranslations by Julia
⚙️ Internal Changes
- Replaced
expo-media-librarywith our own implementation (used for detecting audio files). - Control default of "Check for Updates" setting via environment variable (enabled by default for APK & Google Play releases).
v3.3.0-rc.1
Important
Treat this as a pre-release for the next version. This is available as an APK on GitHub & via the "Open Beta" on Google Play (as of June 24).
This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).
Some QOL improvements and a faster method of getting through the initial track indexing.
🧪 Experimental Features
- New
Use MediaStore Scanneroption to obtain track metadata from MediaStore.- This method is extremely fast, however may not be as accurate.
- Indexing new tracks should be finished almost immediately, though saving the artwork for those newly indexed tracks will still be a bottleneck.
- Only available on Android 11+ due to most of the MediaStore metadata fields being introduced in this version.
- This method is extremely fast, however may not be as accurate.
🎉 Added
- Multi-select support on tracks.
- Clicking on a (non-active) synchronized lyric line will seek to that position.
⚡ Changes
- Hopefully the final redesign of "bottom actions" (for v3).
- Move toggle to display lyrics from the "Playback Options" sheet to be directly on the "Now Playing" screen.
- Redesigned "Lyrics Settings" screen, moving the
Lyrics Providers&Use Embedded Lyricsactions here.Lyrics Providersis still an experimental feature (for now).
🛠️ Fixes
- Unexpected "Unsaved Changes" warning when leaving "Edit Lyrics" screen when no changes were made.
- This is due to not trimming the returned lyrics in our "automatic" detection. This should be fixed on new lyric entries.
🔠 Translations
- Updated
Polskitranslations by @p-krystian - Updated
Françaistranslations by Mickael81
⚙️ Internal Changes
- Replaced
expo-media-librarywith our own implementation (used for detecting audio files).
v3.2.0
Pretty big updates for audio effects & lyrics (via experimental & stable features).
❗ Breaking/Important Changes
- Removed Experimental Glyph Toy feature.
- It's personally impossible to test new features since I don't own a Nothing Phone 3, pretty limited as the "main" feature requires the Glyph Button, and may have caused some startup crashes for Nothing Phone 3 users.
- Hopefully this speeds up review times on Google Play.
🧪 Experimental Features
- New
Lyrics Providersfeature (Settings > Experimental Features > Lyrics Providers), enabling you to specify where we can pull online lyrics from. - New
ReplayGain&ReplayGain Pre-ampfeatures.
🎉 Added
- Automatically pull lyrics from adjacent files given it has the same file name &
.lrcextension..txtfiles do not work (most likely for security concerns). You can change the file extension to.lrcand it should get detected.
- Support for modifying the pitch of the track.
- Support for persisting the app volume across app sessions.
- New
Audio Effectsscreen (Settings > Audio Effects) which contains the following:- Experimental Features:
Equalizer,ReplayGain,ReplayGain Pre-amp. - Stable Features:
Playback Pitch,Playback Speed,Restore App VolumePlayback Pitch&Playback Speedsettings will only show up when we navigate to this screen via the "Playback Options" sheet on the "Now Playing" screen.
- Experimental Features:
- New
Use Embedded Lyricssetting, which allows you to skip checking for embedded lyrics.- Currently located in the
Lyrics Providersscreen.
- Currently located in the
⚡ Changes
- Display space taken up by fonts in "Insights" breakdown.
- Improve draglist performance (you should see less whitespace while scrolling in a draglist with lots of items).
- Though as a side-effect, you may see the moved items flash twice & initiating a new drag after dropping too fast causing the gesture to lose focus.
- No longer hide the
Update via Play Storebutton on in-app release notes screen for pre-releases due to now releasing them via the "Open Beta" on Google Play.
🛠️ Fixes
- Edge case where lyrics weren't detected as synchronized (ie: it has
\n\r\nin the raw lyrics text). - Potential fix to
no such table: custom_fontserror.
🔠 Translations
- Updated
Françaistranslations by Mickael81 & @SertraFurr - Updated
Españoltranslations by @G4b-0 - Updated
Indonesiatranslations by @naturbrilian
⚙️ Internal Changes
- Upgraded to Expo SDK 56 / React Native 0.85.
- Replaced some third-party packages with our own implementations.
- Upgraded to
react-native-gesture-handlerv3. - Limit where
react-native-audio-browser's ContentProvider can find (local) images from.- This shouldn't break anything, but symptoms of breakage would be no artwork being displayed in Android Auto or the media notification.
v3.2.0-rc.1
Important
Treat this as a pre-release for the next version. This is available as an APK on GitHub & via the "Open Beta" on Google Play (as of June 11).
This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).
Pretty big updates for audio effects & lyrics (via experimental & stable features).
🧪 Experimental Features
- New
Lyrics Providersfeature (Settings > Experimental Features > Lyrics Providers), enabling you to specify where we can pull online lyrics from. - New
ReplayGain&ReplayGain Pre-ampfeatures.
🎉 Added
- Automatically pull lyrics from adjacent files given it has the same file name &
.lrcextension..txtfiles do not work (most likely for security concerns). You can change the file extension to.lrcand it should get detected.
- Support for modifying the pitch of the track.
- Support for persisting the app volume across app sessions.
- New
Audio Effectsscreen (Settings > Experimental Features > Audio Effects) which contains the following:- Experimental Features:
Equalizer,ReplayGain,ReplayGain Pre-amp. - Stable Features:
Playback Pitch,Playback Speed,Restore App VolumePlayback Pitch&Playback Speedsettings will only show up when we navigate to this screen via the "Playback Options" sheet on the "Now Playing" screen.
- Experimental Features:
- New
Use Embedded Lyricssetting, which allows you to skip checking for embedded lyrics.- Currently located in the
Lyrics Providersscreen.
- Currently located in the
⚡ Changes
- Display space taken up by fonts in "Insights" breakdown.
🛠️ Fixes
- Edge case where lyrics weren't detected as synchronized (ie: it has
\n\r\nin the raw lyrics text). - Potential fix to
no such table: custom_fontserror.
🔠 Translations
- Updated
Françaistranslations by Mickael81 & @SertraFurr - Updated
Españoltranslations by @G4b-0 - Updated
Indonesiatranslations by @naturbrilian
⚙️ Internal Changes
- Upgraded to Expo SDK 56 / React Native 0.85.
- Replaced some third-party packages with our own implementations.
- Upgraded to
react-native-gesture-handlerv3. - Limit where
react-native-audio-browser's ContentProvider can find images from.
v3.1.0
Warning
For users coming from v3.1.0-rc.*, we have reverted the change where we added an unique constraint on the uri field for the Track entries, which caused the UNIQUE constraint failed: tracks.uri error to occur unexpectedly. It should be safe to update to v3.1.0, but creating a backup beforehand doesn't hurt.
New customizations (font & theme) & fixing an issue where reduced motion settings broke the seekbar & scrollbar.
Coming from
v2.x.y? See what's new in thev3.0.0change log.
🧪 Experimental Features
- New downsampling feature to get high sample rate audio files (ie:
352.8kHz&384kHz) working.- These files will get downsampled to
192kHzas that seems to be the max sample rate Exoplayer can handle before it throws an error. - This is enabled by default (though can be toggled off), with the plan of having this be the default behavior in the future in which the toggle will be removed.
- These files will get downsampled to
🎉 Added
- Support for custom themes with import & export support.
- An example of the structure of the
.jsonfile that will get imported/exported can be found in theCustomizationsdocs. - We support importing the structure in
.jsonor.txtformats.
- An example of the structure of the
- Support for custom fonts (
.otf&.ttfonly). - New
Show Navbar"Appearance" setting (enabled by default) to show a navbar when we click on the hamburger menu on the home screen since swipe gestures aren't that obvious. - New
Optimized Image Saving"Scanning" setting (enabled by default) which have tracks sharing the same artwork that's assigned to their album.- ❗It's highly discouraged to disable this feature as it will result in the app using a lot more storage due to saving images for every track.❗
- Note: The images saved when this feature is disabled won't be deleted even if you re-enable this feature and trigger a "Deep Rescan".
⚡ Changes
- Automatically ignore tags (ie:
[ti:]) in raw lyrics text. This should allow synchronized lyrics to work without manually removing these tags. - Require confirmation before triggering: "Reset" button on "Edit Metadata" screen, "Deep Rescan" feature, and "Purge Cached Waveforms" feature.
- This is to make it harder to accidentally trigger these consequential features.
- Automatically check for embedded lyrics for playing track when on the "Now Playing" screen and "Lyrics" enabled.
- The "Use Embedded" button is no longer needed and has been removed due to the computation for doing this is pretty light.
- Cap
Minimum Track Durationto 99s (1min 39s). - Make lyrics visibility preference persist across app sessions.
🛠️ Fixes
- Being able to delete an unrelated playlist if you changed the "Name" field and then went through the delete flow.
- Reduced motion settings breaking seekbar & scrollbar implementation.
- More specifically, this is from enabling
Remove Animations(Accessibility > Color and Motion) or settingTransition animation scaletoAnimation off.
- More specifically, this is from enabling
- Creating a playlist from importing a M3U file failing due to duplicate tracks in the list.
- Fix issue where high sample rate audio (ie:
352.8kHz&384kHz) couldn't be played. Requires enabling the downsampling experimental feature.- Look at #138 for more details.
🔠 Translations
- Updated
فارسیtranslations by @soorosh-st - Updated
Deutschtranslations by Jakob Staiger (staigerm62) - Updated
Catalàtranslations by @MiquelRoca08 - Updated
Françaistranslations by Mickael81 - Updated
Españoltranslations by @G4b-0
⚙️ Internal Changes
- New workflow to create dev builds via GitHub Actions which changes the display name to
Music (Dev)and adds an.devsuffix to the application id. - Update to PNPM 11.
- Make "Privacy Build" more resilient to PNPM major version changes.
v3.1.0-rc.2
Important
Treat this as a pre-release for the next version. This will only be available as an APK download as this is mainly to test for bugs for the latest features.
This should be sent for review to Google Play on May 22, giving enough time for some last minute translation updates and bug fixes (if they get reported).
Some bug fixes & improvements.
Coming from
v2.x.y? See what's new in thev3.0.0change log.
⚡ Changes
- Require confirmation before triggering the "Deep Rescan" or "Purge Cached Waveforms" features.
- Make it harder to accidentally trigger these consequential features.
- Automatically check for embedded lyrics for playing track when on the "Now Playing" screen and "Lyrics" enabled.
- The "Use Embedded" button is no longer needed as the computation for doing this is pretty light (we didn't want to automatically check due to potential delays/hangs).
🛠️ Fixes
- Creating a playlist from importing a M3U file failing due to duplicate tracks in the list.
v3.1.0-rc.1
Important
Treat this as a pre-release for the next version. This will only be available as an APK download as this is mainly to test for bugs for the latest features.
This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).
New customizations (font & theme) & fixing an issue where reduced motion settings broke the seekbar & scrollbar.
Coming from
v2.x.y? See what's new in thev3.0.0change log.
🎉 Added
- Support for custom themes with import & export support.
- An example of the structure of the
.jsonfile that will get imported/exported can be found in theCustomizationsdocs. - We support importing the structure in
.jsonor.txtformats.
- An example of the structure of the
- Support for custom fonts (
.otf&.ttfonly). - New
Show Navbar"Appearance" setting to show a navbar when we click on the hamburger menu on the home screen (on by default). - New
Optimized Image Saving"Scanning" setting which have tracks sharing the same artwork that's assigned to their album (on by default).- ❗It's highly discouraged to disable this feature as it will result in the app using a lot more storage due to saving images for every track.❗
⚡ Changes
- Automatically ignore tags (ie:
[ti:]) in raw lyrics text. This should allow synchronized lyrics to work without manually removing these tags. - The "Reset" button on the "Edit Metadata" screen now requires confirmation.
🛠️ Fixes
- Being able to delete an unrelated playlist if you changed the "Name" field and then went through the delete flow.
- Reduced motion settings breaking seekbar & scrollbar implementation.
- More specifically, this is from enabling
Remove Animations(Accessibility > Color and Motion) or settingTransition animation scaletoAnimation off.
- More specifically, this is from enabling
🔠 Translations
- Updated
فارسیtranslations by @soorosh-st - Updated
Deutschtranslations by Jakob Staiger (staigerm62) - Updated
Catalàtranslations by @MiquelRoca08 - Updated
Françaistranslations by Mickael81
⚙️ Internal Changes
- New workflow to create dev builds via GitHub Actions which changes the display name to
Music (Dev)and adds an.devsuffix to the application id. - Mark the
urifield on the "Tracks" table as unique. This shouldn't break anything as there shouldn't be multiple track entries sharing the same URI.
v3.0.1
Important
We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.
If things do break, doing a fresh install might fix the issue (though that means all data will be lost).
Warning
Some notes about potential issues.
- We may remove the Experimental Glyph Toy feature in an upcoming minor version (
v3.x.0) depending on our "fix" for the startup crashes caused by it are resolved (I've never experienced it) and whether we get reports of the expected behaviors not working (I don't have a Nothing Phone 3 to test this out). - If the app no longer finds any tracks in this update (but has in prior updates), these may give some hints to help debug or fix the issue:
- Check the "Save Errors" (
Settings > Insights > Save Errors) to see if it's a metadata issue. - Ensure there's nothing in the Allowlist/Blocklist and the "Min Duration" isn't some huge number in the "Scanning" settings.
- Restart your device to force MediaStore to rescan your device for media files (this may take a few minutes) and then try again.
- Playing the undetected file directly in the Google Files app might also update MediaStore.
- Check the "Save Errors" (
Bug fixes for some issues in v3.0.0.
- There are crashes / black screens that are (probably) caused by the animation package we use that we can't really fix, so we just have to wait and see for their updates.
Coming from
v2.x.y? See what's new in thev3.0.0change log.
🎉 Added
- New "Playback" setting to display favorite/unfavorite button on track items.
⚡ Changes
- Primary font variant of NType is now thinner (to fix the text issue mentioned below).
- Revised sleep timer design (active indicator & sheet when active).
🛠️ Fixes
- Missing text caused by using NType font as the primary font.
- Caused by allocated width for text not being correct due to incorrect font width calculation for "Headline" version of NType font.
- Error caused by splitting album artist string with duplicate artists (ie:
Artist 1, Artist 1). - Error from calling
AudioBrowser.getEqualizerSettings()before AudioBrowser has been initialized (doesn't matter if you were using the Experimental Equalizer feature). - Display special message on error screen when upgrading to a "modern" version of the app due to critical migrations (which have since been removed) never being applied.
- Potential fix to startup crashes caused by our Experimental Glyph Toy feature.
- Basically any Nothing device (that isn't the Phone 3) was calling
performOnServiceConnected, which emits an event to the app, but emitting the event was sometimes causing a crash due to the the things used to emit the event not existing.
- Basically any Nothing device (that isn't the Phone 3) was calling
🔠 Translations
- Updated
Françaistranslations by Mickael81 - Updated
Españoltranslations by @G4b-0 - Updated
Polskitranslations by @p-krystian
v3.0.0
Important
We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.
If things do break, doing a fresh install might fix the issue (though that means all data will be lost).
App redesign along with some requested features (non-experimental & experimental).
- Some features may require a "Deep Rescan" to be triggered for existing users.
❗ Breaking/Important Changes
- Removed experimental
Ignore Interruptionsfeature. Android will now manage auto focus.
🧪 Experimental Features
- Promote
Continue Playback on Dismissto stable (now found in "Playback" settings). - Promote
Smooth Playback Transitionto stable (now the default behavior). - Experimental Glyph Toy which supports interactions via the Glyph Button to simulate a limited set of media controls (as such, currently only supports Nothing Phone 3).
- ❗ This is untested (as I don't own a Nothing Phone 3), so the interactions via the Glyph Button (to play/pause/skip) might not work. As such, this might get removed in a future
v3.xrelease if things end up not working. ❗ - Documentation can be found here.
- ❗ This is untested (as I don't own a Nothing Phone 3), so the interactions via the Glyph Button (to play/pause/skip) might not work. As such, this might get removed in a future
- Experimental support for Android Auto (you can read more in the docs on the limitations/caveats).
- Experimental support for 5-band equalizer.
🎉 Added
- Support for organizing tracks by genre.
- ❗ You must use the
Deep Rescanfeature to get the genre for existing tracks. ❗
- ❗ You must use the
- New
Multi-Value Separators"Scanning" setting, enabling multi-artist & multi-genre support.- ❗ You must use the
Deep Rescanfeature to apply the separators to existing tracks. ❗
- ❗ You must use the
- BYO (Bring Your Own) Lyrics, supporting unsynchronized, line-by-line, and word-by-word formats.
- Lyric entries are created in the following methods:
- Via a form (supports manually importing from
.lrcor.txt). - Via manually pulling embedded lyrics on the "Now Playing" screen.
- Via a form (supports manually importing from
- Lyrics can be linked to multiple tracks.
- Lyric entries are created in the following methods:
- Layout options (list, grid, compact grid) on "Albums", "Artists", "Genres", and "Playlists" screens.
- Sorting support on "Albums", "Artists", "Folders", "Genres", "Playlists", "Current Artist", and "Current Genre" screens.
- The "Tracks" screen supports additional options.
- Playing from the "Folders", "Tracks", "Current Artist", and "Current Genre" lists will apply the sorting order to the queued tracks.
- Note: Only the tracks are sorted on the "Folders" screen.
- Support using NDot & NType as the primary font.
- ❗ This is not recommended due to legibility concerns and not supporting all languages. ❗
- New "onboarding" flow for new users which enables them to change some settings (ie: search directories, separators) before metadata scanning & saving starts for the first time.
- Support auto-filling album information from existing albums on the "Edit Metadata" screen.
- New
Quick Add to Queue"Playback" setting to display a new "Add to Queue" button directly on the track items next to the button to open the track sheet. - New
Drag Miniplayer Down to Clear Playback"Playback" setting. - New
Square Artwork"Appearance" setting.
⚡ Changes
- Various design adjustments (ie: "bottom actions", buttons, sheets, toasts).
- ❗ The navbar for the home screens has been removed. Use swipe gestures instead (you can customize the order of the tab and whether they show up in the settings).
- Drag-to-reorder actions can now only be done while your finger is on the "Drag Handle".
- Converted "Favorite Tracks" to a playlist, allowing the customizing of artwork & track order.
- Moved various settings (non-experimental & experimental) to other settings screens and to sheets on "Albums" & "Now Playing" screens.
- Changed how the "Hide Track" feature works.
- You now have to rescan the library to get the track that was hidden to show up in the app after unhiding it.
- Updated fonts.
- Show "action" to reveal track sheet for track results on the "Search" screen.
🛠️ Fixes
- Don't show "Disc 1" on the "Current Album" screen if the only disc is "Disc 1".
- Situation where artwork may not be found on a track due to incorrect image categorization in the metadata.
- Situation where artwork may not be found on
.flac/.m4a/.mp4files. - Weird issue where we encountered an infinite buffering loop on some files (so far reported happening on a single
.flacfile). - Weird issue where unrelated tracks get marked as invalid when we encounter an invalid track.
- Importing M3U file with relative paths in the "Download" directory not working on newer Android versions.
- Some UI components appear incorrectly with RTL.
- The artwork sheet being unusable on large screens.
🔠 Translations
- Translators now show up in the Language sheet.
- Updated
Polskitranslations by @p-krystian - Updated
Françaistranslations by Mickael81 - Updated
Dansktranslations by @friiskoch - Updated
हिंदीtranslations by @Earendel-lab - Updated
Españoltranslations by @G4b-0 - Updated
Türkçetranslations by @mikropsoft - Updated
日本語translations by @reindex-ot
⚙️ Internal Changes
- Enabled React Native's New Architecture (there may be some performance/visual regressions).
- Assign different version codes for each APK architecture.
- Upgraded to Expo SDK 55 / React Native 0.83 / React 19.2 from Expo SDK 53 / React Native 0.79 / React 19.0.
- Switch to using
uniwindfor styling. - Switch to using
react-native-audio-browserfor handling playback logic. - Removed
SYSTEM_ALERT_WINDOWpermission fromAndroidManifest.xmlin release build (used in debug build for React Native debug menu).
v3.0.0-rc.6
Important
We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.
If things do break, doing a fresh install might fix the issue (though that means all data will be lost).
The final "rc" release before we send v3 for review in ~2 weeks.
🧪 Experimental Features
- Also display artists, genres, and track list on Android Auto interface.
- Do note that Android Auto may not display all items in the list to prevent distracted driving.
🎉 Added
- Option to attempt to read from embedded lyrics (if they exist) on the "Now Playing" screen if no lyric entry exists for the current track.
- This is the yellow button next to the red "Manage Lyrics" button.
- We've also added a small "edit" button on the bottom right corner of the lyrics "area" to simplify the process of editing the displayed lyrics (as the returned embedded lyrics may not be formatted correctly).
- Note: Embedded lyrics won't be read when scanning from tracks due to the additional overhead from the extra work that needs to be done when the user may not use the "Lyrics" feature.
- Support for sorting the tracks on the "Folders" screen, with the sort options persisting when you play from a folder.
- Same sort options & behavior as sorting on the "Tracks" screen.
- Support for sorting the tracks on the "Current Artist/Genre" screens (as these lists are "unstructured"), with sort options persisting when you play from that list.
🛠️ Fixes
- Menu opening at incorrect position after scrolling.
- Playback sometimes doesn't work on app launch when it reuses a prior session (this can happen when you use Android Auto).
- Android Auto interface displaying stale data.
- Relaunching the Android app will update the data (which should be enough as you shouldn't be changing the lists while driving).
- Skipping to the next track with "Hey Google" not working.
- The artwork sheet being unusable on large screens.
🔠 Translations
- Updated
Españoltranslations by @G4b-0
⚙️ Internal Changes
- Reworked internal data fetching from database.
- Removed
SYSTEM_ALERT_WINDOWpermission fromAndroidManifest.xmlin release build (used in debug build for React Native debug menu).