briar issueshttps://code.briarproject.org/briar/briar/-/issues2023-03-15T12:34:52Zhttps://code.briarproject.org/briar/briar/-/issues/2394Research how Tumblr and Twitter handle comments/reblogs for previously seen p...2023-03-15T12:34:52ZakwizgranResearch how Tumblr and Twitter handle comments/reblogs for previously seen postsWhen a Briar blog post receives a comment or reblog from someone whose blog we subscribe to, a duplicate of the post is added to our combined feed. Research how Tumblr and Twitter handle this, specifically in the case where the comment c...When a Briar blog post receives a comment or reblog from someone whose blog we subscribe to, a duplicate of the post is added to our combined feed. Research how Tumblr and Twitter handle this, specifically in the case where the comment chain forks (for example, Alice comments on the original post and then Bob comments on the original post rather than replying to Alice's comment).Sponsor 6 usability improvementshttps://code.briarproject.org/briar/briar/-/issues/2393Convert blog posts and comments to HTML when composing2023-03-15T12:34:52ZakwizgranConvert blog posts and comments to HTML when composingWhen a blog post or comment is written, do a simple text to HTML conversion before storing the post. For example, wrap the text in a `<p>` tag, convert line breaks to `<p>` tags, and convert URLs to links. This should fix #689 and should...When a blog post or comment is written, do a simple text to HTML conversion before storing the post. For example, wrap the text in a `<p>` tag, convert line breaks to `<p>` tags, and convert URLs to links. This should fix #689 and should make links clickable in blog posts and comments (except for posts/comments written before this feature was implemented).
This is meant to be a simple alternative to #421 or #1038, as we haven't made progress on those more ambitious tickets.Sponsor 6 usability improvementshttps://code.briarproject.org/briar/briar/-/issues/2392Use separate buttons for reblogging (without comment) or commenting on a blog...2023-03-15T12:34:52ZakwizgranUse separate buttons for reblogging (without comment) or commenting on a blog postSponsor 6 usability improvementshttps://code.briarproject.org/briar/briar/-/issues/2390Design UX for contextual help2023-03-15T12:34:52ZakwizgranDesign UX for contextual helpDesign a way of making contextual help available throughout the app. It should be possible to draw the user's attention to the fact that help is available in a given context, without interrupting their work.Design a way of making contextual help available throughout the app. It should be possible to draw the user's attention to the fact that help is available in a given context, without interrupting their work.Sponsor 6 usability improvementshttps://code.briarproject.org/briar/briar/-/issues/2389Research how other apps handle read receipts2023-03-15T12:34:52ZakwizgranResearch how other apps handle read receiptsResearch how other messaging apps handle read receipts:
* Is a message displayed differently when sent to a contact who has disabled read receipts, versus a contact who has enabled read receipts but has not read the message?
* Does the u...Research how other messaging apps handle read receipts:
* Is a message displayed differently when sent to a contact who has disabled read receipts, versus a contact who has enabled read receipts but has not read the message?
* Does the user have to allow read receipts to be sent in order to request that contacts send read receipts?
* Is the user informed if a contact allows read receipts to be sent to the user?
* Is the user informed if a contact asks for read receipts to be sent to the contact?
* In a group chat, is it possible to see which users, or how many users, have read a message? What is the UI for this?Sponsor 6 usability improvementshttps://code.briarproject.org/briar/briar/-/issues/2447AssertionError when choosing images to send2024-03-18T17:19:45ZakwizgranAssertionError when choosing images to sendPossibly the same issue as #2057, but the stacktrace is different.
* Android version: 13
* Phone model: Redmi 21091116AI (evergo_in)
* Briar version: 1.5.4 (7d76171)
Edited log:
```
08-29 15:32:16.062 I/BaseActivity: Pausing Conversati...Possibly the same issue as #2057, but the stacktrace is different.
* Android version: 13
* Phone model: Redmi 21091116AI (evergo_in)
* Briar version: 1.5.4 (7d76171)
Edited log:
```
08-29 15:32:16.062 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:16.076 I/BaseActivity: Creating ImageActivity
08-29 15:32:16.094 I/BaseActivity: Starting ImageActivity
08-29 15:32:16.097 I/BaseActivity: Resuming ImageActivity
08-29 15:32:16.507 I/BaseActivity: Stopping ConversationActivity
08-29 15:32:18.346 I/BaseActivity: Starting ConversationActivity
08-29 15:32:18.793 I/BaseActivity: Pausing ImageActivity
08-29 15:32:18.819 I/BaseActivity: Resuming ConversationActivity
08-29 15:32:18.821 I/BaseActivity: Stopping ImageActivity
08-29 15:32:18.822 I/BaseActivity: Destroying ImageActivity
08-29 15:32:19.415 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:19.902 I/BaseActivity: Stopping ConversationActivity
08-29 15:32:20.246 I/BaseActivity: Starting ConversationActivity
08-29 15:32:20.257 I/BaseActivity: Resuming ConversationActivity
08-29 15:32:21.080 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:24.972 I/AutoDeleteManagerImpl: Mirroring auto-delete timer 604800000
08-29 15:32:24.995 I/ConversationActivity: Message received, adding
08-29 15:32:24.998 I/ContactsViewModel: Conversation message tracked, updating item
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:159)
at org.briarproject.briar.android.conversation.ConversationActivity.onImagesChosen(ConversationActivity.java:788)
at org.briarproject.briar.android.conversation.ConversationActivity.$r8$lambda$Yw3fl1gK9EIeGMTHPyKDfNfoOkI(Unknown Source:0)
at org.briarproject.briar.android.conversation.ConversationActivity$$ExternalSyntheticLambda2.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:418)
at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:375)
at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:777)
at androidx.fragment.app.FragmentActivity.onActivityResult(FragmentActivity.java:152)
at org.briarproject.briar.android.activity.BriarActivity.onActivityResult(BriarActivity.java:75)
at org.briarproject.briar.android.conversation.ConversationActivity.onActivityResult(ConversationActivity.java:320)
at android.app.Activity.dispatchActivityResult(Activity.java:8923)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5592)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5638)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2437)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.app.ActivityThread.main(ActivityThread.java:8294)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2433IllegalStateException when storing attachments2023-08-24T14:33:28ZakwizgranIllegalStateException when storing attachments* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttac...* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttachments(AttachmentCreatorImpl.java:83)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeAttachments(ConversationViewModel.java:277)
at org.briarproject.briar.android.view.TextAttachmentController.onNewUris(TextAttachmentController.java:178)
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:160)
at org.briarproject.briar.android.conversation.ConversationActivity.onImagesChosen(ConversationActivity.java:797)
at org.briarproject.briar.android.conversation.ConversationActivity.$r8$lambda$Yw3fl1gK9EIeGMTHPyKDfNfoOkI(Unknown Source:0)
at org.briarproject.briar.android.conversation.ConversationActivity$$ExternalSyntheticLambda3.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry$1.onStateChanged(ActivityResultRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:265)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:307)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
at androidx.lifecycle.ReportFragment.onStart(ReportFragment.java:109)
at android.app.Fragment.performStart(Fragment.java:2548)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1334)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1576)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1637)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3046)
at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3003)
at android.app.FragmentController.dispatchStart(FragmentController.java:193)
at android.app.Activity.performStart(Activity.java:7165)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2968)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6704)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
```
Edited log:
```
01-12 20:00:06.622 I/ValidationManagerImpl: Validating message for org.briarproject.briar.messaging
01-12 20:00:06.831 I/ValidationManagerImpl: Delivering message for org.briarproject.briar.messaging
01-12 20:00:06.837 I/AutoDeleteManagerImpl: Mirroring auto-delete timer -1
01-12 20:00:06.940 I/ContactsViewModel: Conversation message tracked, updating item
01-12 20:00:11.836 I/BaseActivity: Destroying NavDrawerActivity
01-12 20:00:11.954 I/BaseActivity: Creating ConversationActivity
01-12 20:00:12.158 I/BaseActivity: Starting ConversationActivity
01-12 20:00:12.163 I/BaseActivity: Resuming ConversationActivity
01-12 20:00:12.233 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
01-12 20:00:25.255 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:00:31.004 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
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:764)
01-12 20:00:32.000 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
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:764)
01-12 20:00:43.142 I/BaseActivity: Pausing ConversationActivity
01-12 20:00:43.192 I/BaseActivity: Stopping ConversationActivity
01-12 20:00:43.886 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
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:764)
01-12 20:01:00.181 I/BaseActivity: Starting ConversationActivity
01-12 20:01:00.308 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:07.726 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:17.992 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:18.633 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:19.034 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:01:19.041 I/ConversationActivity: Concurrent update, reloading
01-12 20:01:19.064 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:23.296 I/BaseActivity: Starting ConversationActivity
01-12 20:01:23.335 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:23.550 I/ImageCompressorImpl: Original image size: 720x1440
01-12 20:01:23.550 I/ImageCompressorImpl: Scaling attachment by factor of 2
01-12 20:01:23.784 I/ImageCompressorImpl: Compressed image to 32229 bytes, quality 70
01-12 20:01:25.507 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:26.209 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:27.381 I/BaseActivity: Starting ConversationActivity
01-12 20:01:27.383 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:29.743 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:30.425 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:30.751 I/BaseActivity: Starting ConversationActivity
01-12 20:01:30.756 W/AttachmentCreatorImpl: Task already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Result already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Uris available: [content://com.android.providers.media.documents/document/image%3A10277]
```
This looks similar to #1647.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2432IllegalStateException from BluetoothConnectionLimiterImpl2023-05-30T15:27:15ZakwizgranIllegalStateException from BluetoothConnectionLimiterImpl* Android version: 10
* Phone models: Motorola Moto G(8) Plus (doha_reteu_n)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.bramble.plugin.bluetooth.BluetoothConnectionLimit...* Android version: 10
* Phone models: Motorola Moto G(8) Plus (doha_reteu_n)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.bramble.plugin.bluetooth.BluetoothConnectionLimiterImpl.endLimiting(BluetoothConnectionLimiterImpl.java:53)
at org.briarproject.bramble.plugin.bluetooth.AbstractBluetoothPlugin.eventOccurred(AbstractBluetoothPlugin.java:523)
at org.briarproject.bramble.event.EventBusImpl.lambda$broadcast$0(EventBusImpl.java:42)
at org.briarproject.bramble.event.EventBusImpl.$r8$lambda$clxOMxNLcHINGTGi9tkg-7meojQ(Unknown Source:0)
at org.briarproject.bramble.event.EventBusImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:7582)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
```
Edited log:
```
10-02 08:57:47.978 I/AddNearbyContactViewModel: Got result from decoder
... ditto ...
10-02 08:57:48.310 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:48.328 I/PollerImpl: Polling plugin org.briarproject.bramble.bluetooth
10-02 08:57:48.337 I/ConnectionRegistryImpl: 1 contacts connected or better: org.briarproject.bramble.bluetooth
10-02 08:57:48.350 I/AddNearbyContactViewModel: Got result from decoder
... ditto ...
10-02 08:57:50.709 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:50.760 I/KeyAgreementConnector: Listening via org.briarproject.bramble.bluetooth
10-02 08:57:50.772 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:50.783 I/KeyAgreementConnector: Listening via org.briarproject.bramble.lan
10-02 08:57:50.784 I/BluetoothConnectionLimiterImpl: Limiting started
10-02 08:57:50.784 I/AddNearbyContactViewModel: KeyAgreementListeningEvent received
10-02 08:57:50.784 I/KeyAgreementConnector: Stopping BQP listeners
10-02 08:57:50.785 I/ConnectionChooserImpl: Closing 0 unused connections
10-02 08:57:50.786 I/AddNearbyContactViewModel: Local payload is 40 bytes
10-02 08:57:50.786 I/KeyAgreementConnector: Stopping BQP listeners
10-02 08:57:50.786 I/ConnectionChooserImpl: Closing 0 unused connections
10-02 08:57:50.787 I/ConnectionChooserImpl: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
10-02 08:57:50.788 I/KeyAgreementConnector: Starting BQP listeners
10-02 08:57:50.788 I/ConnectionChooserImpl: java.net.SocketException: Socket closed
10-02 08:57:50.788 I/AbstractBluetoothPlugin: Key agreement UUID be4822aa-1ecc-3c82-b00a-7e234a5efdba
10-02 08:57:50.786 I/BluetoothConnectionLimiterImpl: Limiting ended
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2428AssertionError when loading image preview2023-04-18T14:43:25ZakwizgranAssertionError when loading image preview* Android version: 10
* Phone model: Samsung SM-A115U (a11qsq)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Crash when sending image."
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.ImageP...* Android version: 10
* Phone model: Samsung SM-A115U (a11qsq)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Crash when sending image."
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.ImagePreviewAdapter.loadItemPreview(ImagePreviewAdapter.java:57)
at org.briarproject.briar.android.view.ImagePreview.loadPreviewImage(ImagePreview.java:80)
at org.briarproject.briar.android.view.TextAttachmentController.onNewAttachmentItemResults(TextAttachmentController.java:206)
at org.briarproject.briar.android.view.TextAttachmentController.access$000(TextAttachmentController.java:44)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:187)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:179)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:93)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8107)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
```
Edited log:
```
03-18 20:52:32.715 I/BaseActivity: Starting ConversationActivity
03-18 20:52:32.720 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:33.024 I/ImageCompressorImpl: Original image size: 682x1024
03-18 20:52:33.024 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-18 20:52:33.098 I/ImageCompressorImpl: Compressed image to 30054 bytes, quality 70
03-18 20:52:33.903 I/BaseActivity: Pausing ConversationActivity
03-18 20:52:33.924 I/BaseActivity: Starting NavDrawerActivity
03-18 20:52:33.925 I/BaseActivity: Resuming NavDrawerActivity
03-18 20:52:34.396 I/BaseActivity: Stopping ConversationActivity
03-18 20:52:34.397 I/BaseActivity: Destroying ConversationActivity
03-18 20:52:35.287 I/BaseActivity: Pausing NavDrawerActivity
03-18 20:52:35.310 I/BaseActivity: Creating ConversationActivity
03-18 20:52:35.333 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
03-18 20:52:35.382 I/BaseActivity: Starting ConversationActivity
03-18 20:52:35.384 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:35.886 I/BaseActivity: Stopping NavDrawerActivity
03-18 20:52:36.322 I/ConversationActivity: Eagerly loading text for latest message
03-18 20:52:36.794 I/BaseActivity: Pausing ConversationActivity
03-18 20:52:37.403 I/BaseActivity: Stopping ConversationActivity
03-18 20:52:41.046 I/BaseActivity: Starting ConversationActivity
03-18 20:52:41.048 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:41.076 I/ImageCompressorImpl: Original image size: 720x1560
03-18 20:52:41.077 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-18 20:52:41.177 I/ImageCompressorImpl: Compressed image to 29301 bytes, quality 70
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2426IllegalArgumentException when receiving ACTIVATE message as introducee2023-03-31T15:22:30ZakwizgranIllegalArgumentException when receiving ACTIVATE message as introduceeStacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.transport.TransportKeyManagerImpl.activateKeys(TransportKeyManagerImpl.java:285)
at org.briarproject.bramble.transport.KeyManagerImpl.lambda$activateKeys$2(...Stacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.transport.TransportKeyManagerImpl.activateKeys(TransportKeyManagerImpl.java:285)
at org.briarproject.bramble.transport.KeyManagerImpl.lambda$activateKeys$2(KeyManagerImpl.java:176)
at org.briarproject.bramble.transport.KeyManagerImpl.$r8$lambda$hZAivP_ym8Z94pCCnZpsDSza1P4(Unknown Source:0)
at org.briarproject.bramble.transport.KeyManagerImpl$$ExternalSyntheticLambda8.run(Unknown Source:4)
at org.briarproject.bramble.transport.KeyManagerImpl.withManager(KeyManagerImpl.java:268)
at org.briarproject.bramble.transport.KeyManagerImpl.activateKeys(KeyManagerImpl.java:175)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onRemoteActivate(IntroduceeProtocolEngine.java:511)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onActivateMessage(IntroduceeProtocolEngine.java:234)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onActivateMessage(IntroduceeProtocolEngine.java:63)
at org.briarproject.briar.introduction.IntroductionManagerImpl.handleMessage(IntroductionManagerImpl.java:253)
at org.briarproject.briar.introduction.IntroductionManagerImpl.incomingMessage(IntroductionManagerImpl.java:211)
at org.briarproject.bramble.api.client.BdfIncomingMessageHook.incomingMessage(BdfIncomingMessageHook.java:63)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.deliverMessage(ValidationManagerImpl.java:333)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.lambda$storeMessageContext$6(ValidationManagerImpl.java:290)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.$r8$lambda$kV95asJ25004Lz0CviD-sa65BcQ(Unknown Source:0)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl$$ExternalSyntheticLambda18.run(Unknown Source:19)
at org.briarproject.bramble.db.DatabaseComponentImpl.transaction(DatabaseComponentImpl.java:200)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.storeMessageContext(ValidationManagerImpl.java:266)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.lambda$storeMessageContextAsync$5(ValidationManagerImpl.java:255)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.$r8$lambda$tOT1oX1UbzoJ5r_HnnaJxOWFjgE(Unknown Source:0)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl$$ExternalSyntheticLambda8.run(Unknown Source:10)
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:764)
```
The user reported that they were introduced to the contact in question, but couldn't send messages to them. They then readded the contact by exchanging links.
Possibly related to #2085?Android 1.4https://code.briarproject.org/briar/briar/-/issues/2401Testers were concerned that Briar showed Mailbox as connected when Mailbox wa...2023-08-28T16:03:27ZakwizgranTesters were concerned that Briar showed Mailbox as connected when Mailbox was offline> Participants were complaining that even when the Mailbox device was offline, on the Briar app it looked like the connection is still working well. There were no indications that the connection is not working. They were expecting to get...> Participants were complaining that even when the Mailbox device was offline, on the Briar app it looked like the connection is still working well. There were no indications that the connection is not working. They were expecting to get a notification on their Briar app device whenever there were any problems with the Mailbox connection.
>
> This was quite concerning to them, they expressed that in everyday use they would never think to manually check the connection and they would always assume that the Mailbox is working unless they get a notification on their Briar device telling them about the problems.
>
> The “Last connection…” indicator wasn’t enough to show them the connection problems. They didn’t know how often Briar automatically check the connection. For example, Mailbox device was disconnected 3 minutes ago but the screen on the Briar app didn’t indicate any problem it just showed the time of the “Last connection: 5 minutes ago”.
Some thoughts about how to address this:
* If the last connection was not very recent (say, more than a minute ago), show a neutral status instead of a successful status, to prompt the user to use the "check connection" button to update the status
* Show some text along the lines of "Briar will automatically check the connection to your Mailbox every hour and notify you if your Mailbox is not reachable", and maybe show when the next check is dueMailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2399Tester didn't know whether message had been uploaded to Mailbox2023-08-28T16:03:30ZakwizgranTester didn't know whether message had been uploaded to Mailbox> The tester was confused with the process of sending a message while the other contact is offline. He was expecting to get feedback from Briar to know if the message has been saved to Mailbox. He opened the notifications drawer on the B...> The tester was confused with the process of sending a message while the other contact is offline. He was expecting to get feedback from Briar to know if the message has been saved to Mailbox. He opened the notifications drawer on the Briar phone but didn’t find anything, then he checked the Mailbox app but didn’t find feedback there either. While he was waiting, he noticed an hourglass icon near the message and didn’t know what that meant. He thought it indicated a disappearing message. After I asked a follow-up question on how he understands if a message is delivered, he let me know that one checkmark indicates that the message is delivered and two checkmarks that the message is opened.
>
> After the other contact came back online, he noticed that the message was delivered as he saw the checkmarks, but he was wondering if the message was sent directly from the app or if it was transferred by Mailbox and he didn’t find any way to understand this.
Related to #1208.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2398Testers didn't understand why Mailbox was still linked after failed unlinking2023-08-28T16:03:33ZakwizgranTesters didn't understand why Mailbox was still linked after failed unlinking![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked t...![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked the device, the Mailbox still showed that it was linked. In those cases, they thought that this must be happening because of bugs in the test app.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2396Testers couldn't find mailbox pairing screen2023-08-28T16:03:37ZakwizgranTesters couldn't find mailbox pairing screen> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process a...> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process as adding a new contact. The first instinct for four out of five participants was to click on the + icon and try to “add a contact nearby”, they chose that because the devices are near to each other.
>
> The second place they went to look for the feature was always the sidebar menu. First, they looked at the options there and the connection icons. They guessed that linking devices is a form of connection, so they would find it there. One of the participants assumed that the “Internet” icon represents the Mailbox connection.
>
> On the third attempt, they could all find the Mailbox option, listed under the Settings menu.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2333AssertionError in TextAttachmentController when previewing attachments2022-06-13T15:40:19ZakwizgranAssertionError in TextAttachmentController when previewing attachments* Android version: 9
* Phone model: Tecno KC2j (H6113)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-23 21:53:07.213 I/BaseActivity: Starting ConversationActivity
03-23 21:53:07.214 I/BaseActivity: Resuming ConversationActivity
03...* Android version: 9
* Phone model: Tecno KC2j (H6113)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-23 21:53:07.213 I/BaseActivity: Starting ConversationActivity
03-23 21:53:07.214 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:17.378 I/BaseActivity: Pausing ConversationActivity
03-23 21:53:17.827 I/BaseActivity: Stopping ConversationActivity
03-23 21:53:18.516 I/BaseActivity: Starting ConversationActivity
03-23 21:53:18.518 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:19.508 I/BaseActivity: Pausing ConversationActivity
03-23 21:53:19.557 I/ConversationActivity: Concurrent update, reloading
03-23 21:53:19.906 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
03-23 21:53:20.007 I/BaseActivity: Stopping ConversationActivity
03-23 21:53:20.065 I/ContactsViewModel: Conversation message tracked, updating item
03-23 21:53:21.340 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
03-23 21:53:21.467 I/ContactsViewModel: Conversation message tracked, updating item
03-23 21:53:21.533 I/BaseActivity: Starting ConversationActivity
03-23 21:53:21.550 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:21.583 I/ImageCompressorImpl: Original image size: 640x1337
03-23 21:53:21.583 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-23 21:53:21.657 I/ImageCompressorImpl: Compressed image to 28878 bytes, quality 60
03-23 21:53:41.496 I/AndroidTaskScheduler: Running 1 due tasks
03-23 21:53:41.496 I/AndroidTaskScheduler: Task is 2 ms overdue
03-23 21:53:42.337 I/AndroidTaskScheduler: Running 1 due tasks
03-23 21:53:42.337 I/AndroidTaskScheduler: Task is 1 ms overdue
03-23 21:53:54.255 I/ConversationActivity: Eagerly loading text for latest message
03-23 21:53:54.495 I/ConversationActivity: Concurrent update, reloading
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onNewAttachmentItemResults(TextAttachmentController.java:200)
at org.briarproject.briar.android.view.TextAttachmentController.access$000(TextAttachmentController.java:44)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:187)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:179)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:93)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6758)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912)
```
This looks similar to #2218 but it's a different assertion that's failing.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2331KeyStoreException: Invalid key blob2024-03-19T16:03:18ZakwizgranKeyStoreException: Invalid key blob* Android version: 11
* Phone model: Samsung SM-G970F (beyond0ltexx)
* Briar version: 1.4.5 (4df523a)
* User feedback: "I tried to login, entered my password and then Briar just crashed. I used this account before. But then I restored my...* Android version: 11
* Phone model: Samsung SM-G970F (beyond0ltexx)
* Briar version: 1.4.5 (4df523a)
* User feedback: "I tried to login, entered my password and then Briar just crashed. I used this account before. But then I restored my phone from the backup I made a month ago."
Log:
```
03-07 19:47:35.275 I/BriarApplicationImpl: Created
03-07 19:47:35.321 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:39.685 I/BaseActivity: Creating SplashScreenActivity
03-07 19:47:39.700 I/BaseActivity: Starting SplashScreenActivity
03-07 19:47:39.702 I/BaseActivity: Resuming SplashScreenActivity
03-07 19:47:40.210 I/BaseActivity: Pausing SplashScreenActivity
03-07 19:47:40.222 I/BaseActivity: Creating NavDrawerActivity
03-07 19:47:40.266 I/BaseActivity: Starting NavDrawerActivity
03-07 19:47:40.270 I/BaseActivity: Resuming NavDrawerActivity
03-07 19:47:40.270 I/BriarActivity: Not signed in, launching StartupActivity
03-07 19:47:40.277 I/BaseActivity: Pausing NavDrawerActivity
03-07 19:47:40.282 I/BaseActivity: Creating StartupActivity
03-07 19:47:40.288 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:40.289 I/BaseActivity: Starting StartupActivity
03-07 19:47:40.303 I/BaseActivity: Resuming StartupActivity
03-07 19:47:40.394 I/BaseActivity: Stopping NavDrawerActivity
03-07 19:47:40.803 I/BaseActivity: Stopping SplashScreenActivity
03-07 19:47:40.804 I/BaseActivity: Destroying SplashScreenActivity
03-07 19:47:47.649 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:48.424 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:412)
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.$r8$lambda$5aurY1rQupylNVXCUST5DjfL1L4(Unknown Source:0)
at org.briarproject.briar.android.login.StartupViewModel$$ExternalSyntheticLambda0.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:1383)
at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1393)
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: Invalid key blob
at android.security.KeyStore.getKeyStoreException(KeyStore.java:1306)
... 16 more
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2327NPE when choosing notification sound2022-06-09T16:07:36ZakwizgranNPE when choosing notification sound* Android version: not provided
* Phone model: not provided
* Briar version: 1.4.5 (4df523a)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object...* Android version: not provided
* Phone model: not provided
* Briar version: 1.4.5 (4df523a)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at org.briarproject.briar.android.settings.NotificationsFragment.onNotificationSoundClicked(NotificationsFragment.java:218)
at org.briarproject.briar.android.settings.NotificationsFragment.lambda$onCreatePreferences$0(NotificationsFragment.java:108)
at org.briarproject.briar.android.settings.NotificationsFragment.$r8$lambda$tuVFVxovM6wElFyU0NWBFxLNE14(NotificationsFragment.java)
at org.briarproject.briar.android.settings.NotificationsFragment$$ExternalSyntheticLambda6.onPreferenceClick(Unknown Source)
at androidx.preference.Preference.performClick(Preference.java:1184)
at androidx.preference.Preference.performClick(Preference.java:1166)
at androidx.preference.Preference$1.onClick(Preference.java:181)
at android.view.View.performClick(View.java:5265)
at android.view.View$PerformClick.run(View.java:21534)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5765)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
```
Looks like the UI assumes the value of the `notifySound` LiveData will have been set, but it's not set until the settings have been loaded.
I thought we used to disable the UI until the settings were loaded, to avoid bugs like this. Maybe that was lost when we restructured the settings UI?Android 1.4https://code.briarproject.org/briar/briar/-/issues/2312Briar fails to start if clock was unreasonably wrong on first run2022-05-11T14:23:37ZakwizgranBriar fails to start if clock was unreasonably wrong on first runSteps to reproduce:
* If a Briar account exists, delete it
* Set the system clock to a date before 1 Jan 2021
* Launch Briar and create an account
* Briar will show the startup failure screen due to the clock being wrong
* Set the system...Steps to reproduce:
* If a Briar account exists, delete it
* Set the system clock to a date before 1 Jan 2021
* Launch Briar and create an account
* Briar will show the startup failure screen due to the clock being wrong
* Set the system clock to the right date
* Launch Briar again
* The password screen will be shown
* Enter the password
* Briar will show the startup failure screen, saying the database is corrupt
Log snippet from the second run (after correcting the clock):
```
2022-04-27 08:54:55.872 22506-22542/org.briarproject.briar.android.debug I/H2Database: Contents of account directory before opening DB:
2022-04-27 08:54:55.872 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug 4096
2022-04-27 08:54:55.872 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/lib 4096
2022-04-27 08:54:55.882 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/lib/libobfs4proxy.so 6481961
2022-04-27 08:54:55.882 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/lib/libtor.so 5957620
2022-04-27 08:54:55.882 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/cache 4096
2022-04-27 08:54:55.882 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/cache/com.android.renderscript.cache 4096
2022-04-27 08:54:55.882 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/shared_prefs 4096
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/shared_prefs/org.briarproject.briar.android.debug_preferences.xml 115
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/shared_prefs/_has_set_default_values.xml 126
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/shared_prefs/db.xml 65
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/app_key 4096
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/app_key/db.key.bak 218
2022-04-27 08:54:55.892 22506-22542/org.briarproject.briar.android.debug I/H2Database: F /data/data/org.briarproject.briar.android.debug/app_key/db.key 218
2022-04-27 08:54:55.902 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/app_db 4096
2022-04-27 08:54:55.902 22506-22542/org.briarproject.briar.android.debug I/H2Database: D /data/data/org.briarproject.briar.android.debug/app_tor 4096
2022-04-27 08:54:55.902 22506-22542/org.briarproject.briar.android.debug I/H2Database: Reopening DB: false
```
Stacktrace:
```
2022-04-27 08:55:00.046 22506-22542/org.briarproject.briar.android.debug W/LifecycleManagerImpl: org.briarproject.bramble.api.db.DbException
org.briarproject.bramble.api.db.DbException
at org.briarproject.bramble.identity.IdentityManagerImpl.loadIdentityWithKeyPair(IdentityManagerImpl.java:159)
at org.briarproject.bramble.identity.IdentityManagerImpl.getCachedIdentity(IdentityManagerImpl.java:147)
at org.briarproject.bramble.identity.IdentityManagerImpl.onDatabaseOpened(IdentityManagerImpl.java:95)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.lambda$startServices$0(LifecycleManagerImpl.java:129)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.$r8$lambda$R30tTgoiROvN8ROsUbPogFK9rjY(LifecycleManagerImpl.java)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl$$ExternalSyntheticLambda0.run(Unknown Source)
at org.briarproject.bramble.db.DatabaseComponentImpl.transaction(DatabaseComponentImpl.java:200)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:123)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0(BriarService.java:141)
at org.briarproject.briar.android.BriarService.$r8$lambda$HDU85pNkqbcIvjlH9WM8JDDv2bo(BriarService.java)
at org.briarproject.briar.android.BriarService$$ExternalSyntheticLambda5.run(Unknown Source)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl.lambda$executeWakefully$1(AndroidWakeLockManagerImpl.java:95)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl.$r8$lambda$HU3N-m0ADiLNH1gKAKkCiyTw2fM(AndroidWakeLockManagerImpl.java)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl$$ExternalSyntheticLambda0.run(Unknown Source)
at java.lang.Thread.run(Thread.java:856)
```
It looks like the DB key was saved on the first run but the DB wasn't created. On the second run we assumed an identity had already been created so we didn't store one, and then we got an exception when trying to load an identity from the newly created DB.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2300Show more information about startup failures2022-04-08T12:33:12ZakwizgranShow more information about startup failuresRecently we've had several reports of corrupt databases (StartResult#DB_ERROR). Because these errors prevent the app from starting, we can't use crash reports or user feedback to learn about the cause.
We should expose more information ...Recently we've had several reports of corrupt databases (StartResult#DB_ERROR). Because these errors prevent the app from starting, we can't use crash reports or user feedback to learn about the cause.
We should expose more information about startup failures in the UI. This will involve returning the information from LifecycleManager#startService() and then attaching it to the intent that launches StartupFailureActivity. StartupFailureActivity should allow the user to copy the information so they can send it to us.Android 1.4https://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.4