From 6d9d273533929da287043e5aebe1b6444c707dbc Mon Sep 17 00:00:00 2001 From: pasichDev Date: Fri, 13 Nov 2026 11:38:44 +0200 Subject: [PATCH 1/4] chore(deps): upgrade Gradle 9.9.1, AGP 9.5.1 and build plugins - Gradle wrapper 9.2.1 -> 9.9.1 - AGP 9.0.1 -> 9.5.1 - Hilt 2.57.2 -> 2.60.1 - Spotless 8.10.1 -> 8.11.0 - google-services 4.4.4 -> 4.6.0 - Minor library bumps: Room 2.8.5, appcompat 1.8.0, work-runtime 2.12.0, credentials 1.6.0, googleid 1.2.1, gson 2.15.0, mockito 5.24.0, truth 1.4.5, robolectric 4.17 --- app/build.gradle | 22 +++--- build.gradle | 8 +-- gradle/wrapper/gradle-wrapper.jar | Bin 43583 -> 49154 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 15 ++-- gradlew.bat | 86 ++++++++++++++--------- 6 files changed, 76 insertions(+), 59 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6ac0f0e1..b436e1bb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -167,24 +167,24 @@ gradle.taskGraph.whenReady { graph -> ext { markwon_version = '4.6.2' - roomVersion = '2.8.4' + roomVersion = '2.8.5' } dependencies { implementation platform('com.google.firebase:firebase-bom:34.18.0') implementation 'com.google.firebase:firebase-auth' - implementation 'androidx.appcompat:appcompat:1.7.1' + implementation 'androidx.appcompat:appcompat:1.8.0' implementation 'com.google.android.material:material:1.14.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.2' implementation 'androidx.preference:preference:1.2.1' implementation "androidx.lifecycle:lifecycle-viewmodel:2.11.0" implementation 'androidx.core:core-splashscreen:1.2.0' implementation 'androidx.activity:activity:1.13.0' - implementation 'androidx.work:work-runtime:2.10.1' + implementation 'androidx.work:work-runtime:2.12.0' // Google Credential Manager (authentication only; Drive authorization is requested separately) - implementation 'androidx.credentials:credentials:1.5.0' - implementation 'androidx.credentials:credentials-play-services-auth:1.5.0' - implementation 'com.google.android.libraries.identity.googleid:googleid:1.2.0' + implementation 'androidx.credentials:credentials:1.6.0' + implementation 'androidx.credentials:credentials-play-services-auth:1.6.0' + implementation 'com.google.android.libraries.identity.googleid:googleid:1.2.1' implementation 'com.google.android.gms:play-services-auth:21.4.0' //DI (Hilt) @@ -203,7 +203,7 @@ dependencies { implementation 'com.android.billingclient:billing:8.3.0' //Other lib (Gson/PhotoView) - implementation 'com.google.code.gson:gson:2.14.0' + implementation 'com.google.code.gson:gson:2.15.0' implementation 'com.github.chrisbanes:PhotoView:2.3.0' implementation 'androidx.exifinterface:exifinterface:1.4.2' @@ -214,9 +214,9 @@ dependencies { // Unit tests testImplementation 'junit:junit:4.13.2' - testImplementation 'org.mockito:mockito-core:5.23.0' - testImplementation 'com.google.truth:truth:1.4.2' - testImplementation 'org.robolectric:robolectric:4.16.1' + testImplementation 'org.mockito:mockito-core:5.24.0' + testImplementation 'com.google.truth:truth:1.4.5' + testImplementation 'org.robolectric:robolectric:4.17' // Room testing (integration tests) testImplementation "androidx.room:room-testing:$roomVersion" @@ -224,7 +224,7 @@ dependencies { androidTestImplementation 'androidx.test:rules:1.7.0' androidTestImplementation 'androidx.test:runner:1.7.0' androidTestImplementation "androidx.room:room-testing:$roomVersion" - androidTestImplementation 'org.mockito:mockito-android:5.23.0' + androidTestImplementation 'org.mockito:mockito-android:5.24.0' androidTestImplementation 'com.google.truth:truth:1.4.5' } diff --git a/build.gradle b/build.gradle index 8ff5ba79..b5142724 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ buildscript { ext { - daggerHilt = '2.57.2' + daggerHilt = '2.60.1' } repositories { @@ -9,15 +9,15 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:9.0.1' + classpath 'com.android.tools.build:gradle:9.5.1' classpath "com.google.dagger:hilt-android-gradle-plugin:$daggerHilt" } } plugins { id 'com.google.dagger.hilt.android' version "$daggerHilt" apply false - id 'com.diffplug.spotless' version '8.10.1' apply false - id 'com.google.gms.google-services' version '4.4.4' apply false + id 'com.diffplug.spotless' version '8.11.0' apply false + id 'com.google.gms.google-services' version '4.6.0' apply false } tasks.register('clean', Delete) { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9530d66f5e68d973ea569d8e19de379189..51cbd2a6f8121b2ce12daf979b128058fb9672ee 100644 GIT binary patch delta 40960 zcmXuK^IzxR|2$l6wr$&XJ#(9F+jfu5wry^;*;||K%{Dh{(5ibVc&x$Jf6tqDG;~d<1!K|Gmt_RuD8F$(YJStJ#ZNs>YeW~@m@YS-MRX0(WQZ#s}TEgOz$owPznmz8`U9LNt z(yi+HaKU=4^-#c;Igdv-hN>CF*ygB-k6|dw!@xpj!l$pkcTp2aU{ZuWum!akJI%X}|8ZO6Bu?LSJVw9O= zm}17UU2_ZRDrxRGn=>O`y7p56RyME4lR|J@7r-$gMU`%0jLgMn%NyC_vaPYFW|^CLW+*&#!ILh?Ge-O#$oLPeAT z*9ewg7TgRDa(}|zYYq9LY<07ESY~hL8t1tN4K5qE;GO6L&Sv2nNl{1IaKIaj^0f)-yjWhbS;U>$D9Q#SPFlwWe43u;lw1nv@n-`=?w zu;vVH*l)8p%K70kfdf^m!?M<`lZrOdywjqisQtrz-pEb|8_P577=r;zPR&h?!)V!r5nSVkHeMV58BTsu9mK5^SP^6-{`-Zx2BOe`I9Mxo4@ zG)&A~!<{Tkf`*y(J~!I2eO{flAJu5vx3hE)eO^|7&;qN9^=z;*I)8td4gaYbaN$EG z{-G-#G(1Z+!00R#UZmgSFnb6*Kw5Ij0l(iXQ{RlqMozeJe%pNBQ z&zXyn2BX-%z7>{PQ5eyF%JIYVqC8k&a9AP5gw?BuM?Gsu-+IOjh`3&!?{et+%>=~o(V*l*(ZH;UgZ#*S}mc4sq6jHJcFVNWXkRu$y$l2*`VD3kP z#A48Ev*nyisEa%8iTWt)+c51>RX*viH>U(+|L_OIe;^c`39WU300V=_{gN_=MVRtJ zOO>LCK?E552S=d=>~!X`GV0JF7w=Ggxrp&e{6395ZV$!y9*y56K60bV^i^o=?(Uo zOeN--`Rgr2#4GuXUHMd_KSC+mS*+c1UM<}8fJ`D0_W-kwAtIyHSjVo5TgTN)H$lwq zmQlFx)igJ?vo50z45>;r2bIi>OoF=X!tp_DCj^F-UvD-%AwjEZf8_LBCeW}J8W_Ik zpS#*DI?x$9A0lwI&BKT4UOnFb#YaahD^<1$5{&qkY}9O2i^WoVY-*PTW89cAdXQ=C7NWq|20%g#K)2tG0vP`^m=Cg!K>fO zKoHbu(Urb!nt6QywAX^SgC|*G<^Pb8@UCWd9~=Rd7*53BZ;iS2;g{nLk~)Cox%AI$ zl2l}WoMiTCbV@1J`P`Or&p*CZ02QEU97CKRtp-opJ3_*;5j@k zA96T8Dm|2vi$#;3Eh zAxJdZyTjtMv|~xtwYS!(GuEO94Wes7Z=ir_rgg0aiyDq_7|WwSD(Y>XF&2I;J~6W)E@tafh?V?8Gi7-8sIfiCjNiULcAY z#|U<+jI$-H_!-;<@7QHmG+&IEQlC&dmkBzfdH2}1>6)*ETlje= zhf#}ZXu;c(vGWzgBbSdXg*)A%is3{h#zm_rh$=0J*M~b070`;SjGw_44Ogvc_(Ls% zA}V6kc=;uDgs{9Dbs3L88HBd6fwAlMlL*sfErxXf)uq;fj)cV8i|oQ-ccZNZp(YMoq81ac
HuKE7lhWB6@|$~OL4 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 K9W-^)_~ delta 35629 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2b..04d79595 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.9.1-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index f3b75f3b..249efbb0 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -205,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a218..3185a43f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,12 +19,39 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +@rem Catch executions from older scripts and ensure they exit cleanly. +@rem This can be removed once we can be reasonably confident that few people +@rem will be migrating directly to this new wrapper. +goto afterSafetyNet +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +goto exitWithErrorLevel +:afterSafetyNet set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -45,13 +72,14 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -59,36 +87,26 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel & goto exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem This label must not be changed. We rely on old scripts being able to jump to this point. +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From 3e4590d618074af7bd78d0dced5dbcaf8a45a9c6 Mon Sep 17 00:00:00 2001 From: pasichDev Date: Fri, 13 Nov 2026 12:21:04 +0200 Subject: [PATCH 2/4] fix(editor): survive a selection gesture without a recorded start In selecting mode (Shift held on a hardware keyboard) ArrowKeyMovementMethod extends the selection from the offset it recorded on the down. When the down came before selecting started nothing was recorded, it selected from -1 and crashed with "setSpan (-1 ... -1) starts before 0" (Play Console, 2.7.56). The selection now stays as it was. --- .../editor/EditableLinkMovementMethod.java | 11 ++- .../EditableLinkMovementMethodTest.java | 71 +++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 app/src/test/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethodTest.java diff --git a/app/src/main/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethod.java b/app/src/main/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethod.java index febc6ce8..095601f3 100644 --- a/app/src/main/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethod.java +++ b/app/src/main/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethod.java @@ -60,7 +60,16 @@ public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event } } } - return super.onTouchEvent(widget, buffer, event); + try { + return super.onTouchEvent(widget, buffer, event); + } catch (IndexOutOfBoundsException e) { + // In selecting mode (Shift held on a hardware keyboard) the platform extends the + // selection from the offset it recorded on the down. When the down came before + // selecting started, nothing was recorded and it selects from -1, which throws. The + // selection is left as it was rather than taking the app down. + Log.w(TAG, "Selection gesture without a recorded start", e); + return true; + } } private boolean isTap(TextView widget, MotionEvent up) { diff --git a/app/src/test/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethodTest.java b/app/src/test/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethodTest.java new file mode 100644 index 00000000..cf95abe0 --- /dev/null +++ b/app/src/test/java/com/pasich/mynotes/utils/editor/EditableLinkMovementMethodTest.java @@ -0,0 +1,71 @@ +package com.pasich.mynotes.utils.editor; + +import static com.google.common.truth.Truth.assertThat; + +import android.app.Activity; +import android.os.SystemClock; +import android.text.Editable; +import android.text.Selection; +import android.text.method.TextKeyListener; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.View; +import android.widget.EditText; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {28, 35}) +public class EditableLinkMovementMethodTest { + + private EditText field; + + @Before + public void setUp() { + Activity activity = Robolectric.buildActivity(Activity.class).setup().get(); + field = new EditText(activity); + activity.setContentView(field); + field.setText("Some note text"); + field.measure( + View.MeasureSpec.makeMeasureSpec(600, View.MeasureSpec.EXACTLY), + View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.EXACTLY)); + field.layout(0, 0, 600, 400); + field.setMovementMethod(EditableLinkMovementMethod.getInstance()); + field.requestFocus(); + field.setSelection(3); + } + + /** + * Play Console crash in 2.7.56 ({@code setSpan (-1 ... -1) starts before 0}): the down lands + * while the field is not selecting, selecting mode turns on (Shift on a hardware keyboard) + * before the up, and {@code ArrowKeyMovementMethod} then selects from a start it never + * recorded. + */ + @Test + public void upInSelectingModeWithoutARecordedDown_doesNotCrashAndKeepsTheCaret() { + Editable buffer = field.getText(); + long now = SystemClock.uptimeMillis(); + MotionEvent down = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, 50f, 10f, 0); + field.onTouchEvent(down); + down.recycle(); + TextKeyListener.getInstance() + .onKeyDown( + field, + buffer, + KeyEvent.KEYCODE_SHIFT_LEFT, + new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT)); + int caretBefore = Selection.getSelectionStart(buffer); + + MotionEvent up = MotionEvent.obtain(now, now + 50, MotionEvent.ACTION_UP, 50f, 10f, 0); + boolean handled = EditableLinkMovementMethod.getInstance().onTouchEvent(field, buffer, up); + up.recycle(); + + assertThat(handled).isTrue(); + assertThat(Selection.getSelectionStart(buffer)).isEqualTo(caretBefore); + assertThat(Selection.getSelectionEnd(buffer)).isEqualTo(caretBefore); + } +} From 12a950406ec4b7e62b0846a49bb605d1583c4fc6 Mon Sep 17 00:00:00 2001 From: pasichDev Date: Fri, 13 Nov 2026 12:21:08 +0200 Subject: [PATCH 3/4] fix(settings): stop crashing when Do Not Disturb refuses a volume change On Android 10 with Do Not Disturb on, AudioManager.setStreamVolume throws "Not allowed to change Do Not Disturb state" without notification policy access (Play Console, 2.7.56). The refusal is caught and the slider goes back to the volume actually in effect. --- .../settings/MediaSettingsFragment.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/pasich/mynotes/ui/view/fragment/settings/MediaSettingsFragment.java b/app/src/main/java/com/pasich/mynotes/ui/view/fragment/settings/MediaSettingsFragment.java index 94c6ab4e..e626436c 100644 --- a/app/src/main/java/com/pasich/mynotes/ui/view/fragment/settings/MediaSettingsFragment.java +++ b/app/src/main/java/com/pasich/mynotes/ui/view/fragment/settings/MediaSettingsFragment.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,6 +32,8 @@ @AndroidEntryPoint public class MediaSettingsFragment extends Fragment { + private static final String TAG = "MediaSettings"; + @Inject ThemePreferencesCache themePreferencesCache; @Inject AppPreferencesCache appPreferencesCache; @@ -123,8 +126,18 @@ private void initListeners() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser && audioManager != null) { - audioManager.setStreamVolume( - AudioManager.STREAM_NOTIFICATION, progress, 0); + try { + audioManager.setStreamVolume( + AudioManager.STREAM_NOTIFICATION, progress, 0); + } catch (SecurityException e) { + // With Do Not Disturb on, the system refuses volume changes + // that would toggle it unless the app has notification policy + // access. The slider goes back to the volume actually in effect. + Log.w(TAG, "Notification volume change refused", e); + seekBar.setProgress( + audioManager.getStreamVolume( + AudioManager.STREAM_NOTIFICATION)); + } } } From 2a1a981382759dee24fdb55410f3e64c46807885 Mon Sep 17 00:00:00 2001 From: pasichDev Date: Fri, 13 Nov 2026 12:23:49 +0200 Subject: [PATCH 4/4] chore(editor): npm audit fix for the notes editor build tooling Clears the advisories that fail the CI audit step (--audit-level=high): source-map-js (high), colord, postcss-selector-parser and serialize-javascript. Only build tooling changes; the generated editor bundles are byte-identical. Two low-severity deepmerge advisories remain: their fix would downgrade @rollup/plugin-node-resolve to 7.x. --- notes_editor/package-lock.json | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/notes_editor/package-lock.json b/notes_editor/package-lock.json index d6d02363..ddf8176d 100644 --- a/notes_editor/package-lock.json +++ b/notes_editor/package-lock.json @@ -821,9 +821,9 @@ "license": "MIT" }, "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.12.0.tgz", + "integrity": "sha512-SpiONmQPZDqe50ivOTgkVikYsnp6l1HTFYqPRLNBCJJdA2Qympw2yYUzX99XlSbbKZswjiG6r+xsUpPPOHqY+Q==", "dev": true, "license": "MIT" }, @@ -2040,13 +2040,12 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", - "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.6.tgz", + "integrity": "sha512-BK87/Qgti3DIcgS2PaCVoteFIkjIFvCJBizZDIVSjdlFNg4Jv+SRqbN2JONb/qQUH4ZFqfXYF+izg15W2HVRvA==", "dev": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" }, "engines": { @@ -2241,9 +2240,9 @@ } }, "node_modules/serialize-javascript": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.1.tgz", - "integrity": "sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.4.tgz", + "integrity": "sha512-FqlEuoTq/zRmA4Lg6aOqyH3lCHbUtCB0bmHCeFniX2GBdDqMJM3FwdvEhlE5Pim1dlt2FfBdVPmUNNiGhhKqpw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2268,9 +2267,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "dev": true, "license": "BSD-3-Clause", "peer": true,