briar issueshttps://code.briarproject.org/groups/briar/-/issues2021-02-01T12:32:41Zhttps://code.briarproject.org/briar/briar-debian/-/issues/3Create official APT repository2021-02-01T12:32:41ZNicoCreate official APT repositorySince packaging briar-headless in Debian main (https://code.briarproject.org/briar/briar-debian/-/issues/1) is currently blocked, we decided to now focus on creating an official APT repository by The Briar Project. It will contain a .deb...Since packaging briar-headless in Debian main (https://code.briarproject.org/briar/briar-debian/-/issues/1) is currently blocked, we decided to now focus on creating an official APT repository by The Briar Project. It will contain a .deb of briar-headless, produced by briar-reproducer (https://code.briarproject.org/briar/briar-reproducer/-/issues/1), and imho should also contain .debs of briar-gtk (https://code.briarproject.org/briar/briar-gtk/issues/39) and python3-briar-wrapper (https://code.briarproject.org/briar/python-briar-wrapper/issues/14).https://code.briarproject.org/briar/briar-manual/-/issues/5Prepare manual for translation2020-12-01T14:00:23ZCleopatraPrepare manual for translationCleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/2095Add option to use system's Tor binary2023-10-10T18:11:51ZNicoAdd option to use system's Tor binaryThis is most likely needed for a release to Debian (~~https://code.briarproject.org/briar/briar-gtk/issues/38~~ https://code.briarproject.org/briar/briar-desktop/-/issues/261).This is most likely needed for a release to Debian (~~https://code.briarproject.org/briar/briar-gtk/issues/38~~ https://code.briarproject.org/briar/briar-desktop/-/issues/261).https://code.briarproject.org/briar/briar-gtk/-/issues/26Increase test coverage2020-06-09T10:06:58ZNicoIncrease test coverageIdeally, we should also solve https://code.briarproject.org/briar/briar-gtk/issues/2.
Related merge requests:
* !36Ideally, we should also solve https://code.briarproject.org/briar/briar-gtk/issues/2.
Related merge requests:
* !36https://code.briarproject.org/briar/website/-/issues/29Expand FAQs2022-11-18T17:32:17ZCleopatraExpand FAQsSubtask of #28
```
- What is Briar?
- How does Briar work?
- Why is it called Briar?
- How is Briar different from other messaging apps?
- How do I install/update/uninstall Briar?
- What platforms can I use Briar on?
- Can I send files ...Subtask of #28
```
- What is Briar?
- How does Briar work?
- Why is it called Briar?
- How is Briar different from other messaging apps?
- How do I install/update/uninstall Briar?
- What platforms can I use Briar on?
- Can I send files and images?
- Can I do video calls?
- Why is Briar is always logged out every time I open the app?
- What is the difference between a forum, private group and blog?
- What does Briar use for end2end encryption
- How are messages delivered?
- Why is my connection to a private group so slow?
- What happens to abandoned accounts?
- Why does Briar drain more battery?
- What are some limitations of Briar?
- how can briar sync over the internet without a server? how do you know where to send the sync to? don't you need some kind of known address or middleman to sync?
```CleopatraCleopatrahttps://code.briarproject.org/briar/briar-gtk/-/issues/37Release to Flathub.org2021-02-01T12:32:41ZNicoRelease to Flathub.orghttps://github.com/flathub/flathub/wiki/App-Submission
Before releasing Briar to Flathub.org, our own repository should be created (#42).https://github.com/flathub/flathub/wiki/App-Submission
Before releasing Briar to Flathub.org, our own repository should be created (#42).https://code.briarproject.org/briar/briar-gtk/-/issues/38Release to Debian2021-06-29T05:57:28ZNicoRelease to DebianDepends on
* https://code.briarproject.org/briar/briar-debian/-/issues/1
* https://code.briarproject.org/briar/python-briar-wrapper/issues/14
* https://code.briarproject.org/briar/briar-gtk/issues/39
* likely also https://code.briarproje...Depends on
* https://code.briarproject.org/briar/briar-debian/-/issues/1
* https://code.briarproject.org/briar/python-briar-wrapper/issues/14
* https://code.briarproject.org/briar/briar-gtk/issues/39
* likely also https://code.briarproject.org/briar/python-briar-wrapper/issues/15https://code.briarproject.org/briar/briar/-/issues/952Use external IP address in LocationUtils if available2020-11-19T15:17:31ZakwizgranUse external IP address in LocationUtils if availableIf we can discover a routable IP address from a network interface then we can look it up in Tor's GeoIP library and use that as one of the sources to determine whether Tor's likely to be blocked in our current location.If we can discover a routable IP address from a network interface then we can look it up in Tor's GeoIP library and use that as one of the sources to determine whether Tor's likely to be blocked in our current location.https://code.briarproject.org/briar/briar/-/issues/950Detect when Tor is failing to connect to the network2022-06-06T13:23:38ZakwizgranDetect when Tor is failing to connect to the networkUnder some circumstances (see #845), Tor can't connect to the network but the app doesn't realise there's no internet connectivity.. Repeatedly trying and failing to connect to guard nodes could cause Tor to mark its preferred guards as ...Under some circumstances (see #845), Tor can't connect to the network but the app doesn't realise there's no internet connectivity.. Repeatedly trying and failing to connect to guard nodes could cause Tor to mark its preferred guards as unreachable and choose new guards sooner than necessary, which could harm anonymity. We should consider setting `DisableNetwork 1` after repeated guard connection failures, then waiting for a connectivity event before trying again.https://code.briarproject.org/briar/briar/-/issues/942Compare Briar's Notification behaviour with other chat applications2020-11-19T15:21:55ZErnir ErlingssonCompare Briar's Notification behaviour with other chat applications> @ernir it would be great if you could look into the notification behaviour of other apps in detail (if i had to pick one, i guess it would be whatsapp) and see how they're handling all the corner cases. for example, if a conversation i...> @ernir it would be great if you could look into the notification behaviour of other apps in detail (if i had to pick one, i guess it would be whatsapp) and see how they're handling all the corner cases. for example, if a conversation is open and a message arrives, does it show a notification/vibrate/make a sound/blink the led? same question if the screen is off, same question if the list of conversations is open instead of the conversation itself, etchttps://code.briarproject.org/briar/briar/-/issues/929Non-blocking SettingsManager2020-11-15T10:37:10ZakwizgranNon-blocking SettingsManagerThe SettingsManager interface is inconvenient to use because it needs to be called on the DB thread. Make the interface non-blocking by loading settings at startup and writing them back to the DB in the background when they're updated.The SettingsManager interface is inconvenient to use because it needs to be called on the DB thread. Make the interface non-blocking by loading settings at startup and writing them back to the DB in the background when they're updated.https://code.briarproject.org/briar/briar-gtk/-/issues/80Use GTK 4 ListView and ListModel for lists2021-03-02T12:19:14ZNicoUse GTK 4 ListView and ListModel for listsWith the [scalable lists in GTK 4](https://blog.gtk.org/2020/06/07/scalable-lists-in-gtk-4/) (https://code.briarproject.org/briar/briar-gtk/-/issues/87), we can use something similar to Android's RecyclerView/ListViewAdapter. By using th...With the [scalable lists in GTK 4](https://blog.gtk.org/2020/06/07/scalable-lists-in-gtk-4/) (https://code.briarproject.org/briar/briar-gtk/-/issues/87), we can use something similar to Android's RecyclerView/ListViewAdapter. By using them, we could update the data and request GTK to render the updates. This is interesting for all sorts of issues:
* https://code.briarproject.org/briar/briar-gtk/-/issues/48
* https://code.briarproject.org/briar/briar-gtk/-/issues/47
* https://code.briarproject.org/briar/briar-gtk/-/issues/7
* https://code.briarproject.org/briar/briar-gtk/-/issues/69
* https://code.briarproject.org/briar/briar-gtk/-/issues/5
* https://code.briarproject.org/briar/briar-gtk/-/issues/8
* https://code.briarproject.org/briar/briar-gtk/-/issues/73
There's even an [`GtkTreeExpander`](https://developer.gnome.org/gtk4/4.0/gtk4-GtkTreeExpander.html) that will become quite handy with groups (https://code.briarproject.org/briar/briar-gtk/-/issues/21), forums (https://code.briarproject.org/briar/briar-gtk/-/issues/32) and blogs (https://code.briarproject.org/briar/briar-gtk/-/issues/33).
Interesting links:
* https://developer.gnome.org/gtk4/4.0/GtkListView.html
* https://developer.gnome.org/gio/2.64/GListModel.html
* https://developer.gnome.org/gtk4/4.0/GtkBuilderListItemFactory.htmlGTK 0.2.0-beta1https://code.briarproject.org/briar/briar-gtk/-/issues/87Port to GTK 4.02021-02-01T11:52:09ZNicoPort to GTK 4.0GTK 4.0 got released some days ago: https://blog.gtk.org/2020/12/16/gtk-4-0/
There are some cool new things in there that are all mentioned in the blog post. However, I marked this issues as blocked for now because I don't want to trans...GTK 4.0 got released some days ago: https://blog.gtk.org/2020/12/16/gtk-4-0/
There are some cool new things in there that are all mentioned in the blog post. However, I marked this issues as blocked for now because I don't want to transition to GTK 4.0 before [Debian stable ships it](https://packages.debian.org/experimental/libgtk-4-0). I think we have good chances to have it in the next Debian release coming in 2021. If we focused only on Flatpak, we could transition to GTK 4.0 today, though.
Related issues: https://code.briarproject.org/briar/briar-gtk/-/issues/80 and all the issues linked in there.
Related links:
* [Migrating from GTK 3.x to GTK 4 - GTK documentation](https://developer.gnome.org/gtk4/4.0/gtk-migrating-3-to-4.html)GTK 0.2.0-beta1https://code.briarproject.org/briar/briar-gtk/-/issues/99React on ConversationMessagesDeletedEvents2021-03-02T12:19:12ZNicoReact on ConversationMessagesDeletedEventsPointed out by @grote in https://code.briarproject.org/briar/briar/-/merge_requests/1384#note_47198. Once https://code.briarproject.org/briar/briar-gtk/-/issues/80 is there this will be really easy.Pointed out by @grote in https://code.briarproject.org/briar/briar/-/merge_requests/1384#note_47198. Once https://code.briarproject.org/briar/briar-gtk/-/issues/80 is there this will be really easy.GTK 0.2.0-beta1https://code.briarproject.org/briar/briar/-/issues/917Testers did not understand who could be invited to private groups2020-11-19T15:34:00ZakwizgranTesters did not understand who could be invited to private groupsTesters asked whether they could invite users who weren't their contacts to a group, and whether an invited member could invite her contacts. They eventually worked out what was possible but were initially confused.
Related to #801, #81...Testers asked whether they could invite users who weren't their contacts to a group, and whether an invited member could invite her contacts. They eventually worked out what was possible but were initially confused.
Related to #801, #811 and #855.https://code.briarproject.org/briar/briar/-/issues/901Improve key binding in contact exchange protocol2020-11-19T15:35:33ZakwizgranImprove key binding in contact exchange protocolThe contact exchange protocol provides the following guarantees:
* Each party knows that the ephemeral and identity public keys she received are owned by the other party
* Each party knows that the ephemeral and identity public keys she ...The contact exchange protocol provides the following guarantees:
* Each party knows that the ephemeral and identity public keys she received are owned by the other party
* Each party knows that the ephemeral and identity public keys she received were used by the other party in the same run of the protocol - in other words it binds each party's ephemeral key pair to the same party's identity key pair and vice versa
* Each party knows that the ephemeral public key she received was used by the other party in the current run of the protocol - in other words it binds the parties' ephemeral key pairs to each other
To achieve this, each party uses her identity key pair to sign a nonce derived from the ephemeral shared secret, and authenticates the signed nonce using a symmetric key derived from the ephemeral shared secret.
Each party knows that the nonce she received is fresh, as it depends on her own ephemeral key pair, so the nonce itself proves that the other party owns the ephemeral public key received by the first party, while the signature proves that the other party owns the identity public key received by the first party.
The nonce is unique to this combination of ephemeral key pairs, so the signature represents a claim by the owner of the received identity public key that she took part in a protocol run involving both ephemeral key pairs. Authenticating the signed nonce with a symmetric key derived from the ephemeral shared secret represents a claim by the owner of the received ephemeral public keys that she took part in a protocol run involving both ephemeral key pairs and the identity key pair.
As far as I can tell, this construction is secure and achieves what we need, but it's unnecessarily convoluted. The binding and proof of ownership that's achieved by signing nonces could be achieved more straightforwardly by signing public keys:
* Each party signs both parties' ephemeral public keys and timestamps using her identity key pair
* Each party authenticates both parties' identity public keys, ephemeral public keys and timestamps, using a symmetric key derived from the ephemeral shared secret
If we're not concerned with deniability, each party can sign both parties' identity public keys, ephemeral public keys and timestamps. But as far as I can see, we get all the assurance we need without doing this.
Related to #902.https://code.briarproject.org/briar/briar/-/issues/1094Splash screen makes app feel slow to start up2020-11-19T13:22:14ZakwizgranSplash screen makes app feel slow to start upA user commented that the splash screen makes the app feel slow to start up.
We originally added the splash because the app *was* slow to start up when we were using Guice. Now that we're using Dagger, perhaps the splash isn't needed an...A user commented that the splash screen makes the app feel slow to start up.
We originally added the splash because the app *was* slow to start up when we were using Guice. Now that we're using Dagger, perhaps the splash isn't needed any more?https://code.briarproject.org/briar/briar/-/issues/1101Research whether NotificationCleanupService needs to be migrated to JobIntent...2020-11-19T13:24:10ZakwizgranResearch whether NotificationCleanupService needs to be migrated to JobIntentServiceNotificationCleanupService extends IntentService, which may not work properly on Android 8 [according to the docs](https://developer.android.com/about/versions/oreo/background.html). Find out whether the changes apply to us. If so, upgra...NotificationCleanupService extends IntentService, which may not work properly on Android 8 [according to the docs](https://developer.android.com/about/versions/oreo/background.html). Find out whether the changes apply to us. If so, upgrade the support library to version 26 and migrate NotificationCleanupService to JobIntentService.https://code.briarproject.org/briar/briar/-/issues/1104Load messages on demand (paged/lazy)2022-05-16T19:53:45ZakwizgranLoad messages on demand (paged/lazy)If a group contains a lot of messages, it's expensive to load all the messages when the user views the group.
Some clients use metadata to avoid loading messages. Message bodies can then be loaded on demand as they become visible. But t...If a group contains a lot of messages, it's expensive to load all the messages when the user views the group.
Some clients use metadata to avoid loading messages. Message bodies can then be loaded on demand as they become visible. But this is still expensive if there are lots of messages and/or lots of metadata per message.
Ideally we'd use something like the MessageTracker to store summary information, then load the messages and/or metadata on demand.
One of the tasks here is to determine what summary information each client needs. For example, the forum client needs to know the number of unread posts above and below the viewport. It may also need to know the sort position of the first unread post above and below the viewport so it can jump to those posts.
Sort order will be relevant to any client that loads messages on demand. If we want to load messages a page at a time, the database needs to know how to sort the messages. But sort order is client-dependent. For example, the blog client may want to sort posts by date, whereas the forum client sorts them by depth-first traversal order of the reply tree.
We can capture both of these orders (and hopefully others) by adding a label to each message. From the database's point of view, the label is just an opaque string of bytes. The database sorts the labels in lexicographic order, and messages and metadata can be retrieved by their positions in the sort order. The client is reponsible for labelling messages to achieve the desired sort order.
For the blog client, the label can just be a big-endian representation of the timestamp. For the forum client, the label can be the concatenated timestamps of the post's ancestors and the post itself. These labels will sort in the same order as depth-first traversal of the tree, visiting siblings in timestamp order.
```
123
+-123/234
+-123/345
234
+-234/345
+-234/345/456
345
567
```
(This doesn't rely on the rule that a post has a higher timestamp than its parent.)
This approach wouldn't be efficient for dynamic sort orders. For example, if the forum client wanted to sort siblings by the number of upvotes, we could calculate the labels as with timestamps, but adding an upvote to a post would require relabelling the post and all its descendents.https://code.briarproject.org/briar/briar/-/issues/826Online status in group memberlist2020-11-21T12:40:34ZTorsten GroteOnline status in group memberlistThe group member list shows the online status of contacts. As of MR !448, it only shows the online status of contacts, we actually share with to be consistent with the sharing information in the group's action bar.
This can be confusing...The group member list shows the online status of contacts. As of MR !448, it only shows the online status of contacts, we actually share with to be consistent with the sharing information in the group's action bar.
This can be confusing since some group members have online status and others don't.