chore(updater): manifest for v0.11.6
This commit is contained in:
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"version": "0.11.6",
|
||||
"notes": "\nFound by an audit of the stack's most fragile seams rather than by hitting them,\nso most of these are faults that had not yet been reported — several could only\nbe reached on a bad day, and the worst of them only once.\n\n### 🐛 Fixes\n\n- **An interrupted update can no longer stop the app from ever opening again.**\n Changes to the local database were applied one statement at a time with no way\n to undo a half-finished one. If an update was interrupted partway — a full\n disk, the phone reclaiming memory, the app being killed mid-launch — the\n earlier statements stuck while nothing recorded that the change had happened.\n On the next launch it started again from the beginning, immediately hit the\n part that was already done, and gave up; and since the app treats a database\n it cannot prepare as fatal, it stopped opening at all, on every launch, with\n the only way out being to clear its data and lose downloads and sign-ins. Each\n change is now all-or-nothing, so an interrupted one leaves no trace and the\n next launch simply tries again. (UR-002 → DR-012)\n\n- **The app no longer vanishes without trace when the player hits trouble.**\n The parts of the Android player that report back into the app — position,\n state changes, errors, the end of a track — had no protection around them, and\n a failure inside one killed the whole app instantly: no error, no message, not\n even a crash report worth sending. One such failure was reachable in ordinary\n use, on the position report that fires four times a second: under memory\n pressure the app could fail to build the small worker it needs to send that\n report, and that alone was enough to take everything down. A dropped position\n report is now just a dropped position report. (UR-005 → DR-052)\n\n- **One internal failure no longer disables the whole app until it is restarted.**\n Every part of the app that reads or writes local data shares a single gate to\n it. If anything failed while holding that gate, the gate stayed jammed: from\n then on every library page, download, setting and sign-in returned an error for\n the rest of the session, and only quitting and reopening cleared it. The gate\n now recovers instead of jamming. (UR-002 → DR-012)\n\n- **Browsing offline no longer reports a network error over content already on\n the device.** A read of local data was given a tenth of a second to answer and\n otherwise abandoned and treated as \"nothing stored\". That is easily exceeded\n on phone storage whenever something else is writing — a sync catching up, a\n batch of artwork being saved — and offline, where there is no server to fall\n back to, the result was a network error shown over a library that was sitting\n on disk. Worse, the abandoned read kept running and kept the storage busy,\n making the next one slower still. A slow read is now waited for rather than\n thrown away, and a fast one still answers immediately as before. (UR-002 →\n DR-013)\n\n- **A download that arrived empty is no longer presented as ready to play.** If\n the server answered a download with nothing at all — an error page, a\n conversion that produced no output — the empty file was moved into place and\n the item was marked available offline. Opening it then hung: the app's own\n media server promised one byte of it and sent none, so the player waited\n forever with nothing on screen to say why. An empty download is now treated as\n the failure it is, keeping the partial file so it can resume, and a request for\n an empty file gets an honest refusal instead of a promise. (UR-019, UR-071 →\n DR-168, DR-137)\n\n- **Renaming your computer no longer signs you out.** On systems without a\n password manager, sign-in tokens are kept in a file whose key was rebuilt from\n the machine's name and the current username each time the app started. Rename\n the machine, or launch it from somewhere the username is not set, and the key\n came out different, the file could no longer be read, and th",
|
||||
"pub_date": "2026-09-08T00:52:22Z",
|
||||
"platforms": {
|
||||
"linux-x86_64": {
|
||||
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSczV4N1FMRVFQaW9UT1dzTkV2SmVoNnM3aVNmeEs0UnA5Z2J3TzlsbjBTcWFUNlJMLzJFenl6UkE4STlCbTk5dzhkdUlzR00xb2pBdERzeFRHTnlpMy9mb2twbnp1VUFnPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4ODIwNzM0CWZpbGU6SmVsbHlUYXVfMC4xMS42X2FtZDY0LkFwcEltYWdlCmNkSE9STFR2bUtvQXF3ckhxMFhqS09ETVRkL0VUZy81c054aFhod2JVZWcweEZWaVdGY0tKK2t6N3NFVmtwV1dnZ2VkNE1BZHBWbmJLRjRtSERqR0RnPT0K",
|
||||
"url": "https://gitea.tourolle.paris/dtourolle/jellytau/releases/download/v0.11.6/JellyTau_0.11.6_amd64.AppImage"
|
||||
},
|
||||
"windows-x86_64": {
|
||||
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSczV4N1FMRVFQaXRROWhlaW5aYjlkU2kyOU5KdXFBSkRFbmtxQWRzVldBR0dHNHQvOXg0dG9uR0RDamY5N0VyVW1jWXZXYmN1WHBGaDVNSDJjSEVCb1dxMWJJdk1YYXdvPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4ODIyMzI3CWZpbGU6SmVsbHlUYXVfMC4xMS42X3g2NC1zZXR1cC5leGUKYVVITU1UNzVUTVZLbUZkVVJFbmVtUVFtYTVaeFZDbUlpclZBRW5kV3BwL2ZLZEpseFphTHhUc2Q3bU1Nd1VmdGVxbURlbWtHajcxV3Z0SVZ4cUM2QlE9PQo=",
|
||||
"url": "https://gitea.tourolle.paris/dtourolle/jellytau/releases/download/v0.11.6/JellyTau_0.11.6_x64-setup.exe"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user