Mufify 1.0.1
An offline-only music player for Android. Plays the files a streaming service
will not — FLAC, ALAC, and whatever else is already on the phone — and shows you
what they actually are.
Install
Download mufify-1.0.1.apk below and open it on the phone. Android will ask
you to allow installing from this source; that is expected for an APK that did
not come from a store.
Upgrading from 1.0.0 or 0.1.0 works in place — this build's version code is
higher, so nothing needs uninstalling.
Since 1.0.0
One fix, which is the whole point of this release.
The tab bar no longer draws over the queue. Open the queue and the four tab
icons sat on top of its rows. The app's own stacking order was not the problem —
it had the queue at the top and still does. zIndex is simply not the whole
story on Android: Z is sorted first and the order zIndex produces is only the
tie-break, so anything the platform elevates outranks a surface the layout puts
above it. react-navigation's bottom bar ships an elevation of its own, and that
was enough.
Two changes, because one of them should not have to be right on its own. The
bar gives up its elevation — it is a surface, not something floating over one —
and the full-screen sheets now carry Z rather than only a zIndex, so the
stacking order the app declares is the one Android draws.
What it does
- Playback of local files, lossless first-class, with background playback,
lock-screen and notification controls, and a persistent queue. - Five shuffle algorithms, each explained where you pick it.
- Local playlists with drag-reorder and cover mosaics, plus liked songs.
- On-device listening statistics by week, month and year — top tracks,
artists, albums and playlists, with a Wrapped summary. - The technical truth of a file on a monospaced spec strip: container,
sample rate, bit depth, bitrate, channels, size. - Turkish and English, dark and light.
- A statistics switch, if you would rather it kept no history. Turning it
off stops new writes and leaves what is already recorded alone. - An animation speed setting — Normal, Fast, or Instant.
No network, and it is enforced
There is no network layer. Not a disabled one, not one behind a setting.
This release ships without the INTERNET permission — plugins/withOfflineOnly.js
strips it from the release manifest, so a change that introduces a network call
does not fail review, it fails to work. Check it yourself:
aapt2 dump permissions mufify-1.0.1.apk | grep INTERNET # prints nothingACCESS_NETWORK_STATE does survive, pulled in by a dependency. It cannot open a
connection — that needs INTERNET, which is absent — but Android renders it as
"view network connections", so it is worth naming rather than leaving you to
find it.
Worth knowing
- Signed with a debug key. Fine for sideloading, not fine for the Play
Store. It also means a future Play-signed build cannot replace this one
without uninstalling first. - The APK is universal — every ABI in one file, which is why it is ~128 MB. What
gets installed is a fraction of that. minSdkVersion26 (Android 8.0), targets 36.- No favourite button in the media notification:
expo-audiodoes not expose
MediaSession custom actions. The reasoning and the options are in
docs/adr/015.