Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

## [1.2.1] - 2026-07-22

### Changed

- Updated to the latest Android SDK version (API 36)
- Updated toolchain: Kotlin 2.1.10, Hilt 2.60.1, Gradle Plugin 9.1.1
- Added edge-to-edge support for mobile settings and profile edit screens

### Fixed

- Google Play release notes: shortened v1.2.0 what's new text in all 11 languages to stay under 500-character limit (was 672 chars in Arabic)
Expand Down
22 changes: 13 additions & 9 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.google.ksp)
alias(libs.plugins.hilt.android)
}

android {
namespace = "de.autosugar"
compileSdk = 35
compileSdk = 36

defaultConfig {
applicationId = "de.autosugar"
minSdk = 26
targetSdk = 35
versionCode = 5
versionName = "1.2.0"
targetSdk = 36
versionCode = 6
versionName = "1.2.1"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Expand All @@ -41,8 +41,12 @@ android {
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

kotlinOptions {
jvmTarget = "21"
}

buildFeatures {
Expand Down Expand Up @@ -87,14 +91,14 @@ dependencies {
implementation(libs.retrofit.moshi)
implementation(libs.okhttp.logging)
implementation(libs.moshi.kotlin)
kapt(libs.moshi.codegen)
ksp(libs.moshi.codegen)

// Storage
implementation(libs.datastore.preferences)

// DI
implementation(libs.hilt.android)
kapt(libs.hilt.compiler)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)

// Testing
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
<!-- Android Auto entry point -->
<service
android:name=".car.AutoSugarCarAppService"
android:exported="true">
android:exported="true"
android:foregroundServiceType="connectedDevice">
<intent-filter>
<action android:name="androidx.car.app.CarAppService" />
<category android:name="androidx.car.app.category.IOT" />
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/de/autosugar/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package de.autosugar.ui
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
Expand All @@ -20,6 +21,7 @@ class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
AutoSugarTheme {
val navController = rememberNavController()
Expand Down
10 changes: 7 additions & 3 deletions app/src/main/java/de/autosugar/ui/settings/ProfileEditScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,13 @@ fun ProfileEditScreen(
) { padding ->
Column(
modifier = Modifier
.padding(padding)
.padding(16.dp)
.verticalScroll(rememberScrollState()),
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(horizontal = 16.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
Spacer(Modifier.height(padding.calculateTopPadding() + 4.dp))

// ── Connection fields ─────────────────────────────────────────
OutlinedTextField(
value = displayName,
Expand Down Expand Up @@ -306,6 +308,8 @@ fun ProfileEditScreen(
Text(stringResource(R.string.btn_delete))
}
}

Spacer(Modifier.height(padding.calculateBottomPadding() + 16.dp))
}
}
}
19 changes: 14 additions & 5 deletions app/src/main/java/de/autosugar/ui/settings/SettingsScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -84,23 +84,27 @@ fun SettingsScreen(

Scaffold(
topBar = {
TopAppBar(title = { Text(stringResource(R.string.label_settings)) })
TopAppBar(
title = { Text(stringResource(R.string.label_settings)) }
)
},
floatingActionButton = {
FloatingActionButton(onClick = onAddProfile) {
FloatingActionButton(
onClick = onAddProfile,
modifier = Modifier.padding(bottom = 8.dp) // Extra spacing from nav bar
) {
Icon(Icons.Default.Add, contentDescription = stringResource(R.string.btn_add_profile))
}
},
) { padding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(padding)
.pointerInput(Unit) {
detectDragGesturesAfterLongPress(
onDragStart = { offset ->
isDragging = true
dragState.onDragStart(offset.y)
dragState.onDragStart(offset.y - padding.calculateTopPadding().toPx())
},
onDrag = { change, dragAmount ->
change.consume()
Expand All @@ -123,7 +127,12 @@ fun SettingsScreen(
LazyColumn(
state = lazyListState,
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(16.dp),
contentPadding = PaddingValues(
top = padding.calculateTopPadding() + 16.dp,
bottom = padding.calculateBottomPadding() + 80.dp, // Space for FAB
start = 16.dp,
end = 16.dp
),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
item {
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.kapt) apply false
alias(libs.plugins.hilt.android) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.google.ksp) apply false
}
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-ar
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• تحديث إلى أحدث إصدار Android SDK (API 36) وأدوات التطوير
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-de-DE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Update auf das neueste Android SDK (API 36) und Toolchain
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-en-US
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Updated to the latest Android SDK (API 36) and toolchain
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-es-ES
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Actualizado al último SDK de Android (API 36) y herramientas
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-fr-FR
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Mise à jour vers le dernier SDK Android (API 36) et la chaîne d'outils
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-hi-IN
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• नवीनतम Android SDK (API 36) और टूलचेन में अपडेट किया गया
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-it-IT
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Aggiornato all'ultimo SDK Android (API 36) e alla toolchain
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-ja-JP
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• 最新のAndroid SDK(API 36)およびツールチェーンにアップデート
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-nl-NL
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Bijgewerkt naar de nieuwste Android SDK (API 36) en toolchain
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-pt-PT
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• Atualizado para o mais recente Android SDK (API 36) e ferramentas
1 change: 1 addition & 0 deletions docs/whatsnew/1.2.1-zh-CN
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
• 更新至最新的 Android SDK (API 36) 和工具链
10 changes: 10 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
android.useAndroidX=true
kotlin.code.style=official
android.defaults.buildfeatures.resvalues=true
android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
android.enableAppCompileTimeRClass=false
android.usesSdkInManifest.disallowed=false
android.uniquePackageNames=false
android.dependency.useConstraints=true
android.r8.strictFullModeForKeepRules=false
android.r8.optimizedResourceShrinking=false
android.builtInKotlin=false
android.newDsl=false
13 changes: 13 additions & 0 deletions gradle/gradle-daemon-jvm.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7083b89563e7ce20943037b8cd2b8cc2/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/060bbb778a1f55ea705fdebd2ccfeab9/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d09679dc60fe5aa05ef7d03efdefac20/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect
toolchainVendor=JETBRAINS
toolchainVersion=21
10 changes: 6 additions & 4 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
[versions]
agp = "8.13.2"
kotlin = "2.0.21"
agp = "9.1.1"
kotlin = "2.1.10"
compose-bom = "2024.09.03"
car-app = "1.4.0"
retrofit = "2.11.0"
okhttp = "4.12.0"
moshi = "1.15.1"
moshi = "1.15.2"
datastore = "1.2.1"
lifecycle = "2.8.7"
coroutines = "1.10.2"
hilt = "2.57"
hilt = "2.60.1"
androidx-core = "1.13.1"
activity-compose = "1.9.3"
navigation-compose = "2.8.4"
ksp = "2.1.10-1.0.29"

[libraries]
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
Expand Down Expand Up @@ -51,3 +52,4 @@ kotlin-android = { id = "org.jetbrains.kotlin.android", version.re
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
google-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
3 changes: 3 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ pluginManagement {
gradlePluginPortal()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0"
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
Expand Down
Loading