Compare commits

...

8 Commits

Author SHA1 Message Date
Geoffroy Bonneville
c2c146a28e Fix fastlane gradle path 2025-11-10 12:46:04 -05:00
Geoffroy Bonneville
0b479e10c8 Fix pipeline 2025-11-10 12:38:45 -05:00
Geoffroy Bonneville
0fbdec570a Fix fastlane gradle file read 2025-11-10 12:34:45 -05:00
Geoffroy Bonneville
e44bb99479 Fix fastlane local version retrieval 2025-11-10 12:23:46 -05:00
Geoffroy Bonneville
dcaecbf185 Fix scrolling in menu
Improve pipeline
2025-11-10 12:14:38 -05:00
Geoffroy Bonneville
e6f81fa177 Shrink changelog 2025-11-09 19:18:17 -05:00
Geoffroy Bonneville
b3af094eed Fix key store path 2025-11-09 18:54:08 -05:00
Geoffroy Bonneville
49a58a8977 Sign AAB 2025-11-09 18:42:33 -05:00
8 changed files with 61 additions and 29 deletions

View File

@@ -6,6 +6,9 @@ on:
- master
pull_request:
env:
MODULE: donextv2
jobs:
build:
runs-on: ubuntu-latest
@@ -20,10 +23,6 @@ jobs:
distribution: 'temurin'
java-version: '17'
- name: Replace tokens in build.gradle
run: |
sed -i 's/#{\([^}]*\)}/${\1}/g' donext/build.gradle
- name: Cache Gradle
uses: actions/cache@v3
with:
@@ -34,6 +33,9 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Decode signing key
run: echo "${{ secrets.SIGNING_KEY_BASE64 }}" | base64 --decode > ${{ env.MODULE }}/upload.jks
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
@@ -47,5 +49,10 @@ jobs:
- name: Run Fastlane
env:
MODULE: ${{ env.MODULE }}
SUPPLY_JSON_KEY: service-account.json
KEYSTORE_FILE: upload.jks
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
ALIAS_NAME: ${{ secrets.ALIAS_NAME }}
ALIAS_PASSWORD: ${{ secrets.ALIAS_PASSWORD }}
run: bundle exec fastlane internal

2
.gitignore vendored
View File

@@ -1,5 +1,6 @@
*.iml
*.apk
*.jks
.gradle
/local.properties
/.idea/workspace.xml
@@ -8,3 +9,4 @@
/build
/captures
/fastlane/keys/
/donext*/release/

View File

@@ -42,7 +42,7 @@ dependencies {
implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
// Lifecycle components
def lifecycleVersion = '2.9.3'
def lifecycleVersion = '2.9.4'
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"

View File

@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
@@ -18,12 +20,21 @@ android {
applicationId = "com.wismna.geoffroy.donext"
minSdk = 26
targetSdk = 36
versionCode = 34
versionName = "2.0"
versionCode = 35
versionName = "2.0.1"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
create("release") {
storeFile = file(System.getenv("KEYSTORE_FILE") ?: "./upload.jks")
storePassword = System.getenv("KEYSTORE_PASSWORD")
keyAlias = System.getenv("ALIAS_NAME")
keyPassword = System.getenv("ALIAS_PASSWORD")
}
}
sourceSets {
getByName("debug").assets.srcDirs(files("$projectDir/schemas"))
}
@@ -38,14 +49,17 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signingConfigs["release"]
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_11
}
}
buildFeatures {
compose = true

View File

@@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Checklist
import androidx.compose.material.icons.filled.Delete
@@ -43,7 +45,8 @@ fun MenuScreen(
Column(
modifier = Modifier
.fillMaxHeight()
.padding(vertical = 8.dp),
.padding(vertical = 8.dp)
.verticalScroll(rememberScrollState()),
verticalArrangement = Arrangement.SpaceBetween
) {
Column {

View File

@@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CalendarMonth
import androidx.compose.material.icons.filled.Clear
@@ -61,7 +63,7 @@ fun TaskScreen(
titleFocusRequester.requestFocus()
}
Column(Modifier.padding(16.dp)) {
Column(Modifier.padding(16.dp).verticalScroll(rememberScrollState())) {
Text(
stringResource(
if (viewModel.isDeleted) R.string.task_title_deleted

View File

@@ -1,23 +1,30 @@
default_platform(:android)
platform :android do
desc "Build, test, and deploy the production version to Google Play"
lane :deploy do
gradle(task: "testDebugUnitTest")
gradle(task: "clean :donextv2:bundleRelease")
upload_to_play_store(
track: "production",
aab: "donextv2/build/outputs/bundle/release/donextv2-release.aab"
)
end
desc "Build, test, and deploy to Google Play"
lane :internal do
module_name = ENV["MODULE"]
# Read local versionCode
project_root = File.expand_path("..", __dir__)
gradle_path = File.join(project_root, module_name, "build.gradle.kts")
UI.message("Gradle file resolved at: #{gradle_path}")
gradle_file = File.read(gradle_path)
gradle_version = gradle_file[/versionCode\s*=\s*(\d+)/, 1].to_i
# Read Play Store versionCode (track internal)
play_version = google_play_track_version_codes(
track: "internal"
).max.to_i
if gradle_version <= play_version
UI.user_error!("VersionCode #{gradle_version} should be higher than Play Store version (#{play_version}). Aborting upload.")
end
gradle(task: "testDebugUnitTest")
gradle(task: "clean :donextv2:bundleRelease")
gradle(task: "clean :#{module_name}:bundleRelease")
upload_to_play_store(
track: "internal",
aab: "donextv2/build/outputs/bundle/release/donextv2-release.aab"
aab: "#{module_name}/build/outputs/bundle/release/#{module_name}-release.aab"
)
end
end

View File

@@ -2,10 +2,7 @@ Complete UI overhaul that gives DoNext a nice, modern look.
Complete code rewrite to Kotlin and Android Jetpack, with a better architecture.
Task lists are now displayed in a navigation menu
Tasks are now ordered by priority and not cycles
Tasks are now ordered by priority and not cycles which were removed
All tasks can be Done or Removed instead of only the first one
A Recycle Bin was added
The whole Next and cycles mechanism was removed
The History page was removed and its features split between the regular task lists and the Recycle Bin
The Today view is not a separate concept now, it's based on the tasks due date
No more Settings page as it's not needed anymore (but it may come back later if required)
Removed History page and split its features between the regular task lists and the new Recycle Bin
Today view is not a separate concept anymore and based on the tasks due date