commit 9d5b6e5ea7c989f9537b567773c7e2871b2c2c2c truex <truex@equwal.com> 2026-09-21 12:38:51 -0700 Release 0.1.0-beta: updates through Ink Update Rebind has no internet permission and keeps it that way. Ink Update, an open source app of its own, looks for new versions and makes the notification. The build for direct install carries Ink Update and Ink Dim. Setup has an Updates row, and Hardware hacks lists Ink Dim. The lists of carried apps are named Extensions. Version 0.1.0-beta, version code 16. The alpha versions end here.
CHANGELOG.md | 13 ++++++++++++- app/src/full/assets/bundled/NOTICE.txt | 12 ++++++++++++ app/src/full/assets/bundled/ink-dim-0.1.0.apk | Bin 0 -> 2238384 bytes app/src/full/assets/bundled/ink-update-0.1.0.apk | Bin 0 -> 2191056 bytes .../full/java/dev/equwal/assistkey/bundle/Bundled.kt | 12 +++++++++++- .../main/java/dev/equwal/assistkey/ui/BundledRows.kt | 4 ++-- .../java/dev/equwal/assistkey/ui/HacksActivity.kt | 2 ++ .../java/dev/equwal/assistkey/ui/SetupActivity.kt | 5 +++++ .../play/java/dev/equwal/assistkey/bundle/Bundled.kt | 12 +++++++++++- gradle.properties | 4 ++-- 10 files changed, 57 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md index 2df3aca..ebf785f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ # Changelog -## Unreleased +## 0.1.0-beta - 2026-09-21 + +Version code 16. The first beta. The alpha versions end here. + +- **Updates: Ink Update.** Rebind has no internet permission, so it cannot + look for a new version. Ink Update, an open source app of its own, does + that: F-Droid first, then Google Play (it leaves an app that Google Play + installed to Google Play), then GitHub. It makes a notification and opens + the page. Setup has an "Updates" row that installs or opens it. The build + for direct install carries it. +- The build for direct install carries Ink Dim too. Hardware hacks lists it. +- The lists of carried apps are named "Extensions". - **Settings are safe across versions and across an uninstall.** An update always kept the settings: they are in the data of the app. An uninstall diff --git a/app/src/full/assets/bundled/NOTICE.txt b/app/src/full/assets/bundled/NOTICE.txt index 25f02e1..6dc1ab7 100644 --- a/app/src/full/assets/bundled/NOTICE.txt +++ b/app/src/full/assets/bundled/NOTICE.txt @@ -27,3 +27,15 @@ org.woheller69.whisper_37.apk Source code: https://github.com/woheller69/whisperIME Release: https://f-droid.org/packages/org.woheller69.whisper/ SHA-256: b7efb1f4377c7ecf870688b1f7d74ad201bff2bd8991a387316db3ab71353824 + +ink-dim-0.1.0.apk + Ink Dim 0.1.0, by equwal + Licence: GNU General Public License v3.0 or later + Source code and releases: https://github.com/equwal/ink-dim + SHA-256: 251c028ceb0c15a1fb08fffef20e130a85f6ab1d092eeae49e7fb497361f3c39 + +ink-update-0.1.0.apk + Ink Update 0.1.0, by equwal + Licence: GNU General Public License v3.0 or later + Source code and releases: https://github.com/equwal/ink-update + SHA-256: 57223b0ab1145727ebacb15e16bca0abb31a2d94c8ced37c696be2d8fb3aeaf3 diff --git a/app/src/full/assets/bundled/ink-dim-0.1.0.apk b/app/src/full/assets/bundled/ink-dim-0.1.0.apk new file mode 100644 index 0000000..84358bd Binary files /dev/null and b/app/src/full/assets/bundled/ink-dim-0.1.0.apk differ diff --git a/app/src/full/assets/bundled/ink-update-0.1.0.apk b/app/src/full/assets/bundled/ink-update-0.1.0.apk new file mode 100644 index 0000000..784154e Binary files /dev/null and b/app/src/full/assets/bundled/ink-update-0.1.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 d28ed3e..9a9e0e9 100644 --- a/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt +++ b/app/src/full/java/dev/equwal/assistkey/bundle/Bundled.kt @@ -23,7 +23,7 @@ object Bundled { const val SUPPORTED = true class Item( - /** The screen that lists the app: HOME or VOICE. */ + /** The screen that lists the app: HOME, VOICE, UPDATE or HACKS. */ val group: String, val title: String, val hint: String, @@ -37,6 +37,8 @@ object Bundled { const val HOME = "home" const val VOICE = "voice" + const val UPDATE = "update" + const val HACKS = "hacks" val items = listOf( Item( @@ -54,6 +56,14 @@ object Bundled { Item( VOICE, "Whisper", "Speech to text on the device", "org.woheller69.whisper", "3.7", "MIT", "https://f-droid.org/packages/org.woheller69.whisper/", "bundled/org.woheller69.whisper_37.apk" + ), + Item( + HACKS, "Ink Dim", "Tap an icon for the lowest light", "dev.equwal.inkdim", "0.1.0", "GPL-3.0", + "https://github.com/equwal/ink-dim", "bundled/ink-dim-0.1.0.apk" + ), + Item( + UPDATE, "Ink Update", "Finds new versions and tells you", "dev.equwal.inkupdate", "0.1.0", "GPL-3.0", + "https://github.com/equwal/ink-update", "bundled/ink-update-0.1.0.apk" ) ) diff --git a/app/src/main/java/dev/equwal/assistkey/ui/BundledRows.kt b/app/src/main/java/dev/equwal/assistkey/ui/BundledRows.kt index 7bc8329..3ae0d6c 100644 --- a/app/src/main/java/dev/equwal/assistkey/ui/BundledRows.kt +++ b/app/src/main/java/dev/equwal/assistkey/ui/BundledRows.kt @@ -6,13 +6,13 @@ import dev.equwal.assistkey.bundle.Bundled import dev.equwal.assistkey.ui.Ui.header import dev.equwal.assistkey.ui.Ui.row -/** The apps of other makers that belong on one screen: installed, or one tap to get. */ +/** The extensions that belong on one screen: installed, or one tap to get. */ object BundledRows { fun add(a: Activity, col: LinearLayout, group: String) { val items = Bundled.items.filter { it.group == group } if (items.isEmpty()) return - col.header("Apps of other makers") + col.header(if (group == Bundled.UPDATE) "Updates" else "Extensions") items.forEach { item -> val installed = runCatching { a.packageManager.getPackageInfo(item.pkg, 0) }.isSuccess col.row( diff --git a/app/src/main/java/dev/equwal/assistkey/ui/HacksActivity.kt b/app/src/main/java/dev/equwal/assistkey/ui/HacksActivity.kt index f82e7a0..1d18d5c 100644 --- a/app/src/main/java/dev/equwal/assistkey/ui/HacksActivity.kt +++ b/app/src/main/java/dev/equwal/assistkey/ui/HacksActivity.kt @@ -2,6 +2,7 @@ package dev.equwal.assistkey.ui import android.app.Activity import android.content.Intent +import dev.equwal.assistkey.bundle.Bundled import dev.equwal.assistkey.channel.Channel import dev.equwal.assistkey.channel.Channels import dev.equwal.assistkey.device.Detect @@ -65,5 +66,6 @@ class HacksActivity : Activity() { state = if (hidden.isEmpty()) null else "Hiding a button" ) { startActivity(Intent(this, ViwoodsActivity::class.java)) } } + BundledRows.add(this, col, Bundled.HACKS) } } diff --git a/app/src/main/java/dev/equwal/assistkey/ui/SetupActivity.kt b/app/src/main/java/dev/equwal/assistkey/ui/SetupActivity.kt index 950d70e..9e2bcf8 100644 --- a/app/src/main/java/dev/equwal/assistkey/ui/SetupActivity.kt +++ b/app/src/main/java/dev/equwal/assistkey/ui/SetupActivity.kt @@ -3,6 +3,7 @@ package dev.equwal.assistkey.ui import android.app.Activity import android.content.Intent import android.widget.Toast +import dev.equwal.assistkey.bundle.Bundled import dev.equwal.assistkey.channel.Channel import dev.equwal.assistkey.channel.Channels import dev.equwal.assistkey.license.License @@ -58,6 +59,10 @@ class SetupActivity : Activity() { "Licence", state = Summary.licenceChip(s.tier, s.trialDaysLeft) ) { startActivity(Intent(this, LicenseActivity::class.java)) } + + // Rebind has no internet permission, so it cannot look for a new version. + // Ink Update, an app of its own, does that and tells the user. + BundledRows.add(this, col, Bundled.UPDATE) } private fun claim(ch: Channel) { 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 10e3405..7bb7c91 100644 --- a/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt +++ b/app/src/play/java/dev/equwal/assistkey/bundle/Bundled.kt @@ -14,7 +14,7 @@ object Bundled { const val SUPPORTED = false class Item( - /** The screen that lists the app: HOME or VOICE. */ + /** The screen that lists the app: HOME, VOICE, UPDATE or HACKS. */ val group: String, val title: String, val hint: String, @@ -26,6 +26,8 @@ object Bundled { const val HOME = "home" const val VOICE = "voice" + const val UPDATE = "update" + const val HACKS = "hacks" val items = listOf( Item( @@ -43,6 +45,14 @@ object Bundled { Item( VOICE, "Whisper", "Speech to text on the device", "org.woheller69.whisper", "3.7", "MIT", "https://f-droid.org/packages/org.woheller69.whisper/" + ), + Item( + HACKS, "Ink Dim", "Tap an icon for the lowest light", "dev.equwal.inkdim", "0.1.0", "GPL-3.0", + "https://github.com/equwal/ink-dim" + ), + Item( + UPDATE, "Ink Update", "Finds new versions and tells you", "dev.equwal.inkupdate", "0.1.0", "GPL-3.0", + "https://github.com/equwal/ink-update" ) ) diff --git a/gradle.properties b/gradle.properties index ecedcea..e313c3b 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.15-alpha -assistkey.versionCode=15 +assistkey.versionName=0.1.0-beta +assistkey.versionCode=16 # 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