feat: v1.8.0 — new app icon (varroa-final.png) + fix GnssStatus model conflict + remove SSH fallback

This commit is contained in:
Kayos 2026-03-15 09:23:54 -07:00
parent 1f12860ba4
commit 3644e6ccb0
15 changed files with 22 additions and 30 deletions

View file

@ -30,6 +30,15 @@ android {
}
}
signingConfigs {
create("release") {
storeFile = file("/keystore/varroa-release.keystore")
storePassword = "adacam-varroa-2026"
keyAlias = "varroa-release"
keyPassword = "adacam-varroa-2026"
}
}
buildTypes {
release {
isMinifyEnabled = false

View file

@ -202,36 +202,17 @@ class BeeCollectorService : LifecycleService() {
settingsStore.updateCachedDeviceId(deviceId)
Log.i(TAG, "Device ID retrieved via API: $deviceId (from ${if (result.data.deviceId != null) "deviceId" else if (result.data.serial != null) "serial" else "fallback"})")
} else {
Log.w(TAG, "API returned unknown device ID, trying SSH fallback...")
fetchDeviceIdViaSsh()
Log.w(TAG, "Device ID unknown from API, using cached or unknown")
}
}
is ApiResult.Error -> {
Log.e(TAG, "Failed to get device ID via API: ${result.message}, code: ${result.code}")
Log.i(TAG, "Trying SSH fallback...")
fetchDeviceIdViaSsh()
}
}
}
private suspend fun fetchDeviceIdViaSsh() {
Log.d(TAG, "Attempting SSH fallback for device ID...")
when (val result = beeClient.getDeviceIdViaSsh()) {
is ApiResult.Success -> {
val deviceId = result.data
_currentDeviceId.value = deviceId
// Update persistent cache
settingsStore.updateCachedDeviceId(deviceId)
Log.i(TAG, "Device ID retrieved via SSH: $deviceId")
}
is ApiResult.Error -> {
Log.e(TAG, "Failed to get device ID via SSH: ${result.message}")
_currentDeviceId.value = "unknown"
}
}
}
private fun startPollLoop(intervalSeconds: Int) {
pollJob?.cancel()
Log.d(TAG, "Previous poll job cancelled")
pollJob = lifecycleScope.launch {

View file

@ -364,7 +364,7 @@ private fun StorageStatusCard(storage: StorageStatus) {
@Composable
private fun GnssStatusCard(gnss: GnssStatus?, hasLock: Boolean?) {
StatusCard("GPS / GNSS") {
val hasGps = gnss?.hasLock == true || hasLock == true
val hasGps = gnss?.fix == true || hasLock == true
Row(verticalAlignment = Alignment.CenterVertically) {
Icon(
@ -390,21 +390,21 @@ private fun GnssStatusCard(gnss: GnssStatus?, hasLock: Boolean?) {
Spacer(Modifier.height(4.dp))
StatusRow("HDOP", "%.2f".format(it), if (it > 5) Color.Yellow else OnSurface)
}
if (gnss.lat != null && gnss.lon != null) {
if (gnss.latDeg != null && gnss.lonDeg != null) {
Spacer(Modifier.height(4.dp))
StatusRow("Position", "%.5f, %.5f".format(gnss.lat, gnss.lon))
StatusRow("Position", "%.5f, %.5f".format(gnss.latDeg, gnss.lonDeg))
}
gnss.alt?.let {
gnss.altM?.let {
Spacer(Modifier.height(4.dp))
StatusRow("Altitude", "%.1f m".format(it))
}
gnss.speedKmh?.let {
gnss.speedMs?.let {
Spacer(Modifier.height(4.dp))
StatusRow("Speed", "%.1f km/h".format(it))
StatusRow("Speed", "%.1f km/h".format(it * 3.6))
}
gnss.lastFixAgeSec?.let {
gnss.unixMs?.let {
Spacer(Modifier.height(4.dp))
StatusRow("Last Fix", "${it}s ago", if (it > 30) Color.Yellow else OnSurface)
val ageMs = System.currentTimeMillis() - it; val ageSec = (ageMs / 1000).toInt(); StatusRow("Last Fix", "${ageSec}s ago", if (ageSec > 30) Color.Yellow else OnSurface)
}
}
}

View file

@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="#000000" /></shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#000000" />
</shape>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After