Repository navigation
Releases
arzxsh 0.6.14
arzxsh 0.6.14 — the lyrics release
Built from a full evening of phone testing on 0.6.13: the lyrics page rebuilt around color and motion, a greeting that knows what time it actually is, and a Home that remembers where you left off.
Lyrics, rebuilt
- The background is now built from the song cover's own colors: two real colors extracted from the artwork in an opaque gradient. No more blurred photo wash, and nothing from the player behind shows through anymore (that was the doubled title and the faint repeated line)
- Bigger, bolder lines are the whole page. The current line fills bright as it's sung, karaoke-style, over a soft glow
- Line changes are smooth everywhere: incoming lines rise in, sung lines drift back and fade with distance, and the line under the cover on Now Playing crossfades instead of cutting
- Lines can no longer run off the right edge of the screen mid-word
Decluttered
- The "Synced · LRCLIB" label and the Sync +/- row are gone from the lyrics page. Sync offset now lives in the Now Playing ⋯ menu, where it's there when you need it and invisible when you don't
Loading, branded
- Pull to refresh now drops in the living arzxsh logo on its own chip while the list reloads; the stock spinner is gone. Lyrics loading uses the same logo instead of a spinner
Home
- The greeting knows the hour: after midnight it's a night greeting, not "Good evening". It rotates daily from a pool of lines, and uses your name when you've set one in your profile
- Jump back in covers now carry a progress ring showing how far you got in each song (recorded from real listening, on-device)
- At night, a "Made for tonight" shelf appears, built from the songs you actually play at night
Unchanged, verified
- Same signer as always (in-app updates install in place), same permissions: none added, none removed
- Update installs verified against the SHA-256 in version.json before installing
arzxsh 0.6.13
arzxsh 0.6.13 — the audit release
This build went through a full A-to-Z code audit (every file, line by line) and a Home rebuild. 68 audit findings fixed, zero skipped.
Home, rebuilt Spotify-style
- Greeting header (Good morning / afternoon / evening) with your avatar; the old hero card is gone
- Quick-pick grid: up to 8 chips from your recent plays, liked songs, playlists and downloads, one tap to play
- Shelves: Jump back in, Trending, Top Artists (circles), More trending, Your playlists (with cover mosaics), Made for You
Playlist + lyrics pages, redesigned
- Playlist page: banner card with a 2x2 cover mosaic melting into the background, centered title, big white play disc with shuffle / download / more around it
- Lyrics: persistent header with cover, title and artist; background washes from the artwork; lines fade with distance from the one being sung, Apple Music style
- Widget buttons now sit on proper discs and the artwork is rounded
New
- Interactive No Internet page: it listens for your connection, flips to "Back online" and reloads by itself, plus Retry, Downloads and Wi-Fi settings shortcuts
- Pull to refresh on every tab
- Update reminders: if an update is waiting and you haven't installed it, you get one notification, one more after 48 hours, and the prompt again at most once a day. It clears itself once you update
- No more source branding sprayed across the app, and no raw error text anywhere: failures show one plain line and a real Retry button. Artist pages that fail to load now rebuild themselves from search instead of dying
Audit fixes (the big ones)
- Downloads can no longer be saved truncated and called complete; a bad index entry can no longer wipe your downloads or playlists; deleting downloads can't be undone by a transfer still in flight
- Stop now cancels a song that is still loading, even mid-crossfade; calls and other media now pause playback properly (audio focus)
- Update downloads are verified against a SHA-256 hash before installing
- Artwork loading is capped and sandboxed (no runaway memory, no arbitrary local file reads); caches are bounded so long sessions stay light
- Dozens of smaller lifecycle, race and jank fixes: no more artwork reloads on every UI refresh, dead screens can't be rendered into, sleep-timer fade can't touch a released player
arzxsh 0.6.12
arzxsh 0.6.12
Fixes from phone testing:
- Now Playing background: the ambient wash was clipped into an oval. It now bleeds full-screen top to bottom, same as the lyrics page.
- EQ dialog: preset chips no longer crush into slivers on narrow screens; the row scrolls sideways and every label stays on one line. The Done button now wears your theme accent instead of the phone maker's green.
- Player controls aligned: shuffle and repeat state dots now overlay their buttons instead of stacking under them, and every transport slot is the same size, so the whole row sits on one clean center line.
- Lyrics come with downloads: when a song finishes downloading, its lyrics are fetched and cached too, so downloaded songs show lyrics offline.
- Settings Danger zone: Remove all downloads, Clear artwork cache and Clear lyrics cache now live in their own section at the bottom of Settings, and every destructive action asks first with a warning dialog. No more instant deletes from an accidental tap.
arzxsh 0.6.11
arzxsh 0.6.11
Faster downloads
- 3 downloads at once (was strictly one at a time), with the download index made safe against parallel finishes
- Segmented fetching: files 2 MB and up are pulled as 4 byte-range segments in parallel when the server offers ranges. If ranges misbehave in any way, it falls back to a plain single stream automatically
- Downloads reuse the stream resolver's known-good URL instead of resolving again (one less round trip per song), evict and re-resolve once if it went stale
- Bigger buffers and buffered writes throughout
Download quality (new)
Settings → Downloads & storage → Download quality: Same as streaming (default) / Data saver (~96k) / Normal (~160k) / High (best available). Data Saver mode still overrides it. Applies to downloads only, playback quality is set separately, as before.
The theme now themes everything
The accent used to only reach buttons and small controls. Now the page background, cards, surfaces and placeholders all mix the theme color into their neutrals, so a theme changes the whole app's atmosphere (wine-black, navy-black, forest-black), the active tab wears the accent, and the Home hero plus playlist headers fade from an accent-washed dark. Pick a loud color in Settings → Appearance and flip between Home and Library: everything moves.
Playlists
- Playlist page: circular Download button (same as album pages) plus "Download All" in the ⋯ menu
- Liked Songs: Download All row
- One shared download-all helper: skips local files, already-downloaded and in-flight tracks, and shows ONE summary toast instead of one per song
- Create playlist, promoted: a filled + New Playlist pill at the top of Library's Playlists section (it used to be a plain row buried under the list)
Security + bug sweep
- Manifest untouched: no new permissions, components or exported surfaces. Shipped APK permission set is identical to 0.6.10
- Segment validation is strict: HTTP 206 required, exact per-segment lengths, assembled file size verified; any anomaly throws to the plain-stream fallback, a partial file is never kept
- Theme surfaces converted to computed getters: no load-order capture issues; the app-bar avatar now reads the tinted surface getter instead of a hard-coded color
- Parallel-download vault writes synchronized (entries, status, index file)
Same permanent signing key as 0.6.6 onward: in-app updates install in place.
arzxsh 0.6.10
arzxsh 0.6.10 — touch + responsiveness fix, new tab motion
True in-place update for 0.6.7 / 0.6.8 / 0.6.9 users: same package (com.arzx.music), same signing key, no uninstall, no data loss. The in-app updater will offer it as usual.
The tab bug, found and fixed
Users reported having to tap a tab 3-4 times before it switched. The cause was not lag: the shared icon helper marked every glyph clickable, and the tab icons — which have no action of their own — were silently swallowing taps aimed at the middle of each tab. Taps on the label or padding worked, taps on the icon died. Fixed at the root: decorative icons no longer consume touches anywhere in the app (the same bug was eating taps on settings-row icons and the downloaded badge in track rows), and the tab bar's children are explicitly display-only — the cell is the button.
Responsiveness
- The glass blur behind the bottom bar used to run its full pixel work on the UI thread right at tab switches and scroll settles. Now the UI thread only draws the tiny snapshot; the blur runs in the background and swaps in when ready, and recaptures wait 500ms after things settle instead of landing in the middle of your next tap.
- The animated logo on Home redrew at 60fps nonstop; it now redraws at ~30fps, visually identical.
- Tapping the tab you are already on no longer rebuilds the whole screen.
New motion
- Warm tab switches (retained screens, which most taps hit) previously swapped in with no transition at all — the 0.6.9 tab animation only ran on cold builds. They now fade and slide in on the same spring pair.
- The newly selected tab's icon pops on a spring, the tab cell presses and springs back under your finger, and a ripple shows the exact moment a tap registers.
- All of it is transform/alpha on the existing spring system, nothing per frame, and Reduce Motion still turns it all instant.
Under the hood
- No new permissions (identical set to 0.6.9), not debuggable, same permanent signing key.
- Sleep timer, equalizer, widget and the Now Playing motion pack are untouched.
arzxsh 0.6.9
arzxsh 0.6.9 — the motion pack + glass rework
This is a true in-place update for 0.6.8 users: same package (com.arzx.music), same signing key, no uninstall, no data loss. The in-app updater will offer it as usual.
Motion (one spring system replaces every scattered fixed-duration tween)
- Mini player → Now Playing morph: one progress value drives the panel, the mini bar fading out in the first half and the player content fading in after halfway. Dragging the player down follows your finger; release settles on a spring (damping 0.95 / stiffness 350).
- Artwork breathing on springs: full size while playing, 0.92 while paused, on a heavy spring instead of a fixed 260ms tween.
- One shared press treatment: every transport button, mini player control and primary page button presses to 0.92 and springs back; play/pause answers fastest.
- Sheets (menus, queue, lyrics) spring up instead of just fading in; tab switches fade with a small 8dp slide.
- Lyrics: the active line grows slightly (1.04) and brightens as it activates; auto-scroll glides and yields the moment you touch it.
- Seek bar: the scrubber grows (~1.3x) while you drag it and springs back on release.
- Everything respects the Reduce Motion setting and the system animator scale: off means instant, never frozen mid-animation.
Glass, rebuilt
The old glass was a grey fill with a painted shine and read cheap. Now: the mini player and bottom bar frost over a real blurred snapshot of the content behind them, tinted by the current track's artwork color, with the fake sheen gone. Sheets are solid, Spotify style. Turning Glass effects off restores the exact solid surfaces from before.
Under the hood
- No new permissions (identical set to 0.6.8). Sleep timer, equalizer and the home-screen widget are untouched.
arzxsh 0.6.8
Three features: a sleep timer that fades out, a built-in 5-band equalizer, and a home-screen widget. Same package (com.arzx.music) and same signing key as 0.6.7, so for 0.6.7 users this is a true in-place update: the in-app updater downloads it and installs it over 0.6.7 — no uninstall, no data loss. This is the first true in-place in-app update in the app's history.
Sleep timer with fade-out
- Presets are now 10 / 20 / 30 / 45 / 60 minutes (Custom, End of track and End of queue kept), with the remaining time shown while the timer is armed
- In the last 30 seconds the volume ramps smoothly to zero, then playback pauses; your full volume is restored the moment you press play again — the app is never left silent
- The fade survives track changes, never fights the crossfade, and cancels cleanly on a manual pause, a timer change or stop
Equalizer
- Built-in 5-band equalizer plus bass boost, in Settings → Audio → Equalizer, attached to the player's real audio session and re-attached whenever the session changes
- Presets: Flat, Bass Boost, Treble, Vocal; moving any slider switches to Custom
- Settings persist and reapply on app start and on every session change; effects are released properly, never leaked across tracks
- Adds exactly one normal permission, MODIFY_AUDIO_SETTINGS (required to run audio effects on the app's own playback; it cannot record anything). RECORD_AUDIO stays gone.
Home-screen widget
- Current track title, artist and cover art, with previous / play-pause / next that reflect and drive real playback state through the same playback service as the media notification
- Tapping the widget opens the app; updates are pushed by playback state changes, never polled, and render work is coalesced so rapid skips cannot storm the launcher
APK: arzxsh-0.6.8.apk (release build, minified), SHA-256: e6fc7e1b4e2c2a34a121f446c8fc5e0c942e146fdfc8a0f8d3809943d0efcfc1
arzxsh 0.6.7
Play Protect cleanup release.
Why: Play Protect warned on install. Every build shipped so far was the DEBUG variant — package com.arzx.music.debug, debuggable, and carrying a RECORD_AUDIO (microphone) permission for the live visualizer. All three are fixed in 0.6.7:
- This release ships the proper release build: package
com.arzx.music, not debuggable, signed with the same permanent key as 0.6.6, so its identity is stable from here on. - RECORD_AUDIO is removed. The audiofx live visualizer is gone; the equalizer bars are now driven by playback state and position — they move while a track plays and freeze when it stalls. No microphone, no audio capture, nothing recorded.
- Everything else is unchanged: YouTube Music / Audius / local playback, downloads, lyrics, gapless + crossfade, themes, in-app updates.
Important — 0.6.7 installs as a NEW app. Because the package name changed (com.arzx.music.debug → com.arzx.music), Android treats 0.6.7 as a different app, not an upgrade of the old one. The in-app updater in the old app can download and launch this install, but Android will not replace the old app in place. Your data does not carry over — profile, playlists, history and downloads stay with the old app. After installing 0.6.7, uninstall the old arzxsh (com.arzx.music.debug). From 0.6.7 on, updates install in place through Settings > Check for updates, as they should.
arzxsh 0.6.6
Signing fix release.
Until now, every CI build was signed with a fresh throwaway Android debug key, so Android refused to install any update over an existing install ("App not installed as package conflicts with an existing package"). From 0.6.6 on, every build is signed with one permanent keystore, so the in-app updater works.
Existing users: uninstall the old version once, then install 0.6.6. The one-time uninstall is unavoidable because the signing key changes; local data (profile, playlists, history, downloads) is wiped by that uninstall. After 0.6.6, all future updates install in place through Settings > Check for updates.
No feature changes in this release.
arzxsh 0.6.5
arzxsh 0.6.5
Lyrics never truncate. The Now Playing lyric line above the title used to cut off mid-sentence ("The industry can hate me, fuck 'em all and ..."). It now wraps fully, up to 3 lines, with the same glow and the same synced timing. The lyrics preview card (current + next line) follows the same rule. The full lyrics view already wrapped and is unchanged.
Charts pinned to Bangladesh. Home's trending asked YouTube Music for the global chart in a US context, which is why it led with a Hanuman Chalisa video and an India-weighted mix. The charts request now asks for Bangladesh in both region fields (chart country selection + context). Note: YouTube's charts surface currently answers the Bangladesh selection with the global chart from datacenter networks, so the full effect lands with your phone's Bangladesh connection; personalization by your taste remains the upcoming on-device algorithm's job.
Everything from 0.6.4 carries over: the fixed in-app updater (this release is its first live test — 0.6.4 should offer you 0.6.5), corner profile photo + name, roomier Settings, and the living logo on Listen Now.