From 18c4c0fbfd0686da77392d8a62b3a283498d7787 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Sun, 19 Feb 2023 16:26:58 +0100 Subject: [PATCH 1/6] fix: notifcation time increase error --- .../src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt index 2ed03500..7ef06423 100644 --- a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt +++ b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt @@ -404,7 +404,8 @@ class MainViewModel private fun initDate() { val now = Clock.System.now() today = now.toLocalDateTime(TimeZone.currentSystemDefault()) - currentDateTime = LocalDateTime(today.date,LocalTime(today.hour,today.minute+10)) + val today2=now.plus(10, DateTimeUnit.MINUTE).toLocalDateTime(TimeZone.currentSystemDefault()) + currentDateTime = today2 currentLocalDate=currentDateTime.date Log.e("current date",currentLocalDate.toString()) From c6f1414447595c277fa982e8ef62d070cdcfd7c7 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Sun, 19 Feb 2023 16:39:37 +0100 Subject: [PATCH 2/6] fix: text to image --- .../mshdabiola/editscreen/EditViewModel.kt | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/feature/editScreen/src/main/java/com/mshdabiola/editscreen/EditViewModel.kt b/feature/editScreen/src/main/java/com/mshdabiola/editscreen/EditViewModel.kt index 0574b509..8d235202 100644 --- a/feature/editScreen/src/main/java/com/mshdabiola/editscreen/EditViewModel.kt +++ b/feature/editScreen/src/main/java/com/mshdabiola/editscreen/EditViewModel.kt @@ -171,10 +171,14 @@ class EditViewModel @Inject constructor( val voices = notePad.voices.map { it.copy(length = getAudioLength(it.voiceName)) } val data = editArg.content + val notePadUiState=notePad.copy(voices = voices.toImmutableList()) if (data == "extract") { - onImage(editArg.data.toInt()) + onImage(editArg.data.toInt(),notePadUiState) + notePadUiState + }else{ + notePadUiState } - notePad.copy(voices = voices.toImmutableList()) + } } computeUri(notePadUiState.note) @@ -524,13 +528,17 @@ class EditViewModel @Inject constructor( } } - private fun onImage(index: Int) { + private fun onImage(index: Int,notePad: NotePadUiState) { viewModelScope.launch { - delay(1000) - val image = notePadUiState.images[index] - val text = imageToText.toText(image.imageName) - val note = notePadUiState.note - notePadUiState = notePadUiState.copy(note = note.copy(detail = "${note.detail}\n$text")) + try { + val image = notePad.images[index] + val text = imageToText.toText(image.imageName) + val note = notePad.note + notePadUiState = notePadUiState.copy(note = note.copy(detail = "${note.detail}\n$text")) + }catch (e:Exception){ + e.printStackTrace() + } + } } From da977b415adbfac89206b006d1a03e51104ace27 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Sun, 19 Feb 2023 23:42:38 +0100 Subject: [PATCH 3/6] fix: refactor DrawingController and add complete list --- .../main/java/com/mshdabiola/drawing/Board.kt | 2 +- .../java/com/mshdabiola/drawing/DrawingBar.kt | 2 +- .../mshdabiola/drawing/DrawingController.kt | 105 ++++++++++++------ .../com/mshdabiola/drawing/DrawingScreen.kt | 2 +- .../mshdabiola/drawing/DrawingViewModel.kt | 2 +- 5 files changed, 75 insertions(+), 38 deletions(-) diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/Board.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/Board.kt index 91f60b24..ea1ffaa9 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/Board.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/Board.kt @@ -24,7 +24,7 @@ fun Board( drawingController.setPathData(offset.x, offset.y, mode) } - val p2 = remember(drawingController.listOfPathData.value) { + val p2 = remember(drawingController.unCompletePathData.value) { drawingController.getPathAndData() } diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingBar.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingBar.kt index 12d7c250..40a30abc 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingBar.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingBar.kt @@ -72,7 +72,7 @@ fun DrawingBar( mutableStateOf(4) } - LaunchedEffect(key1 = controller.listOfPathData.value, block = { + LaunchedEffect(key1 = controller.unCompletePathData.value, block = { if (isUp) { isUp = false } diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt index 72a9e733..1b1734dc 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt @@ -18,7 +18,9 @@ import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeJoin import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.drawscope.DrawScope +import kotlinx.collections.immutable.ImmutableMap import kotlinx.collections.immutable.toImmutableMap +typealias ImmutablePath = ImmutableMap> @SuppressLint("MutableCollectionMutableState") class DrawingController { @@ -38,6 +40,7 @@ class DrawingController { Color(0xFFFF3D00), ) + val lineCaps = arrayOf(StrokeCap.Round, StrokeCap.Butt, StrokeCap.Round) val lineJoins = arrayOf(StrokeJoin.Round, StrokeJoin.Bevel, StrokeJoin.Miter) @@ -48,8 +51,11 @@ class DrawingController { var draw_mode = DRAW_MODE.PEN var colorAlpha = 1f - private var _listOfPathData = mutableStateOf(ListOfPathData()) - val listOfPathData: State = _listOfPathData + private var _unCompletePathData = mutableStateOf(emptyMap>().toImmutableMap()) + val unCompletePathData: State = _unCompletePathData + + private var _completePathData = mutableStateOf(emptyMap>().toImmutableMap()) + val completePathData: State = _completePathData private val redoPaths = HashMap>() private val _canUndo = mutableStateOf(false) @@ -66,27 +72,48 @@ class DrawingController { fun setPathData(x: Float, y: Float, mode: MODE) { when (draw_mode) { DRAW_MODE.ERASE -> { - if (mode == MODE.DOWN) { - xx = x - yy = y - } - if (mode == MODE.MOVE) { - val rect = RectF(minOf(xx, x), minOf(y, yy), maxOf(xx, x), maxOf(y, yy)) - val paths = _listOfPathData.value.paths2.toMutableMap() - val path = - paths.filter { entry -> entry.value.any { rect.contains(it.x, it.y) } } - path.forEach { p -> - paths.remove(p.key) - redoPaths[p.key] = p.value + when(mode){ + MODE.DOWN->{ + xx = x + yy = y + } + MODE.MOVE->{ + val rect = RectF(minOf(xx, x), minOf(y, yy), maxOf(xx, x), maxOf(y, yy)) + val paths = _unCompletePathData.value.toMutableMap() + val path = + paths.filter { entry -> entry.value.any { rect.contains(it.x, it.y) } } + path.forEach { p -> + paths.remove(p.key) + redoPaths[p.key] = p.value + } + _unCompletePathData.value=paths.toImmutableMap() + } + MODE.UP->{ + setCompleteList() } - setListData(_listOfPathData.value.copy(paths2 = paths.toImmutableMap())) } +// if (mode == MODE.DOWN) { +// xx = x +// yy = y +// } +// if (mode == MODE.MOVE) { +// val rect = RectF(minOf(xx, x), minOf(y, yy), maxOf(xx, x), maxOf(y, yy)) +// val paths = _listOfPathData.value.toMutableMap() +// val path = +// paths.filter { entry -> entry.value.any { rect.contains(it.x, it.y) } } +// path.forEach { p -> +// paths.remove(p.key) +// redoPaths[p.key] = p.value +// } +// _listOfPathData.value=paths.toImmutableMap() +// } + //finish move, delete data } else -> { when (mode) { MODE.DOWN -> { - val id = _listOfPathData.value.paths2.keys.size + val id = _unCompletePathData.value.keys.size pathData = PathData( id = id, color = color, @@ -96,24 +123,26 @@ class DrawingController { colorAlpha = colorAlpha, ) // id++ - val paths2 = _listOfPathData.value.paths2.toMutableMap() + val paths2 = _unCompletePathData.value.toMutableMap() val list = emptyList().toMutableList() list.add(Offset(x, y)) paths2[pathData] = list - setListData(_listOfPathData.value.copy(paths2 = paths2.toImmutableMap())) + _unCompletePathData.value= paths2.toImmutableMap() } MODE.MOVE -> { - val paths2 = _listOfPathData.value.paths2.toMutableMap() + val paths2 = _unCompletePathData.value.toMutableMap() val list = paths2[pathData]!!.toMutableList() list.add(Offset(x, y)) paths2[pathData] = list - setListData(_listOfPathData.value.copy(paths2 = paths2.toImmutableMap())) + _unCompletePathData.value = paths2.toImmutableMap() } MODE.UP -> { + //save data + setCompleteList() } } } @@ -121,38 +150,41 @@ class DrawingController { setDoUnDo() } - fun setListData(listOfPathDa: ListOfPathData) { - _listOfPathData.value = listOfPathDa - } +// fun setListData(listOfPathDa: ListOfPathData) { +// _listOfPathData.value = listOfPathDa +// } fun setPathData(pathDatas: Map>) { - val paths = _listOfPathData.value.paths2.toMutableMap() + val paths = _unCompletePathData.value.toMutableMap() paths.putAll(pathDatas) // id = pathDatas.size - setListData(_listOfPathData.value.copy(paths2 = paths.toImmutableMap())) + _unCompletePathData.value= paths.toImmutableMap() } fun undo() { if (canUndo.value) { - val paths = _listOfPathData.value.paths2.toMutableMap() + val paths = _unCompletePathData.value.toMutableMap() val lastKey = paths.keys.last() redoPaths[lastKey] = paths.remove(lastKey)!! - setListData(_listOfPathData.value.copy(paths2 = paths.toImmutableMap())) + _unCompletePathData.value= paths.toImmutableMap() setDoUnDo() } } private fun setDoUnDo() { - _canUndo.value = _listOfPathData.value.paths2.isNotEmpty() + _canUndo.value = _unCompletePathData.value.isNotEmpty() _canRedo.value = redoPaths.isNotEmpty() + + //save data + setCompleteList() } fun redo() { if (canRedo.value) { - val paths = _listOfPathData.value.paths2.toMutableMap() + val paths = _unCompletePathData.value.toMutableMap() val lastKey = redoPaths.keys.last() paths[lastKey] = redoPaths.remove(lastKey)!! - setListData(_listOfPathData.value.copy(paths2 = paths.toImmutableMap())) + _unCompletePathData.value= paths.toImmutableMap() setDoUnDo() // listOfPathData.value.add(redoPaths.removeLast()) @@ -169,9 +201,8 @@ class DrawingController { fun getPathAndData(): List> { var prevOff = Offset.Zero - val p = _listOfPathData + val p = _unCompletePathData .value - .paths2 .map { val yPath = Path() it.value.forEachIndexed { index, offset -> @@ -194,11 +225,17 @@ class DrawingController { } fun clearPath() { - val paths = _listOfPathData.value.paths2.toMutableMap() + val paths = _unCompletePathData.value.toMutableMap() paths.clear() redoPaths.clear() - setListData(_listOfPathData.value.copy(paths2 = paths.toImmutableMap())) + _unCompletePathData.value = paths.toImmutableMap() setDoUnDo() + //save data + } + + private fun setCompleteList(){ + _completePathData.value=completePathData.value + } fun getBitMap(width: Int, heigth: Int, density: Float): Bitmap { diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt index 34ad2047..c18ce300 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt @@ -62,7 +62,7 @@ fun DrawingScreen( } }) val res = context.resources.displayMetrics - LaunchedEffect(key1 = viewModel.controller.listOfPathData.value.paths2, block = { + LaunchedEffect(key1 = viewModel.controller.unCompletePathData.value, block = { viewModel.saveImage( viewModel.controller.getBitMap( res.widthPixels, diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt index a742e7cf..ddfeee64 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt @@ -68,7 +68,7 @@ class DrawingViewModel @Inject constructor( fun onPause(context: Context) { coroutineScope.launch { val res = context.resources.displayMetrics - val map = controller.listOfPathData.value.paths2 + val map = controller.unCompletePathData.value saveDrawing(map) } } From c11ca2e68018a84900aec205f0832a035182f717 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Mon, 20 Feb 2023 01:32:03 +0100 Subject: [PATCH 4/6] fix: DrawingController primary data base id --- .../com/mshdabiola/database/dao/PathDao.kt | 2 +- .../mshdabiola/drawing/DrawingController.kt | 27 ++++++++++---- .../com/mshdabiola/drawing/DrawingScreen.kt | 35 ++++++++----------- .../mshdabiola/drawing/DrawingViewModel.kt | 11 +----- .../mshdabiola/mainscreen/MainViewModel.kt | 2 +- 5 files changed, 38 insertions(+), 39 deletions(-) diff --git a/core/database/src/main/java/com/mshdabiola/database/dao/PathDao.kt b/core/database/src/main/java/com/mshdabiola/database/dao/PathDao.kt index fce2e64c..06d36e5a 100644 --- a/core/database/src/main/java/com/mshdabiola/database/dao/PathDao.kt +++ b/core/database/src/main/java/com/mshdabiola/database/dao/PathDao.kt @@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.Flow @Dao interface PathDao { - @Query("SELECT * FROM path_table WHERE imageId=:imageID") + @Query("SELECT * FROM path_table WHERE imageId=:imageID ORDER BY pathId") fun getPaths(imageID: Long): Flow> @Query("DELETE FROM PATH_TABLE WHERE imageId=:imageID") diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt index 1b1734dc..e1d4746e 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingController.kt @@ -82,11 +82,24 @@ class DrawingController { val paths = _unCompletePathData.value.toMutableMap() val path = paths.filter { entry -> entry.value.any { rect.contains(it.x, it.y) } } - path.forEach { p -> - paths.remove(p.key) - redoPaths[p.key] = p.value + if (path.isNotEmpty()){ + path.forEach { p -> + paths.remove(p.key) + redoPaths[p.key] = p.value + } + //rearrange id + val newPaths= HashMap>() + paths + .toList() + .forEachIndexed { index, pair -> + val newdata=pair.first.copy(id=index) + newPaths[newdata] = pair.second + } + + + _unCompletePathData.value=newPaths.toImmutableMap() } - _unCompletePathData.value=paths.toImmutableMap() + } MODE.UP->{ setCompleteList() @@ -159,6 +172,7 @@ class DrawingController { paths.putAll(pathDatas) // id = pathDatas.size _unCompletePathData.value= paths.toImmutableMap() + _completePathData.value=paths.toImmutableMap() } fun undo() { @@ -234,7 +248,7 @@ class DrawingController { } private fun setCompleteList(){ - _completePathData.value=completePathData.value + _completePathData.value=unCompletePathData.value } @@ -268,7 +282,6 @@ class DrawingController { @Composable fun rememberDrawingController(): DrawingController { return remember { - DrawingController().apply { - } + DrawingController() } } diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt index c18ce300..e9802987 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingScreen.kt @@ -38,6 +38,8 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import com.mshdabiola.firebase.FirebaseScreenLog +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import java.io.File @Composable @@ -46,30 +48,23 @@ fun DrawingScreen( onBack: () -> Unit, ) { FirebaseScreenLog(screen = "drawing_screen") - val lifecycleOwner = LocalLifecycleOwner.current.lifecycle val context = LocalContext.current - val lifecycleObserver = object : DefaultLifecycleObserver { - override fun onPause(owner: LifecycleOwner) { - super.onPause(owner) - viewModel.onPause(context) - } - } - - DisposableEffect(key1 = Unit, effect = { - lifecycleOwner.addObserver(lifecycleObserver) - onDispose { - lifecycleOwner.removeObserver(lifecycleObserver) + LaunchedEffect(key1=viewModel.controller.completePathData.value, block = { + withContext(Dispatchers.IO){ + viewModel.saveDrawing(viewModel.controller.completePathData.value) } }) val res = context.resources.displayMetrics - LaunchedEffect(key1 = viewModel.controller.unCompletePathData.value, block = { - viewModel.saveImage( - viewModel.controller.getBitMap( - res.widthPixels, - res.heightPixels, - res.density, - ), - ) + LaunchedEffect(key1 = viewModel.controller.completePathData.value, block = { + withContext(Dispatchers.IO){ + viewModel.saveImage( + viewModel.controller.getBitMap( + res.widthPixels, + res.heightPixels, + res.density, + ), + ) + } }) DrawingScreen( onBackk = onBack, diff --git a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt index ddfeee64..e50101b4 100644 --- a/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt +++ b/feature/drawing/src/main/java/com/mshdabiola/drawing/DrawingViewModel.kt @@ -45,8 +45,6 @@ class DrawingViewModel @Inject constructor( ), ) val controller = DrawingController() - val dispatcher = Executors.newSingleThreadExecutor().asCoroutineDispatcher() - val coroutineScope = CoroutineScope(dispatcher + SupervisorJob()) init { viewModelScope.launch { @@ -65,13 +63,6 @@ class DrawingViewModel @Inject constructor( contentManager.saveBitmap(path, bitmap) } - fun onPause(context: Context) { - coroutineScope.launch { - val res = context.resources.displayMetrics - val map = controller.unCompletePathData.value - saveDrawing(map) - } - } fun deleteImage() { viewModelScope.launch(Dispatchers.IO) { @@ -82,7 +73,7 @@ class DrawingViewModel @Inject constructor( } // private var job: Job? = null - private suspend fun saveDrawing(map: Map>) { + suspend fun saveDrawing(map: Map>) { val data = changeToDrawPath(map) if (map.isEmpty()) { drawingPathRepository.delete(imageID) diff --git a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt index 7ef06423..09a0b59b 100644 --- a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt +++ b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainViewModel.kt @@ -397,7 +397,7 @@ class MainViewModel DisplayMode.Picker ) var timePicker: TimePickerState = TimePickerState(12, 4, is24Hour = false) - private var currentLocalDate = LocalDate(1, 2, 3) + private lateinit var currentLocalDate :LocalDate //date and time dialog logic From 220ec72804aeae02c4f6fbd4fdaf4df41deb6559 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Mon, 20 Feb 2023 01:38:59 +0100 Subject: [PATCH 5/6] fix: show button on main only --- .../main/java/com/mshdabiola/mainscreen/MainScreen.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainScreen.kt b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainScreen.kt index dbe84acd..4586103e 100644 --- a/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainScreen.kt +++ b/feature/mainscreen/src/main/java/com/mshdabiola/mainscreen/MainScreen.kt @@ -597,11 +597,14 @@ fun MainScreen( verticalArrangement = Arrangement.Center ) { Loader(Modifier.size(300.dp)) - Button(onClick = { - navigateToEdit(-1, "", 0) - }) { - Text(text = "Add note") + if (currentNoteType.type==NoteType.NOTE){ + Button(onClick = { + navigateToEdit(-1, "", 0) + }) { + Text(text = "Add note") + } } + } } else { From 9b1333fb927eadbac25f0460a0c46f66d4c8a481 Mon Sep 17 00:00:00 2001 From: mshabiola Date: Mon, 20 Feb 2023 01:56:45 +0100 Subject: [PATCH 6/6] build: increase build version --- .../src/main/kotlin/AndroidApplicationConventionPlugin.kt | 4 ++-- build.gradle.kts | 5 ++++- distribution/whatsnew/whatsnew-en-US | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index 732a4d9c..2298a00d 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -34,8 +34,8 @@ class AndroidApplicationConventionPlugin : Plugin { defaultConfig.targetSdk = 33 // compileSdkPreview = "UpsideDownCake" defaultConfig.minSdk = 24 - defaultConfig.versionName = "1.1.2" - defaultConfig.versionCode = 10 + defaultConfig.versionName = "1.1.3" + defaultConfig.versionCode = 11 defaultConfig.testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" defaultConfig.vectorDrawables { diff --git a/build.gradle.kts b/build.gradle.kts index c9210b86..35987ba5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,4 +24,7 @@ versionCatalogUpdate { // keep all plugins that aren't used in the project keepUnusedPlugins.set(true) } -} \ No newline at end of file +} + +//./gradlew assembleDebug -PenableComposeCompilerReports=true +// ./gradlew assembleDebug -PenableComposeCompilerMetrics=true \ No newline at end of file diff --git a/distribution/whatsnew/whatsnew-en-US b/distribution/whatsnew/whatsnew-en-US index bc008a6d..f7e1a93a 100644 --- a/distribution/whatsnew/whatsnew-en-US +++ b/distribution/whatsnew/whatsnew-en-US @@ -1 +1,3 @@ -* fix bugs +- Add new UI +- Fix Alarm bug +- Increase Performance