briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:32Zhttps://code.briarproject.org/briar/briar/-/issues/248Expose transactions to sync clients2018-06-12T11:32:32ZakwizgranExpose transactions to sync clientsSubtask of #112.Subtask of #112.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/229Convert TransportPropertyManager into a BSP client2018-04-16T16:24:37ZakwizgranConvert TransportPropertyManager into a BSP clientSubtask of #112Subtask of #112Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/221Metadata for groups2018-06-12T11:32:34ZakwizgranMetadata for groupsSubtask of #112.Subtask of #112.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/215Panic button delete action doesn't remove DB password2018-06-12T11:32:34ZakwizgranPanic button delete action doesn't remove DB passwordSteps to reproduce:
* Choose Ripple as the panic button app
* Enable the delete account action
* Sign out of Briar
* Trigger Ripple's panic button
* Re-launch Briar from the recents menu
* The password prompt is shown
* Sign in
...Steps to reproduce:
* Choose Ripple as the panic button app
* Enable the delete account action
* Sign out of Briar
* Trigger Ripple's panic button
* Re-launch Briar from the recents menu
* The password prompt is shown
* Sign in
* The dashboard is shown, then it disappears
* Re-launch Briar from the recents menu
* This time the setup screen is shown, as expected
My guess is that the shared preferences DB containing the password-encrypted database key isn't being deleted by the panic action. But after the first re-launch, Briar detects that the main database is missing and deletes the shared preferences DB.
Tested on a Samsing Galaxy Nexus (Android 4.3).Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/213Use @Test annotation to test for exceptions being thrown2018-06-12T11:32:34ZakwizgranUse @Test annotation to test for exceptions being thrownLots of tests currently use this idiom:
```
@Test
public void testFoo() {
try {
foo();
Assert.fail();
} catch (FooException expected) {
// Expected
}
}
```
They should instead use JUnit...Lots of tests currently use this idiom:
```
@Test
public void testFoo() {
try {
foo();
Assert.fail();
} catch (FooException expected) {
// Expected
}
}
```
They should instead use JUnit's support for catching exceptions:
```
@Test(expected = FooException.class)
public void testFoo() throws FooException {
foo();
}
```Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/210PanicKit Support for Destructive Actions2018-06-12T11:32:34ZTorsten GrotePanicKit Support for Destructive ActionsBased on !52, PanicKit support should be extended to support connecting/disconnecting panic trigger apps and verify that trigger actions come only from trusted apps using the trustedIntents library from the GuardianProject.
The first ...Based on !52, PanicKit support should be extended to support connecting/disconnecting panic trigger apps and verify that trigger actions come only from trusted apps using the trustedIntents library from the GuardianProject.
The first destructive response should be to purge all settings and the entire database. This should be configurable.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/209Ensure clients can reliably respond to contacts being added/removed2018-06-12T11:32:34ZakwizgranEnsure clients can reliably respond to contacts being added/removedAdding or removing a contact may trigger actions by sync clients (such as adding or removing a private group shared with the contact).
If the app crashes immediately after the DB transaction that adds/removes the contact is committed,...Adding or removing a contact may trigger actions by sync clients (such as adding or removing a private group shared with the contact).
If the app crashes immediately after the DB transaction that adds/removes the contact is committed, event handlers registered by clients may not be run.
Possible solutions:
* Clients could check the contact list at startup and perform any actions needed to bring their own state back into step with the contact list.
* Clients could register handlers to be run in the same DB transaction as the add/remove event.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/208Remove ReadPrivateMessageActivity and WritePrivateMessageActivity2018-06-12T11:32:34ZakwizgranRemove ReadPrivateMessageActivity and WritePrivateMessageActivityDo you use them? No, neither does anyone else.Do you use them? No, neither does anyone else.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/204Support PanicKit2018-06-12T11:32:34ZakwizgranSupport PanicKitThe Guardian Project has developed a framework that allows a panic button app to broadcast an Intent that other apps can react to. Briar should respond by signing out.
We should provide an option to delete the user's account as well, ...The Guardian Project has developed a framework that allows a panic button app to broadcast an Intent that other apps can react to. Briar should respond by signing out.
We should provide an option to delete the user's account as well, but this was split out into #210.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/201Messages that arrive while a conversation is open should not be shown as unread2018-06-12T11:32:35ZakwizgranMessages that arrive while a conversation is open should not be shown as unreadRelated: #195, #196.Related: #195, #196.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/200Duplicate entries in ContactList2018-06-12T11:32:35ZakwizgranDuplicate entries in ContactListAfter merging !38 I've started to see duplicate entries in the contact list. To reproduce:
* Touch a contact to enter ConversationActivity
* Receive a message from the contact
* Wait a minute so the time shown for the new message is...After merging !38 I've started to see duplicate entries in the contact list. To reproduce:
* Touch a contact to enter ConversationActivity
* Receive a message from the contact
* Wait a minute so the time shown for the new message is different from the time shown for the previous message
* Press the back button
* Two entries are shown in the contact list
* Repeat to create more duplicates
I'm guessing this might have something to do with RecyclerView recycling views that should have been replaced.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/199Use Floating Action Button (FAB) for adding new contact2018-06-12T11:32:35ZTorsten GroteUse Floating Action Button (FAB) for adding new contactCurrently, there's an icon in the action bar for adding new contacts. However, this action is a prime candidate to be implemented with a Floating Action Button (FAB).
There's basically two options for the implementation:
* [Design Su...Currently, there's an icon in the action bar for adding new contacts. However, this action is a prime candidate to be implemented with a Floating Action Button (FAB).
There's basically two options for the implementation:
* [Design Support Library](http://android-developers.blogspot.com.br/2015/05/android-design-support-library.html)
* @str4d's [FloatingActionButton library](https://github.com/str4d/android-floating-action-button)Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/198Refactor out pattern of list with empty view and progress wheel2018-06-12T11:32:35ZTorsten GroteRefactor out pattern of list with empty view and progress wheelWe have many lists that need an empty view to be shown when no elements exist and a progress wheel when elements are loaded. This could be re-factored out since it is a common pattern.We have many lists that need an empty view to be shown when no elements exist and a progress wheel when elements are loaded. This could be re-factored out since it is a common pattern.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/194Setup Translation Platform for App2018-06-12T11:32:35ZTorsten GroteSetup Translation Platform for AppCurrently, the app is only available in English. It should be translated into other languages. To make things easier for potential translators, the translation should not happen via editing XML files and doing pull requests on GitLab, bu...Currently, the app is only available in English. It should be translated into other languages. To make things easier for potential translators, the translation should not happen via editing XML files and doing pull requests on GitLab, but rather through a dedicated platform such as [Transifex](http://transifex.com/), [Weblate](https://weblate.org) or a similar service.
This is a precondition for #143.Milestone Ahttps://code.briarproject.org/briar/briar/-/issues/193Crash reporter doesn't have a title bar2018-06-12T11:32:35ZakwizgranCrash reporter doesn't have a title barThere's no indication of what this screen is for or which app it belongs to.There's no indication of what this screen is for or which app it belongs to.Milestone ATorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/191Transport icon labels dont't fit on small screens2018-06-12T11:32:35ZakwizgranTransport icon labels dont't fit on small screensOn the Sony Xperia Tipo and Samsung Galaxy Ace, the transport icons and their labels are too wide for the screen, causing the Bluetooth label to wrap onto a second line.
Putting the labels below the icons solves the problem.On the Sony Xperia Tipo and Samsung Galaxy Ace, the transport icons and their labels are too wide for the screen, causing the Bluetooth label to wrap onto a second line.
Putting the labels below the icons solves the problem.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/190TransportKeyManager creates duplicates when rotating keys2018-06-12T11:32:35ZakwizgranTransportKeyManager creates duplicates when rotating keysGot this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when relaunching Briar after installing it yesterday:
```
12-18 10:57:16.936 22408-23493/org.briarproject W/TransportKeyManager: org.briarproject.api.db.DbException: org.h2....Got this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when relaunching Briar after installing it yesterday:
```
12-18 10:57:16.936 22408-23493/org.briarproject W/TransportKeyManager: org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:919)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:3163)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:65)
at org.briarproject.db.DatabaseComponentImpl.updateTransportKeys(DatabaseComponentImpl.java:1461)
at org.briarproject.transport.TransportKeyManager$1.run(TransportKeyManager.java:127)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(Unknown Source)
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:896)
... 7 more
12-18 10:57:17.166 22408-23493/org.briarproject W/TransportKeyManager: org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:919)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:3163)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:65)
at org.briarproject.db.DatabaseComponentImpl.updateTransportKeys(DatabaseComponentImpl.java:1461)
at org.briarproject.transport.TransportKeyManager$1.run(TransportKeyManager.java:127)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(Unknown Source)
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:896)
... 7 more
```Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/189Implement BLAKE2s2018-06-12T11:32:35Zstr4dImplement BLAKE2sSubtask of #169
Initial implementation will go into briar-core. Once implemented, we should aim to push the implementation upstream into BouncyCastle. We can then drop it from briar-core once it has propagated to BouncyCastly and Spon...Subtask of #169
Initial implementation will go into briar-core. Once implemented, we should aim to push the implementation upstream into BouncyCastle. We can then drop it from briar-core once it has propagated to BouncyCastly and SpongyCastle.Milestone Ahttps://code.briarproject.org/briar/briar/-/issues/188Inject DbExecutor as an ExecutorService2018-06-12T11:32:35ZakwizgranInject DbExecutor as an ExecutorServiceTransportKeyManager needs to submit database tasks and wait for them to complete, so it needs to see the DbExecutor as an ExecutorService rather than an Executor.
Subtask of #111.TransportKeyManager needs to submit database tasks and wait for them to complete, so it needs to see the DbExecutor as an ExecutorService rather than an Executor.
Subtask of #111.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/186Bluetooth dashboard icon doesn't update on Galaxy Nexus2018-06-12T11:32:35ZakwizgranBluetooth dashboard icon doesn't update on Galaxy NexusThis could be related to #184. When the Bluetooth adapter is enabled or disabled, either via SettingsActivity or the device's settings, the Bluetooth icon on the dashboard doesn't update. Rotating the screen updates the icon.
This pro...This could be related to #184. When the Bluetooth adapter is enabled or disabled, either via SettingsActivity or the device's settings, the Bluetooth icon on the dashboard doesn't update. Rotating the screen updates the icon.
This problem is specific to the Galaxy Nexus, the icon updates fine on other devices.Milestone Aakwizgranakwizgran