briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-01-09T21:39:57Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/315Use private Composable functions where possible2023-01-09T21:39:57ZMikolai GütschowUse private Composable functions where possibleThe following discussion from !165 should be addressed:
- [ ] @sebkur started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/165#note_63088): (+2 comments)
> Hmm, I guess [having private Composab...The following discussion from !165 should be addressed:
- [ ] @sebkur started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/165#note_63088): (+2 comments)
> Hmm, I guess [having private Composable functions has] been possible all the time, we just haven't made use of it the way one usually would. For example looking at `PrivateMessageScreen`, all methods except `PrivateMessageScreen()` could be private. I think that's pretty common in our codebase. I think we didn't stumble upon it as IntelliJ doesn't warn about @Composable functions that could be private like it does with regular methods that could be private.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/316Add list of contributors to About dialog2022-02-22T01:29:02ZMikolai GütschowAdd list of contributors to About dialogE.g. like it's done in Transportr. What are your thoughts on this @nico @sebkur?E.g. like it's done in Transportr. What are your thoughts on this @nico @sebkur?https://code.briarproject.org/briar/briar-desktop/-/issues/317Better TAB navigation in combination with password reveal buttons2022-02-21T23:06:27ZMikolai GütschowBetter TAB navigation in combination with password reveal buttonsThe following discussion from !177 should be addressed:
- [ ] @ialokim started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/177#note_63754): (+1 comment)
> I just noticed that stepping through ...The following discussion from !177 should be addressed:
- [ ] @ialokim started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/177#note_63754): (+1 comment)
> I just noticed that stepping through the text fields using the TAB/Enter keys does not work very nicely anymore since the "reveal password" button is in between two text fields. Not sure what should be the expected behavior here though, since having the reveal password buttons accessible is definitely a must as well. Perhaps changing the tab order?https://code.briarproject.org/briar/briar-desktop/-/issues/319Connectivity issues after suspend/hibernate2023-03-08T14:07:07ZSebastianConnectivity issues after suspend/hibernateAs @akwizgran [pointed out here](https://code.briarproject.org/briar/briar-desktop/-/issues/183#note_60283):
> I think Linux takes network interfaces down on suspend/hibernate (wake-on-LAN is handled at the hardware level), so we might
...As @akwizgran [pointed out here](https://code.briarproject.org/briar/briar-desktop/-/issues/183#note_60283):
> I think Linux takes network interfaces down on suspend/hibernate (wake-on-LAN is handled at the hardware level), so we might
need to listen for some kind of event indicating that the device has come out of suspend/hibernate and force a connectivity check. Such events exist on certain flavours of Linux but I don't know how they're implemented (dbus?) or whether anything similar exists on Win/Mac.
I think we also already got reports that briar desktop was offline after coming back from suspend also it appeared online in the own user interface.https://code.briarproject.org/briar/briar-desktop/-/issues/320Increase threshold for including translations2023-02-01T13:45:04ZNicoIncrease threshold for including translationsWith !185 I realized that 50% might be not enough for us to include languages for future releases. Ukrainian is only around 50%, and while a lot of important strings are already translated, there's still a lot of stuff missing.
I sugges...With !185 I realized that 50% might be not enough for us to include languages for future releases. Ukrainian is only around 50%, and while a lot of important strings are already translated, there's still a lot of stuff missing.
I suggest aligning Desktop's policy [with Android's one](https://code.briarproject.org/briar/briar/-/blob/master/briar-android/.tx/config#L10) and set the threshold to 80% for future releases.
What to do with languages that are included but under 80% is open to discussion.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/325Librem 5 LibraryLoadException2022-02-28T08:00:35ZpaulLibrem 5 LibraryLoadExceptionFrom Briar matrix:
> Hi! I am trying to run briar-desktop (java version) on a Librem 5 phone (Debian-based aarch64 GNU/Linux). I am getting an exception, where the relevant part seems to be:
```java
Caused by: org.jetbrains.skiko.Library...From Briar matrix:
> Hi! I am trying to run briar-desktop (java version) on a Librem 5 phone (Debian-based aarch64 GNU/Linux). I am getting an exception, where the relevant part seems to be:
```java
Caused by: org.jetbrains.skiko.LibraryLoadException: Cannot find libskiko-linux-xrm64.so.sha256, proper native dependency missing.
```https://code.briarproject.org/briar/briar/-/issues/2271IllegalStateException when setting password2022-04-17T11:49:19ZakwizgranIllegalStateException when setting password* Android version: 9
* Phone models: Huawei Y6 Pro 2019, Honor 8A, Huawei nova 3i
* Briar version: 1.4.4 (Google Play)
Stacktrace:
```
java.lang.IllegalStateException:
at org.briarproject.briar.android.account.SetupViewModel.setPassw...* Android version: 9
* Phone models: Huawei Y6 Pro 2019, Honor 8A, Huawei nova 3i
* Briar version: 1.4.4 (Google Play)
Stacktrace:
```
java.lang.IllegalStateException:
at org.briarproject.briar.android.account.SetupViewModel.setPassword (SetupViewModel.java:84)
at org.briarproject.briar.android.account.SetPasswordFragment.onClick (SetPasswordFragment.java:123)
at android.view.View.performClick (View.java:6659)
at android.view.View.performClickInternal (View.java:6631)
at android.view.View.access$3100 (View.java:790)
at android.view.View$PerformClick.run (View.java:26187)
at android.os.Handler.handleCallback (Handler.java:907)
at android.os.Handler.dispatchMessage (Handler.java:105)
at android.os.Looper.loop (Looper.java:216)
at android.app.ActivityThread.main (ActivityThread.java:7625)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2274BadTokenException from emoji popup2024-03-18T18:00:04ZakwizgranBadTokenException from emoji popup* Android version: 5.1.1
* Phone model: Samsung SM-J200G (j2ltedd)
* Briar version: 1.4.4 (36670a8)
Stacktrace:
```
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?...* Android version: 5.1.1
* Phone model: Samsung SM-J200G (j2ltedd)
* Briar version: 1.4.4 (36670a8)
Stacktrace:
```
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:772)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:298)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.widget.PopupWindow.invokePopup(PopupWindow.java:1185)
at android.widget.PopupWindow.showAtLocation(PopupWindow.java:983)
at android.widget.PopupWindow.showAtLocation(PopupWindow.java:942)
at com.vanniktech.emoji.EmojiPopup.showAtBottom(EmojiPopup.java:248)
at com.vanniktech.emoji.EmojiPopup.onReceiveResult(EmojiPopup.java:257)
at com.vanniktech.emoji.EmojiResultReceiver.onReceiveResult(EmojiResultReceiver.java:26)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
```
Log:
```
02-18 04:08:30.169 I/BriarApplicationImpl: Created
02-18 04:08:30.658 I/BaseActivity: Creating CrashReportActivity
02-18 04:08:31.197 I/BaseActivity: Starting CrashReportActivity
02-18 04:08:31.198 I/BaseActivity: Resuming CrashReportActivity
02-18 04:08:31.240 I/BaseActivity: Pausing CrashReportActivity
02-18 04:08:31.246 I/BaseActivity: Stopping CrashReportActivity
02-18 04:08:31.251 I/BaseActivity: Destroying CrashReportActivity
02-18 04:08:31.305 I/BaseActivity: Creating CrashReportActivity
02-18 04:08:31.345 W/LogDecrypterImpl: java.io.FileNotFoundException: /data/data/org.briarproject.briar.android/files/dev-logcat: open failed: ENOENT (No such file or directory)
java.io.FileNotFoundException: /data/data/org.briarproject.briar.android/files/dev-logcat: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:456)
at java.io.FileInputStream.<init>(FileInputStream.java:76)
at org.briarproject.briar.android.logging.LogDecrypterImpl.decryptLogs(LogDecrypterImpl.java:45)
at org.briarproject.briar.android.reporting.ReportViewModel.lambda$init$0(ReportViewModel.java:97)
at org.briarproject.briar.android.reporting.ReportViewModel.$r8$lambda$9TLFESir3FK2Ov67pYo4zJIxFgo(ReportViewModel.java)
at org.briarproject.briar.android.reporting.ReportViewModel$$ExternalSyntheticLambda1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at org.briarproject.briar.android.reporting.ReportViewModel$SingleShotAndroidExecutor.run(ReportViewModel.java:249)
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
at libcore.io.IoBridge.open(IoBridge.java:442)
at java.io.FileInputStream.<init>(FileInputStream.java:76)
at org.briarproject.briar.android.logging.LogDecrypterImpl.decryptLogs(LogDecrypterImpl.java:45)
at org.briarproject.briar.android.reporting.ReportViewModel.lambda$init$0(ReportViewModel.java:97)
at org.briarproject.briar.android.reporting.ReportViewModel.$r8$lambda$9TLFESir3FK2Ov67pYo4zJIxFgo(ReportViewModel.java)
at org.briarproject.briar.android.reporting.ReportViewModel$$ExternalSyntheticLambda1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at org.briarproject.briar.android.reporting.ReportViewModel$SingleShotAndroidExecutor.run(ReportViewModel.java:249)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2275AssertionError when adding pending contact2022-02-28T15:06:45ZakwizgranAssertionError when adding pending contact* Android version: 5.1.1
* Phone model: Samsung SM-J120H (j1x3gxx)
* Briar version: 1.4.4 (36670a8)
Last lines of log:
```
02-24 09:47:54.504 I/BaseActivity: Pausing AddContactActivity
02-24 09:47:54.545 I/BaseActivity: Creating Pending...* Android version: 5.1.1
* Phone model: Samsung SM-J120H (j1x3gxx)
* Briar version: 1.4.4 (36670a8)
Last lines of log:
```
02-24 09:47:54.504 I/BaseActivity: Pausing AddContactActivity
02-24 09:47:54.545 I/BaseActivity: Creating PendingContactListActivity
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.bramble.api.nullsafety.NullSafety.requireNull(NullSafety.java:30)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.addPendingContact(RendezvousPollerImpl.java:180)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.lambda$addPendingContactAsync$3(RendezvousPollerImpl.java:306)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.$r8$lambda$Mi_U1ZCfMDPQHtgr1vajgSuXz0Y(RendezvousPollerImpl.java)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl$$ExternalSyntheticLambda3.run(Unknown Source)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.$r8$lambda$wSvuPL6t_HUoaaqCVexrhJX_RSg(PoliteExecutor.java)
at org.briarproject.bramble.PoliteExecutor$$ExternalSyntheticLambda0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2276IllegalStateException when restoring state of ConversationActivity2024-03-18T17:46:26ZakwizgranIllegalStateException when restoring state of ConversationActivity* Android version: 7.1.2
* Phone model: Samsung I9192I (lineage_serranove3gxx)
* Briar version: 1.4.4 (36670a8)
Edited log:
```
02-17 19:34:09.198 I/BaseActivity: Creating ConversationActivity
02-17 19:34:09.309 I/BaseActivity: Starting...* Android version: 7.1.2
* Phone model: Samsung I9192I (lineage_serranove3gxx)
* Briar version: 1.4.4 (36670a8)
Edited log:
```
02-17 19:34:09.198 I/BaseActivity: Creating ConversationActivity
02-17 19:34:09.309 I/BaseActivity: Starting ConversationActivity
02-17 19:34:09.330 I/BaseActivity: Resuming ConversationActivity
02-17 19:34:09.414 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
02-17 19:34:09.424 I/ImageCompressorImpl: Original image size: 600x450
02-17 19:34:09.424 I/ImageCompressorImpl: Scaling attachment by factor of 1
02-17 19:34:09.542 I/ConversationActivity: Eagerly loading text for latest message
02-17 19:34:09.668 I/ImageCompressorImpl: Compressed image to 32254 bytes, quality 50
02-17 19:34:18.123 I/BaseActivity: Pausing ConversationActivity
02-17 19:34:18.178 I/BaseActivity: Stopping ConversationActivity
02-17 19:34:18.226 I/BaseActivity: Destroying ConversationActivity
02-17 19:34:51.495 I/BaseActivity: Creating ConversationActivity
02-17 19:34:51.573 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
02-17 19:34:51.591 I/BaseActivity: Starting ConversationActivity
02-17 19:34:51.596 W/AttachmentCreatorImpl: No Task!
02-17 19:34:51.596 W/AttachmentCreatorImpl: No Result!
02-17 19:34:51.596 W/AttachmentCreatorImpl: Uris empty!
```
Stacktrace:
```
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar.android/org.briarproject.briar.android.conversation.ConversationActivity}: java.lang.IllegalStateException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.getLiveAttachments(AttachmentCreatorImpl.java:107)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeAttachments(ConversationViewModel.java:274)
at org.briarproject.briar.android.view.TextAttachmentController.onNewUris(TextAttachmentController.java:178)
at org.briarproject.briar.android.view.TextAttachmentController.onRestoreInstanceState(TextAttachmentController.java:242)
at org.briarproject.briar.android.view.TextInputView.onRestoreInstanceState(TextInputView.java:86)
at android.view.View.dispatchRestoreInstanceState(View.java:15755)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3231)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3237)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3237)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3237)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3237)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3237)
at android.view.View.restoreHierarchyState(View.java:15733)
at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2106)
at android.app.Activity.onRestoreInstanceState(Activity.java:1048)
at org.briarproject.briar.android.conversation.ConversationActivity.onRestoreInstanceState(ConversationActivity.java:362)
at android.app.Activity.performRestoreInstanceState(Activity.java:1003)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1175)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2657)
... 9 more
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2278KeyStoreException: Invalid operation handle2022-06-13T15:00:46ZakwizgranKeyStoreException: Invalid operation handle* Android version: 11
* Phone model: Motorola Moto G(9) Power (cebu_retailn)
* Briar version: 1.4.1 (6517f3f)
Log:
```
12-16 06:37:45.374 I/BriarApplicationImpl: Created
12-16 06:37:45.449 I/BaseActivity: Creating SplashScreenActivity
1...* Android version: 11
* Phone model: Motorola Moto G(9) Power (cebu_retailn)
* Briar version: 1.4.1 (6517f3f)
Log:
```
12-16 06:37:45.374 I/BriarApplicationImpl: Created
12-16 06:37:45.449 I/BaseActivity: Creating SplashScreenActivity
12-16 06:37:45.512 I/BaseActivity: Starting SplashScreenActivity
12-16 06:37:45.513 I/BaseActivity: Resuming SplashScreenActivity
12-16 06:37:45.998 I/BaseActivity: Pausing SplashScreenActivity
12-16 06:37:46.057 I/BaseActivity: Creating NavDrawerActivity
12-16 06:37:46.131 I/BaseActivity: Starting NavDrawerActivity
12-16 06:37:46.134 I/BaseActivity: Resuming NavDrawerActivity
12-16 06:37:46.134 I/BriarActivity: Not signed in, launching StartupActivity
12-16 06:37:46.174 I/BaseActivity: Pausing NavDrawerActivity
12-16 06:37:46.193 I/BaseActivity: Creating StartupActivity
12-16 06:37:46.217 I/AccountManagerImpl: Found database key in primary file
12-16 06:37:46.220 I/BaseActivity: Starting StartupActivity
12-16 06:37:46.302 I/BaseActivity: Resuming StartupActivity
12-16 06:37:46.514 I/BaseActivity: Stopping NavDrawerActivity
12-16 06:37:46.913 I/BaseActivity: Stopping SplashScreenActivity
12-16 06:37:46.914 I/BaseActivity: Destroying SplashScreenActivity
12-16 06:37:52.674 I/AccountManagerImpl: Found database key in primary file
12-16 06:37:57.264 I/AndroidKeyStrengthener: Loaded key from keystore
```
Stacktrace:
```
java.security.ProviderException: Keystore operation failed
at android.security.keystore.AndroidKeyStoreHmacSpi.engineDoFinal(AndroidKeyStoreHmacSpi.java:242)
at javax.crypto.Mac.doFinal(Mac.java:667)
at javax.crypto.Mac.doFinal(Mac.java:742)
at org.briarproject.briar.android.AndroidKeyStrengthener.strengthenKey(AndroidKeyStrengthener.java:99)
at org.briarproject.bramble.crypto.CryptoComponentImpl.decryptWithPassword(CryptoComponentImpl.java:407)
at org.briarproject.bramble.account.AccountManagerImpl.loadAndDecryptDatabaseKey(AccountManagerImpl.java:214)
at org.briarproject.bramble.account.AccountManagerImpl.signIn(AccountManagerImpl.java:200)
at org.briarproject.briar.android.login.StartupViewModel.lambda$validatePassword$0(StartupViewModel.java:112)
at org.briarproject.briar.android.login.StartupViewModel.lambda$validatePassword$0$StartupViewModel(Unknown Source:0)
at org.briarproject.briar.android.login.-$$Lambda$StartupViewModel$5aurY1rQupylNVXCUST5DjfL1L4.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: android.security.KeyStoreException: Invalid operation handle
at android.security.KeyStore.getKeyStoreException(KeyStore.java:1301)
at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:176)
at android.security.keystore.AndroidKeyStoreHmacSpi.engineDoFinal(AndroidKeyStoreHmacSpi.java:236)
... 12 more
```https://code.briarproject.org/briar/briar/-/issues/2279KeyStoreException: Too many operations2022-06-13T15:00:46ZakwizgranKeyStoreException: Too many operations* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.4.1 (6517f3f)
Log:
```
12-07 10:57:20.650 I/BriarApplicationImpl: Created
12-07 10:57:20.673 I/BaseActivity: Creating SplashScreenActivity
12-07 10:57:20....* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.4.1 (6517f3f)
Log:
```
12-07 10:57:20.650 I/BriarApplicationImpl: Created
12-07 10:57:20.673 I/BaseActivity: Creating SplashScreenActivity
12-07 10:57:20.683 I/BaseActivity: Starting SplashScreenActivity
12-07 10:57:20.685 I/BaseActivity: Resuming SplashScreenActivity
12-07 10:57:21.193 I/BaseActivity: Pausing SplashScreenActivity
12-07 10:57:21.206 I/BaseActivity: Creating NavDrawerActivity
12-07 10:57:21.242 I/BaseActivity: Starting NavDrawerActivity
12-07 10:57:21.243 I/BaseActivity: Resuming NavDrawerActivity
12-07 10:57:21.243 I/BriarActivity: Not signed in, launching StartupActivity
12-07 10:57:21.252 I/BaseActivity: Pausing NavDrawerActivity
12-07 10:57:21.259 I/BaseActivity: Creating StartupActivity
12-07 10:57:21.271 I/AccountManagerImpl: Found database key in primary file
12-07 10:57:21.272 I/BaseActivity: Starting StartupActivity
12-07 10:57:21.289 I/BaseActivity: Resuming StartupActivity
12-07 10:57:21.340 I/BaseActivity: Stopping NavDrawerActivity
12-07 10:57:21.758 I/BaseActivity: Stopping SplashScreenActivity
12-07 10:57:21.758 I/BaseActivity: Destroying SplashScreenActivity
12-07 10:57:22.336 I/BaseActivity: Pausing StartupActivity
12-07 10:57:22.918 I/BaseActivity: Stopping StartupActivity
12-07 10:57:25.564 I/BaseActivity: Starting StartupActivity
12-07 10:57:25.565 I/BaseActivity: Resuming StartupActivity
12-07 10:57:26.387 I/AccountManagerImpl: Found database key in primary file
12-07 10:57:27.178 I/AndroidKeyStrengthener: Loaded key from keystore
```
Stacktrace:
```
java.lang.RuntimeException: java.security.InvalidKeyException: Keystore operation failed
at org.briarproject.briar.android.AndroidKeyStrengthener.strengthenKey(AndroidKeyStrengthener.java:101)
at org.briarproject.bramble.crypto.CryptoComponentImpl.decryptWithPassword(CryptoComponentImpl.java:407)
at org.briarproject.bramble.account.AccountManagerImpl.loadAndDecryptDatabaseKey(AccountManagerImpl.java:214)
at org.briarproject.bramble.account.AccountManagerImpl.signIn(AccountManagerImpl.java:200)
at org.briarproject.briar.android.login.StartupViewModel.lambda$validatePassword$0(StartupViewModel.java:112)
at org.briarproject.briar.android.login.StartupViewModel.lambda$validatePassword$0$StartupViewModel(Unknown Source:0)
at org.briarproject.briar.android.login.-$$Lambda$StartupViewModel$5aurY1rQupylNVXCUST5DjfL1L4.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.security.InvalidKeyException: Keystore operation failed
at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1378)
at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1388)
at android.security.keystore.KeyStoreCryptoOperationUtils.getInvalidKeyExceptionForInit(KeyStoreCryptoOperationUtils.java:54)
at android.security.keystore.AndroidKeyStoreHmacSpi.ensureKeystoreOperationInitialized(AndroidKeyStoreHmacSpi.java:184)
at android.security.keystore.AndroidKeyStoreHmacSpi.engineInit(AndroidKeyStoreHmacSpi.java:101)
at javax.crypto.Mac.chooseProvider(Mac.java:443)
at javax.crypto.Mac.init(Mac.java:513)
at org.briarproject.briar.android.AndroidKeyStrengthener.strengthenKey(AndroidKeyStrengthener.java:98)
... 9 more
Caused by: android.security.KeyStoreException: Too many operations
at android.security.KeyStore.getKeyStoreException(KeyStore.java:1301)
... 16 more
```https://code.briarproject.org/briar/briar-desktop/-/issues/328Message spacing for sequential messages2022-03-03T03:43:36ZpaulMessage spacing for sequential messagesThis is a feature in Apple's iMessage that I didn't realize was useful until I started using Briar Android and Desktop frequently. For sequential messages that are sent within ~1 minute of each other, by the same contact, Apple changes t...This is a feature in Apple's iMessage that I didn't realize was useful until I started using Briar Android and Desktop frequently. For sequential messages that are sent within ~1 minute of each other, by the same contact, Apple changes the spacing to about 1-2px. The result is that message bubbles sent in the same window are grouped together and are easier to read as a collective group.
Not sure how hard this would be to implement on the back end, but there's a chance compose makes it fairly easy.https://code.briarproject.org/briar/briar/-/issues/2281IllegalArgumentException when resuming NavDrawerActivity2023-03-13T13:50:06ZakwizgranIllegalArgumentException when resuming NavDrawerActivity* Android version: 8.1.0
* Phone model: Meizu 16th (meizu_16th_CN)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-02 16:07:06.639 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.tor is ACTIVE
03-02 16:07:11.736 I/A...* Android version: 8.1.0
* Phone model: Meizu 16th (meizu_16th_CN)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-02 16:07:06.639 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.tor is ACTIVE
03-02 16:07:11.736 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
03-02 16:07:12.294 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
3-02 16:07:14.655 I/BaseActivity: Starting NavDrawerActivity
03-02 16:07:14.999 I/BaseActivity: Stopping NavDrawerActivity
03-02 16:07:18.771 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
03-02 16:07:19.751 I/BaseActivity: Starting NavDrawerActivity
03-02 16:07:19.753 I/BaseActivity: Resuming NavDrawerActivity
03-02 16:07:19.954 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
03-02 16:07:21.559 I/BaseActivity: Pausing NavDrawerActivity
03-02 16:07:22.150 I/BaseActivity: Stopping NavDrawerActivity
03-02 16:07:23.976 I/BaseActivity: Starting NavDrawerActivity
03-02 16:07:23.977 I/BaseActivity: Resuming NavDrawerActivity
```
Stacktrace:
```
java.lang.IllegalArgumentException: View=DecorView@4228967[] not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:488)
at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:383)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:101)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3952)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:192)
at android.app.ActivityThread.main(ActivityThread.java:6842)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
```
This looks like it's most likely a platform bug, so I'm not adding it to the current milestone for the time being.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2282iOS feasibility study2022-03-03T17:03:06ZakwizgraniOS feasibility studyTo know whether Briar can be viable on iOS we need to answer the following questions.
Online:
* Can the app run a Tor hidden service on iOS? (Bearing in mind that this requires a wake lock on Android to prevent Tor's circuits from timin...To know whether Briar can be viable on iOS we need to answer the following questions.
Online:
* Can the app run a Tor hidden service on iOS? (Bearing in mind that this requires a wake lock on Android to prevent Tor's circuits from timing out when the CPU sleeps.)
* Can the hidden service keep running for a limited time when the app goes into the background?
* Can the app wake periodically while running in the background, connect to a mailbox via Tor and check for messages?
* If the app finds messages when checking the mailbox, can it (a) store the messages in the local database, (b) show a notification?
Offline:
* Can the app advertise a UUID/other info via BLE such that nearby iOS/Android devices can discover it?
* Can the app scan for UUIDs/other info advertised via BLE by nearby iOS/Android devices?
* Can the app make/receive GATT connections to/from iOS/Android devices?
* Can the app make/receive L2CAP-CoC connections to/from iOS/Android devices?
* Can the app provide a wifi hotspot (without internet access)? Can it make/receive TCP connections to/from devices connected to the hotspot?
* Can the app connect to a wifi hotspot (without internet access) provided by another device? Can it make/receive TCP connections to/from other devices connected to the hotspot?
For all of the above we need to know:
* Differences between foreground and background behaviour
* API limits such as rate limits, number of UUIDs that can be scanned for
* Any other circumstances that could affect the behaviour, such as screen being off, low battery, device reboot, user not bringing the app to the foreground for a long time
* Whether user interaction is neededhttps://code.briarproject.org/briar/briar/-/issues/2283Add menu item to select custom tor bridge2022-08-17T05:41:15ZJohan SchmurgeAdd menu item to select custom tor bridgeAdd menu item to select custom tor bridge. In some countries public tor bridges are blocked, and app does not work. Using custom bridges resolve this problem as it do in tor browser.Add menu item to select custom tor bridge. In some countries public tor bridges are blocked, and app does not work. Using custom bridges resolve this problem as it do in tor browser.https://code.briarproject.org/briar/briar-desktop/-/issues/329Contacts list are sorted by sent time and can lead to confusion2022-03-08T19:07:53ZSebastianContacts list are sorted by sent time and can lead to confusionWhen messages that were sent a long time ago by Alice and arrive only now at Bob's briar, because they only came online simultaneously now, the timestamp that is used for sorting contacts in Bob's contact list is the one from when the me...When messages that were sent a long time ago by Alice and arrive only now at Bob's briar, because they only came online simultaneously now, the timestamp that is used for sorting contacts in Bob's contact list is the one from when the messages were sent. The result is that Alice won't move to the top of contacts on Bob's end and might lead to Bob not noticing the new messages.https://code.briarproject.org/briar/tor-reproducer/-/issues/9Extract code from Android Makefile2022-03-10T14:07:20ZakwizgranExtract code from Android MakefileConvert some of the code in the Android Makefile to Python so we more easily compare the Android, Linux and Windows builds and share code between them.Convert some of the code in the Android Makefile to Python so we more easily compare the Android, Linux and Windows builds and share code between them.https://code.briarproject.org/briar/tor-reproducer/-/issues/10Share more code between platforms2022-03-10T14:07:20ZakwizgranShare more code between platformsRefactor the code to share more code between platforms, perhaps through inheritance. Depends on #9.Refactor the code to share more code between platforms, perhaps through inheritance. Depends on #9.https://code.briarproject.org/briar/tor-reproducer/-/issues/11Check git commit hashes when downloading source repos2022-03-10T14:06:45ZakwizgranCheck git commit hashes when downloading source reposTo hinder supply chain attacks, record the expected git commit hashes for the source repos in the version file alongside the tag names, and check the commit hashes when checking out the tags.To hinder supply chain attacks, record the expected git commit hashes for the source repos in the version file alongside the tag names, and check the commit hashes when checking out the tags.