briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-01-26T13:50:35Zhttps://code.briarproject.org/briar/briar/-/issues/303Use Bluetooth LE for peer discovery2022-01-26T13:50:35ZakwizgranUse Bluetooth LE for peer discoverySome newer Android devices support Bluetooth LE peripheral mode, which allows them to send beacons advertising their presence. This could be used as a low-energy and privacy-preserving alternative to polling for device pairs that support...Some newer Android devices support Bluetooth LE peripheral mode, which allows them to send beacons advertising their presence. This could be used as a low-energy and privacy-preserving alternative to polling for device pairs that support it.
https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
Related to #44, #62.https://code.briarproject.org/briar/briar/-/issues/400Show Active Forum Members2020-11-21T19:00:39ZTorsten GroteShow Active Forum MembersIntroduce a screen reachable from a forum's overflow menu that shows the active members of a forum.
![Metainformation_Overflow3](/uploads/e7f88f57219c5ca3a112479f125db6de/Metainformation_Overflow3.jpg)Introduce a screen reachable from a forum's overflow menu that shows the active members of a forum.
![Metainformation_Overflow3](/uploads/e7f88f57219c5ca3a112479f125db6de/Metainformation_Overflow3.jpg)https://code.briarproject.org/briar/briar/-/issues/466Offline Mode: Don't inform contacts that we are online2020-11-21T18:46:19Zstr4dOffline Mode: Don't inform contacts that we are onlineSeveral users asked for the option not to let contacts know when they're online.
Some of those users wanted to be online without their contacts seeing them as online. It isn't possible to be online without connecting to contacts, and th...Several users asked for the option not to let contacts know when they're online.
Some of those users wanted to be online without their contacts seeing them as online. It isn't possible to be online without connecting to contacts, and the "show what you know" principle says that if we know a contact is connected, we should show that information in the UI, so that feature request was rejected - see #72.
Other users wanted to be signed in without their contacts seeing them as online. We can achieve that by providing an offline mode where the user is signed in but all transports are disabled. As mentioned in the discussion on #72, being able to toggle transports (#185) may not fully address the need for an offline mode, as users may not understand that disabling all transports means they're offline. Also, the user may want to enable offline mode when signing in.https://code.briarproject.org/briar/briar/-/issues/301Replace jars with Gradle dependencies2020-11-21T19:23:37ZakwizgranReplace jars with Gradle dependencies* ~~weupnp: https://bintray.com/bintray/jcenter/org.bitlet%3Aweupnp/view (upgrade from 0.1.3-SNAPSHOT to 0.1.4)~~
* bluecove and bluecove-gpl: https://bintray.com/bintray/jcenter/net.sf.bluecove%3Abluecove/view (downgrade from 2.1.1-SNAP...* ~~weupnp: https://bintray.com/bintray/jcenter/org.bitlet%3Aweupnp/view (upgrade from 0.1.3-SNAPSHOT to 0.1.4)~~
* bluecove and bluecove-gpl: https://bintray.com/bintray/jcenter/net.sf.bluecove%3Abluecove/view (downgrade from 2.1.1-SNAPSHOT to 2.1.0, check whether Briar patch is still needed)
* ~~jna: https://bintray.com/bintray/jcenter/net.java.dev.jna%3Ajna/view and https://bintray.com/bintray/jcenter/net.java.dev.jna%3Ajna-platform/view~~
* jssc: https://bintray.com/bintray/jcenter/org.scream3r%3Ajssc/view (upgrade from 0.9, see #64)
* ~~jsocks: no suitable artifact available, see #228~~
* jtorctl: no suitable artifact available, patch required until merged upstream, see https://github.com/guardianproject/jtorctl/pulls
* jnotify: no suitable artifact available, patch required, see #25https://code.briarproject.org/briar/briar/-/issues/464UX-/UI-review2020-11-21T18:46:54ZMegaloxUX-/UI-reviewThis is an (imcomplete) list of features which need special attention during UX-/UI-review. Please feel free to add points to the list.
- highlight for unread messages/forum posts/blog posts correct (color and animation) (#232)?
- P...This is an (imcomplete) list of features which need special attention during UX-/UI-review. Please feel free to add points to the list.
- highlight for unread messages/forum posts/blog posts correct (color and animation) (#232)?
- Personal feed: Does the timestamp move a lot (#442 !235)?
- All colors correct? All font colors correct (#333)?
- All transitions consistent?
- Empty state messages: All present and correct?
- Big button: Corners correct (#451 !231)? (Sharp, not rounded)
[- New Tag vanishes after 24h? (not implemented)]https://code.briarproject.org/briar/briar/-/issues/379Safe publication audit2020-11-21T19:01:53ZakwizgranSafe publication auditAudit the codebase for safe publication issues:
* Allowing `this` to escape the constructor (including indirectly via non-static inner classes)
* Passing mutable objects between threads (including mutable collections)Audit the codebase for safe publication issues:
* Allowing `this` to escape the constructor (including indirectly via non-static inner classes)
* Passing mutable objects between threads (including mutable collections)https://code.briarproject.org/briar/briar/-/issues/463Redesign panic button settings2020-11-21T18:47:35ZMegaloxRedesign panic button settingsThe panic button settings could look better, but this is very low priority.The panic button settings could look better, but this is very low priority.https://code.briarproject.org/briar/briar/-/issues/291Resetting the password/database results in a Strict Mode violation2020-11-21T19:24:47Zstr4dResetting the password/database results in a Strict Mode violationEncountered on Nexus 6P, Android 6.0.1, commit 7c687736d while resetting the Briar database after some incompatible change:
```
04-13 17:12:00.354 17497-17497/org.briarproject I/BriarService: Created
04-13 17:12:00.359 17497-17929/org.b...Encountered on Nexus 6P, Android 6.0.1, commit 7c687736d while resetting the Briar database after some incompatible change:
```
04-13 17:12:00.354 17497-17497/org.briarproject I/BriarService: Created
04-13 17:12:00.359 17497-17929/org.briarproject I/LifecycleManagerImpl: Starting services
04-13 17:12:00.627 17497-17929/org.briarproject W/LifecycleManagerImpl: org.briarproject.api.db.DbException
org.briarproject.api.db.DbException
at org.briarproject.db.JdbcDatabase.open(JdbcDatabase.java:256)
at org.briarproject.db.H2Database.open(H2Database.java:41)
at org.briarproject.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:106)
at org.briarproject.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:79)
at org.briarproject.android.BriarService$1.run(BriarService.java:92)
04-13 17:12:00.627 17497-17929/org.briarproject W/BriarService: Startup failed: DB_ERROR
04-13 17:12:00.641 17497-17497/org.briarproject I/BriarService: Destroyed
04-13 17:12:00.659 17497-17497/org.briarproject I/NavDrawerActivity: Exiting
04-13 17:12:00.660 17497-17497/org.briarproject I/art: System.exit called, status: 0
04-13 17:12:00.660 17497-17497/org.briarproject I/AndroidRuntime: VM exiting with result code 0, cleanup skipped.
04-13 17:12:15.832 18152-18223/org.briarproject W/FileUtils: Failed to chmod(/data/user/0/org.briarproject/shared_prefs/db.xml): android.system.ErrnoException: chmod failed: ENOENT (No such file or directory)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=33 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isFile(File.java:537)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:8)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=32 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isDirectory(File.java:522)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:10)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=32 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isFile(File.java:537)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:8)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:13)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-13 17:12:15.846 18152-18152/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=31 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=65567 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1223)
at libcore.io.BlockGuardOs.remove(BlockGuardOs.java:254)
at java.io.File.delete(File.java:311)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:9)
at org.briarproject.util.FileUtils.deleteFileOrDir(FileUtils.java:13)
at org.briarproject.android.util.AndroidUtils.deleteAppData(AndroidUtils.java:83)
at org.briarproject.android.PasswordActivity.clearSharedPrefsAndDeleteEverything(PasswordActivity.java:107)
at org.briarproject.android.PasswordActivity.access$400(PasswordActivity.java:35)
at org.briarproject.android.PasswordActivity$3.onClick(PasswordActivity.java:127)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
```https://code.briarproject.org/briar/briar/-/issues/457Personal detail screen / My profile2020-11-21T18:54:24ZMegaloxPersonal detail screen / My profileWe need some screen to ~~edit nick names, create additional identities,~~ edit avatars, ~~select identities~~, sign out and display the users single feed. Could even be a navigation target in the drawer.We need some screen to ~~edit nick names, create additional identities,~~ edit avatars, ~~select identities~~, sign out and display the users single feed. Could even be a navigation target in the drawer.https://code.briarproject.org/briar/briar/-/issues/368Simplify Dagger providers2020-11-21T19:02:14ZakwizgranSimplify Dagger providersThe Dagger modules have a lot of methods like this:
```
@Provides
Foo provideFoo(Bar bar, Baz baz, Bam bam, Qux qux) {
return new FooImpl(bar, baz, bam, qux);
}
```
This can be simplified, making it easier to maintain:
```
@Provides
...The Dagger modules have a lot of methods like this:
```
@Provides
Foo provideFoo(Bar bar, Baz baz, Bam bam, Qux qux) {
return new FooImpl(bar, baz, bam, qux);
}
```
This can be simplified, making it easier to maintain:
```
@Provides
Foo provideFoo(FooImpl foo) {
return foo;
}
````https://code.briarproject.org/briar/briar/-/issues/454Research RSS article extraction libraries2020-11-21T18:55:04ZTorsten GroteResearch RSS article extraction librariesThere are two main problems with doing a RSS Import and republishing it as a Briar Blog:
1. **The feed may not include the full article, but only a teaser**
2. How would RSS feed of a traditional blog or news website fit with Briar's mor...There are two main problems with doing a RSS Import and republishing it as a Briar Blog:
1. **The feed may not include the full article, but only a teaser**
2. How would RSS feed of a traditional blog or news website fit with Briar's more tumblr-like blogs
This ticket is about solving the first problem. Once this is solved, we'll open a new ticket for the second one.
One solution could be to **fetch and reformat the full article** that is usually linked from the RSS feed. This is a difficult job that would require a lot of testing with real-world data. Fortunately, there are libraries out there that could solve this problem for us.
It is difficult to detect if an RSS feed provides the full content or not. In both cases, the `<description>` tag is used. So maybe we could show users a **preview** before importing the feed and allow them to **switch article extraction mode on manually** for when the feed only contains teasers.
An alternative is not to support teaser-only feeds at all and rely on users to provide full text feeds. There is even a [Free Software webservice](http://fivefilters.org/content-only/) to do this.
This is a sub-ticket of #135.
# Article Extraction Libraries
## [boilerpipe](https://github.com/kohlschutter/boilerpipe)
* seems to be the most popular library on the net, but last release was 5 years ago and last commit 2 years ago
* not on jcenter, only private maven repo or jars
* `ArticleExtractor#getText()` can take various arguments such as `Url`, `String`, `Reader`, etc. so we can fetch the document ourselves via Tor
* The built-in `HTMLFetcher` is very simple and does not seem to support proxies
* License: Apache License 2.0
* Dependencies:
* [nekohtml](http://nekohtml.sourceforge.net/)
* [xerces](https://xerces.apache.org/)
## [snacktory](https://github.com/karussell/snacktory)
* used by the RSS reader Torsten is using and works well, but also [no longer actively developed](https://github.com/karussell/snacktory/issues/42#issuecomment-71230546)
* good detection for none-english sites (German, Japanese, ...), snacktory does not depend on the word count in its text detection to support CJK languages
* not on jcenter, only private maven repo or jars (or one `.java` file)
* `ArticleTextExtractor#extractContent()` can take various arguments such as `JResult`, `String`, `Document`, etc. so we can fetch the document ourselves via Tor
* There is also a built-in `HtmlFetcher` that has a `setProxy()` method
* License: Apache License 2.0
* Dependencies:
* [jsoup](https://jsoup.org/)
* [log4j](https://logging.apache.org/log4j/)
* [slf4j-api](http://www.slf4j.org/)
## [goose](https://github.com/GravityLabs/goose)
* written in Scala which apparently can be used in Android projects
* Last release in Nov 2015
* License: Apache License 2.0https://code.briarproject.org/briar/briar/-/issues/289Improve UX for notifications2020-11-21T19:26:17ZakwizgranImprove UX for notificationshttps://code.briarproject.org/briar/briar/-/issues/351Overlapping speech bubbles in conversation screen2020-11-21T19:03:30ZakwizgranOverlapping speech bubbles in conversation screenTesters occasionally saw overlapping speech bubbles in the conversation screen.Testers occasionally saw overlapping speech bubbles in the conversation screen.https://code.briarproject.org/briar/briar/-/issues/445iOS and iPhone2023-03-28T12:51:28ZSimó Albert i BeltraniOS and iPhoneUnfortunatelly I know iPhone users :(
Could they run Briar?Unfortunatelly I know iPhone users :(
Could they run Briar?https://code.briarproject.org/briar/briar/-/issues/288QR RuntimeException: Fail to connect to camera service2020-11-21T19:26:39ZTorsten GroteQR RuntimeException: Fail to connect to camera serviceToday, for the first time, I am unable to add contacts with two devices. One device just doesn't want to focus on the QR code. I am still trying to get it to work (because I need to test something else) and then managed to crash Briar:
...Today, for the first time, I am unable to add contacts with two devices. One device just doesn't want to focus on the QR code. I am still trying to get it to work (because I need to test something else) and then managed to crash Briar:
```
04-06 17:48:10.855 W/ShowQrCodeFragment: Error opening camera
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.native_setup(Native Method)
at android.hardware.Camera.<init>(Camera.java:323)
at android.hardware.Camera.open(Camera.java:298)
at org.briarproject.android.keyagreement.ShowQrCodeFragment$3.doInBackground(ShowQrCodeFragment.java:212)
at org.briarproject.android.keyagreement.ShowQrCodeFragment$3.doInBackground(ShowQrCodeFragment.java:196)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
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)
```
IMHO this error should be handled more graceful.https://code.briarproject.org/briar/briar/-/issues/349Explain Panic Button settings better2020-11-21T19:04:18ZakwizgranExplain Panic Button settings betterSome users discovered the Panic Button settings and were confused by them.Some users discovered the Panic Button settings and were confused by them.https://code.briarproject.org/briar/briar/-/issues/439Compare TRVE Data with BSP2020-11-21T18:55:43Zstr4dCompare TRVE Data with BSPFrom the research team we are talking with about performance / battery life measurements (for #115). It sounds like it has a lot of overlap with BSP; it would be interesting to know in what ways the approaches differ.
http://www.cl.cam....From the research team we are talking with about performance / battery life measurements (for #115). It sounds like it has a lot of overlap with BSP; it would be interesting to know in what ways the approaches differ.
http://www.cl.cam.ac.uk/research/dtg/trve/
https://github.com/trvedatahttps://code.briarproject.org/briar/briar/-/issues/348Testers did not understand QR code workflow2022-11-18T17:24:07ZakwizgranTesters did not understand QR code workflowThree testers tried to scan each other's QR codes: A scanned B, B scanned C, and C scanned A. The testers were not able to complete the task.
In an earlier round of testing we encountered a similar problem with invitation codes.
The f...Three testers tried to scan each other's QR codes: A scanned B, B scanned C, and C scanned A. The testers were not able to complete the task.
In an earlier round of testing we encountered a similar problem with invitation codes.
The first step we should take is to detect that the device we've connected to isn't the same device we scanned, and show a helpful error message. But we may need to consider a more fundamental change: is it possible to design the key agreement protocol to accommodate what the users are trying to achieve?https://code.briarproject.org/briar/briar/-/issues/438Extract general means for loading body content in background2020-11-21T18:56:48Zstr4dExtract general means for loading body content in backgroundPer [this comment](https://code.briarproject.org/akwizgran/briar/merge_requests/209#note_6830):
> Fetching content is also needed for blogs and I think also forums. Maybe there's a way to somehow generalize this either further so it can...Per [this comment](https://code.briarproject.org/akwizgran/briar/merge_requests/209#note_6830):
> Fetching content is also needed for blogs and I think also forums. Maybe there's a way to somehow generalize this either further so it can be reused by other clients as well.https://code.briarproject.org/briar/briar/-/issues/282Pairing request when adding contact via QR code2020-11-21T19:27:22ZakwizgranPairing request when adding contact via QR codeWhen adding contacts between the Moto G 4G (Android 5.1) and the Galaxy Nexus (Android 4.4.4 CM), the Moto G shows a pairing request notification (sometimes twice, presumably once for the incoming connection and once for the outgoing con...When adding contacts between the Moto G 4G (Android 5.1) and the Galaxy Nexus (Android 4.4.4 CM), the Moto G shows a pairing request notification (sometimes twice, presumably once for the incoming connection and once for the outgoing connection). Even if the pairing request is accepted, the connection fails.
This is an intermittent failure - after backing out of the add contact process and retrying, the connection sometimes succeeds.https://code.briarproject.org/briar/briar/-/issues/435Generalise ForumSharingIntegrationTest2020-11-21T18:58:09Zstr4dGeneralise ForumSharingIntegrationTestAs part of #403, `ForumSharingManager` was generalised into a `SharingManager` that is subclassed per-shareable.
`ForumSharingIntegrationTest` should be similarly generalised to ensure that the common behaviour is consistent across all ...As part of #403, `ForumSharingManager` was generalised into a `SharingManager` that is subclassed per-shareable.
`ForumSharingIntegrationTest` should be similarly generalised to ensure that the common behaviour is consistent across all subclasses (and to reduce duplication).https://code.briarproject.org/briar/briar/-/issues/265Fuzzing tests for message validators2021-02-10T15:10:26ZakwizgranFuzzing tests for message validatorsUse fuzzing to ensure the message validators reject invalid messages without crashing. Record any messages that trigger crashes.
We can either look for a suitable fuzzing library or write our own fuzzer, starting from valid messages and...Use fuzzing to ensure the message validators reject invalid messages without crashing. Record any messages that trigger crashes.
We can either look for a suitable fuzzing library or write our own fuzzer, starting from valid messages and applying random mutations (delete/replace/repeat).https://code.briarproject.org/briar/briar/-/issues/338Assign parents to activities2020-11-21T19:06:06ZakwizgranAssign parents to activitiesMost activities are currently using NavDrawerActivity as their parent. Pick an appropriate parent for each activity and update the manifest.Most activities are currently using NavDrawerActivity as their parent. Pick an appropriate parent for each activity and update the manifest.https://code.briarproject.org/briar/briar/-/issues/330Offer option to Mute Forum instead of leaving it2020-11-21T19:06:56ZTorsten GroteOffer option to Mute Forum instead of leaving itIf a user leaves a forum they've shared with others, we should warn the user that the people she has invited may be disconnected (or cut off) from the forum and do not receive any more messages from others. So we should ask the user to c...If a user leaves a forum they've shared with others, we should warn the user that the people she has invited may be disconnected (or cut off) from the forum and do not receive any more messages from others. So we should ask the user to confirm. (Done in !164)
We could also offer them the option of "muting" the forum (i.e. turning off notifications) but remaining subscribed for the benefit of the people they've invited.https://code.briarproject.org/briar/briar/-/issues/261Add Other Means to Add Contacts2021-09-27T21:10:34ZxavierAdd Other Means to Add Contactsi like the p2p and secure concept of briar.
even if simpler on android, resource consumption is much more controlled than tox and so usable.
local contact addition by bluetooth only is a bit too strict.
i see the discussion about QR co...i like the p2p and secure concept of briar.
even if simpler on android, resource consumption is much more controlled than tox and so usable.
local contact addition by bluetooth only is a bit too strict.
i see the discussion about QR codes with direct exchange #117
but it seems it is also a direct contact
contact recommendation can be nice
but i would like a standard contact invitation by email, phone call, or sms.
i know this is less secure but for people we do not see regularly this is better than keeping with normal app.
maybe sharing an invitation key with any kind of prefered app is the easier thinghttps://code.briarproject.org/briar/briar/-/issues/324Send user feedback through Briar2020-11-21T19:07:22Zstr4dSend user feedback through Briar#124 covered user feedback sent over Tor. This issue covers the extension of sending it through Briar.
The app should post feedback to a feedback channel.
Messages in the feedback channel should be synced with contacts, but no further....#124 covered user feedback sent over Tor. This issue covers the extension of sending it through Briar.
The app should post feedback 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.https://code.briarproject.org/briar/briar/-/issues/323Send encrypted crash reports through Briar2020-11-21T19:07:47Zstr4dSend encrypted crash reports through Briar#123 covered encrypted crash reports sent over Tor. This issue covers the extension of sending them through Briar.
The app should import the encrypted report, post it to a crash report channel and delete it from the disk.
Messages in t...#123 covered encrypted crash reports sent over Tor. This issue covers the extension of sending them through Briar.
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 delivering crash reports for their contacts.https://code.briarproject.org/briar/briar/-/issues/240Murmur interferes with Bluetooth discovery2020-11-21T19:32:55ZakwizgranMurmur interferes with Bluetooth discoveryWhen Murmur (https://github.com/casific/murmur) has previously run on a device, it continues to run in the background and starts a background service on boot.
The background service seems to interfere with Briar's ability to discover ot...When Murmur (https://github.com/casific/murmur) has previously run on a device, it continues to run in the background and starts a background service on boot.
The background service seems to interfere with Briar's ability to discover other devices via Bluetooth. Log output shows that devices are sometimes discovered, but more slowly, causing Briar to time out before a connection is made.
Stopping Murmur's background service or uninstalling Murmur solves the problem.https://code.briarproject.org/briar/briar/-/issues/232Improve unread message highlight2020-11-21T19:33:28ZErnir ErlingssonImprove unread message highlightRight now unread messages are displayed in red-ish chat bubbles in the private chat window with a contact. These are a bit hard to read and there was a suggestion of changing their color.
What about highlighting the chat bubbles for a ...Right now unread messages are displayed in red-ish chat bubbles in the private chat window with a contact. These are a bit hard to read and there was a suggestion of changing their color.
What about highlighting the chat bubbles for a few seconds and then letting the color fade away? We should also use the same color somewhere in a contact list element where we display unread messages.
Are there maybe some other suggestions how we do this ?https://code.briarproject.org/briar/briar/-/issues/319Distinguish between transient, recoverable and permanent DB exceptions2020-11-21T19:08:20ZakwizgranDistinguish between transient, recoverable and permanent DB exceptionsThis would be useful for message delivery hooks and any other operation that should be retried if the failure is temporary, or cancelled if it's permanent.This would be useful for message delivery hooks and any other operation that should be retried if the failure is temporary, or cancelled if it's permanent.https://code.briarproject.org/briar/briar/-/issues/219Use builder pattern for factories with optional/default arguments2020-11-21T19:35:25ZakwizgranUse builder pattern for factories with optional/default argumentshttps://code.briarproject.org/briar/briar/-/issues/1155NPE when selecting text with Xposed Framework2020-11-19T04:35:57ZakwizgranNPE when selecting text with Xposed FrameworkA user reported this crash when selecting text. The stacktrace doesn't show any Briar classes but shows some Xposed Framework classes, so it may not be our bug.
```
java.lang.NullPointerException: Attempt to invoke virtual method 'void ...A user reported this crash when selecting text. The stacktrace doesn't show any Briar classes but shows some Xposed Framework classes, so it may not be our bug.
```
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Editor$SelectionStartHandleView.showAtLocation(int)' on a null
object reference
at android.widget.Editor$SelectionModifierCursorController.onTouchEvent(Editor.java:5084)
at android.widget.Editor.onTouchEvent(Editor.java:1389)
at android.widget.TextView.onTouchEvent(TextView.java:8305)
at android.view.View.dispatchTouchEvent(View.java:9377)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2410)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1744)
at android.app.Activity.dispatchTouchEvent(Activity.java:2805)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2371)
at android.view.View.dispatchPointerEvent(View.java:9597)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4234)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4100)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3646)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3699)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3665)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3791)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3673)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3848)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3646)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3699)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3665)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3673)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3646)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5926)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5900)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5861)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6029)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:331)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
at android.os.MessageQueue.next(<Xposed>)
at android.os.Looper.loop(Looper.java:218)
at android.app.ActivityThread.main(ActivityThread.java:5526)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
```
* Android version: 6.0.1
* Phone model: Sony D6633
* Briar version: 0.16.16 (459538e)
* User feedback: "Copied long base64 encoded string into forum send box, tried selecting text again, Briar crashed."https://code.briarproject.org/briar/briar/-/issues/1158FLAG_SECURE not applying to settings dialogs (when Chromecasted)2020-11-19T04:35:35ZakwizgranFLAG_SECURE not applying to settings dialogs (when Chromecasted)User feedback: "Setting popups are still seen in mirrored screen, the rest is black but the popup where you can select 1 of the 2 options is still mirrored."User feedback: "Setting popups are still seen in mirrored screen, the rest is black but the popup where you can select 1 of the 2 options is still mirrored."https://code.briarproject.org/briar/briar/-/issues/1161Don't trigger notifications every two seconds when syncing a lot of messages2020-11-19T04:34:55ZakwizgranDon't trigger notifications every two seconds when syncing a lot of messagesWhile syncing a forum with 100+ posts, which takes a few minutes, a notification is triggered every two seconds. This gets annoying pretty quickly. We should consider using a longer interval and/or some kind of backoff.While syncing a forum with 100+ posts, which takes a few minutes, a notification is triggered every two seconds. This gets annoying pretty quickly. We should consider using a longer interval and/or some kind of backoff.https://code.briarproject.org/briar/briar/-/issues/1165Optionally send message by pressing enter2020-11-19T04:34:07ZakwizgranOptionally send message by pressing enterA user asked for a setting to send messages when the enter key is pressed, which is possible in other apps.A user asked for a setting to send messages when the enter key is pressed, which is possible in other apps.https://code.briarproject.org/briar/briar/-/issues/1166Stickers2021-10-13T14:08:14ZakwizgranStickersUser feedback: "I am so used to stickers in Telegram that I really missed them here."User feedback: "I am so used to stickers in Telegram that I really missed them here."https://code.briarproject.org/briar/briar/-/issues/1167Non-ASCII characters in RSS post are rendered wrongly2020-11-18T22:36:02ZakwizgranNon-ASCII characters in RSS post are rendered wrongly![device-2018-02-19-174413](/uploads/4b42bb8e8a3dda0c0c5ddc6df24b20eb/device-2018-02-19-174413.png)![device-2018-02-19-174413](/uploads/4b42bb8e8a3dda0c0c5ddc6df24b20eb/device-2018-02-19-174413.png)https://code.briarproject.org/briar/briar/-/issues/1170IllegalArgumentException when reloading activity2022-06-13T15:08:29ZakwizgranIllegalArgumentException when reloading activity* Android version: 7.0
* Phone model: Motorola Moto G (4) (athene)
* Briar version: 0.16.17 (347c2f2)
* User feedback: "Received new message notification. Tried to view it, and got white screen, instead of prior message list loading, als...* Android version: 7.0
* Phone model: Motorola Moto G (4) (athene)
* Briar version: 0.16.17 (347c2f2)
* User feedback: "Received new message notification. Tried to view it, and got white screen, instead of prior message list loading, also at bottom of screen was a place to type message... I've noticed it takes longer and longer for old message list to load."
Stacktrace:
```
java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token{c80ad01 ActivityRecord{dc4d2e8 u0 org.briarproject.briar.beta/org.briarproject.briar.android.contact.ConversationActivity t2562 f}}
at android.os.Parcel.readException(Parcel.java:1687)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.reportSizeConfigurations(ActivityManagerNative.java:6982)
at android.app.ActivityThread.reportSizeConfigurations(ActivityThread.java:2789)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2728)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4524)
at android.app.ActivityThread.-wrap19(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1479)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
```
Log extract:
```
02-09 16:24:47.098 I/Adreno (30469): DequeueBuffer: dequeueBuffer failed
02-09 16:24:47.099 I/Adreno (30469): DequeueBuffer: dequeueBuffer failed
02-09 16:24:47.099 I/Adreno (30469): DequeueBuffer: dequeueBuffer failed
02-09 16:24:47.099 I/Adreno (30469): DequeueBuffer: dequeueBuffer failed
02-09 16:24:47.103 W/OpenGLRenderer(30469): swapBuffers encountered EGL error 12301 on 0xa48967c0, halting rendering...
02-09 16:24:47.116 I/BriarRecyclerView(30469): Adding Handler Callback
02-09 16:24:47.116 I/ConversationActivity(30469): Loading contact took 0 ms
02-09 16:24:47.121 I/BriarRecyclerView(30469): Removing Handler Callback
02-09 16:24:47.171 I/BriarRecyclerView(30469): Adding Handler Callback
02-09 16:24:47.195 E/ACRA (30469): ACRA caught a IllegalArgumentException for org.briarproject.briar.beta
```
Looks like the activity may have failed to load due to an OpenGL error, and the crash happened when Android tried to relaunch the activity.https://code.briarproject.org/briar/briar/-/issues/1172Briar doesn't use Tor when connected via Bluetooth dial-up networking2020-11-18T22:38:10ZakwizgranBriar doesn't use Tor when connected via Bluetooth dial-up networkingUser feedback: "On my Android device I use dial up network (DUN) via a BlueTooth connection to a phone. With no mobile network and no WiFi, Briar doesn't find the internet connection and doesn't use it for Tor, while all other apps inclu...User feedback: "On my Android device I use dial up network (DUN) via a BlueTooth connection to a phone. With no mobile network and no WiFi, Briar doesn't find the internet connection and doesn't use it for Tor, while all other apps including OrBot do."https://code.briarproject.org/briar/briar/-/issues/212PanicKit Response: Send Message(s)2020-11-21T19:35:45ZTorsten GrotePanicKit Response: Send Message(s)It is possible to not only purge all data (#210), but also to send messages in a panic event to preselected contacts. The message text needs to be specified at setup time.
Bonus points for allowing the user's location to be included in ...It is possible to not only purge all data (#210), but also to send messages in a panic event to preselected contacts. The message text needs to be specified at setup time.
Bonus points for allowing the user's location to be included in the message. Since we might not want to ask for the location permission, it would be nice if the Panic Trigger App could provide that in the trigger intent.https://code.briarproject.org/briar/briar/-/issues/192Failure to open Bluetooth listening socket2020-11-21T19:37:01ZakwizgranFailure to open Bluetooth listening socketGot this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when Bluetooth was enabled to add a contact. The device has been running for several days and making Bluetooth connections. Perhaps some kind of resource leak? Should we be rele...Got this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when Bluetooth was enabled to add a contact. The device has been running for several days and making Bluetooth connections. Perhaps some kind of resource leak? Should we be releasing sockets differently to avoid this?
The Bluetooth adapter is enabled, but the attempt to add a contact fails immediately.
```
12-18 13:22:37.116 25207-26268/org.briarproject W/DroidtoothPlugin: java.io.IOException: No available channels
java.io.IOException: No available channels
at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:1119)
at android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(BluetoothAdapter.java:1067)
at org.briarproject.plugins.droidtooth.InsecureBluetooth.listen(InsecureBluetooth.java:35)
at org.briarproject.plugins.droidtooth.DroidtoothPlugin$2.run(DroidtoothPlugin.java:163)
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)
```https://code.briarproject.org/briar/briar/-/issues/187Implement I2P plugin2021-12-09T00:18:37Zstr4dImplement I2P plugin@akwizgran expressed a keen interest in this happening eventually. The basic idea is to add I2P as a transport, so that contacts can choose to communicate over I2P if they wish. It should be similar to the Tor plugin, and will probably b...@akwizgran expressed a keen interest in this happening eventually. The basic idea is to add I2P as a transport, so that contacts can choose to communicate over I2P if they wish. It should be similar to the Tor plugin, and will probably be easier to implement (because I2P has a native Java API).https://code.briarproject.org/briar/briar/-/issues/170Use Argon2 for password-based key derivation2020-11-21T19:40:11ZakwizgranUse Argon2 for password-based key derivationArgon2 won the password hashing competition and has a number of advantages over PBKDF2.
In this case it makes sense to wrap a native implementation even if there's a Java implementation available.Argon2 won the password hashing competition and has a number of advantages over PBKDF2.
In this case it makes sense to wrap a native implementation even if there's a Java implementation available.https://code.briarproject.org/briar/briar/-/issues/14Sony LiveWare pops up when first connecting via Bluetooth2020-11-21T20:34:24ZakwizgranSony LiveWare pops up when first connecting via BluetoothThe LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every t...The LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every time - it may depend on whether the connection is incoming or outgoing, or there may be a cache of known devices that's cleared when the phone is restarted or reset.
![Screenshot_2014-10-06-13-12-40](/uploads/b94df454ee369fd23adb2544d37ae3b7/Screenshot_2014-10-06-13-12-40.png)https://code.briarproject.org/briar/briar/-/issues/83Highlight replies to the user's posts2020-11-21T20:04:46ZakwizgranHighlight replies to the user's postsA user asked for some kind of visual indication when their forum posts had been replied to -- perhaps similar to the indication for new posts.A user asked for some kind of visual indication when their forum posts had been replied to -- perhaps similar to the indication for new posts.https://code.briarproject.org/briar/briar/-/issues/157Re-adding a deleted Contact does not work2021-06-23T11:58:38ZTorsten GroteRe-adding a deleted Contact does not workSteps to Reproduce:
* add each other as contacts
* delete contact on device A
* try to add contact back on device A
* device B will get an error message and not add anything
* device A will have contact from device B back
However, on bo...Steps to Reproduce:
* add each other as contacts
* delete contact on device A
* try to add contact back on device A
* device B will get an error message and not add anything
* device A will have contact from device B back
However, on both devices, the users see each other as offline and can not exchange messages.
This issue is related to issue #2.https://code.briarproject.org/briar/briar/-/issues/81Quote parent when replying to a forum post2020-11-21T20:04:59ZakwizgranQuote parent when replying to a forum postUsers asked for the ability to quote a post when replying to it, as is common in web-based forums.Users asked for the ability to quote a post when replying to it, as is common in web-based forums.https://code.briarproject.org/briar/briar/-/issues/152Merge patches upstream2020-11-21T19:42:04ZakwizgranMerge patches upstreamDetermine which of the patches in the /patches dir should be merged upstream and contact the upstream developers.
Related: #25, #64, #115Determine which of the patches in the /patches dir should be merged upstream and contact the upstream developers.
Related: #25, #64, #115https://code.briarproject.org/briar/briar/-/issues/12Timeout while adding a contact2020-11-21T20:35:27ZakwizgranTimeout while adding a contactSeveral users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases b...Several users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases by congestion at the Bluetooth MAC layer, we may be able to mitigate it by keeping a cache of discovered devices and trying to connect to them before performing discovery. If a group of users are adding each other as contacts, the first discovery by each user should put most of the other users' devices in the cache.
If this problem is caused in some cases by poorly performing Bluetooth drivers or hardware, we may not be able to work around it at the application level.
This could be caused by the limit of eight devices (one master and seven slaves) in a Bluetooth piconet. If so, closing any open Bluetooth connections before attempting a new connection may help.https://code.briarproject.org/briar/briar/-/issues/79Mark certain contacts as trusted2020-11-21T20:05:20ZakwizgranMark certain contacts as trustedA user asked for the ability to mark certain contacts as trusted. Trusted contacts might be treated differently - for example they might be allowed to invite people to a private group shared with them, or they might be allowed to initiat...A user asked for the ability to mark certain contacts as trusted. Trusted contacts might be treated differently - for example they might be allowed to invite people to a private group shared with them, or they might be allowed to initiate introductions.https://code.briarproject.org/briar/briar/-/issues/137API documentation for Bramble library2020-11-21T19:42:23ZakwizgranAPI documentation for Bramble libraryakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/9Support copy and paste2022-10-27T21:53:59ZakwizgranSupport copy and pastehttps://code.briarproject.org/briar/briar/-/issues/74Descriptions for forums2020-11-21T20:05:47ZakwizgranDescriptions for forumsA user asked to be able to add descriptions to forums.
This would be a longer piece of text attached to the forum by its creator that potential subscribers could read when deciding whether to subscribe.A user asked to be able to add descriptions to forums.
This would be a longer piece of text attached to the forum by its creator that potential subscribers could read when deciding whether to subscribe.https://code.briarproject.org/briar/briar/-/issues/110Account backups2023-03-04T16:19:41ZakwizgranAccount backupsMake it possible for the user to backup their Briar account to another device. The backup should use much stronger PBKDF parameters as it's likely to be stored insecurely and doesn't need to be decrypted quickly.Make it possible for the user to backup their Briar account to another device. The backup should use much stronger PBKDF parameters as it's likely to be stored insecurely and doesn't need to be decrypted quickly.https://code.briarproject.org/briar/briar/-/issues/2Allow existing contacts to be re-added2023-03-15T13:04:32ZakwizgranAllow existing contacts to be re-addedRe-adding an existing contact currently throws a ContactExistsException. But re-adding a contact may be necessary if transport properties get out of sync, making it impossible to connect via BTP. If we re-add a contact we should keep any...Re-adding an existing contact currently throws a ContactExistsException. But re-adding a contact may be necessary if transport properties get out of sync, making it impossible to connect via BTP. If we re-add a contact we should keep any existing private messages and group subscriptions.
If one contact uses the same identity as last time and the other doesn't, they'll disagree about whether it's a re-add, so we can't re-derive the same transport keys. Can we reuse the contact ID (if any), import the new transport properties, delete the old transport keys (if any), and create new transport keys?https://code.briarproject.org/briar/briar/-/issues/71Explain why adding a contact failed2021-01-13T13:25:21ZakwizgranExplain why adding a contact failedA user asked to be shown the reason for a connection failing when adding a contact (e.g. timeout, Bluetooth disabled, wrong invitation code).
We can't distinguish a timeout from a wrong invitation code (entering the wrong code will caus...A user asked to be shown the reason for a connection failing when adding a contact (e.g. timeout, Bluetooth disabled, wrong invitation code).
We can't distinguish a timeout from a wrong invitation code (entering the wrong code will cause a timeout), but we may be able to distinguish some other reasons, e.g. Bluetooth discoverability timing out.https://code.briarproject.org/briar/briar/-/issues/109Sign releases with a PGP key2020-10-05T10:22:06ZakwizgranSign releases with a PGP keyhttps://code.briarproject.org/briar/briar/-/issues/70Sign out automatically2020-11-21T20:07:17ZakwizgranSign out automaticallyA user requested the option to sign out automatically after a configurable amount of time.
This was also suggested by a UX reviewer.A user requested the option to sign out automatically after a configurable amount of time.
This was also suggested by a UX reviewer.https://code.briarproject.org/briar/briar/-/issues/69"Minimise" inactive forum threads2020-11-21T20:07:46Zakwizgran"Minimise" inactive forum threadsFeedback from a user: "It would be nice to be able to minimise less active threads to reduce clutter."
~~We don't currently display forum messages in threads, but we should bear this in mind.~~Feedback from a user: "It would be nice to be able to minimise less active threads to reduce clutter."
~~We don't currently display forum messages in threads, but we should bear this in mind.~~https://code.briarproject.org/briar/briar/-/issues/104Confirm signing out2020-11-21T19:44:27ZakwizgranConfirm signing outSome of the UX reviewers asked for a confirmation dialog when signing out. Some users might find this annoying -- we should do A/B testing before committing to this.Some of the UX reviewers asked for a confirmation dialog when signing out. Some users might find this annoying -- we should do A/B testing before committing to this.https://code.briarproject.org/briar/briar/-/issues/66Tor plugin reports NOROUTE but network is available2020-11-21T20:08:10ZakwizgranTor plugin reports NOROUTE but network is availableA user submitted this debugging log. Mobile data is shown as available, enabled and connected, but Tor can't connect to the network.
```
Device type:
HTC One_M8 (Htc)
Android version:
4.4.4 (19)
Architecture:
armeabi-v7a, armeabi
Sys...A user submitted this debugging log. Mobile data is shown as available, enabled and connected, but Tor can't connect to the network.
```
Device type:
HTC One_M8 (Htc)
Android version:
4.4.4 (19)
Architecture:
armeabi-v7a, armeabi
System memory:
1827 MiB total, 505 MiB free, 96 MiB threshold
Virtual machine memory:
12 MiB allocated, 1 MiB free, 192 MiB maximum
Internal storage:
2641 MiB total, 380 MiB free
External storage:
25432 MiB total, 9201 MiB free
Mobile data:
Available, enabled, connected
Wi-Fi:
Not available, not enabled, not connected
Address: 0.0.0.0
Bluetooth:
Available, enabled, connectable, not discoverable
Address: XX:XX:XX:XX:XX:XX
Tor plugin:
Enabled, not running
Address: xxxxxxxxxxxxxxxx.onion
LAN plugin:
Enabled, not running
Bluetooth plugin:
Enabled, running
Address: XX:XX:XX:XX:XX:XX
Debugging log:
04-28 19:52:40.351 I/PollerImpl( 3821): Polling DroidtoothPlugin
04-28 19:52:40.561 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:40.561 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:40.561 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 152; recommendation warn)
04-28 19:52:41.651 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:41.651 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:41.651 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 153; recommendation warn)
04-28 19:52:42.691 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:42.691 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:42.691 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 154; recommendation warn)
04-28 19:52:43.671 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:43.671 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:43.671 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 155; recommendation warn)
04-28 19:52:44.721 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:44.721 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:44.721 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 156; recommendation warn)
04-28 19:52:45.631 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:52:45.631 I/TorPlugin( 3821): OR connection FAILED
04-28 19:52:45.631 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 157; recommendation warn)
04-28 19:53:01.891 I/DroidtoothPlugin( 3821): Scan mode: Connectable
04-28 19:53:06.861 I/AddContactActivity( 3821): Loading setting took 0 ms
04-28 19:53:06.881 W/ResourceType( 3821): No package identifier when getting name for resource number 0x00000001
04-28 19:53:06.881 I/InputMethodManager( 3821): [startInputInner] EditorInfo { packageName=org.briarproject, inputType=0x2, imeOptions=0x4006, privateImeOptions=null }, windowGainingFocus=android.view.ViewRootImpl$W@41eb05a8, mServedView=org.briarproject.android.invitation.CodeEntryView$1{41eaabd0 VFED..CL .F....ID 168,0-623,150 #1}
04-28 19:53:07.971 I/ContactListActivity( 3821): Full load took 1 ms
04-28 19:53:11.641 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:11.641 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:11.641 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 158; recommendation warn)
04-28 19:53:12.651 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:12.651 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:12.651 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 159; recommendation warn)
04-28 19:53:12.751 I/SettingsActivity( 3821): Loading settings took 2 ms
04-28 19:53:13.591 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:13.591 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:13.591 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 160; recommendation warn)
04-28 19:53:13.811 I/System ( 3821): exec(logcat -d -v time *:I @ org.briarproject.android.TestingActivity.getStatusMap:433)
04-28 19:53:14.581 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:14.581 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:14.581 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 161; recommendation warn)
04-28 19:53:15.671 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:15.671 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:15.671 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 162; recommendation warn)
04-28 19:53:15.711 I/DatabaseCleanerImpl( 3821): Checking free space
04-28 19:53:15.711 I/DatabaseComponentImpl( 3821): 9753812992 bytes free space
04-28 19:53:16.681 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:16.681 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:16.681 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 163; recommendation warn)
04-28 19:53:31.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:31.611 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.111 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.111 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.151 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.151 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.201 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.201 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.251 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.251 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.301 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.301 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.361 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.361 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.411 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.411 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.461 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.461 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.511 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.511 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.561 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.561 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.611 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.661 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.661 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.711 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.711 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.761 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.771 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.811 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.821 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.871 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.871 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.931 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.931 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:32.971 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:32.971 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.011 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.011 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.071 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.071 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.121 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.121 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.171 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.171 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.221 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.221 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.271 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.271 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.331 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.331 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.371 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.371 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.421 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.431 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:33.481 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:33.481 I/PhoneWindow( 3821): <VOLUME> Handle volume key by audio manager in PhoneWindow.java, keyCode = 24
04-28 19:53:35.471 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.511 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.561 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.611 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.661 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.711 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.761 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.811 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.861 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.911 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:35.971 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.021 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.071 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.121 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.171 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.221 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.271 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.321 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.371 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.431 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.491 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.531 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:36.581 W/KeyCharacterMap( 3821): Load KCM of non-default device may incur unexpected result
04-28 19:53:42.621 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:42.621 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:42.621 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 164; recommendation warn)
04-28 19:53:43.631 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:43.631 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:43.631 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 165; recommendation warn)
04-28 19:53:44.761 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:44.761 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:44.761 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 166; recommendation warn)
04-28 19:53:45.721 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:45.721 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:45.721 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 167; recommendation warn)
04-28 19:53:46.581 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:46.581 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:46.581 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 168; recommendation warn)
04-28 19:53:47.681 I/TorPlugin( 3821): OR connection LAUNCHED
04-28 19:53:47.681 I/TorPlugin( 3821): OR connection FAILED
04-28 19:53:47.681 I/TorPlugin( 3821): WARN Problem bootstrapping. Stuck at 80%: Connecting to the Tor network. (Network is unreachable; NOROUTE; count 169; recommendation warn)
04-28 19:53:57.711 I/PollerImpl( 3821): Polling AndroidLanTcpPlugin
04-28 19:54:08.151 I/System ( 3821): exec(logcat -d -v time *:I @ org.briarproject.android.TestingActivity.getStatusMap:433)
```https://code.briarproject.org/briar/briar/-/issues/102Describe how messages are delivered2021-01-13T10:59:20ZakwizgranDescribe how messages are deliveredCleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/65Two-factor authentication2020-11-21T20:09:51ZakwizgranTwo-factor authenticationAdd optional two-factor authentication to the Android app via NFC -- to log in, the user must tap a particular NFC tag as well as entering their password. Data from the NFC tag is incorporated into the PBKDF. This prevents brute force pa...Add optional two-factor authentication to the Android app via NFC -- to log in, the user must tap a particular NFC tag as well as entering their password. Data from the NFC tag is incorporated into the PBKDF. This prevents brute force password cracking if the Android device is captured but the NFC tag is not.
NFC tags may be readable at long distances, so this won't prevent password cracking by an attacker who can read the NFC tag in advance.
This is weaker than 2FA protocols based on public keys, such as U2F, but those require a trusted server that can deny access to the account if the signature doesn't match.https://code.briarproject.org/briar/briar/-/issues/98Show how many messages/posts are waiting to be sent2020-11-21T19:47:59ZakwizgranShow how many messages/posts are waiting to be sentThis might involve creating some kind of outbox on the dashboard that contains messages and posts that are waiting to be sent, with a badge similar to the badges for newly received messages and posts.This might involve creating some kind of outbox on the dashboard that contains messages and posts that are waiting to be sent, with a badge similar to the badges for newly received messages and posts.https://code.briarproject.org/briar/briar/-/issues/64Upgrade jSSC to 2.8.02022-04-18T09:40:48ZakwizgranUpgrade jSSC to 2.8.0jSSC, the serial port library used by the dialup modem plugin, is at version 2.8.0 but we're still using version 0.9. Upgrade to the current version, amending or discarding our thread safety patch as appropriate.jSSC, the serial port library used by the dialup modem plugin, is at version 2.8.0 but we're still using version 0.9. Upgrade to the current version, amending or discarding our thread safety patch as appropriate.https://code.briarproject.org/briar/briar/-/issues/95Notifications for new versions2020-11-21T19:50:53ZakwizgranNotifications for new versionsUsers asked to be notified about new versions of the app.Users asked to be notified about new versions of the app.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/63Prevent tag length from being used for active probing2021-01-25T17:55:11ZakwizgranPrevent tag length from being used for active probingOn some transports it may be possible to use the fixed tag length to probe a transport endpoint to determine whether it's likely to be accepting BTP traffic: the endpoint will always accept (tag length - 1) random bytes but close the tra...On some transports it may be possible to use the fixed tag length to probe a transport endpoint to determine whether it's likely to be accepting BTP traffic: the endpoint will always accept (tag length - 1) random bytes but close the transport connection after (tag length) bytes.
It may be possible to address this by picking a random number for each incoming transport connection and reading that many bytes before deciding whether to accept the connection. The number could be anywhere between (tag length) and (tag length + stream header length). The number could be drawn from a distribution supplied by the TAP profile, allowing the distribution to be tailored to the transport.https://code.briarproject.org/briar/briar/-/issues/94Help text2020-11-21T19:54:07ZakwizgranHelp textUsers asked for more help text throughout the app.
We may be able to do this in a fairly unobtrusive way by showing help bubbles on the otherwise blank backgrounds of activities the first time they're shown.
We should be careful not to...Users asked for more help text throughout the app.
We may be able to do this in a fairly unobtrusive way by showing help bubbles on the otherwise blank backgrounds of activities the first time they're shown.
We should be careful not to give users too much reading to do the first time they use the app.https://code.briarproject.org/briar/briar/-/issues/61Ratcheting2020-11-21T20:16:11ZakwizgranRatchetingBriar's forward secrecy is based on periodic key rotation rather than ratcheting because we need to ensure forward secrecy even if no communication occurs for a long period, or communication only occurs in one direction. However, we coul...Briar's forward secrecy is based on periodic key rotation rather than ratcheting because we need to ensure forward secrecy even if no communication occurs for a long period, or communication only occurs in one direction. However, we could also use ratcheting opportunistically, so that the exposure of a transport key doesn't expose all future transport keys (the reverse of forward secrecy).
It would make sense to have a separate ratchet for each transport so that the ratchets for low-latency transports can advance quickly, but the ratchet keys for each transport could be synced over any transport.https://code.briarproject.org/briar/briar/-/issues/93Conversation backgrounds2020-11-21T19:57:08ZakwizgranConversation backgroundsUsers asked for the ability to change the background colour of a conversation or set a background image.Users asked for the ability to change the background colour of a conversation or set a background image.https://code.briarproject.org/briar/briar/-/issues/60Close idle transport connections2020-11-21T20:16:40ZakwizgranClose idle transport connectionsFor some transports keeping a connection open is expensive (especially if we're sending padding) -- but for other transports creating a new connection may be expensive. Idle connections should be closed after a transport-dependent amount...For some transports keeping a connection open is expensive (especially if we're sending padding) -- but for other transports creating a new connection may be expensive. Idle connections should be closed after a transport-dependent amount of time.https://code.briarproject.org/briar/briar/-/issues/58Use double MAC technique for checking MACs2020-11-21T20:17:47ZakwizgranUse double MAC technique for checking MACsComparing a received MAC to the expected MAC in constant time is tricky in high-level languages because the compiler, runtime and JIT may optimise the comparison code so that it no longer runs in constant time. The adversary may be able ...Comparing a received MAC to the expected MAC in constant time is tricky in high-level languages because the compiler, runtime and JIT may optimise the comparison code so that it no longer runs in constant time. The adversary may be able to use the timing of the comparison to discover how many bytes of the received MAC match the expected MAC.
To avoid revealing this information, the recipient can calculate another MAC over each MAC and compare the outer MACs. The adversary can use the timing of the comparison to learn the position at which the outer MACs differ, but that doesn't reveal the position at which the inner MACs differ.
https://www.isecpartners.com/blog/2011/february/double-hmac-verification.aspx
The MAC is being used as a PRF. It seems like this technique could also be used for validating signatures -- the validator can use any MAC key (not necessarily shared with the signer) to calculate MACs over the received and expected signatures, then compare the MACs.https://code.briarproject.org/briar/briar/-/issues/89Tag, categorise or prioritise forums2020-11-21T20:00:34ZakwizgranTag, categorise or prioritise forumsUsers asked for the ability to manage forums by tagging them, putting them into folders or prioritising them. Prioritising could mean flagging a forum as important in order to affect its sort order, or changing it to an archived state wh...Users asked for the ability to manage forums by tagging them, putting them into folders or prioritising them. Prioritising could mean flagging a forum as important in order to affect its sort order, or changing it to an archived state where new posts would no longer trigger notifications or visual indications.https://code.briarproject.org/briar/briar/-/issues/88Show recent activity on the dashboard2020-11-21T20:00:56ZakwizgranShow recent activity on the dashboardA user asked for a summary of recent activity to be shown on the dashboard - for example, this person replied to your post in this forum, or this person shared this forum with you.A user asked for a summary of recent activity to be shown on the dashboard - for example, this person replied to your post in this forum, or this person shared this forum with you.https://code.briarproject.org/briar/briar/-/issues/56Handle fatal errors2020-11-21T20:18:34ZakwizgranHandle fatal errorsWe should decide how to handle various errors that prevent the app from starting or continuing. Right now these are handled in ad hoc ways such as throwing an Error, which crashes the app. Situations we need to handle include:
* Can't o...We should decide how to handle various errors that prevent the app from starting or continuing. Right now these are handled in ad hoc ways such as throwing an Error, which crashes the app. Situations we need to handle include:
* Can't open the database
* Services fail to start
* Out of disk space
* Clock moves backwards
* Database state is inconsistent (DbStateException)
This is a UX issue as much as a programming issue. How do we communicate these errors to the user and what do we advise them to do?https://code.briarproject.org/briar/briar/-/issues/86Explain the app's privacy properties2021-02-17T19:06:53ZakwizgranExplain the app's privacy propertiesA user asked for a screen to be shown when the app was first run, explaining what privacy properties the app could and couldn't provide.A user asked for a screen to be shown when the app was first run, explaining what privacy properties the app could and couldn't provide.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/54Support simplex transports where the recipient makes the connection2020-11-21T20:19:22ZakwizgranSupport simplex transports where the recipient makes the connectionFor the simplex transports we've considered so far, such as USB sticks and radio broadcasts, the sender of a stream is the one who creates the underlying transport connection. But it's possible for a transport to operate the other way ro...For the simplex transports we've considered so far, such as USB sticks and radio broadcasts, the sender of a stream is the one who creates the underlying transport connection. But it's possible for a transport to operate the other way round: the recipient opens a connection and receives a stream. Downloading from a web server would be an example.
The plugin architecture should support such transports. This can be deferred until we actually want to implement such a transport.https://code.briarproject.org/briar/briar/-/issues/85Edit or delete forum and blog posts2021-10-26T10:35:44ZakwizgranEdit or delete forum and blog postsUsers asked for the ability to edit or delete forum posts after posting them.
The group discussed the censorship implications and the inability to force every subscriber to edit or delete their copy of the post. It was suggested that a ...Users asked for the ability to edit or delete forum posts after posting them.
The group discussed the censorship implications and the inability to force every subscriber to edit or delete their copy of the post. It was suggested that a request to edit or delete an earlier post could be posted, which would mark the post as edited or deleted in the UI while providing an option to show the original version.https://code.briarproject.org/briar/briar/-/issues/51Can we trigger the TRIM command on Android?2020-11-16T11:04:26ZakwizgranCan we trigger the TRIM command on Android?Android 4.3 uses the TRIM command to erase blocks of flash that are unused by the filesystem. This could improve our chances of securely deleting data on Android.
MountService issues the TRIM command once every 24 hours if the device is...Android 4.3 uses the TRIM command to erase blocks of flash that are unused by the filesystem. This could improve our chances of securely deleting data on Android.
MountService issues the TRIM command once every 24 hours if the device is idle and charged, as determined by `IdleMaintenanceService`:
https://android.googlesource.com/platform/frameworks/base/+/master/services/java/com/android/server/IdleMaintenanceService.java
Investigate whether we can broadcast any of the intents issued by `IdleMaintenanceService` to cause a TRIM on demand, e.g. in a panic button situation after deleting the database.
We can broadcast an intent with the action `"com.android.server.IdleMaintenanceService.action.FORCE_IDLE_MAINTENANCE"`, but it's not clear whether that has any effect - nothing shows up in the logs on a Galaxy Nexus with Android 4.3 when the intent is broadcast.
When `IdleMaintenanceService` decides (due to receiving the above intent or otherwise) that it's time to run idle maintenance tasks, it broadcasts an intent with the action `"android.intent.action.ACTION_IDLE_MAINTENANCE_START"`. According to the `Intent` javadoc, that intent "can only be sent by the system":
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/Intent.java
Alternatively, we might be able to invoke `android.app.ActivityManagerNative.getDefault().performIdleMaintenance()` via reflection. The method in question was added in September 2013:
https://android.googlesource.com/platform/frameworks/base/+blame/master/core/java/android/app/ActivityManagerNative.java
It's included in the `kitkat-release` branch but not the `jb-release` branch, so we'd need a phone with 4.4 to test this.https://code.briarproject.org/briar/briar/-/issues/84Notifications for new messages while signed out2020-11-21T20:02:31ZakwizgranNotifications for new messages while signed outA user asked for notifications to be shown when messages or forums posts are received while the user is signed out.
We can't do this with the current architecture, but this ticket exists to document the demand for the feature.A user asked for notifications to be shown when messages or forums posts are received while the user is signed out.
We can't do this with the current architecture, but this ticket exists to document the demand for the feature.https://code.briarproject.org/briar/briar/-/issues/50Test Briar on Android devices outside the Google ecosystem2020-11-21T20:22:13ZakwizgranTest Briar on Android devices outside the Google ecosystemVarious manufacturers produce Android devices outside the Google ecosystem, including Blackberry, Xiaomi, Amazon and Nokia. Test Briar on as many of these platforms as possible to ensure it's compatible with whatever modifications they'v...Various manufacturers produce Android devices outside the Google ecosystem, including Blackberry, Xiaomi, Amazon and Nokia. Test Briar on as many of these platforms as possible to ensure it's compatible with whatever modifications they've made.https://code.briarproject.org/briar/briar/-/issues/49Test the effect of clearing background processes2020-11-21T20:22:30ZakwizgranTest the effect of clearing background processesSamsung's task manager has a 'Clear memory' feature that clears inactive and background processes. Test what effect this has when Briar is running. Does it kill the Briar process and/or the Tor process? Does it call BriarService's `onLow...Samsung's task manager has a 'Clear memory' feature that clears inactive and background processes. Test what effect this has when Briar is running. Does it kill the Briar process and/or the Tor process? Does it call BriarService's `onLowMemory()` callback?https://code.briarproject.org/briar/briar/-/issues/48Test the effect of restricting background data2020-11-21T20:22:58ZakwizgranTest the effect of restricting background dataAndroid has settings to prevent individual apps or all apps from using background data. "Restricting background data usage for individual apps can sometimes be a useful way to reduce your overall data usage. However, this is a drastic me...Android has settings to prevent individual apps or all apps from using background data. "Restricting background data usage for individual apps can sometimes be a useful way to reduce your overall data usage. However, this is a drastic measure that may also affect the app's performance or cause it to malfunction."
https://support.google.com/nexus/answer/2819524
Test how these settings affect Briar.https://code.briarproject.org/briar/briar/-/issues/45Reduce mobile data consumption2021-12-13T14:17:30ZakwizgranReduce mobile data consumptionBriar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introd...Briar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introduction points. Can we reduce the amount of bandwidth it uses?
~~Ricochet has a nice solution to this: each time we (re)connect to Tor, try to connect to our peers, and while we remain connected, expect them to connect to us rather than vice versa.~~
~~https://github.com/ricochet-im/ricochet/issues/68~~
~~There may be a race condition, however, if our hidden service doesn't become reachable until after we've polled our contacts' services. Can we poll our own hidden service to check its reachability?~~
~~Another possible culprit is the LAN plugin, which will bind to an interface with a non-local address if no local address is available. This is meant to enable the plugin to work on internal networks that use non-local addresses, such as UCL -- but it may also lead to observable connections across the WAN, so perhaps we should change it.~~https://code.briarproject.org/briar/briar/-/issues/44Reduce battery consumption2022-11-02T18:28:35ZakwizgranReduce battery consumptionSeveral users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the...Several users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the biggest single factor here.https://code.briarproject.org/briar/briar/-/issues/43Private replies to forum posts2020-11-21T20:25:34ZakwizgranPrivate replies to forum posts
User feedback: "It would be good to be able to click someones name from a forum post and be able to private message them. At least there should be an option for a poster to choose if they want to be able to be contacted or not....maybe...
User feedback: "It would be good to be able to click someones name from a forum post and be able to private message them. At least there should be an option for a poster to choose if they want to be able to be contacted or not....maybe tick a box when posting."
It would only be possible to reply to posts from contacts - would that restriction be confusing?
How should the context of the reply be shown? There's a risk of confusing the users about who can see which parts of the conversation.https://code.briarproject.org/briar/briar/-/issues/42Show new messages/forum posts in navigation drawer2023-03-15T12:38:14ZakwizgranShow new messages/forum posts in navigation drawerFeedback from a user: "It would be good to have a place/notification for all new messages when you first go on the app, instead of separately clicking on contacts or forums and searching for messages."
We should show the number of unrea...Feedback from a user: "It would be good to have a place/notification for all new messages when you first go on the app, instead of separately clicking on contacts or forums and searching for messages."
We should show the number of unread private messages next to the Contacts button on the dashboard, and likewise for forum posts. Bonus points for putting the numbers in little red circles (long ago requested by another user).
Another user requested a timeline of recent activity on the dashboard - for example, this person replied to your post on this forum, or this person shared this forum with you.
**Update:** We have no dashboard anymore, but might want to show this in the navigation drawer (#431).https://code.briarproject.org/briar/briar/-/issues/39Wi-Fi Direct plugin2022-01-21T14:28:52ZakwizgranWi-Fi Direct pluginSome devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that...Some devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that must be communicated to the other device out of band. The other device connects as a client in the usual way. The access point doesn't share the WFD device's internet connection, if any.
This could be useful when devices are in wifi range of each other but there's no wifi network; the SSID and password will have to be synced across some other transport (e.g. Bluetooth). When adding contacts via QR codes, the SSID and password can be included in the QR code.
Get the `WifiP2pManager` system service, call `initialize()`, then call `createGroup()` to create an access point. Call `requestGroupInfo()` to get a `WifiP2pGroup`, then call `getNetworkName()` and `getPassphrase()` and to get the transport properties.
After connecting to the access point, how does the client know the access point's IP address? `WifiP2pGroup.getOwner()` returns a `WifiP2pDevice`, which contains a MAC address but not an IP address.
It seems from this example code that `WifiP2pInfo.groupOwnerAddress.toString()` can be passed as the hostname to `Socket.connect()`:
[http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java](https://web.archive.org/web/20140310040212/http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java)
Presumably we can put that string in the transport properties with the SSID and password.
We may be able to advertise the access point's current SSID and password (in encrypted and obfuscated form) via WFD service discovery:
* Alice creates a legacy mode AP via `WifiP2pManager.createGroup()`
* The AP has a random SSID and password, which Bob doesn't know
* Alice packs the SSID and password into a `WifiP2pServiceInfo`
* Alice advertises the service via `WifiP2pManager.addLocalService()`
* Bob discovers the service via `WifiP2pManager.addServiceRequest()`
* Bob unpacks the SSID and password and connects to the AP as a legacy
client
However, the Thali developers have run into performance and stability problems with WFD service discovery, so this may not be a viable approach.
https://code.briarproject.org/briar/briar/-/issues/36Break up CryptoComponent interface2020-11-21T20:28:14ZakwizgranBreak up CryptoComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/35Break up DatabaseComponent interface2020-11-21T20:28:33ZakwizgranBreak up DatabaseComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/31Use built-in error correction for modem plugin?2022-04-18T09:39:27ZakwizgranUse built-in error correction for modem plugin?
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) co...
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) could be removed, reducing the size of the codebase and making BTP connections harder to identify: they would simply be SLIP-framed random data. (SLIP-framed UDP packets full of random data would be another easily implemented option, if that would be less likely to stand out.)
AT commands for enabling error correction (on which modems?):
* AT\N2: Require error correction, report NO CARRIER if the other end doesn't support it.
* AT&Q5: Try to negotiate an error corrected link.https://code.briarproject.org/briar/briar/-/issues/26Contact details screen2023-06-16T18:29:14ZakwizgranContact details screen* Indication of whether the contact is connected (and via which transports)
* Indication of whether the contact was added directly or introduced
* Indication of whether the contact is using a mailbox
* Indication of whether what features...* Indication of whether the contact is connected (and via which transports)
* Indication of whether the contact was added directly or introduced
* Indication of whether the contact is using a mailbox
* Indication of whether what features are supported by the contact (e.g forums, blogs)
* History of sharing and introduction events
* Button for introducing to another contact
* Button for deleting contacthttps://code.briarproject.org/briar/briar/-/issues/1175Delete private group messages2020-11-18T22:38:48ZakwizgranDelete private group messagesUser feedback: "Will be good if you make function "delete message" and "delete message for all" into group chat. Its really important."
Related to #68, #85.User feedback: "Will be good if you make function "delete message" and "delete message for all" into group chat. Its really important."
Related to #68, #85.https://code.briarproject.org/briar/briar/-/issues/1179Handshake protocol2020-11-18T22:39:28ZakwizgranHandshake protocolTo enable account backups (#110) and simplify the introduction protocol (#474) it would be useful to have a way of bootstrapping from static keys, suitable for storing in a backup or exchanging in an introduction, to forward secret trans...To enable account backups (#110) and simplify the introduction protocol (#474) it would be useful to have a way of bootstrapping from static keys, suitable for storing in a backup or exchanging in an introduction, to forward secret transport keys.https://code.briarproject.org/briar/briar/-/issues/1183Key manager blocks startup by holding DB lock2020-11-18T22:40:15ZakwizgranKey manager blocks startup by holding DB lock`KeyManagerImpl#startService()` uses a read-write transaction to load contacts, store transports, and start key rotation. When there are many contacts this transaction can hold the DB lock for several seconds, preventing the contact list...`KeyManagerImpl#startService()` uses a read-write transaction to load contacts, store transports, and start key rotation. When there are many contacts this transaction can hold the DB lock for several seconds, preventing the contact list from being loaded.
Move the transaction off the critical path, and if possible break it up into smaller transactions.https://code.briarproject.org/briar/briar/-/issues/1187Incognito Keyboard2023-03-09T10:55:41ZTorsten GroteIncognito KeyboardSignal has a feature called Incognito Keyboard which seems to request to disable personalized learning from user input which some proprietary keyboard apps do. This might be a useful feature for us as well. Signal does it like this:
htt...Signal has a feature called Incognito Keyboard which seems to request to disable personalized learning from user input which some proprietary keyboard apps do. This might be a useful feature for us as well. Signal does it like this:
https://github.com/signalapp/Signal-Android/blob/ba849bce2c90287e820a3008e9dc9a1b14de19fc/src/org/thoughtcrime/securesms/components/ComposeText.java#L154-L156
So it seems to be a quick change.https://code.briarproject.org/briar/briar/-/issues/1191Cannot add contact on Android 8.1/LineageOS2019-02-28T17:17:33ZakwizgranCannot add contact on Android 8.1/LineageOS* Android version: 8.1.0
* Briar version: 0.16.19
* Phone model: LeEco LEX720 (ZL1_CN)
* User feedback: "Adding a first contact fails."
The log shows that the camera is receiving preview frames and decoding them quickly, but no QR code ...* Android version: 8.1.0
* Briar version: 0.16.19
* Phone model: LeEco LEX720 (ZL1_CN)
* User feedback: "Adding a first contact fails."
The log shows that the camera is receiving preview frames and decoding them quickly, but no QR code is found. Probably a one-off, but I'm recording this in case it indicates a problem (e.g. selecting the wrong camera or cropping the wrong part of the preview image).https://code.briarproject.org/briar/briar/-/issues/1192Chat resets to top not bottom.2022-05-14T16:34:26ZPratiwirChat resets to top not bottom.In a briar beta chat if I send an emoticon smiley then hit the keyboard symbol to use characters the chat resets to the top and I have to scroll all the way down to the end. It should be positioned at the end after using the keyboard sym...In a briar beta chat if I send an emoticon smiley then hit the keyboard symbol to use characters the chat resets to the top and I have to scroll all the way down to the end. It should be positioned at the end after using the keyboard symbol.https://code.briarproject.org/briar/briar/-/issues/1197Manual section needed for Bluetooth and Wi-fi.2020-11-18T22:43:47ZPratiwirManual section needed for Bluetooth and Wi-fi.I initially loaded Briar on three devices and added each to the other as a contact, as in the manual. I had bluetooth turned on and wi-fi too. The manual says that after scanning the QR code the devices will exchange information and the ...I initially loaded Briar on three devices and added each to the other as a contact, as in the manual. I had bluetooth turned on and wi-fi too. The manual says that after scanning the QR code the devices will exchange information and the contacts will be added. This works fine, but what isn't clear is how the process takes place. "You must meet up with the person you want to add as a contact." This implies that bluetooth or local Wi-fi is being used silently. This assumption creates confusion because I then assumed that in Android one just has to have the services activated and the rest is taken care of, as you might expect for easy use in a crisis.
I now think that for the devices to send local messages one has to host a hotspot over Wi-fi or bluetooth. So this should be clear in the manual, how to set up the Wi-fi links or bluetooth links properly and what the requirement is for adding contacts. Is it local bluetooth turned on, paired devices required or not, Wi-fi transmitters active, or logged onto same network, full internet access? Can both QR codes be sent by secure e-mail and scanned by the camera at remote locations at the same time, what is the time wimdow?
"If the internet's down, Briar can sync via Bluetooth or Wi-Fi, keeping the information flowing in a crisis." This is the only information in the manual and potentially wrong assumptions about it make actual testing and getting it working more difficult and confusing than it needs to be. The manual is quite compact, but needs additional concise information about what is going on.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/1198Briar crashes or restarts on Samsung GT-I90822020-11-18T22:44:40ZakwizgranBriar crashes or restarts on Samsung GT-I9082@Pratiwir reported that Briar repeatedly crashes or restarts when switching between foreground apps on the Samsung GT-I9082.
Unfortunately the logs are too short to show anything that happened before Briar restarted. They just show the ...@Pratiwir reported that Briar repeatedly crashes or restarts when switching between foreground apps on the Samsung GT-I9082.
Unfortunately the logs are too short to show anything that happened before Briar restarted. They just show the later stages of Briar starting up.
Maybe we should change the ACRA config to increase the amount of logcat data attached to the feedback.
* Android version: 4.1.2
* Phone Model: Samsung GT-I9082 (baffinxx)
* Briar version: 0.16.20 (89f50bb)