briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:23Zhttps://code.briarproject.org/briar/briar/-/issues/516Joining a busy forum overloads the device, which kills the Briar service2018-06-12T11:32:23ZErnir ErlingssonJoining a busy forum overloads the device, which kills the Briar serviceA user joined a forum with ~50 entries, looked at the forum (which was empty at the time) and then put Briar into the background. After a while the notification "49 new forum entries" appeared, but shortly thereafter the screen went dark...A user joined a forum with ~50 entries, looked at the forum (which was empty at the time) and then put Briar into the background. After a while the notification "49 new forum entries" appeared, but shortly thereafter the screen went dark and the device became completely unresponsive for around 10 seconds. After that the user was able to activate the screen again but the Briar notification was gone and seemingly the service had either crashed or was killed by the OS.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/515Starting Intent from Preferences does not work with different app id2018-06-12T11:32:23ZTorsten GroteStarting Intent from Preferences does not work with different app idWhen changing the app id to support simultaneous installations on one device for testing purposes such as an app id suffix .debug, the intents from the preferences screen (password change and panic) crash the app since the package id is ...When changing the app id to support simultaneous installations on one device for testing purposes such as an app id suffix .debug, the intents from the preferences screen (password change and panic) crash the app since the package id is hardcoded in the intent.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/514NPE Crash when adding contacts in emulator2018-06-12T11:32:23ZTorsten GroteNPE Crash when adding contacts in emulator```
07-22 11:12:00.947 3067-3067/? W/CameraView: Error stopping camera preview
java.lang.NullPointerException: Attempt to invoke interface method 'void org.briarproject.android.util.PreviewC...```
07-22 11:12:00.947 3067-3067/? W/CameraView: Error stopping camera preview
java.lang.NullPointerException: Attempt to invoke interface method 'void org.briarproject.android.util.PreviewConsumer.stop()' on a null object reference
at org.briarproject.android.util.CameraView.stopConsumer(CameraView.java:121)
at org.briarproject.android.util.CameraView.stopPreview(CameraView.java:108)
at org.briarproject.android.util.CameraView.stop(CameraView.java:87)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.releaseCamera(ShowQrCodeFragment.java:240)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.onPause(ShowQrCodeFragment.java:169)
at android.support.v4.app.Fragment.performPause(Fragment.java:2139)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1117)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:2060)
at android.support.v4.app.FragmentController.dispatchPause(FragmentController.java:207)
at android.support.v4.app.FragmentActivity.onPause(FragmentActivity.java:444)
at org.briarproject.android.BaseActivity.onPause(BaseActivity.java:72)
at org.briarproject.android.keyagreement.KeyAgreementActivity.onPause(KeyAgreementActivity.java:114)
at android.app.Activity.performPause(Activity.java:6809)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1322)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:3685)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3662)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3636)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3610)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5969)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
07-22 11:12:00.948 3067-3067/? W/CameraView: Error releasing camera
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.release()' on a null object reference
at org.briarproject.android.util.CameraView.stop(CameraView.java:89)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.releaseCamera(ShowQrCodeFragment.java:240)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.onPause(ShowQrCodeFragment.java:169)
at android.support.v4.app.Fragment.performPause(Fragment.java:2139)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1117)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:2060)
at android.support.v4.app.FragmentController.dispatchPause(FragmentController.java:207)
at android.support.v4.app.FragmentActivity.onPause(FragmentActivity.java:444)
at org.briarproject.android.BaseActivity.onPause(BaseActivity.java:72)
at org.briarproject.android.keyagreement.KeyAgreementActivity.onPause(KeyAgreementActivity.java:114)
at android.app.Activity.performPause(Activity.java:6809)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1322)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:3685)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3662)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3636)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3610)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5969)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
```Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/513Verify unverified contacts2023-02-07T08:56:41ZakwizgranVerify unverified contactsContacts who are added via introductions (or via long-distance transports, if we decide to support that) are considered "unverified" due to the possibility of a man-in-the-middle attack against the key exchange protocol. Contacts who are...Contacts who are added via introductions (or via long-distance transports, if we decide to support that) are considered "unverified" due to the possibility of a man-in-the-middle attack against the key exchange protocol. Contacts who are added face-to-face are considered "verified".
Design and implement a protocol and UI for verifying the identity of a previously unverified contact when the user meets the contact face-to-face.https://code.briarproject.org/briar/briar/-/issues/512Peer moderation for forums2022-10-26T19:31:56ZakwizgranPeer moderation for forumsAs forums grow they will become increasingly vulnerable to spam or message flooding attacks. Peer moderation is a mechanism to promote the spread of messages that forum members consider to be worthwhile.
Voting on which messages are wor...As forums grow they will become increasingly vulnerable to spam or message flooding attacks. Peer moderation is a mechanism to promote the spread of messages that forum members consider to be worthwhile.
Voting on which messages are worthwhile and using a global tally of votes to decide which messages to approve is not secure in a fully distributed system due to Sybil attacks. However, each peer can decide which messages to propagate based on the votes of its owner and the owner's contacts, which are not subject to Sybil attacks.https://code.briarproject.org/briar/briar/-/issues/511Mitigate flooding attacks at sync layer2020-11-21T18:33:47ZakwizgranMitigate flooding attacks at sync layerThe sync layer should mitigate flooding attacks by preventing any contact or group from exhausting any resource (computation, bandwidth, memory or storage).
This might be done by implementing something similar to fair queueing for each ...The sync layer should mitigate flooding attacks by preventing any contact or group from exhausting any resource (computation, bandwidth, memory or storage).
This might be done by implementing something similar to fair queueing for each resource: when the resource gets close to being fully used, prioritise demand from contacts and groups that are using less than their fair share over demand from contacts and groups that are using more than their fair share.https://code.briarproject.org/briar/briar/-/issues/510Android virus scanner detected Briar as malware2020-11-21T18:34:24ZakwizgranAndroid virus scanner detected Briar as malwareFeedback from a user testing session:
> One guy reported that his virus scanner on his old phone said that Briar was recognized as malware (maybe because it has Tor in it?).Feedback from a user testing session:
> One guy reported that his virus scanner on his old phone said that Briar was recognized as malware (maybe because it has Tor in it?).https://code.briarproject.org/briar/briar/-/issues/509Tapping QR code viewfinder should initiate auto focus2018-03-08T15:59:02ZakwizgranTapping QR code viewfinder should initiate auto focusFeedback from user testing:
> Almost anybody tried to tab the camera view finder to change the focus mode when it didn't scan immediately. People seem to be used to doing that with their regular camera. Maybe we could implement someth...Feedback from user testing:
> Almost anybody tried to tab the camera view finder to change the focus mode when it didn't scan immediately. People seem to be used to doing that with their regular camera. Maybe we could implement something similar to assist the scanning.Android 1.0akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/508Don't warn about leaving forum unless the user has shared it2020-11-21T18:35:19ZakwizgranDon't warn about leaving forum unless the user has shared itWhen the user leaves a forum we ask for confirmation, with a warning that any contacts the user has shared the forum with may stop receiving updates if she leaves. This warning should only be shown if the user has shared the forumWhen the user leaves a forum we ask for confirmation, with a warning that any contacts the user has shared the forum with may stop receiving updates if she leaves. This warning should only be shown if the user has shared the forumhttps://code.briarproject.org/briar/briar/-/issues/507Asking Contacts for Introductions to Unknown Authors2021-07-12T10:56:02ZTorsten GroteAsking Contacts for Introductions to Unknown AuthorsUse Case: You see some author in a forum or in a blog that is not your contact, but you would like to add or contact this user.
Problem: There is no way to send direct messages or add the user remotely.
Possible Solution: Allow the use...Use Case: You see some author in a forum or in a blog that is not your contact, but you would like to add or contact this user.
Problem: There is no way to send direct messages or add the user remotely.
Possible Solution: Allow the user X to select a number of contacts that should be asked if they have this author Y as contact. Only if one of the contacts Z actually has the requested author Y, a notification/dialog is shown that informs the user Z that contact X wants to be introduced to Y with the option to either ignore this request or make the introduction.https://code.briarproject.org/briar/briar/-/issues/506Metadata collections2018-06-12T11:32:23ZakwizgranMetadata collectionsA key/value map of metadata can be associated with any group ID or message ID in the local DB. Some clients also need to store metadata for protocol sessions, which requires a hack to associate the session ID with a message ID where the ...A key/value map of metadata can be associated with any group ID or message ID in the local DB. Some clients also need to store metadata for protocol sessions, which requires a hack to associate the session ID with a message ID where the metadata is stored.
We can generalise the current approach by replacing the group ID or message ID with an arbitrary collection ID. However, we still want all metadata to belong to a group so it can be garbage collected if the group is removed. So the metadata structure becomes: group/collection/key/value. To associate metadata with a message, use the message ID as the collection ID. Metadata queries that currently return message IDs will return collection IDs instead.
This change will allow protocol clients to store metadata directly under the session ID. It will also allow settings to be stored as metadata rather than using a separate DB table, and the group and message metadata tables can be merged.
Sub-task of #136.https://code.briarproject.org/briar/briar/-/issues/505highlighting/marking for copy/paste in dark speech bubbles not visible2019-02-22T15:28:30ZMegaloxhighlighting/marking for copy/paste in dark speech bubbles not visiblea tester tried to copy text from his own speech bubble. the highlighting cannot be seen clearly on the dark background.a tester tried to copy text from his own speech bubble. the highlighting cannot be seen clearly on the dark background.https://code.briarproject.org/briar/briar/-/issues/504Define and design primary and secondary actions2018-06-12T11:32:23ZMegaloxDefine and design primary and secondary actionsIn some cases we might want to lead the user to the "right" decision by defining and designing primary and secondary actions.
For example:
Do you want to send the crash report?
YES (on a prominently colored button) NO (grey but...In some cases we might want to lead the user to the "right" decision by defining and designing primary and secondary actions.
For example:
Do you want to send the crash report?
YES (on a prominently colored button) NO (grey button)
Because we want to get as many crash reports as possible.
Please feel free to add more cases where this may be helpful.Milestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/503Deliver private messages in order2020-11-21T18:37:21ZakwizgranDeliver private messages in orderTo reduce confusion when private messages arrive asynchronously, deliver them in the order they were sent, either by using a message queue or by making each message depend on the previous one.To reduce confusion when private messages arrive asynchronously, deliver them in the order they were sent, either by using a message queue or by making each message depend on the previous one.https://code.briarproject.org/briar/briar/-/issues/502Forums: remember closed nested discussions2018-06-12T11:32:23ZErnir ErlingssonForums: remember closed nested discussionsCurrently, when a user enters any forum the whole forum tree is open, i.e. there are no branches closed. One user had already closed off some branches (by pressing the chevron) but was annoyed that it was re-opened the next time he enter...Currently, when a user enters any forum the whole forum tree is open, i.e. there are no branches closed. One user had already closed off some branches (by pressing the chevron) but was annoyed that it was re-opened the next time he entered the forum.
I understand the resentment and am for storing the visibility state of any forum. We might need to improve the UX though when a user receives a message in a branch that he has closed. Right now the discussion branch is re-opened in that case but this feels like the wrong approach at the moment. Closing a discussion branch should maybe be seen as a way of muting that discussion and we should perhaps be much more passive when it comes to displaying messages in muted branches.
My suggestion: We don't re-open closed branches automatically when new messages in those branches are received but rather display some indicator that the closed branch contains new messages.
Then there are the notifications, should we display a notification for a new message on a "muted" branch ? I'm torn on this subject and can find arguments for both. Perhaps just best to keep it simple for us and display them regularly ?https://code.briarproject.org/briar/briar/-/issues/501Private messaging: speech bubble width "jumps" when the time-stamp text is up...2020-11-21T18:37:42ZErnir ErlingssonPrivate messaging: speech bubble width "jumps" when the time-stamp text is updated for short messages1. Write a really short private message, e.g. "no". Note that the time-stamp is "now"
2. Wait at least one minute and notice how the time-stamp changes to ~"1 minute ago". This text is longer than the message which causes the bubble to j...1. Write a really short private message, e.g. "no". Note that the time-stamp is "now"
2. Wait at least one minute and notice how the time-stamp changes to ~"1 minute ago". This text is longer than the message which causes the bubble to jump in an unaesthetic way.
Suggestion for a fix: make speech bubble minimum width large enough to contain the longest possible time-stamp string.https://code.briarproject.org/briar/briar/-/issues/500Private messaging: time stamp confusion2020-11-21T18:38:52ZErnir ErlingssonPrivate messaging: time stamp confusionSometimes private messages are not delivered for a very long time, one use found the time-stamp a bit confusing and would rather have it show the time it was received. I disagree with this but it does raise a valid point: shouldn't we al...Sometimes private messages are not delivered for a very long time, one use found the time-stamp a bit confusing and would rather have it show the time it was received. I disagree with this but it does raise a valid point: shouldn't we also display (somewhere) the time the message was received ? This information might be very relevant to the respective context.https://code.briarproject.org/briar/briar/-/issues/499Private messaging: cancel undelivered messages2020-11-21T18:39:19ZErnir ErlingssonPrivate messaging: cancel undelivered messagesIf the recipient's phone is offline messages are not delivered, this can cause messages to become obsolete and one tester suggested that we allow the user to cancel any pending messages.
This feature will make message dependencies more ...If the recipient's phone is offline messages are not delivered, this can cause messages to become obsolete and one tester suggested that we allow the user to cancel any pending messages.
This feature will make message dependencies more difficult, such as was suggested in #232https://code.briarproject.org/briar/briar/-/issues/498Implement UI for sharing blogs2018-06-12T11:32:24ZakwizgranImplement UI for sharing blogsSub-task of #406. Depends on #497.Sub-task of #406. Depends on #497.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/497Implement backend for sharing blogs2018-06-12T11:32:24ZakwizgranImplement backend for sharing blogsSub-task of #406.Sub-task of #406.Milestone DTorsten GroteTorsten Grote