Repository navigation
Releases: OreoMuncher45/Auris
Release list
Auris v2.2.20
BIT-PERFECT HAS BEEN ACHIEVED 🔥
- Offline mode: It's a real switch now and only counts as online when the connection is validated. It claims downloaded files for the whole queue and skips tracks with no copy without burning retries. There's also a banner and a Quick picks shelf.
- Cache overflow fixed: Startup purges stray temp files, so FLAC upgrades work again.
- Missing artwork: A white-only mark replaces the full-colour logo on Discord, notifications, the lock screen and Android Auto.
- Seamless upgrades: The app measures the offset between renditions before blending. If it can't align them, it keeps the original playing, and a failed blend no longer clicks.
- Bit-perfect mode: A DSP bypass plus Android 14's bit-perfect mixer request for USB, routed around AudioFlinger. Crossfade is off while it's on, and the Settings crash is fixed.
- Exclusive USB output: It writes PCM straight to the DAC, with UAC volume control, DAC info and a DAC monitor.
- Dolby Atmos: Requests now reach the decoder, and there's a new Atmos quality rung you can pick in the Wi-Fi and mobile selectors.
- Addons and Automix: Both work without the YouTube addon or a reported duration. Read-ahead checks every source ranked above YouTube, and the conversion-queue source is removed.
- Bluetooth: 24-bit sources no longer drop to 16-bit inside the app. The pipeline readout also gets a 0–100 Fidelity score.
- UI: The Now Playing sheet no longer overlaps, there are four separate status-line switches, and the liquid-glass navbar unfolds on Search.
- Removed Herobrine
- Sad songs now available in lossless sadness
Auris v2.2.18
Everything since 2.2.17.
Player
- Restored the artwork mesh backdrop; automatic ink now follows the sleeve's secondary colour and flips light or dark with the cover.
- Tighter card player with no empty lyric or volume slots; the one-line lyric strip can be hidden in Customisation.
- Text glow now covers the title's shadow too, a lyric-bloom switch was added, and "Never play AI music" moved to Settings beside Blocked artists.
- Flow's station clip plays behind the Radio banner and as the Home tile.
Playback
- [EXPERIMENTAL] New opt-in Seamless quality upgrades (Settings -> Playback, off by default): when a better copy is found mid-track, it starts on a second decoder and blends in over two seconds instead of cutting the audio. It stays off until you confirm the risk dialog; Listen Together and failed preloads keep the direct swap.
- Idle DSP is bypassed, canvas clips stop when paused or backgrounded, low-RAM devices default to reduced motion and blur, and the notification lyric ticker runs at 1s.
- Basically, did hella battery fixes, phone won't overheat now.
Sources / addons
- The bundled Tidal and Hi-Res Lossless addons are gone; saved rows of those kinds are dropped, and your own links stay removable.
- Auris-locked addons now receive the host key and response headers; adding the gated source no longer fails with HTTP 403.
Updates
- Rebuilt releases with the same version number are now detected, and the update label shows the release tag.
- Server-driven announcements can show an in-app notice without a release.
pls star the repo
i'm tired boss
- Also Removed Herobrine
Auris v2.2.17 — addon fixes, search pill, average-art ink
Minor update over 2.2.16.
Sources / addons
- Only the sources Auris ships are "Auris Addon", "Auris Hi-Res Lossless Addon" and "Auris Qobuz Addon", and only those are permanent.
- A link you add yourself now keeps its own name (or its host) and can always be deleted — including pasted Tidal-compatible addresses that used to turn into unremovable duplicates of the bundled source.
Search
- Tapping the search pill a second time now docks the field on top of the keyboard instead of pushing it to the middle of the screen.
Now Playing
- "Album Art Color" now uses the artwork's average colour, nudged brighter (or darker on light sleeves) for legibility, instead of complementary colours.
Performance
- Faster first launch: background init no longer blocks, the image-cache wipe and Downloads decode moved off the main thread, Explore/Radio load on demand, and the update check waits until the UI is up.
Install
-
Package
com.dev.bitchord, versionCode 79, versionName 2.2.17; installs over 2.2.16 without uninstalling. -
Most phones:
Auris-v8a-release.apk. Older 32-bit devices:Auris-v7a-release.apk. Emulators/Chromebooks x86_64:Auris-x86_64-release.apk. If unsure:Auris-universal-release.apk. -
Signed with the same key as previous Auris builds.
-
Removed Herobrine
Massive Update + Rebrand
Massive Update + Rebrand
BitChord Next is now Auris. Same app, same package (com.dev.bitchord), same signing key — install this straight over your current version. No uninstall, no lost data.
This update
A new name
- Rebranded to Auris across the app, launcher icon, About and update screen.
- Everything you had — library, downloads, playlists, settings, scrobbles — carries over untouched.
Apple Music-inspired interface
- Home, Explore and Library rebuilt around Apple Music's shelves, cards and typography: bigger artwork, calmer headers, consistent spacing, one coherent accent system.
- Radio is now a tab of its own, with stations and a seed row taken from what you actually played recently.
- Replay lives as the leading story card on Home. Library cards are now opt-in: Customization → Library → “Replay cards in Library.”
- Transport, Now Playing layout and the navigation bar keep the look you already approved.
Now Playing ink from the album art
- “Use artwork” no longer just flips between black and white. The player now measures the sleeve's blurred average colour, picks a richly tuned complement of that hue, and chooses its lightness against the lower band's luminance so text and controls stay readable.
- Monochrome sleeves get a warm white or warm near-black instead of inventing a hue that isn't there.
Lyrics colour control
- New Customization → Now Playing → Lyric line colour picker, alongside buttons, seek bar and title. Fixes the one-line lyric strip going dark on bright artwork; leave it on “Artwork” to keep following the sleeve.
Support
- Crypto rails only: Nano (XNO), USDC on Base, Zcash (ZEC). Addresses copy with one tap.
Everything since v2.2.13
2.2.14 — Customization, artists, AI disclosure
- Customization hub for the player: button, seek bar and title colours, transport glyph set, and a smoothness slider for the transport animation.
- Artist pages with real listening stats and discography.
- Blocked artists: block from an artist page; blocked artists are skipped in autoplay and radio.
- AI artist disclosure: artists identified as AI-generated are labelled, and tracks carry an AI badge while they play. This is informational only — it does not change playback, and you can block those artists if you want them gone.
- Android Auto queue ordering fixes.
2.2.15 — Audio and playback
- In-process JamesDSP audio processing on Android: equaliser, bass boost, stereo width and reverb running inside the playback service.
- Polygon transport buttons and a smoother transport.
- Flow fixes: queue building and resume behaviour.
2.2.14 and 2.2.15 were not published as separate GitHub releases; their changes are included here.
Install
- Most phones (arm64):
app-dev-arm64-v8a-release.apk - Older/32-bit devices:
app-dev-armeabi-v7a-release.apk - Emulators and x86 tablets:
app-dev-x86_64-release.apk - Not sure, or sideloading on anything:
app-dev-universal-release.apk
Signed with the same fork key as every previous release, so it updates in place.
- Removed Herobrine
BitChord Next v2.2.13 — inverted icon, no glyph halos
Re-release of 2.2.13 with the inverted circular badge as the launcher icon. The alpha box is trimmed and the badge fills the adaptive mask diameter, so there is no transparent margin or padding ring. versionCode 75 / 2.2.13; same signing key.
What changed
- Inverted icon:
Inverted.pngcropped to its 811 px alpha box, scaled to 683 x 683 px on the 1024 adaptive canvas (72/108 dp), and centered. - Dark badge background: adaptive background and legacy icon fill use
#232120, sampled from the badge. - No transparent margins: square and round launcher WebPs are full-bleed on the badge background.
- Glyph halos removed: player glyphs have no radial disc behind them on dark or bright artwork. Text keeps its soft adaptive shadow.
- Everything else from 2.2.13: full adaptive player ink and 460 ms fade, folding-nav crystal fix, keyboard-flush search field, Octave removal, Qobuz how-to dialog and single-note home mark.
Verified
:app:assembleDevDebug— clean.- Flow Debug APK CI build green for this tag.
- APK reports versionCode 75 / versionName 2.2.13 (
com.dev.bitchord). - Release APK foreground bbox confirmed 683 x 683 px (66.7% = 72/108 dp).
- Desktop Release workflow green.
- No emulator available; final launcher and player appearance need an on-device check.
| APK | For |
|---|---|
app-dev-arm64-v8a-release.apk |
most phones |
app-dev-armeabi-v7a-release.apk |
older 32-bit devices |
app-dev-x86_64-release.apk |
x86 emulators |
app-dev-universal-release.apk |
anything |
- Removed Herobrine
BitChord Next v2.2.12 — folding glass nav and adaptive player ink
The bottom bar folds like Convx's: the four tabs shrink onto the selected one, Search detaches into an inline glass field, and the mini player docks into the row between them. Now Playing samples the artwork's lower control band and flips its icons to near-black over bright covers. The folding bar needs Liquid Glass on and defaults to on there; with Liquid Glass off the app keeps its non-glass bars. versionCode 74 / 2.2.12.
What changed
- Folding glass nav bar: one layout folds between the expanded four-tab bar and a collapsed selected-tab + Search circle, driven by page scroll.
- Inline search: first tap on Search opens the Search page; a second tap grows the glass field in the bar itself, with a source toggle (YouTube/Library) and a now-playing mini accessory.
- Legacy layout: the previous glass bar and top-bar search field stay available under Settings → Liquid Glass → Folding nav bar, and are what the app uses while Liquid Glass is off.
- Adaptive Now Playing ink: artwork luminance for the lower 50% band is sampled from the existing palette decode; icons animate to
#0B0B0Cover bright covers and stay white otherwise. - Convx's continuous-shapes library was not ported; capsule shapes use
RoundedCornerShape(percent = 50).
Verified
:app:compileDevReleaseKotlin— clean.:app:testDevDebugUnitTest— 1123 tests run; the same 16 pre-existing failures (GeniusTest,LocaleStringsTest) as the baseline.- APKs confirmed versionCode 74 / 2.2.12 (
com.dev.bitchord). - Flow Debug APK CI build green for this tag.
- Lint: the project's pre-existing baseline errors remain; no new findings reported in the changed files.
| APK | For |
|---|---|
app-dev-arm64-v8a-release.apk |
most phones |
app-dev-armeabi-v7a-release.apk |
older 32-bit devices |
app-dev-x86_64-release.apk |
x86 emulators |
app-dev-universal-release.apk |
anything |
- Removed Herobrine
BitChord Next v2.2.11 — AirPlay row and Apple-style icons
The output/party capsule is now a single AirPlay button. Listen Together moved into the Audio Output sheet and the player's own menu, and Now Playing now uses one hand-built icon family. versionCode 73 / 2.2.11.
What changed
- Bottom row: lyrics · AirPlay · queue. The AirPlay button opens Audio Output.
- Queue open: the centre returns to the existing shuffle/repeat/autoplay capsule.
- Audio Output sheet: a Listen Together row sits with the outputs. It shows the party size and opens the member drawer when in a party; otherwise it opens the create/join page.
- Player menu: the same Listen Together row, player-only. In a party it opens the member drawer, not the settings page.
- Icons: new hand-built vectors for AirPlay, the lyrics quote bubble, queue, ellipsis, star, play/pause, volume low/high/muted, shuffle/repeat/autoplay. The outline star has deeper inner notches and is drawn larger in the like button.
- No SF Symbols assets were copied or redistributed.
Verified
:app:compileDevReleaseKotlin— clean.:desktopApp:compileKotlin— clean.- APK confirmed versionCode 73 / 2.2.11 (
com.dev.bitchord). - Flow Debug APK CI build green for this tag.
- 1148 unit tests run; the same 16 pre-existing failures (
GeniusTest,LocaleStringsTest) as the baseline. - Lint: the project's 283 pre-existing baseline errors remain; no new findings in the changed files.
| APK | For |
|---|---|
app-dev-arm64-v8a-release.apk |
most phones |
app-dev-armeabi-v7a-release.apk |
older 32-bit devices |
app-dev-x86_64-release.apk |
x86 emulators |
app-dev-universal-release.apk |
anything |
- Removed Herobrine
BitChord Next v2.2.5 — glass on, account button live
Three fixes over v2.2.4, all the same kind of mistake: something that looked right and was never exercised.
The Convx glass was invisible
v2.2.4 shipped the whole Convx engine behind AppSettings.liquidGlass, which defaults to false, and the backdrop is only recorded when that toggle is on. So the port compiled, shipped, and rendered pixel-identically to the build before it.
The toggle makes sense in the Legacy shell, where glass is an alternative to Haze. It does not make sense in a shell whose entire visual identity is the material. The Apple shell no longer consults it — glass is always on there. This is why the app looked unchanged before; now it should not.
The account button did nothing
AppleCircleButton stacked pointerInput(detectHorizontalDragGestures) ahead of clickable. The drag detector consumes the down event, so the clickable downstream in the chain never saw a clean tap. Only the account button was affected — it is the only one passed a swipe handler.
Tap and swipe are now distinguished in one pointer handler, with the decision extracted to ProfileGestureTracker so it is testable without a renderer.
The mini player's tap is verified
Now covered by a real test rather than by inspection.
Tests
ProfileGestureTest— the tap/swipe decision, any host.AppleChromeInteractionTest— drives the real composables under Robolectric: a tap reaches its callback.
Known gap, stated plainly: two of those interaction tests still fail — clicking an account-menu row, and the swipe gesture. Both report expected:<1> but was:<0>. I removed the dismiss scrim entirely and the row still does not fire, so my interference theory was wrong and I do not have the cause. Modifier.clickable on a Text is ordinary Compose and the equivalent test on a plain Box passes, so this is more likely my test targeting the wrong semantics node than a real defect — but that is a guess, and the account menu rows are the one thing in this release I cannot vouch for.
CI on this tag
| Workflow | Result |
|---|---|
Flow Debug APK (:app:assembleDevRelease, 4 ABIs, minified) |
✅ |
Check |
❌ 18 failures: 16 pre-existing (GeniusTest, LocaleStringsTest) + the 2 above |
Android Release APK (signed prod) |
❌ keystore |
The signing failure is KeytoolException: Tag number over 30 is not supported on bitchord-release.jks, from a repo secret. It also fails on v2.2.4 — pre-existing, and it blocks every signed prod build on this repo.
APKs here are the Flow Debug APK output, verified as com.dev.bitchord versionCode 64 / 2.2.5 with the ported glass and the new gesture code present in the dex.
Still to come
This is the glass engine, not the full Convx UI. Convx has 515 UI files and much of the rest is bound to its own data layer. The Apple shell's page bodies are still BitChord's own behind Convx chrome — Home/Flow, Library, Search, Settings and Now Playing are not yet ported.
- Removed Herobrine
BitChord v2.2.3-convx
Build 3 of 2.2.3 — replaces build 2, which shipped the opposite of three of its aims. Same versionName, versionCode 65, installs over the top.
What build 2 got wrong, reverted
Defaulting the sleeve layout shipped smaller art, a full-screen mesh and wider transport gaps. All reverted: the full-bleed banner is the default again, the sleeve is back to the width it always was, and the flip experiment is withdrawn.
The artwork: measured, not guessed
The banner's still artwork now scales to 123.4% of the width — a full-width banner cropping ~11.7% off each side — about a top-centre origin, drifting down 1.6% of the width. Two independent measurements of the reference converged on that same number; it is in the transform, not eyeballed. Slightly cropped is the point: it's the look Apple's own player has.
The mesh, nudged down
The mesh's dissolve seam now sits 16dp below the banner's bottom edge — the wash reads as pushed down the screen, not cut at the artwork's boundary.
The transport: measured geometry
Pause glyph 38dp (0.60× the measured size), and the three buttons at the measured centres — skips at 23.4% and 76.5% of the width, a fixed 32dp between boxes. Build 1 shrank the icons but left SpaceAround stretching the emptiness across the row — that was the gap you saw. Touch boxes unchanged; the buttons hit exactly as before.
Carried from build 2
Apple's lossless glyph beside "Upgrading Quality" / "Lossless" / "Hi-Res" (Atmos and High Quality untouched, exactly as upstream v1.8.1), the star for Liked, the real output-device glyph in the pill.
Rejected: the second analysis's removals
Playing-from, the codec lines, the lyrics preview and the output pill stay. They are on your own do-not-modify list, and two of them are the lossless badge's data source and the output control fixed two builds ago.
Also diagnosed this session, saved for the next
The playback report (songs landing paused, no buffering shown) is diagnosed in the plan doc from your log: ~23s of resolver timeouts on track start — none of it "buffering", which is why nothing showed — and the lossless audio-switch path preparing a source without starting it. Fixes are scoped; they are the next session's first job.
Verified
Compile clean; 1092 tests, the same 16 pre-existing failures as the baseline; CI green; APK confirmed versionCode 65 / 2.2.3.
| APK | For |
|---|---|
app-dev-arm64-v8a-release.apk |
most phones |
app-dev-armeabi-v7a-release.apk |
older 32-bit devices |
app-dev-x86_64-release.apk |
x86 emulators |
app-dev-universal-release.apk |
anything |
- Removed Herobrine
BitChord v2.2.4
The Apple Music shell's glass is now Convx's own engine, ported as source rather than reimplemented.
What changed
The shell was drawing its glass through an Echo-Music-derived configuration that had drifted from Convx's engine — about 280 lines apart in DrawBackdropModifier.kt alone — so the refraction and rim maths was not the one the UI was designed against. This replaces it with Convx's implementation, ported verbatim except for the package name:
ui/components/backdrop/**— 42 files, 5,141 lines. This includes the twelve that were missing entirely:GlassPool, the freeze and static-region backdrops, and the catalog widgets.ui/components/GlassEffect.kt—GlassEffectConfig,liquidGlass,LocalAppBackdrop, and the rim/text colour resolution.ui/theme/GlassTintTokens.kt— glass base, content, hero and pluck colour maths.ui/theme/ConvxOuterDarkRim.kt,ui/theme/ColorHueless.kt.
The engine stays byte-identical to upstream so it can be re-synced by re-copying and rewriting the package. The four pieces of app-level context Convx keeps outside the engine are supplied in ConvxBackdropCompat.kt rather than by editing it.
LiquidGlass.kt keeps its one-argument Modifier.liquidGlass(shape) as a delegate, so the Apple tab bar and mini player pick up the ported glass without touching their call sites.
Two behaviour bugs fixed
- Tab mapping was positional. Radio opened Library and Library opened Search. Apple's Search is detached from the capsule in its own layout, and BitChord's radio is its mood/genre station browse, so neither has a one-to-one legacy tab. Library now maps to Library; Search is reachable only through
onSearchSelected. - The account button had no menu. Settings, Listen Together, Account Scrobbling, Discord and Spotify were unreachable from the Apple large title. It now opens them.
NOTICE records the vendored code and the adaptations, as GPL-3.0 §5(d) requires.
Verified
:app:compileDevDebugKotlinclean, no new warnings:shared:jvmTestpasses:app:testDevDebugUnitTest— 1073 tests, 16 known pre-existing failures (GeniusTest,LocaleStringsTest), no regressionstools/verify_ui_parity.py --strict— no gaps
The native build could not run on the commit host: the NDK's x86_64 clang segfaults under qemu on that aarch64 machine, which reproduces on the unmodified tree. The APK build is left to CI.
Still to come
This is the glass foundation, not the full Convx UI. Convx has 515 UI files and much of the rest is bound to its own service and data layer; the remaining port is screens, not rendering. The Apple shell's page bodies are still BitChord's own behind Convx chrome.
CI status on this tag
| Workflow | Result |
|---|---|
Flow Debug APK (:app:assembleDevRelease, all 4 ABIs, minified) |
✅ success |
Check (:app:testDevDebugUnitTest) |
❌ 16 pre-existing test failures |
Android Release APK (signed prod) |
❌ keystore error |
Both failures predate this change and reproduce on v2.2.3:
- Tests —
1073 tests completed, 16 failed, the same 16 (GeniusTestandLocaleStringsTest) as the unmodified tree. Not introduced here. - Signing —
KeytoolException: Failed to read key from store "bitchord-release.jks": Tag number over 30 is not supported. The keystore comes from a repository secret and was not touched by this change; the same error failed v2.2.3's run of this workflow in the same way.
The APKs attached here are the ones from Flow Debug APK, which is the workflow that built v2.2.3's release assets. They are minified assembleDevRelease builds for arm64-v8a, armeabi-v7a, x86_64, and universal, verified as com.dev.bitchord versionCode 63 / versionName 2.2.4 with the ported glass classes present in the dex.
The keystore failure is worth fixing separately — it currently blocks every signed prod build on this repo.
- Removed Herobrine