Compare commits
7 Commits
e9517f7378
...
release/2.
| Author | SHA1 | Date | |
|---|---|---|---|
| 70dab74528 | |||
| 7e5d2fa207 | |||
| 0e432fb332 | |||
| 897a236501 | |||
| 0cccecec77 | |||
| f1ed875256 | |||
| e82bd47aab |
16
CHANGELOG.md
@@ -1,5 +1,21 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [2.3.0] -- 2025-06-23
|
||||||
|
### Added
|
||||||
|
- Add support for Android 15 and 16 (@iSoron)
|
||||||
|
- Show confetti animation (@gokulk16, @iSoron, #1743)
|
||||||
|
- Show streaks for measurable habits (@teckwarz, #2059)
|
||||||
|
- Allow user to unset measurable habits (@leontodd, @kalina559, #1899, #2109)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Change background widget color for habits with implicit checks (@wobbba, #1915)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fix notification when goal type is set to maximum (@manish99verma, #1931)
|
||||||
|
- Never mark "at most" habits as completed for the day (@kalina559, #2077)
|
||||||
|
- Increase minimum widget size (@iSoron, #2118)
|
||||||
|
- Improve Gradle configuration (@jimlyas, #2108)
|
||||||
|
|
||||||
## [2.2.0] -- 2024-01-30
|
## [2.2.0] -- 2024-01-30
|
||||||
### Added
|
### Added
|
||||||
- Add support for Android 14 (@iSoron, @hiqua)
|
- Add support for Android 14 (@iSoron, @hiqua)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[versions]
|
[versions]
|
||||||
agp = "8.8.0"
|
agp = "8.9.2"
|
||||||
annotation = "1.9.1"
|
annotation = "1.9.1"
|
||||||
appcompat = "1.7.0"
|
appcompat = "1.7.0"
|
||||||
appintro = "6.3.1"
|
appintro = "6.3.1"
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ android {
|
|||||||
compileSdk = 36
|
compileSdk = 36
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
versionCode = 20200
|
versionCode = 20300
|
||||||
versionName = "2.2.0"
|
versionName = "2.3.0"
|
||||||
minSdk = 28
|
minSdk = 28
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
applicationId = "org.isoron.uhabits"
|
applicationId = "org.isoron.uhabits"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -75,7 +75,8 @@ class HistoryWidget(
|
|||||||
firstWeekday = prefs.firstWeekday,
|
firstWeekday = prefs.firstWeekday,
|
||||||
series = listOf(),
|
series = listOf(),
|
||||||
defaultSquare = HistoryChart.Square.OFF,
|
defaultSquare = HistoryChart.Square.OFF,
|
||||||
notesIndicators = listOf()
|
notesIndicators = listOf(),
|
||||||
|
padding = 2.5
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
).apply {
|
).apply {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ abstract class HabitWidgetView : FrameLayout {
|
|||||||
val shadowRadius = dpToPixels(context, 2f).toInt()
|
val shadowRadius = dpToPixels(context, 2f).toInt()
|
||||||
val shadowOffset = dpToPixels(context, 1f).toInt()
|
val shadowOffset = dpToPixels(context, 1f).toInt()
|
||||||
val shadowColor = Color.argb(shadowAlpha, 0, 0, 0)
|
val shadowColor = Color.argb(shadowAlpha, 0, 0, 0)
|
||||||
val cornerRadius = dpToPixels(context, 12f)
|
val cornerRadius = dpToPixels(context, 18f)
|
||||||
val radii = FloatArray(8)
|
val radii = FloatArray(8)
|
||||||
Arrays.fill(radii, cornerRadius)
|
Arrays.fill(radii, cornerRadius)
|
||||||
val shape = RoundRectShape(radii, null, null)
|
val shape = RoundRectShape(radii, null, null)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<item android:id="@android:id/mask">
|
<item android:id="@android:id/mask">
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<corners android:radius="12dp"/>
|
<corners android:radius="18dp"/>
|
||||||
<solid android:color="?android:colorPrimary"/>
|
<solid android:color="?android:colorPrimary"/>
|
||||||
</shape>
|
</shape>
|
||||||
<color android:color="@color/white"/>
|
<color android:color="@color/white"/>
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="40dp"
|
android:minHeight="50dp"
|
||||||
android:minWidth="40dp"
|
android:minWidth="50dp"
|
||||||
android:initialLayout="@layout/widget_wrapper"
|
android:initialLayout="@layout/widget_wrapper"
|
||||||
android:previewImage="@drawable/widget_preview_checkmark"
|
android:previewImage="@drawable/widget_preview_checkmark"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="80dp"
|
android:minHeight="100dp"
|
||||||
android:minWidth="80dp"
|
android:minWidth="100dp"
|
||||||
android:minResizeWidth="80dp"
|
android:minResizeWidth="100dp"
|
||||||
android:minResizeHeight="80dp"
|
android:minResizeHeight="100dp"
|
||||||
android:initialLayout="@layout/widget_graph"
|
android:initialLayout="@layout/widget_graph"
|
||||||
android:previewImage="@drawable/widget_preview_frequency"
|
android:previewImage="@drawable/widget_preview_frequency"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="80dp"
|
android:minHeight="100dp"
|
||||||
android:minWidth="80dp"
|
android:minWidth="100dp"
|
||||||
android:minResizeWidth="80dp"
|
android:minResizeWidth="100dp"
|
||||||
android:minResizeHeight="80dp"
|
android:minResizeHeight="100dp"
|
||||||
android:initialLayout="@layout/widget_graph"
|
android:initialLayout="@layout/widget_graph"
|
||||||
android:previewImage="@drawable/widget_preview_history"
|
android:previewImage="@drawable/widget_preview_history"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="80dp"
|
android:minHeight="100dp"
|
||||||
android:minWidth="80dp"
|
android:minWidth="100dp"
|
||||||
android:minResizeWidth="80dp"
|
android:minResizeWidth="100dp"
|
||||||
android:minResizeHeight="80dp"
|
android:minResizeHeight="100dp"
|
||||||
android:initialLayout="@layout/widget_graph"
|
android:initialLayout="@layout/widget_graph"
|
||||||
android:previewImage="@drawable/widget_preview_score"
|
android:previewImage="@drawable/widget_preview_score"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="80dp"
|
android:minHeight="100dp"
|
||||||
android:minWidth="80dp"
|
android:minWidth="100dp"
|
||||||
android:minResizeWidth="80dp"
|
android:minResizeWidth="100dp"
|
||||||
android:minResizeHeight="80dp"
|
android:minResizeHeight="100dp"
|
||||||
android:initialLayout="@layout/widget_graph"
|
android:initialLayout="@layout/widget_graph"
|
||||||
android:previewImage="@drawable/widget_preview_streaks"
|
android:previewImage="@drawable/widget_preview_streaks"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:minHeight="80dp"
|
android:minHeight="100dp"
|
||||||
android:minWidth="80dp"
|
android:minWidth="100dp"
|
||||||
android:minResizeWidth="80dp"
|
android:minResizeWidth="100dp"
|
||||||
android:minResizeHeight="80dp"
|
android:minResizeHeight="100dp"
|
||||||
android:initialLayout="@layout/widget_graph"
|
android:initialLayout="@layout/widget_graph"
|
||||||
android:previewImage="@drawable/widget_preview_target"
|
android:previewImage="@drawable/widget_preview_target"
|
||||||
android:resizeMode="vertical|horizontal"
|
android:resizeMode="vertical|horizontal"
|
||||||
|
|||||||