Changelog
Every release of StarSonic. A version is year.month.release — 2026.8.1 is the first
release of August 2026 — so the number tells you how old your build is at a glance.
StarSonic is on the beta channel of the F-Droid repository. It is not offered as the suggested version: installing it is a choice you make from the version list, and it should stay that way until it has been used against more servers than the author’s.
2026.10.1 — beta, 1 October 2026
An icon on Android 5 and 6
On Android 5 and 6 StarSonic had no icon in the launcher. It has one now, the same one newer versions show.
No more crash with accessibility services on some custom ROMs
Some custom ROMs present themselves as Android 14 while running Android 13 underneath. On those, StarSonic closed whenever an accessibility service was on: a screen reader, a password manager, an automation app. It stays open now; on every other phone nothing changes.
2026.9.4 — beta, 20 September 2026
An ask to rate the app, on Play
The Play build may now ask, every once in a while, whether you would rate StarSonic — never on the first sync after you add a server, never during onboarding, and never while another sheet on screen is already asking something. It only comes up after a sync that actually found more music than your library already had, so the ask follows something going right rather than interrupting whatever you were doing. The store-free build has no Play Store listing to be rated on, so it never asks at all.
2026.9.2 — beta, 2 September 2026
A new look for the icon
The mark is one blue gradient from end to end now, where it used to be dark ink with a blue accent on it. And it sits where the eye reads it as centred: the family framed its icons by a rule worked out on paper until now, and that rule has been replaced by one measured against a person moving each mark until it looked right.
The icon is finally a drawing rather than a picture of one: it scales to any screen, has a proper themed version, and matches the rest of the family.
2026.9.1 — beta, 1 September 2026
A new icon
The mark is the same one. What changed is how it is placed: every app in this family now frames its mark by a single rule — centred so the space around it is even all the way round, and stopping the same distance short of the circle a launcher masks with. Ten icons that were each framed by hand now line up with one another on a home screen.
The blue is a gradient rather than a flat tone, and there is a dark copy of the icon for dark surfaces. Nothing else changed in this release.
2026.8.12 — beta, 29 August 2026
No byline on the Info tab
The author’s name and their personal site have come out of the Info card. What it says now is what the app is, which version you have, and where its own site is — which is what anybody opens that screen for.
2026.8.11
The shared design, where StarSonic uses it
The cards for sending feedback and reading replies — the one part of this app drawn with the newer toolkit — now use the design these apps share: paper and slate, a single accent, thin rules instead of shadows. The rest of StarSonic is unchanged.
2026.8.10
Caught up with the rest of the family
StarSonic had been running on shared components twenty-three releases old — further behind than any of the sibling apps. What you can see of the catch-up is the Info screen: the cards for sending feedback and reading replies are now drawn on the same panel as every other screen in these apps, instead of on their own older one.
Nothing about playback, servers or your library changes in this release.
2026.8.9
It no longer stretches on a tablet
StarSonic ran on a tablet before this — it just did not look like it had been designed for one. Drawn on a big screen, a paragraph went from one edge of the display to the other at about a hundred and ten characters a line, the bar at the bottom saying “Nothing playing” was as wide as the tablet, and a volume slider was a line drawn right across it.
Text and controls now stop growing at a width you can actually read, and sit in the middle of the screen. It is a limit rather than a rearrangement: nothing moves to a different place, and on a phone nothing changes at all, because a phone was never wider than the limit.
The one thing deliberately left to fill the whole width is the music. Shelves of covers and the browse list still use the entire screen, because more albums across is the point of having a bigger one.
2026.8.8
An Info tab
Every other app in this family has one, and StarSonic was the odd one out. It is the same three cards in the same order, so that somebody who uses two of them looks in one place: what the app is and which version you are running, what it does with your data, what it will not do, and every release so far.
The middle one is worth reading once. The app has no account, no server and no analytics — every artist, album and cover it shows came off a machine you run, and nothing about what you listen to leaves the phone, because there is nowhere for it to go.
The fourth card is the changelog, on the phone, offline. Until now the only way to find out what changed was this page.
What it will not do
The same card lists the limits plainly, because each one costs somebody an evening otherwise: this is a beta and is never offered as the suggested version; five kinds of server are spoken; the catalogue is copied onto the phone rather than browsed, so the first scan of a big library takes a while and everything after it is instant; Airsonic has to be configured to store your password in a form it can decode, which is a setting on the server and not something an app can work around; beets has no playlists; and casting is in the Play build only.
The bar at the bottom is now the one the other apps have
A pill that is only as wide as the icons in it, hovering over the music, with no labels. It was a full-width bar with labels for one release. Nothing moved that you have to relearn — the tabs are in the same order, with Info added at the end.
2026.8.7
The release about what you see when you open it.
It opens on something to play
StarSonic used to open on the browse tree: the root of a file system, one row per server, then Artists, Albums, Playlists, Tracks. That answers “what is on the server”, which is a real question and is not the one anybody has when they open a music app.
There is now a Home tab, and it is the first thing you land on. Shelves of covers: what you last played, what has recently been added to the server, your playlists, what the server says you play most, what is downloaded onto the phone, the artists you have most of, and one shelf of whatever none of the others surfaced. A shelf with nothing in it is not drawn at all, so a server with no playlists never shows an empty row of them.
All of it comes from the copy of the catalogue on your phone, so the screen works with the server switched off. And none of it is a recommendation in the way that word is usually meant: there is no taste model, no profile, nothing counted and nothing sent anywhere. It is what your server already recorded, plus what this phone has already played — which the phone keeps to itself, twelve records deep, and forgets when you clear the app’s data.
Four tabs, on a bar that floats
Home, Search, Library, Settings. Browsing is unchanged; it is what Library now means.
The bar itself is a rounded bar drawn over the music rather than a strip fenced off beneath it, with the mini-player sitting above it. Lists pass underneath and end above it, so nothing is ever stuck behind the bar — the space they leave is measured from where the bar actually is, on your device, at your font size, rather than being a number somebody typed in once.
Covers you can tap
A cover on Home opens that record. So does a result in Search: tapping an artist or an album there had done nothing at all since the tab was written, because there was nowhere to send them yet.
Also fixed
- “Recently added” could not have existed before this release. The date each album appeared on the server arrived with every sync the app has ever done and was thrown away at the door — the field was filled in with a zero and a note to come back to it, in 2022. All five kinds of server report it, in two different formats, and both are now read.
- A pale rectangle was drawn behind the title at the top of every screen, and another behind the button next to it. One wrong attribute in a layout, inherited from before this app was picked back up.
- Rescan is on every tab now. It lived on the browse screen, which meant the one place it could not be reached from was a Home with nothing on it yet — exactly where you would go looking for it.
- The notification shown while your library is being scanned had the icon Android Studio puts in a new project: a small house, in your status bar, with StarSonic’s name next to it.
2026.8.6
The release that makes the app usable from a fresh install. Before this one you could install StarSonic, and then be stuck.
You can add a server from inside the app
There was no way to. The only route was Android’s own account list, under Settings, and nothing in StarSonic pointed at it — so the first screen was empty, with nothing to press. Now it explains what the app is for and offers a button, and the login screen asks which kind of server you have instead of assuming.
And it scans it straight away
Adding a server used to switch background syncing on and stop there. “On” means when Android decides, which after a fresh install is not soon — so you typed your password in and watched an empty library with no way to hurry it. The scan now starts the moment the server is added, there is a progress bar while it runs, and a Rescan button in the toolbar for when you have just added an album.
Covers, and albums you can open
The catalogue is drawn with its cover art. That art had been downloaded on every sync since long before this release and never shown once: every row drew the same grey music note.
Opening an album now lists its tracks. It used to show nothing unless you had downloaded the album first — the track lists were only fetched for downloads, and browsing was never taught to ask.
Search
The Search tab searches: artists, albums and tracks, matching anywhere in the name, so “rain” finds In Rainbows. It works with no network, because the library is a real database on the phone.
It replaces what was there before, which was a placeholder screen from Android Studio’s project template reading “This is dashboard Fragment”. That shipped. It should not have.
One server, two addresses
A home server usually has two: one on your own network, fast and free, and another from outside. StarSonic takes both and checks which one answers before it asks for anything — and you can edit them later under Settings → Server, which matters, because you add the server at home and find out you need the other address the first time you leave.
The check is a connection test, not your location. There is also a rule for “only on this Wi-Fi network”, and it is deliberately not the default: Android will not tell an app the name of the network without the location permission, and an app that asks for your location to play music has asked for too much. That rule asks only if you choose it.
Also fixed
- The first sync after adding a server crashed the part of the app that does the scanning, every time, before fetching anything.
- Airsonic could never be used at all: the app announced a newer version of the protocol than Airsonic supports, so every request — including the login — was refused.
- The first request after signing in to Jellyfin was sent without the session, so the first thing you asked for came back empty.
- Adding a beets server appeared to work and then did nothing.
- Typing
adminas a username could produce an account calledadministrative, because the field let the keyboard autocorrect it.
2026.8.5
The title bar is no longer behind the clock
The library’s title bar was drawn at the very top of the display, on top of the status bar, so its title overlapped the clock and the bar itself looked like it was missing. It now starts below the status bar, and the row of buttons at the bottom sits above the gesture bar.
This is a change Android made rather than one the app asked for: recent versions draw every app across the whole screen, edges included, and it is then the app’s job to keep its own content clear of the system’s. This one’s layout predates all of that.
The F-Droid build carries no Google code at all
Until now the build served here still linked Google’s Chromecast library, even though this is the build meant for phones that have no Google services on them. Casting is now a separate piece that only the Play Store build contains: on this one the cast button simply is not there, and nothing else changes.
It is checkable rather than a claim — the download is 700 KB smaller, and Google’s cast classes appear in it exactly zero times.
A test that can see the first of those
The tests added last release all ask the same kind of question — is this thing on the screen — and a title printed on top of the clock is, technically, on the screen. There is now one that measures instead: it reads how tall the status bar is on the device it runs on and checks the title bar is not above that line.
2026.8.4
It starts on a phone without Google Play Services
StarSonic used to close the instant you tapped it on any phone that has no Google Play Services — a de-Googled ROM, a device sold without them, a phone where they have been disabled. Not a warning and not a broken feature: the app never got as far as its first screen.
The cause was Chromecast. StarSonic set the cast framework up as the very first thing it did, and that call fails outright when Play Services cannot supply it. Failing there killed the app before it existed.
That was the wrong audience to lose by some distance: the build served from the F-Droid repository is aimed at exactly those phones. Casting is now optional at run time — where it cannot work, the cast button simply does not appear, and everything else works as before.
Tests that run the real thing
There is now a test that builds the released app, installs it, taps it and checks a screen appears, plus an automatic walk through the interface on two screen sizes. The Play Services crash above is what the very first run of them turned up — it had been there in both published betas, and nobody testing on a Google phone would ever have seen it.
2026.8.3
Written up late: this release was published and never described here, which is the sort of gap a page claiming to be every release should not have.
The library was empty in every published build
Not in the one the author ran. The release build is put through a compiler that shortens
names to make it smaller, and it had shortened the names of the fields the server’s answers
are read into: the server sent id, the app looked for a, and every album arrived without
one. Nothing failed and nothing was logged — the catalogue simply came out blank, in both
betas released up to that point.
Those field names are now protected from being renamed. The rest of the shortening is turned up rather than down, including one change worth stating: logging is stripped out of released builds entirely, which also removes every server address and username that used to reach a log line.
2026.8.2
Five kinds of server instead of one, and a playback engine from this decade.
What it plays from
Subsonic, Navidrome and Airsonic. These were always implemented and never selectable — the account picker offered Navidrome alone. Now it offers all three. They share one implementation because they share one protocol, so anything that speaks the Subsonic API should work, including servers not named here.
Jellyfin, which is a different thing entirely and is now written rather than promised. Where a Subsonic server signs each request, Jellyfin trades your password once for a session token. The previous release listed Jellyfin as a known limit and described it inaccurately; that note is corrected below.
beets, through its web plugin — for a library that is catalogued rather than served.
Two things it cannot do, because beets does not: there are no playlists, and artists are
worked out from your album tags rather than being a list the server keeps. Grouping is by
album artist, so a compilation stays one album instead of splitting into one artist per
guest.
What changed inside
Playback runs on Media3. The old service was written against an Android media API that has since been replaced, and it was the largest single file in the app. It is gone. If nothing looks different, that is the intended outcome — the lock screen, the notification, Bluetooth buttons and Android Auto all work the way they did.
Your password no longer appears in the phone’s log. It used to be written there alongside the values derived from it, which together would let anyone reading the log work it out. Only the username is recorded now. If you have used a previous build, the log has long since rotated, but changing the password is the cautious thing to do.
What is not finished
Jellyfin and beets have not been tested against a real server. They are written to the published APIs and they build, and that is all that is claimed so far. If you run either, the author would like to hear what broke.
Google Drive and OneDrive are not supported, and not because nobody got to them. They store files, not catalogues: there are no albums or artists to read, only folders — so building a library means reading the tags of every file first. StarSonic is built around servers that already know what a record is.
2026.8.1
The first build published anywhere, after four years during which the project did not compile at all.
What it does
Your own server, on your phone. Point it at Subsonic, Navidrome or Airsonic and the catalogue is copied onto the device, so browsing does not wait on the network — and neither does a tunnel.
A real library, not a view. Artists, albums, tracks and playlists are synced in the background through Android’s own account and sync system, so StarSonic appears under Settings → Accounts and obeys the phone’s sync and battery rules instead of inventing a scheduler of its own.
More than one server at a time. They coexist rather than being profiles you switch between: every album knows which server it came from.
Ordinary Android media. A standard media session, so the lock screen, notification and Bluetooth buttons work, and it can cast to a Chromecast — including music already cached on the device.
Nothing of the author’s. No account, no server, no analytics. Every byte comes from a machine you run.
Known limits at the time
Only Navidrome could be selected when adding an account, and playback still ran on the original engine. Both are addressed in 2026.8.2.