Voice replies, on-device speech, message cards and 0.1.0-alpha

Gearslip now reads messages aloud and takes replies by voice. It asks
whether to reply, reads the reply back and sends it after a countdown.
Say "cancel" or "change it" to stop or redo it, or tap a quick reply.

Speech-to-text runs on the phone with whisper.cpp and a small Whisper
model, so voice works without Google services. The model ships in the
repo, so a fresh clone builds with nothing to download.

New messages show as one card at the top right, with a bar counting
down to when it closes or sends.

Other changes:
- Steering wheel buttons, knobs and D-pads drive the car screen.
- Smoother car audio: chunks wait for the car instead of dropping.
- Sharper, more responsive video.
- The Gearslip switch in Settings now stops it taking the USB
  connection.
- Apps that refuse Gearslip say so instead of loading forever.
- The phone asks for notification permission.
- The home screen stays upright.
- The car screen shows what's new after an update.
This commit is contained in:
Seb3thehacker committed 2026-10-01 00:03:53 -07:00
1 parent 1b2010f939
commit e314aa8546
46 files changed
+2290 -229

No files matched your search

+20 -2
View File
@@ -32,8 +32,8 @@ android {
applicationId = "app.seb3thehacker.gearslip"
minSdk = 31
targetSdk = 37
versionCode = 5
versionName = "0.0.05-alpha"
versionCode = 6
versionName = "0.1.0-alpha"
manifestPlaceholders["appLabel"] = "Gearslip"
}
@@ -78,6 +78,23 @@ android {
targetCompatibility = JavaVersion.VERSION_21
}
defaultConfig {
// Speech-to-text ships for 64-bit ARM only: every phone Gearslip runs on, and one copy
// of the native library instead of four.
ndk { abiFilters += "arm64-v8a" }
}
ndkVersion = "27.1.12297006"
externalNativeBuild {
cmake {
path = file("src/main/cpp/CMakeLists.txt")
version = "3.22.1"
}
}
androidResources {
// Model weights barely compress, and stored plainly they stream straight out of the APK.
noCompress += "bin"
}
testOptions {
// GearslipLog calls android.util.Log, which is a stub on the local JVM.
unitTests.isReturnDefaultValues = true
@@ -126,3 +143,4 @@ tasks.withType<KotlinJvmCompile>().configureEach {
jvmTarget.set(JvmTarget.JVM_21)
}
}