briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-11-21T12:43:46Zhttps://code.briarproject.org/briar/briar/-/issues/819UX design for errors that don't interrupt the user's workflow2020-11-21T12:43:46ZTorsten GroteUX design for errors that don't interrupt the user's workflowThis ticket is for creating the UX design when errors occur that don't interrupt the user's workflow.
Imagine you share a forum with someone or invite two contacts to each other. These operations might fail, but since the invitation scr...This ticket is for creating the UX design when errors occur that don't interrupt the user's workflow.
Imagine you share a forum with someone or invite two contacts to each other. These operations might fail, but since the invitation screen closes anyway, it does not really interrupt your work-flow anymore. Another possible error might happen when a title of the blog or the number of online users is loaded to be shown in the action bar. There will just be the default title maybe "Blog" and the user might not even notice, but it is a bug we might want to know about. Another example is when we fail to store the fact that we already showed you the onboarding and then show it to you again.
So more general, the kinds of errors I imagine to fall in this category are:
* user actions that are not completed, but don't interrupt the workflow because it finishes at this point anyway
* loading of non-essential information
Subticket of #469.https://code.briarproject.org/briar/briar/-/issues/818UX design for errors that interrupt the user's workflow2020-11-21T12:44:25ZTorsten GroteUX design for errors that interrupt the user's workflowThis ticket is for creating the UX design for when errors occur that interrupt the user's workflow and don't have any corrective action.
For example, you open your private conversation with someone, but it just closes again (or shows an...This ticket is for creating the UX design for when errors occur that interrupt the user's workflow and don't have any corrective action.
For example, you open your private conversation with someone, but it just closes again (or shows an error message) because an error occurred while loading it. You open a private group, but when finding out whether it is dissolved an error occurs, so it stays in the disabled state by default. Or you are in a multi-step process and an error prevents you from reaching the next step like when creating a private group fails and you are not getting to the next step of inviting contacts to it.
Errors while loading blog posts, private message, forum posts, contacts, basically anything in lists falls into this category.
Subticket of #469.https://code.briarproject.org/briar/briar/-/issues/817Add a setting to control whether Briar uses a wake lock2023-04-24T12:16:56ZakwizgranAdd a setting to control whether Briar uses a wake lockBriar holds a wake lock while Tor is running. @gdt asked for a setting to disable the wake lock, which would mean messages wouldn't be synced while the device was sleeping, but battery usage would be reduced.
If no other app is holding ...Briar holds a wake lock while Tor is running. @gdt asked for a setting to disable the wake lock, which would mean messages wouldn't be synced while the device was sleeping, but battery usage would be reduced.
If no other app is holding a wake lock, the device typically sleeps a few seconds after the screen turns off. We probably don't want to lose connectivity immediately, and it would be good if we could prepare for sleep so Tor doesn't panic when it wakes up. We might consider holding a wake lock for a few minutes after the screen turns off, then cleanly going offline and releasing the wake lock. Then we can listen for ACTION_SCREEN_ON to reacquire the wake lock and go online.
Alternatively, if we want to be really hardcore about saving battery at the expense of connectivity, we can go offline when the screen turns off. In that case no wake lock would be needed.
Related to #268, #769.https://code.briarproject.org/briar/briar/-/issues/815When Bluetooth can not be enabled QRCode loads forever2020-11-21T12:45:30ZTorsten GroteWhen Bluetooth can not be enabled QRCode loads foreverMy Sony Xperia Pro test phone seems to have an issue with Bluetooth at the moment. It is in a semi active state, but not really enabled. When trying to add contacts (which should work fine over WiFi), the QRcode loads forever without eve...My Sony Xperia Pro test phone seems to have an issue with Bluetooth at the moment. It is in a semi active state, but not really enabled. When trying to add contacts (which should work fine over WiFi), the QRcode loads forever without ever failing or showing up.https://code.briarproject.org/briar/briar/-/issues/811Tester did not understand difference between Forum and Private Group2021-02-27T21:49:14ZTorsten GroteTester did not understand difference between Forum and Private GroupOne of the testers from Cryptorave tried Briar again and wondered what the difference between forums and private groups is. Both seem to be a place where you can add people to talk together and both use the same message layout.One of the testers from Cryptorave tried Briar again and wondered what the difference between forums and private groups is. Both seem to be a place where you can add people to talk together and both use the same message layout.https://code.briarproject.org/briar/briar/-/issues/806Continue to show private group visibility for removed contacts2020-11-21T12:48:43ZakwizgranContinue to show private group visibility for removed contacts@grote raised this issue while we were working on #754 but I forgot to respond at the time.
If a contact is revealed to a private group and the contact is later removed, we should continue to show the relationship as visible, both in th...@grote raised this issue while we were working on #754 but I forgot to respond at the time.
If a contact is revealed to a private group and the contact is later removed, we should continue to show the relationship as visible, both in the former contact's join message and in the membership list.https://code.briarproject.org/briar/briar/-/issues/802Automatic introduction on group creation2020-11-21T12:49:57ZTorsten GroteAutomatic introduction on group creationWhile discussing private groups and how/why revealing works (#801) during a user testing (#788), somebody asked for all contacts they invite to a group to be introduced to each other automatically to ensure that all of them are contacts ...While discussing private groups and how/why revealing works (#801) during a user testing (#788), somebody asked for all contacts they invite to a group to be introduced to each other automatically to ensure that all of them are contacts of each other (and maybe also can automatically reveal themselves to the group).https://code.briarproject.org/briar/briar/-/issues/801Revealing contact relationship is not clear2020-11-21T12:52:17ZTorsten GroteRevealing contact relationship is not clearDuring testing session #788, no one understood what revealing contact relationships means although most users were rather technical and were using other apps extensively. The onboarding dialog didn't help. It was not clear who can revea...During testing session #788, no one understood what revealing contact relationships means although most users were rather technical and were using other apps extensively. The onboarding dialog didn't help. It was not clear who can reveal contacts and why the creator can not do it. It was not clear what this exactly means and why it can be done.
It took some long explanations before everybody had understood this feature. They were all open to p2p apps and appreciated the explanation. They were happy to understand how messages travel through the p2p network, but they also acknowledged that we are trying to explain features without requiring users to understand that.
Some testers doubted that it is possible to understand revealing contacts without knowing about how messages travel. They pointed out how Briar works very differently than other apps they are familiar with and that it needs some getting used to. The user familiar with Retroshare suggested to use a visual representation of the contact relationship within a group as this can help with understanding this concept and also nicely illustrate the p2p approach.
![briar-user-graph](/uploads/a7819e19bc66f94fc0c3ff50d9265eb7/briar-user-graph.png)https://code.briarproject.org/briar/briar/-/issues/800Confusing feature names2022-11-18T17:24:07ZTorsten GroteConfusing feature namesDuring testing session #788, users noted that they found the names of the current features confusing.
# Forum and Private Groups
Users noted that forums seem to resemble what they know as groups from other messengers (WhatsApp, Telegra...During testing session #788, users noted that they found the names of the current features confusing.
# Forum and Private Groups
Users noted that forums seem to resemble what they know as groups from other messengers (WhatsApp, Telegram and Signal) due to them being open in the sense that everybody can invite new members to the forum/group. They suggested to maybe call it "Open Group" and "Private Group".
# Blogs
After understanding somewhat how Blogs work at the moment, the testers agreed that blog is not a good name for this feature. They suggested to call it "Timeline", I guess mainly because they couldn't create additional blogs and because everybody's posts were shown in this list like they know it from Facebook and Twitter.https://code.briarproject.org/briar/briar/-/issues/797Adding additional blogs2021-01-13T12:40:00ZTorsten GroteAdding additional blogsDuring the user testing #788, a user asked: "How can I make a new blog?"
This happened in after a misunderstanding about RSS import (#796) where all entries were imported into the user's personal blog. The user expected it to be possibl...During the user testing #788, a user asked: "How can I make a new blog?"
This happened in after a misunderstanding about RSS import (#796) where all entries were imported into the user's personal blog. The user expected it to be possible to create additional blogs like they could create additional forums and additional groups.https://code.briarproject.org/briar/briar/-/issues/794Message can be sent after group was dissolved2017-12-18T07:40:27ZTorsten GroteMessage can be sent after group was dissolvedDuring a testing session (#788), a user reported that they were able to send a message after a group had been resolved. Another user who had the group open at the same time, did get the dialog informing him that the group had been dissol...During a testing session (#788), a user reported that they were able to send a message after a group had been resolved. Another user who had the group open at the same time, did get the dialog informing him that the group had been dissolved, but the user who was writing a messaging, did not get the dialog and could still send the message.
We would need to try to reproduce this as it is possible that the dissolve notice did not arrive in time and the user could sent the message before the dissolve notice arrived.https://code.briarproject.org/briar/briar/-/issues/792Tester could not find a private group they'd been invited to2020-11-21T12:57:05ZTorsten GroteTester could not find a private group they'd been invited toDuring a testing session (#788), a user was confused about where to find the private group they just had been invited to. They expected to find the group in the contact list screen. The group agreed that this is where they would expect t...During a testing session (#788), a user was confused about where to find the private group they just had been invited to. They expected to find the group in the contact list screen. The group agreed that this is where they would expect to find groups, because they know this from other messengers that have a list of conversation that include private conversations and group conversations in one screen.
The list of contacts could be made available elsewhere.https://code.briarproject.org/briar/briar/-/issues/786Handle whitespace consistently2022-11-18T17:24:07ZakwizgranHandle whitespace consistentlyText with leading or trailing whitespace is treated inconsistently:
* Nicknames: whitespace isn't trimmed, whitespace-only names are allowed
* Private messages: whitespace is trimmed, whitespace-only messages are allowed but become empt...Text with leading or trailing whitespace is treated inconsistently:
* Nicknames: whitespace isn't trimmed, whitespace-only names are allowed
* Private messages: whitespace is trimmed, whitespace-only messages are allowed but become empty after trimming
* Forum names: whitespace isn't trimmed, whitespace-only names are allowed
* Forum invitations: whitespace isn't trimmed, whitespace-only messages are allowed
* Forum posts: whitespace is trimmed, whitespace-only posts aren't allowed
* Private group names: whitespace isn't trimmed, whitespace-only names are allowed
* Private group invitations: whitespace isn't trimmed, whitespace-only messages are allowed
* Private group posts: whitespace is trimmed, whitespace-only posts aren't allowed
* Blog posts: whitespace is trimmed, whitespace-only posts are allowed but become empty after trimming
* Blog comments: whitespace isn't trimmed, whitespace-only comments are allowed
Let's do the following everywhere:
When entering text:
1. Trim leading and trailing whitespace
2. If the trimmed text is empty and the input is optional (for example a blog comment), pass null to the backend
3. If the trimmed text is empty and the input isn't optional (for example a blog post), don't accept the input
4. If the trimmed text is too long, don't accept the input
5. If the trimmed text isn't empty or too long, pass it to the backend
When validating messages (including author names and group names):
1. Reject null if the text isn't optional
2. Reject the text if it's empty or too long
3. Reject the text if it has leading or trailing whitespacehttps://code.briarproject.org/briar/briar/-/issues/780Temporarily leaked Activities on orientation changes2021-04-26T14:01:29ZErnir ErlingssonTemporarily leaked Activities on orientation changesWhile working on #725, I noticed something: we're leaking Activities temporarily.
We are using anonymous inner classes as callbacks for asynchronous tasks, during their execution it's possible that an orientation change occurs that des...While working on #725, I noticed something: we're leaking Activities temporarily.
We are using anonymous inner classes as callbacks for asynchronous tasks, during their execution it's possible that an orientation change occurs that destroys the old Activity/Fragment. The task stores a reference to the callback, and therefore implicitly to the Activity. This means that the initial Activity will be kept alive until the task finishes execution. Multiple orientation changes will might result in multiple Activities being temporarily leaked, although !415 relieves some of that by ensuring there is only one leaked Activity maximum.
Not sure what the best course of action here is, we could try to handle the orientation changes ourselves which re-uses the initial Activity but will require careful programming.
https://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChangehttps://code.briarproject.org/briar/briar/-/issues/779Use HTTPS for fetching RSS feeds where possible2020-11-21T16:18:44ZakwizgranUse HTTPS for fetching RSS feeds where possibleOn the first fetch:
* If the user enters an HTTP URL, try HTTPS first, then fall back to HTTP
* If the user enters a URL without a scheme, try HTTPS first, then fall back to HTTP
* If the user enters an HTTPS URL, don't fall back to HTTP...On the first fetch:
* If the user enters an HTTP URL, try HTTPS first, then fall back to HTTP
* If the user enters a URL without a scheme, try HTTPS first, then fall back to HTTP
* If the user enters an HTTPS URL, don't fall back to HTTP
* If HTTPS succeeds, save the HTTPS URL
On subsequent fetches, use the scheme from the URL with no fallbacks.https://code.briarproject.org/briar/briar/-/issues/776Merge redundant null safety annotations2020-11-21T16:19:21ZakwizgranMerge redundant null safety annotationsAfter some experience with the new null safety annotations, it seems we only want to express two conditions:
* Methods, parameters and fields are not null by default
* Methods and parameters are not null by default
Merge @MethodsNotNull...After some experience with the new null safety annotations, it seems we only want to express two conditions:
* Methods, parameters and fields are not null by default
* Methods and parameters are not null by default
Merge @MethodsNotNullByDefault with @ParametersNotNullByDefault, and remove @FieldsNotNullByDefault.https://code.briarproject.org/briar/briar/-/issues/775The LanTcpPlugin tries to create a KeyAgreementListener even if Wifi/mobile d...2020-11-21T16:20:28ZJulian DehmThe LanTcpPlugin tries to create a KeyAgreementListener even if Wifi/mobile data is disabledWhen adding a contact with only bluetooth enabled the LanTcpPlugin tries to bind a serversocket, which seems like a useless effort to me.
`org.briarproject I/LanTcpPlugin: Could not bind server socket for key agreement`
Maybe there sh...When adding a contact with only bluetooth enabled the LanTcpPlugin tries to bind a serversocket, which seems like a useless effort to me.
`org.briarproject I/LanTcpPlugin: Could not bind server socket for key agreement`
Maybe there should be a check if Wifi is enabled before attempting to open a socket.https://code.briarproject.org/briar/briar/-/issues/773Tidy up message inheritance hierarchy2020-11-21T16:21:14ZakwizgranTidy up message inheritance hierarchyBlogPost extends ForumPost extends ThreadedMessage extends PrivateMessage... really?BlogPost extends ForumPost extends ThreadedMessage extends PrivateMessage... really?https://code.briarproject.org/briar/briar/-/issues/770Configure or patch Tor to minimise background traffic2020-11-16T11:09:52ZakwizgranConfigure or patch Tor to minimise background trafficSee whether there are any config settings or hardcoded constants that can be adjusted to reduce Tor's background traffic. Related to #44, #45, #479.See whether there are any config settings or hardcoded constants that can be adjusted to reduce Tor's background traffic. Related to #44, #45, #479.https://code.briarproject.org/briar/briar/-/issues/753Listener interfaces have mixed responsibilities2021-01-20T12:34:20ZakwizgranListener interfaces have mixed responsibilitiesThe UI makes heavy use of listener interfaces that inherit from either DestroyableContext or BaseFragmentListener. These are used for various purposes:
* Callbacks from a controller to the UI (e.g. `TransportStateListener#stateUpdate()`...The UI makes heavy use of listener interfaces that inherit from either DestroyableContext or BaseFragmentListener. These are used for various purposes:
* Callbacks from a controller to the UI (e.g. `TransportStateListener#stateUpdate()`)
* Injecting dependencies into fragments (`BaseFragmentListener#getActivityComponent()`)
* Manipulating other parts of the UI (e.g. `CreateGroupListener#showSoftKeyboard()`)
* Running tasks (`DestroyableContext#runOnUiThreadUnlessDestroyed()`, `BaseFragmentListener#runOnDbThread()` (deprecated))
These different purposes would ideally be separated into different interfaces. Maybe it would clarify things if communication from controllers back to the UI used the "listener" name and communication between fragments and their activities used some other name.
Listeners are usually provided by casting an Activity or Context (passed to `ActivityLifecycleController#onActivityCreate()` or `Fragment#onAttach()`) to an arbitrary listener interface. This is a bit of a hack - it would be nice if we could provide listeners in a type-safe way, for example by injection.
Related to #752.