commit 1d10d271c06db0aca5534a1e153611d8041fe3ed truex <truex@equwal.com> 2026-09-21 04:21:01 -0700 Carry inkOS and ThinkLauncher in place of CLauncher The build for direct install carries inkOS v0.6 (gezimos, GPL-3.0) and ThinkLauncher v3.0 (MatiasDesuu, GPL-3.0), each the release file of its maker and not changed. CLauncher is no longer in the build. NOTICE.txt names each maker, licence, source and SHA-256. The main screen counts the home screens and Ink Recents that are installed. Version 0.0.13-alpha, version code 13.
CHANGELOG.md | 10 +++++++++- README.md | 5 +++-- app/src/full/assets/bundled/NOTICE.txt | 14 ++++++++++---- app/src/full/assets/bundled/app.inkos_v0.6-Signed.apk | Bin 0 -> 5914348 bytes .../assets/bundled/clauncher-v5.3.0-universal.apk | Bin 2073428 -> 0 bytes app/src/full/assets/bundled/thinklauncher-v3.0.apk | Bin 0 -> 1304836 bytes .../full/java/dev/equwal/assistkey/bundle/Bundled.kt | 8 ++++++-- .../main/java/dev/equwal/assistkey/ui/MainActivity.kt | 13 ++++++++----- app/src/main/java/dev/equwal/assistkey/ui/Summary.kt | 10 +++++----- .../play/java/dev/equwal/assistkey/bundle/Bundled.kt | 8 ++++++-- .../test/java/dev/equwal/assistkey/ui/SummaryTest.kt | 6 +++--- gradle.properties | 4 ++-- play/PRIVACY.md | 2 +- 13 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md index e9f68c5..ccc6cf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog -## Unreleased +## 0.0.13-alpha - 2026-09-21 + +Version code 13. + +- **Home screens: inkOS and ThinkLauncher in place of CLauncher.** The build + for direct install carries inkOS v0.6 and ThinkLauncher v3.0, both made for + e-ink, both GPL-3.0, each the release file of its maker and not changed. + ThinkLauncher has the internet permission of its own. Rebind still has + none. - **Change a button from the Done step.** "Change what it does" and "Change how you press it" go back to those steps with the button kept. Back on the diff --git a/README.md b/README.md index 79746fe..f7853f0 100644 --- a/README.md +++ b/README.md @@ -175,8 +175,9 @@ is only that stand-in, and keeps the class name that old bindings hold. Rebind has no home screen of its own. The `full` build carries the release APKs of other makers, not changed, in `app/src/full/assets/bundled/`, and -installs them with `REQUEST_INSTALL_PACKAGES`: CLauncher (home screen, -GPL-3.0), Ink Recents (GPL-3.0) and Whisper (speech to text, MIT). +installs them with `REQUEST_INSTALL_PACKAGES`: inkOS and ThinkLauncher (home +screens for e-ink, GPL-3.0), Ink Recents (GPL-3.0) and Whisper (speech to +text, MIT). `NOTICE.txt` in that folder names each maker, licence, source and SHA-256. Android asks the user before each install. The `play` build carries nothing and has no install permission. It opens the page of the maker. diff --git a/app/src/full/assets/bundled/NOTICE.txt b/app/src/full/assets/bundled/NOTICE.txt index 0b4bbc0..25f02e1 100644 --- a/app/src/full/assets/bundled/NOTICE.txt +++ b/app/src/full/assets/bundled/NOTICE.txt @@ -3,11 +3,17 @@ Apps of other makers in this folder Each file is the release APK of its maker, not changed in any way. It is a separate program. Rebind only hands it to the package installer of Android. -clauncher-v5.3.0-universal.apk - CLauncher v5.3.0, by mlm-games +app.inkos_v0.6-Signed.apk + inkOS v0.6, by gezimos Licence: GNU General Public License v3.0 - Source code and releases: https://github.com/mlm-games/CLauncher - SHA-256: aedb78216822d5c8924eb125529f2dfa9140e4841b87ed309eca8f12f38956eb + Source code and releases: https://github.com/gezimos/inkOS + SHA-256: 8e09698279a857651b38590315952eb6c4bd6451f7dd22ff4f7a1893d83a051f + +thinklauncher-v3.0.apk + ThinkLauncher v3.0, by MatiasDesuu (the file app-release.apk of that release) + Licence: GNU General Public License v3.0 + Source code and releases: https://github.com/MatiasDesuu/ThinkLauncher + SHA-256: 123cae5b3f18e0e4ddf21bf0f949c2bd20b9bd7351f334b484045f7bfc305822 ink-recents-0.1.1.apk Ink Recents 0.1.1, by equwal diff --git a/app/src/full/assets/bundled/app.inkos_v0.6-Signed.apk b/app/src/full/assets/bundled/app.inkos_v0.6-Signed.apk new file mode 100644 index 0000000..3f6c5ee Binary files /dev/null and b/app/src/full/assets/bundled/app.inkos_v0.6-Signed.apk differ diff --git a/app/src/full/assets/bundled/clauncher-v5.3.0-universal.apk b/app/src/full/assets/bundled/clauncher-v5.3.0-universal.apk deleted file mode 100644 index c5051cd..0000000 Binary files a/app/src/full/assets/bundled/clauncher-v5.3.0-universal.apk and /dev/null differ diff --git a/app/src/full/assets/bundled/thinklauncher-v3.0.apk b/app/src/full/assets/bundled/thinklauncher-v3.0.apk new file mode 100644 index 0000000..9152d24 Binary files /dev/null and b/app/src/full/assets/bundled/thinklauncher-v3.0.apk differ diff --git a/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt b/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt index d46ab37..d28ed3e 100644 --- a/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt +++ b/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt @@ -40,8 +40,12 @@ object Bundled { val items = listOf( Item( - HOME, "CLauncher", "Minimal home screen", "app.clauncher", "v5.3.0", "GPL-3.0", - "https://github.com/mlm-games/CLauncher", "bundled/clauncher-v5.3.0-universal.apk" + HOME, "inkOS", "Text home screen for e-ink", "app.inkos", "v0.6", "GPL-3.0", + "https://github.com/gezimos/inkOS", "bundled/app.inkos_v0.6-Signed.apk" + ), + Item( + HOME, "ThinkLauncher", "Minimal home screen for e-ink", "org.matiasdesu.thinklauncherv2", "v3.0", "GPL-3.0", + "https://github.com/MatiasDesuu/ThinkLauncher", "bundled/thinklauncher-v3.0.apk" ), Item( HOME, "Ink Recents", "Recent apps, drawn for e-ink", "dev.equwal.inkrecents", "0.1.1", "GPL-3.0", diff --git a/app/src/main/java/dev/equwal/assistkey/ui/MainActivity.kt b/app/src/main/java/dev/equwal/assistkey/ui/MainActivity.kt index 1b69096..a45e622 100644 --- a/app/src/main/java/dev/equwal/assistkey/ui/MainActivity.kt +++ b/app/src/main/java/dev/equwal/assistkey/ui/MainActivity.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.widget.LinearLayout import android.widget.TextView +import dev.equwal.assistkey.bundle.Bundled import dev.equwal.assistkey.channel.Channel import dev.equwal.assistkey.channel.Channels import dev.equwal.assistkey.device.Detect @@ -173,11 +174,13 @@ class MainActivity : Activity() { ) } - private fun homeSummary(): String = Summary.homeAndRecents( - listOf("app.clauncher", "dev.equwal.inkrecents").count { pkg -> - runCatching { packageManager.getPackageInfo(pkg, 0) }.isSuccess - } - ) + private fun homeSummary(): String { + val home = Bundled.items.filter { it.group == Bundled.HOME } + return Summary.homeAndRecents( + home.count { runCatching { packageManager.getPackageInfo(it.pkg, 0) }.isSuccess }, + home.size + ) + } private fun setupSummary(): String { val granted = PermissionsActivity.granted(this) diff --git a/app/src/main/java/dev/equwal/assistkey/ui/Summary.kt b/app/src/main/java/dev/equwal/assistkey/ui/Summary.kt index 216e3cd..60ec04e 100644 --- a/app/src/main/java/dev/equwal/assistkey/ui/Summary.kt +++ b/app/src/main/java/dev/equwal/assistkey/ui/Summary.kt @@ -50,11 +50,11 @@ object Summary { else -> "Ready" } - /** CLauncher and Ink Recents: how many of the two are installed. */ - fun homeAndRecents(installed: Int): String = when (installed) { - 0 -> "CLauncher, Ink Recents" - 2 -> "Both installed" - else -> "1 of 2 installed" + /** The home screens and Ink Recents: how many of them are installed. */ + fun homeAndRecents(installed: Int, offered: Int): String = when (installed) { + 0 -> "Home screens, Ink Recents" + offered -> "All installed" + else -> installed.toString() + " of " + offered + " installed" } /** diff --git a/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt b/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt index c1d2477..10e3405 100644 --- a/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt +++ b/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt @@ -29,8 +29,12 @@ object Bundled { val items = listOf( Item( - HOME, "CLauncher", "Minimal home screen", "app.clauncher", "v5.3.0", "GPL-3.0", - "https://github.com/mlm-games/CLauncher" + HOME, "inkOS", "Text home screen for e-ink", "app.inkos", "v0.6", "GPL-3.0", + "https://github.com/gezimos/inkOS" + ), + Item( + HOME, "ThinkLauncher", "Minimal home screen for e-ink", "org.matiasdesu.thinklauncherv2", "v3.0", "GPL-3.0", + "https://github.com/MatiasDesuu/ThinkLauncher" ), Item( HOME, "Ink Recents", "Recent apps, drawn for e-ink", "dev.equwal.inkrecents", "0.1.1", "GPL-3.0", diff --git a/app/src/test/java/dev/equwal/assistkey/ui/SummaryTest.kt b/app/src/test/java/dev/equwal/assistkey/ui/SummaryTest.kt index 3dcebdd..13f8341 100644 --- a/app/src/test/java/dev/equwal/assistkey/ui/SummaryTest.kt +++ b/app/src/test/java/dev/equwal/assistkey/ui/SummaryTest.kt @@ -55,9 +55,9 @@ class SummaryTest { @Test fun `home and recents says what is in use`() { - assertEquals("CLauncher, Ink Recents", Summary.homeAndRecents(0)) - assertEquals("1 of 2 installed", Summary.homeAndRecents(1)) - assertEquals("Both installed", Summary.homeAndRecents(2)) + assertEquals("Home screens, Ink Recents", Summary.homeAndRecents(0, 3)) + assertEquals("1 of 3 installed", Summary.homeAndRecents(1, 3)) + assertEquals("All installed", Summary.homeAndRecents(3, 3)) } @Test diff --git a/gradle.properties b/gradle.properties index 8f7de54..d2dc4af 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,8 +6,8 @@ android.nonTransitiveRClass=true kotlin.code.style=official # Release identity. versionCode must rise with every upload to Play. -assistkey.versionName=0.0.12-alpha -assistkey.versionCode=12 +assistkey.versionName=0.0.13-alpha +assistkey.versionCode=13 # The free beta ends on this date (UTC) at the latest. It is the backstop for # installs that cannot reach Google Play; the real switch is the diff --git a/play/PRIVACY.md b/play/PRIVACY.md index ede5cec..2473fa0 100644 --- a/play/PRIVACY.md +++ b/play/PRIVACY.md @@ -36,7 +36,7 @@ password fields. **Recent apps.** Rebind has no recent-apps list of its own. The Recent apps action opens Ink Recents, a separate app with a privacy policy of its own. -**Apps of other makers.** The build for direct install carries the release files of three other apps (CLauncher, Ink Recents, Whisper) and can hand them to the installer of Android, which asks you first. Rebind downloads nothing. Each of those apps has its own policy. The Google Play build carries none of them. +**Apps of other makers.** The build for direct install carries the release files of other apps (inkOS, ThinkLauncher, Ink Recents, Whisper) and can hand them to the installer of Android, which asks you first. Rebind downloads nothing. Each of those apps has its own policy. The Google Play build carries none of them. **The on-screen button.** If you give the on-screen button an action, the accessibility service draws a small round button over other apps. It reads nothing from the screen. It remembers only where you put it.