From 1728396a6bd8364f043df34bf9e4f46b6474496c Mon Sep 17 00:00:00 2001 From: Static Date: Sun, 4 Oct 2026 12:23:41 -0400 Subject: [PATCH 1/3] 216 ships as 2.1.6 with notes for the big-library release Version 216 / 2.1.6. 2.1.5 never reached anyone (pulled from review), so its fixes fold into the 2.1.6 changelog entry and Play notes. The in-app changelog gets an Improved and Fixed entry, store-listing.md carries the What's New text (403 of 500 characters). Co-Authored-By: Claude Opus 5.5 --- app/build.gradle.kts | 4 +-- .../app/ui/changelog/ChangelogData.kt | 27 ++++++++++++++++++- .../app/ui/changelog/ChangelogDataTest.kt | 2 +- store-listing.md | 4 +-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f889ddf..d1e37b2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ android { applicationId = "com.ninelivesaudio.app" minSdk = 30 targetSdk = 36 - versionCode = 215 - versionName = "2.1.5" + versionCode = 216 + versionName = "2.1.6" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt index 7345976..0b3bf7b 100644 --- a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt +++ b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt @@ -16,9 +16,24 @@ object ChangelogData { val releases = listOf( ChangelogRelease( - version = "2.1.5", + version = "2.1.6", dateLabel = "Current", sections = listOf( + ChangelogSection( + header = "Improved", + entries = listOf( + "Big libraries open instantly with your saved books and refresh quietly behind them.", + "Coming back to the Library no longer downloads it again.", + "Sync only fetches what changed, and only while the app is open.", + "Big refreshes wait for Wi-Fi.", + "Big Series and Author views start collapsed.", + "Home, Dossier, and Android Auto stay quick with thousands of books.", + "Playback saves your place every 10 seconds, easier on the battery.", + "Covers load as lighter thumbnails.", + "Book details list chapters for every server book.", + "Failed downloads stay on the Downloads screen with Retry.", + ), + ), ChangelogSection( header = "Fixed", entries = listOf( @@ -30,6 +45,16 @@ object ChangelogData { "A deleted download can be downloaded again.", "Pause, cancel, and delete stick while a book is downloading.", "The self-signed certificate setting works without a restart.", + "Cancelled downloads clean up their files.", + "Downloads keep their chapters and track order offline.", + "Downloaded books no longer vanish from Downloads.", + "A folder scan finishes even if you leave Settings.", + "Tabs no longer pile up after first setup.", + "Home no longer asks for a folder you already added.", + "The app reconnects on its own after a network change in the background.", + "One slow server check no longer empties your shelf.", + "Covers keep working after switching between home and VPN addresses.", + "Usernames with spaces can be typed.", ), ), ), diff --git a/app/src/test/java/com/ninelivesaudio/app/ui/changelog/ChangelogDataTest.kt b/app/src/test/java/com/ninelivesaudio/app/ui/changelog/ChangelogDataTest.kt index 3f24b43..6221eea 100644 --- a/app/src/test/java/com/ninelivesaudio/app/ui/changelog/ChangelogDataTest.kt +++ b/app/src/test/java/com/ninelivesaudio/app/ui/changelog/ChangelogDataTest.kt @@ -54,7 +54,7 @@ class ChangelogDataTest { @Test fun `releases are newest first and omit the unshipped version`() { assertEquals( - listOf("2.1.5", "2.1.4", "2.0.1", "2.0.0", "1.0.1", "1.0", "0.95", "0.9", "0.6"), + listOf("2.1.6", "2.1.4", "2.0.1", "2.0.0", "1.0.1", "1.0", "0.95", "0.9", "0.6"), ChangelogData.releases.map { it.version }, ) } diff --git a/store-listing.md b/store-listing.md index 8e12465..567422d 100644 --- a/store-listing.md +++ b/store-listing.md @@ -78,9 +78,9 @@ Android 11+ (API 30). ## What's New (Release Notes) -v2.1.5 +v2.1.6 -Bug fixes for spotty servers. Your library now catches up on its own when your Audiobookshelf server comes back, offline starts show your saved books fast, and downloaded books play right away. Plus fixes for download pause and cancel, re-downloading, and self-signed certificates. +Built for big libraries. The Library opens instantly with your saved books, coming back to it downloads nothing, and sync only fetches what changed while the app is open. Big refreshes wait for Wi-Fi. Also: your library catches up when your server returns, offline starts are fast, cancelled downloads clean up, downloads keep their chapters, and covers survive switching between home and VPN addresses. v2.1.4 From 4779938cde874c0e570ab5ecb4131ba4236cff0d Mon Sep 17 00:00:00 2001 From: Static Date: Sun, 4 Oct 2026 12:29:19 -0400 Subject: [PATCH 2/3] The 2.1.6 notes claim only what shipped Review: sync still runs full downloads for deletions and the daily refresh, manual refreshes do not wait for Wi-Fi, the measured Library open is seconds not instant, and chapters show only where the server has them. Co-Authored-By: Claude Opus 5.5 --- .../com/ninelivesaudio/app/ui/changelog/ChangelogData.kt | 8 ++++---- store-listing.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt index 0b3bf7b..e991bee 100644 --- a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt +++ b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt @@ -22,15 +22,15 @@ object ChangelogData { ChangelogSection( header = "Improved", entries = listOf( - "Big libraries open instantly with your saved books and refresh quietly behind them.", + "Big libraries open right away with your saved books and refresh quietly behind them.", "Coming back to the Library no longer downloads it again.", - "Sync only fetches what changed, and only while the app is open.", - "Big refreshes wait for Wi-Fi.", + "Sync usually fetches only what changed, and only while the app is open.", + "Automatic big refreshes wait for Wi-Fi.", "Big Series and Author views start collapsed.", "Home, Dossier, and Android Auto stay quick with thousands of books.", "Playback saves your place every 10 seconds, easier on the battery.", "Covers load as lighter thumbnails.", - "Book details list chapters for every server book.", + "Book details show chapters for server books that have them.", "Failed downloads stay on the Downloads screen with Retry.", ), ), diff --git a/store-listing.md b/store-listing.md index 567422d..53dfcdd 100644 --- a/store-listing.md +++ b/store-listing.md @@ -80,7 +80,7 @@ Android 11+ (API 30). v2.1.6 -Built for big libraries. The Library opens instantly with your saved books, coming back to it downloads nothing, and sync only fetches what changed while the app is open. Big refreshes wait for Wi-Fi. Also: your library catches up when your server returns, offline starts are fast, cancelled downloads clean up, downloads keep their chapters, and covers survive switching between home and VPN addresses. +Built for big libraries. The Library opens right away with your saved books, coming back to it downloads nothing, and sync usually fetches only what changed while the app is open. Automatic big refreshes wait for Wi-Fi. Also: your library catches up when your server returns, offline starts are fast, cancelled downloads clean up, downloads keep their chapters, and covers survive switching between home and VPN addresses. v2.1.4 From 3f95f6151317dfc5646bfdb60f3662c5f1ac4415 Mon Sep 17 00:00:00 2001 From: Static Date: Sun, 4 Oct 2026 12:33:08 -0400 Subject: [PATCH 3/3] The 2.1.6 sync and Wi-Fi lines match what the code does Review round 2: checks stop when the app closes but a running fetch finishes, the first sync of an empty library runs on any connection, and returning to a loaded shelf is what downloads nothing. Co-Authored-By: Claude Opus 5.5 --- .../java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt | 4 ++-- store-listing.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt index e991bee..be267ea 100644 --- a/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt +++ b/app/src/main/java/com/ninelivesaudio/app/ui/changelog/ChangelogData.kt @@ -24,8 +24,8 @@ object ChangelogData { entries = listOf( "Big libraries open right away with your saved books and refresh quietly behind them.", "Coming back to the Library no longer downloads it again.", - "Sync usually fetches only what changed, and only while the app is open.", - "Automatic big refreshes wait for Wi-Fi.", + "Sync fetches changes instead of your whole library, and stops checking when the app is closed.", + "Automatic big refreshes wait for Wi-Fi once your library is saved.", "Big Series and Author views start collapsed.", "Home, Dossier, and Android Auto stay quick with thousands of books.", "Playback saves your place every 10 seconds, easier on the battery.", diff --git a/store-listing.md b/store-listing.md index 53dfcdd..ebe40c7 100644 --- a/store-listing.md +++ b/store-listing.md @@ -80,7 +80,7 @@ Android 11+ (API 30). v2.1.6 -Built for big libraries. The Library opens right away with your saved books, coming back to it downloads nothing, and sync usually fetches only what changed while the app is open. Automatic big refreshes wait for Wi-Fi. Also: your library catches up when your server returns, offline starts are fast, cancelled downloads clean up, downloads keep their chapters, and covers survive switching between home and VPN addresses. +Built for big libraries. The Library opens right away with your saved books, coming back to it doesn't download it again, and sync fetches changes instead of your whole library. Automatic big refreshes wait for Wi-Fi once your library is saved. Also: your library catches up when your server returns, offline starts are fast, cancelled downloads clean up, downloads keep their chapters, and covers survive switching between home and VPN addresses. v2.1.4