briar issueshttps://code.briarproject.org/briar/briar/-/issues2019-10-09T12:17:49Zhttps://code.briarproject.org/briar/briar/-/issues/1609AssertionError when sending all-whitespace message2019-10-09T12:17:49ZakwizgranAssertionError when sending all-whitespace message* Android version: 7.1.2
* Phone model: Hisense A2M
* Briar version: 1.1.8 (6b022af)
* User feedback: "Send nothing (a space)"
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.conversation.ConversationA...* Android version: 7.1.2
* Phone model: Hisense A2M
* Briar version: 1.1.8 (6b022af)
* User feedback: "Send nothing (a space)"
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.conversation.ConversationActivity.onSendClick(ConversationActivity.java:712)
at org.briarproject.briar.android.view.TextSendController.onSendEvent(TextSendController.java:49)
at org.briarproject.briar.android.view.TextSendController.lambda$new$0$TextSendController(TextSendController.java:34)
at org.briarproject.briar.android.view.-$$Lambda$TextSendController$10Be2Hyuh5TqgqEmcNIq7rn_c-c.onClick(lambda)
at android.view.View.performClick(View.java:5644)
at android.view.View$PerformClick.run(View.java:22440)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6166)
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)
```
I can reproduce this by sending an all-whitespace message. We trim the text in EmojiTextInputView#getText(), but we call TextInputListener#onTextIsEmptyChanged() when the untrimmed text becomes empty/non-empty. This causes the send button to be enabled when all-whitespace text is entered, but then ConversationActivity#onSendClick() asserts that it can only be called if the text (now trimmed) is non-empty or the attachments list is non-empty.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1607OOM errors2022-04-19T11:27:41ZakwizgranOOM errorsRecently we've had four crash reports with OOM errors. Three of the errors had the Rome RSS library in the stacktrace; the fourth happened in UI code but the log showed that Rome had recently thrown a parsing exception. We upgraded Rome ...Recently we've had four crash reports with OOM errors. Three of the errors had the Rome RSS library in the stacktrace; the fourth happened in UI code but the log showed that Rome had recently thrown a parsing exception. We upgraded Rome from 1.7.3 to 1.10.0 in ccbeee60 (included in Briar 1.1.3).
~~I suspect the problem is [this bug](https://github.com/rometools/rome/issues/401), which was fixed in Rome 1.12.0, so upgrading may fix the issue.~~
Upgrading Rome didn't fix the issue. We've had 23 OOM reports with various stacktraces in versions 1.1.7 to 1.2.3 beta.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1606ClassCastException when opening conversation with contact who supports images2019-06-28T13:28:39ZakwizgranClassCastException when opening conversation with contact who supports images* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view...* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view.TextAttachmentController
at org.briarproject.briar.android.conversation.ConversationActivity.showImageOnboarding(ConversationActivity.java:730)
at org.briarproject.briar.android.conversation.ConversationActivity.lambda$tKsX2hu-pmpHBYdC5ev_sWoOCXk(Unknown Source:0)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationActivity$tKsX2hu-pmpHBYdC5ev_sWoOCXk.run(Unknown Source:2)
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:6762)
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:858)
```
The crash is caused by failing to check the image attachments feature flag before calling showImageOnboarding(). This is fixed on master but will happen for Briar 1.1.7 (and possibly some earlier releases) when contacts upgrade to a version that supports image attachments, including 1.2 and 1.3 alpha releases.
Fortunately I've found a sneaky workaround: we bump the client minor version to 2. Briar 1.1.7 only considers that a contact supports image attachments if the minor version is exactly 1 (this is also fixed on master, but fortunately didn't make it into the 1.1.7 release).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1605Allow access to urls with a click2019-06-28T09:28:15ZjomocuAllow access to urls with a clickIt would be great, to support that function, even for special domains (.bit .o among many others)
https://www.opennic.org
regardsIt would be great, to support that function, even for special domains (.bit .o among many others)
https://www.opennic.org
regardshttps://code.briarproject.org/briar/briar/-/issues/1604Briar desktop (Idea)2019-06-28T09:27:21ZjomocuBriar desktop (Idea)It would be great to have "briar desktop" for computers.
Windows, Linux and Mac
RegardsIt would be great to have "briar desktop" for computers.
Windows, Linux and Mac
Regardshttps://code.briarproject.org/briar/briar/-/issues/1603Calls and videocalls (Idea)2019-06-28T10:36:21ZjomocuCalls and videocalls (Idea)I think it would be great to add calls and video calls to the application.
With the possibility of "Compressing data" in mobile data...
Greetings and good projectI think it would be great to add calls and video calls to the application.
With the possibility of "Compressing data" in mobile data...
Greetings and good projecthttps://code.briarproject.org/briar/briar/-/issues/1599[headless] obsolete dependency integrity assertion2019-08-14T14:22:42Ziwakeh[headless] obsolete dependency integrity assertion[Line 61](https://code.briarproject.org/briar/briar/blob/master/briar-headless/witness.gradle#L61) in briar-headless/witness.gradle seems redundant.[Line 61](https://code.briarproject.org/briar/briar/blob/master/briar-headless/witness.gradle#L61) in briar-headless/witness.gradle seems redundant.https://code.briarproject.org/briar/briar/-/issues/1598headless: add RSS feed functionality2019-08-08T12:58:09Ziwakehheadless: add RSS feed functionalityIt would be great to have the RSS feed functionality in briar-headless.
(I could help with the implementation with a little info about how to approach this best.)It would be great to have the RSS feed functionality in briar-headless.
(I could help with the implementation with a little info about how to approach this best.)https://code.briarproject.org/briar/briar/-/issues/1597make headless module start w/o running Tor2019-07-14T15:57:14Ziwakehmake headless module start w/o running TorIs there a way to reuse an existing Tor connection and avoid starting a Tor instance when running the headless jar?
Or, simply run it w/o Tor?Is there a way to reuse an existing Tor connection and avoid starting a Tor instance when running the headless jar?
Or, simply run it w/o Tor?https://code.briarproject.org/briar/briar/-/issues/1594Preview fails to load when sending second message with attachments2019-10-09T12:18:24ZakwizgranPreview fails to load when sending second message with attachmentsAfter sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).After sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1593RuntimeException when scanning QR code2019-10-09T12:18:48ZakwizgranRuntimeException when scanning QR codeBriar crashed while scanning a QR code. This looks like a bug in libcore or the standard library so I'm not adding it to the current milestone for now. If we get crash reports then let's add it to the milestone and look for a workaround....Briar crashed while scanning a QR code. This looks like a bug in libcore or the standard library so I'm not adding it to the current milestone for now. If we get crash reports then let's add it to the milestone and look for a workaround.
* Android version: 9 (EMUI 9.0.1)
* Phone model: Honor 8A
* Briar version: current master (d210215b)
Stacktrace:
```
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:355)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
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:784)
Caused by: java.lang.AssertionError: impossible
at java.lang.Enum$1.create(Enum.java:272)
at java.lang.Enum$1.create(Enum.java:262)
at libcore.util.BasicLruCache.get(BasicLruCache.java:58)
at java.lang.Enum.getSharedConstants(Enum.java:289)
at java.lang.Class.getEnumConstantsShared(Class.java:2423)
at java.util.EnumMap.getKeyUniverse(EnumMap.java:755)
at java.util.EnumMap.<init>(EnumMap.java:138)
at com.google.zxing.Result.putMetadata(Result.java:117)
at com.google.zxing.qrcode.QRCodeReader.decode(QRCodeReader.java:90)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:109)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:91)
at android.os.AsyncTask$2.call(AsyncTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
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:784)
Caused by: java.lang.NoSuchMethodException: values []
at java.lang.Class.getMethod(Class.java:2068)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at java.lang.Enum$1.create(Enum.java:268)
at java.lang.Enum$1.create(Enum.java:262)
at libcore.util.BasicLruCache.get(BasicLruCache.java:58)
at java.lang.Enum.getSharedConstants(Enum.java:289)
at java.lang.Class.getEnumConstantsShared(Class.java:2423)
at java.util.EnumMap.getKeyUniverse(EnumMap.java:755)
at java.util.EnumMap.<init>(EnumMap.java:138)
at com.google.zxing.Result.putMetadata(Result.java:117)
at com.google.zxing.qrcode.QRCodeReader.decode(QRCodeReader.java:90)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:109)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:91)
at android.os.AsyncTask$2.call(AsyncTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
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:784)
```Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1592Improve handling of missing attachments in UI2020-10-30T16:20:25ZakwizgranImprove handling of missing attachments in UIWhen MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correct...When MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correctly when it arrives (e.g. caching an incomplete list of AttachmentItems).
Subtask of #1438.Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1591RuntimeException after sending crash report2019-06-18T16:50:53ZakwizgranRuntimeException after sending crash report* Android version: 9
* Phone model: Honor 8A
* Briar version: current master (30e0be9f)
Steps to reproduce:
* Cause a crash (e.g. with the crash button in the settings screen)
* Send a crash report or dismiss the report dialog
* Expecte...* Android version: 9
* Phone model: Honor 8A
* Briar version: current master (30e0be9f)
Steps to reproduce:
* Cause a crash (e.g. with the crash button in the settings screen)
* Send a crash report or dismiss the report dialog
* Expected: The dialog disappears
* Actual: The dialog repeatedly reappears with new crashes, even after pressing the home button and relaunching Briar
Stacktrace:
```
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.navdrawer.NavDrawerActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class android.support.v4.app.FragmentManagerState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3548)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2155)
at android.os.Handler.dispatchMessage(Handler.java:109)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7539)
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:958)
Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class android.support.v4.app.FragmentManagerState
at android.os.Parcel.readParcelableCreator(Parcel.java:2849)
at android.os.Parcel.readParcelable(Parcel.java:2771)
at android.os.Parcel.readValue(Parcel.java:2674)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3043)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getBoolean(BaseBundle.java:898)
at android.app.Activity.restoreHasCurrentPermissionRequest(Activity.java:7768)
at android.app.Activity.performCreate(Activity.java:7436)
at android.app.Activity.performCreate(Activity.java:7431)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3343)
... 11 more
```Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1590IllegalStateException: Cannot invoke setValue on a background thread2019-06-18T11:58:53ZakwizgranIllegalStateException: Cannot invoke setValue on a background threadCrashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at androi...Crashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:279)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at org.briarproject.briar.android.attachment.AttachmentCreator.resetState(AttachmentCreator.java:183)
at org.briarproject.briar.android.attachment.AttachmentCreator.onAttachmentsSent(AttachmentCreator.java:164)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeMessage(ConversationViewModel.java:295)
at org.briarproject.briar.android.conversation.ConversationViewModel.lambda$createMessage$8$ConversationViewModel(ConversationViewModel.java:286)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationViewModel$1LsoWDT2XwB7wPxBWawY1IIRFR0.run(Unknown Source:10)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0$TimeLoggingExecutor(TimeLoggingExecutor.java:36)
at org.briarproject.bramble.-$$Lambda$TimeLoggingExecutor$Bqrtbsq_8LcRPoTWBOef6xh7gJg.run(Unknown Source:6)
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:784)
```
This is my fault - I recommended moving the onAttachmentsSent() call to a place that's on the UI thread on my branch, forgetting that it's on the crypto executor on master.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1587Add version negotiation to sync protocol2019-06-18T11:58:45ZakwizgranAdd version negotiation to sync protocolAdd a record to the sync protocol that tells the remote peer which versions of the protocol the local peer supports. Send this record at the start of every session. Remember the last set of versions received from the remote peer and use ...Add a record to the sync protocol that tells the remote peer which versions of the protocol the local peer supports. Send this record at the start of every session. Remember the last set of versions received from the remote peer and use them to decide which records we can send.
Subtask of #1434.Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1585Add support for image attachments to messaging client2019-10-09T12:19:18ZakwizgranAdd support for image attachments to messaging clientAndroid 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1584Race condition in IntroductionIntegrationTest2019-11-06T09:47:39ZakwizgranRace condition in IntroductionIntegrationTestIntroductionIntegrationTest sometimes fails randomly (see https://code.briarproject.org/briar/briar/-/jobs/3638). Looks like the same underlying cause as #1560.IntroductionIntegrationTest sometimes fails randomly (see https://code.briarproject.org/briar/briar/-/jobs/3638). Looks like the same underlying cause as #1560.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1583Remote contact layout is too tall for small screens2019-09-27T14:58:54ZakwizgranRemote contact layout is too tall for small screensThe layouts for LinkExchangeFragment and NicknameFragment don't work well on small screens: for LinkExchangeFragment the Continue button is mostly offscreen, and for NicknameFragment the nickname field and Add Contact button are entirely...The layouts for LinkExchangeFragment and NicknameFragment don't work well on small screens: for LinkExchangeFragment the Continue button is mostly offscreen, and for NicknameFragment the nickname field and Add Contact button are entirely offscreen, making it unclear what the user's meant to do next.
Screenshots come from the Huawei Ascend Y330 (480x800 px).
![device-2019-06-08-101532](/uploads/83053a95ddee99302b91b0b79c659113/device-2019-06-08-101532.png)
![device-2019-06-08-101545](/uploads/33ff8c3896463d1be367479d956b781b/device-2019-06-08-101545.png)
Possible workarounds:
* Scroll to the bottom of each fragment when it's opened
* Remove the illustration from NicknameActivity or make it smaller
* Move the stepper to the bottom, below the button (I know we decided it was better at the top, and apart from this issue I'd prefer to keep it there)
* Divide the workflow into three steps rather than two: send link, enter link, and enter nickname (this has disadvantages for the flows where the user opens the activity by sharing a link from another app, or with a link already in the clipboard)Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1580Warn when adding pending contact with Tor disabled2019-06-18T09:54:35ZTorsten GroteWarn when adding pending contact with Tor disabledAdding contacts remotely won't work with the Tor plugin not running. We should notify contacts when that is the case, so they can go online or enable Tor.Adding contacts remotely won't work with the Tor plugin not running. We should notify contacts when that is the case, so they can go online or enable Tor.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1579Replace pending contact remove button with icon2019-06-08T09:44:58ZTorsten GroteReplace pending contact remove button with iconIt should use the same icon as the rss feeds.It should use the same icon as the rss feeds.Android 1.2Torsten GroteTorsten Grote