briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:39Zhttps://code.briarproject.org/briar/briar/-/issues/80Show the context of forum posts2018-06-12T11:32:39ZakwizgranShow the context of forum postsUsers asked for the ability to see the context of a forum post -- this could mean dividing forums into threads, displaying replies indented below their parents, or providing a link from a reply to its parent, as in Discourse.Users asked for the ability to see the context of a forum post -- this could mean dividing forums into threads, displaying replies indented below their parents, or providing a link from a reply to its parent, as in Discourse.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/82Make the flow of conversation easier to follow2018-06-12T11:32:39ZakwizgranMake the flow of conversation easier to followUsers asked for the flow of conversation to be made easier to follow. Measures to improve this might include:
* Using different background colours for different identities, as in WhatsApp
* Aligning the user's posts to the right and ...Users asked for the flow of conversation to be made easier to follow. Measures to improve this might include:
* Using different background colours for different identities, as in WhatsApp
* Aligning the user's posts to the right and other users' posts to the left
* Identicons to make it easier to distinguish between identities at a glance
Milestone Chttps://code.briarproject.org/briar/briar/-/issues/120Identicons2018-06-12T11:32:38ZakwizgranIdenticonsGenerate a pseudo-random icon for each identity to help users distinguish between identities with similar names.
Unknown identities should use greyscale, known identities (contacts and self) should use colour.
The input to the icon...Generate a pseudo-random icon for each identity to help users distinguish between identities with similar names.
Unknown identities should use greyscale, known identities (contacts and self) should use colour.
The input to the icon generator should be salted with a locally stored salt so that attackers can't produce similar-looking icons without knowing the salt.
Forums could also have icons to help users distinguish between forums with similar names.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/121Improve UX for sharing forums2018-06-12T11:32:38ZakwizgranImprove UX for sharing forumsThe process for sharing a forum should involve an explicit invitation message. It should be possible to accept, decline or ignore invitations, and the invitation status of each contact should be shown when viewing the details of a forum....The process for sharing a forum should involve an explicit invitation message. It should be possible to accept, decline or ignore invitations, and the invitation status of each contact should be shown when viewing the details of a forum.
We may also want to show information about the contacts and other identities that have posted to the forum.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/122UI for threaded discussions2018-06-12T11:32:38ZakwizgranUI for threaded discussionsForum conversations are currently shown in a flat list, which testers have found confusing. Create a threaded view in which replies are nested below their parents. Reddit shows that this is possible on a phone screen. At some level of ne...Forum conversations are currently shown in a flat list, which testers have found confusing. Create a threaded view in which replies are nested below their parents. Reddit shows that this is possible on a phone screen. At some level of nesting, replies will need to be collapsed.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/123Encrypted crash reports submitted via Tor2018-06-12T11:32:38ZakwizgranEncrypted crash reports submitted via TorIf the user chooses to report a crash, the crash reporter should encrypt the crash report with the developers' public key and store it on the disk until the app is re-launched. The app should import the encrypted report, post it to a cra...If the user chooses to report a crash, the crash reporter should encrypt the crash report with the developers' public key and store it on the disk until the app is re-launched. The app should import the encrypted report, post it to a crash report channel and delete it from the disk.
Messages in the crash report channel should be synced with contacts, but no further. We'll need to add a special contact that's only reachable via Tor for delivering reports to the developers. To prevent the special contact from being a single point where Briar users can be enumerated, it should only be contacted when there are crash reports to deliver.
Users should be able to opt out of sending crash reports and opt out of delivering crash reports for their contacts.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/124User feedback submitted via Tor2018-06-12T11:32:38ZakwizgranUser feedback submitted via TorIf a user wants to send feedback to the developers, the app should encrypt the feedback with the developers' public key and post it to a feedback channel.
Messages in the feedback channel should be synced with contacts, but no further...If a user wants to send feedback to the developers, the app should encrypt the feedback with the developers' public key and post it to a feedback channel.
Messages in the feedback channel should be synced with contacts, but no further. We'll need to add a special contact that's only reachable via Tor for delivering feedback to the developers. To prevent the special contact from being a single point where Briar users can be enumerated, it should only be contacted when there's feedback to deliver.
Users should be able to opt out of delivering feedback for their contacts.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/125Use cases for partner organisation's Bramble app2018-06-12T11:32:38ZakwizgranUse cases for partner organisation's Bramble appHigh-level description of the tasks for which the app will be used.High-level description of the tasks for which the app will be used.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/126User stories for partner organisation's Bramble app2018-06-12T11:32:38ZakwizgranUser stories for partner organisation's Bramble appAgile user stories describing how the app will be used. "As an X, I want Y so that Z".Agile user stories describing how the app will be used. "As an X, I want Y so that Z".Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/149Use control port to create Tor hidden service2018-06-12T11:32:37ZakwizgranUse control port to create Tor hidden serviceHidden services can now be created via the control port, with the controller storing the private key. This will enable us to store the private key in the encrypted database.Hidden services can now be created via the control port, with the controller storing the private key. This will enable us to store the private key in the encrypted database.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/154Test Requirement of Foreground and Permanent Notification Icon2018-06-12T11:32:36ZTorsten GroteTest Requirement of Foreground and Permanent Notification IconShowing a permanent notification icon is discouraged and many people's notification bar is incredibly cluttered with notification icons already. I'd like to raise the question whether we really need to show the icon to signal the user th...Showing a permanent notification icon is discouraged and many people's notification bar is incredibly cluttered with notification icons already. I'd like to raise the question whether we really need to show the icon to signal the user that she is signed into Briar at the moment.
The notification icon is shown for the app to run in the foreground and for preventing it from getting killed. However, we should experiment to see whether running in the foreground is definitely necessary. (It's more likely to be necessary on devices with less memory, so that's the place to test.)Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/203Remove Tor binaries from repo2018-06-12T11:32:34ZakwizgranRemove Tor binaries from repoThe Tor binaries (and Tor's GeoIP database) need to be updated regularly - this makes the repo enormous. Remove the binaries from the repo and find a convenient way of downloading and verifying them during the build process - possibly gr...The Tor binaries (and Tor's GeoIP database) need to be updated regularly - this makes the repo enormous. Remove the binaries from the repo and find a convenient way of downloading and verifying them during the build process - possibly gradle-witness?
We may want to remove the binaries from the repo's history too, but that will need to be co-ordinated among all developers to avoid git breakage.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/206Use Material Design and Standard Practises for SettingsActivity2018-06-12T11:32:34ZTorsten GroteUse Material Design and Standard Practises for SettingsActivityCurrently, the SettingsActivity is written by hand and difficult to extent. It does not use Material Design like the rest of the application (will).
It should be rewritten using [best practices](https://developer.android.com/guide/top...Currently, the SettingsActivity is written by hand and difficult to extent. It does not use Material Design like the rest of the application (will).
It should be rewritten using [best practices](https://developer.android.com/guide/topics/ui/settings.html).
If for some reason, the preferences should not be stored in the default Android location, a custom PreferenceManager needs to be implemented.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/222Metadata queries2018-08-02T11:01:32ZakwizgranMetadata queriesCreate a minimal query interface that allows clients to query messages and groups by their metadata.
This could be loosely modelled on [MongoDB's query interface](https://docs.mongodb.org/manual/core/read-operations-introduction/#quer...Create a minimal query interface that allows clients to query messages and groups by their metadata.
This could be loosely modelled on [MongoDB's query interface](https://docs.mongodb.org/manual/core/read-operations-introduction/#query-interface):
* Use the builder pattern to construct queries
* Optionally supply a criteria object: this is a Metadata object populated with keys and optionally values to match
* Optionally supply a projection object: this is a Metadata object populated with keys to retrieve
* Optionally count results instead of returning them
Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/246Set up unit testing for Android code2018-06-12T11:32:33ZakwizgranSet up unit testing for Android codeWe currently have unit tests for (parts of) briar-core and briar-desktop, but not for briar-android. Some of the UI logic is quite complex and should be tested. Choose an appropriate test framework and set up automated unit tests.We currently have unit tests for (parts of) briar-core and briar-desktop, but not for briar-android. Some of the UI logic is quite complex and should be tested. Choose an appropriate test framework and set up automated unit tests.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/247Replace Guice/Roboguice with Dagger 22018-06-12T11:32:33ZErnir ErlingssonReplace Guice/Roboguice with Dagger 2After much deliberation we decided to replace Guice and Roboguice with Dagger 2 due to these benefits:
* Better performance
* No reflection
* Smaller library
* Compile errors instead of runtime errors.After much deliberation we decided to replace Guice and Roboguice with Dagger 2 due to these benefits:
* Better performance
* No reflection
* Smaller library
* Compile errors instead of runtime errors.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/255Client API improvements2018-06-12T11:32:32ZakwizgranClient API improvementsQuoting @grote:
> Last night I thought about the Client API as well and I tried to forget most of what I know about how things are implemented at the moment, so I can have a fresh view on how a developer writing a client without being f...Quoting @grote:
> Last night I thought about the Client API as well and I tried to forget most of what I know about how things are implemented at the moment, so I can have a fresh view on how a developer writing a client without being familiar with Briar's internals would see things.
> It is nice to being able to access the raw message, being able to put your own data structures in there. It is nice that you can encode and parse metadata. However, for many applications that might not be necessary and all the developer wants is a simple key value store. We have this already with the BdfDictionary which resembles JSON and which I like.
> So I was wondering, why we don't add a layer on top of what we have and allow the client developer to directly get a BdfDictionary (which I will call Payload) from the message. The same way, when composing the message, just let the developer provide the payload and the lower layers handle the rest.
> Here's some pseudo code to illustrate those thoughts:
```java
class MyClient extends BrambleClient {
@Override
public void receivedMessage(Message m) {
Payload payload = m.getPayload(); // this is currently called BdfDictionary
String myString = payload.getString("myString");
long myInt = payload.getIntegeger("myInt");
Object myObject = payload.getSerializable("mySerializableObject");
doSomething(myString, myInt);
}
public void sendMessage() {
Payload payload = new Payload();
payload.putString("myString", "foo");
payload.putInteger("myString", "foo");
payload.putSerializable("mySerializableObject", myObject);
Message m = messageFactory.createMessage(payload);
// if that's not possible, it can be db.addLocalMessage(group, ...)
Group group = getGroup(contact);
group.sendMessage(m);
}
public void doSomething(String s, int i) {
// payload queries for easy access to messages
List<Messages> msgs1 = db.getMessagesWithPayloadKey(group, "myString");
List<Messages> msgs2 = db.getMessagesWherePayload(group, "myString", String, s);
}
}
```
> Adding data to the payload is very similar to how intent extras or bundles work in the Android API, so many people are already familar with it.
> Also note that there's no mention of validatingMessage() because the client developer is only interesting in receiving a message, so there could be just another hook for that.
> If at all possible, I would like the client developer to write as little validation code as possible. Not having to check lengths and such things, but maybe only to see if the payload objects she expects are there.
> I think that payload queries (however they will look like) would also be a very nice addition and convenience methods for client developers, so they don't have to iterate through message lists themselves just to find the ones they are interested in.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/258Replace Timer with ScheduledExecutorService2018-06-12T11:32:32ZakwizgranReplace Timer with ScheduledExecutorServiceThe Timer implementation used by PollerImpl and TransportKeyManager is based on java.util.Timer, which is sensitive to changes in the system clock:
http://stackoverflow.com/questions/18803695/how-is-the-timer-class-in-java-sensitive-t...The Timer implementation used by PollerImpl and TransportKeyManager is based on java.util.Timer, which is sensitive to changes in the system clock:
http://stackoverflow.com/questions/18803695/how-is-the-timer-class-in-java-sensitive-to-the-system-clock
Replace it with an implementation based on ScheduledExecutorService.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/260torbot unable to start when briar is on2018-06-12T11:32:32Zxaviertorbot unable to start when briar is onwhen briar is active on the wan then i cannot start torbot on the same device.
maybe it is something related to #259 when briar is active on the wan then i cannot start torbot on the same device.
maybe it is something related to #259 Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/262briar dos not try to reconnect by itself after connection loss2018-06-12T11:32:32Zxavierbriar dos not try to reconnect by itself after connection lossafter a loss of connection i have the feeling that briar is not trying so much to reconnect.
i have seen that several times.
briar shows all contacts offline
if i send a message to several contacts, it does not seems to try reinit c...after a loss of connection i have the feeling that briar is not trying so much to reconnect.
i have seen that several times.
briar shows all contacts offline
if i send a message to several contacts, it does not seems to try reinit connection
if i disconnect and reconnect mannually
then all contacts goes back online.
maybe sending messages to a offline client when most clients are offline shall make briar to reinit all connections.
this is more present on the 3g 4g networks.
on same wifi lan and bluetooth. i do no see that behaviorMilestone Cakwizgranakwizgran