briar issueshttps://code.briarproject.org/groups/briar/-/issues2017-06-09T19:25:50Zhttps://code.briarproject.org/briar/briar/-/issues/932Panic button sign out response doesn't terminate process2017-06-09T19:25:50ZakwizgranPanic button sign out response doesn't terminate processWhen Briar signs out in response to a panic button intent, relaunching the app brings up the contact list rather than the password screen, with the progress wheel spinning indefinitely.
This happens because the panic button response shu...When Briar signs out in response to a panic button intent, relaunching the app brings up the contact list rather than the password screen, with the progress wheel spinning indefinitely.
This happens because the panic button response shuts down BriarService but doesn't terminate the process.Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar-gtk/-/issues/19Show online status of contacts in contact list2020-07-18T16:31:40ZNicoShow online status of contacts in contact listRelated to https://code.briarproject.org/briar/briar-gtk/issues/20.Related to https://code.briarproject.org/briar/briar-gtk/issues/20.GTK 0.1.0-alpha2NicoNicohttps://code.briarproject.org/briar/python-briar-wrapper/-/issues/19Adding contacts remotely does not check return value, hides errors2021-03-08T13:24:27ZTorsten GroteAdding contacts remotely does not check return value, hides errorsIt looks like, the result of the POST request isn't checked here:
https://code.briarproject.org/briar/python-briar-wrapper/-/blob/b8ac26b21dd5b3580d49a582c7b16cebd6c3dc3e/briar_wrapper/models/contacts.py#L37
I found this when debugging...It looks like, the result of the POST request isn't checked here:
https://code.briarproject.org/briar/python-briar-wrapper/-/blob/b8ac26b21dd5b3580d49a582c7b16cebd6c3dc3e/briar_wrapper/models/contacts.py#L37
I found this when debugging why failed pending contacts don't get re-added. Check how the Android UI handles this:
* https://code.briarproject.org/briar/briar/-/blob/1f246637e25a9e53e7b9ec8961e1ad6bf26a7daf/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java#L123
* https://code.briarproject.org/briar/briar/-/blob/1f246637e25a9e53e7b9ec8961e1ad6bf26a7daf/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java#L124Wrapper 0.0.7NicoNicohttps://code.briarproject.org/briar/website/-/issues/19Create a "Press" page2022-01-14T14:01:27ZCleopatraCreate a "Press" pageOver the years, a lot of articles have been written about Briar. It'll be nice to have a page that shows all this press coverage.
The Press page should also have Briar brand assets, how to get support, videos and contact information. Th...Over the years, a lot of articles have been written about Briar. It'll be nice to have a page that shows all this press coverage.
The Press page should also have Briar brand assets, how to get support, videos and contact information. This should promote more press coverage.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/931Check whether getSystemService() returns null2017-06-09T19:25:50ZakwizgranCheck whether getSystemService() returns nullWe call Context#getSystemService() in various places without checking the return value. Apparently it can return null, so we should check it.We call Context#getSystemService() in various places without checking the return value. Apparently it can return null, so we should check it.https://code.briarproject.org/briar/python-briar-wrapper/-/issues/20Support deleting all messages of a private chat2020-10-11T09:27:45ZNicoSupport deleting all messages of a private chatNeeded for https://code.briarproject.org/briar/briar-gtk/-/issues/11.Needed for https://code.briarproject.org/briar/briar-gtk/-/issues/11.Wrapper 0.0.5NicoNicohttps://code.briarproject.org/briar/website/-/issues/20Write a Code of Conduct2020-11-16T16:31:52ZCleopatraWrite a Code of ConductHaving and enforcing a Code of Conduct is one way to express and codify Briar's core values and signal our intention to make our open source community welcoming, diverse, inclusive, and equitable.
We can use the template at [Contributor...Having and enforcing a Code of Conduct is one way to express and codify Briar's core values and signal our intention to make our open source community welcoming, diverse, inclusive, and equitable.
We can use the template at [Contributor Covenant](https://github.com/ContributorCovenant/contributor_covenant)CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/928Move HTML sanitation to DbThread2017-06-09T19:25:50ZTorsten GroteMove HTML sanitation to DbThreadHTML Sanitation currently causes a StrictMode violation:
```
D/StrictMode: StrictMode policy violation; ~duration=407 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at an...HTML Sanitation currently causes a StrictMode violation:
```
D/StrictMode: StrictMode policy violation; ~duration=407 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1152)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isDirectory(File.java:524)
at java.io.File.getAbsoluteName(File.java:1099)
at java.io.File.toURL(File.java:1085)
at dalvik.system.DexPathList$Element.findResource(DexPathList.java:477)
at dalvik.system.DexPathList.findResource(DexPathList.java:343)
at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:67)
at java.lang.ClassLoader.getResource(ClassLoader.java:403)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:442)
at java.lang.Class.getResourceAsStream(Class.java:1368)
at org.jsoup.nodes.Entities.loadEntities(Entities.java:240)
at org.jsoup.nodes.Entities.<clinit>(Entities.java:225)
at org.jsoup.nodes.Entities.access$000(Entities.java:17)
at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Entities.java:20)
at org.jsoup.nodes.Document$OutputSettings.<init>(Document.java:371)
at org.jsoup.nodes.Document.<init>(Document.java:18)
at org.jsoup.nodes.Document.createShell(Document.java:42)
at org.jsoup.parser.Parser.parseBodyFragment(Parser.java:128)
at org.jsoup.Jsoup.parseBodyFragment(Jsoup.java:148)
at org.jsoup.Jsoup.clean(Jsoup.java:198)
at org.jsoup.Jsoup.clean(Jsoup.java:215)
at org.briarproject.briar.util.HtmlUtils.clean(HtmlUtils.java:15)
```
The `clean()` method should be called right after the blog posts are retrieved from disk to prevent that.Milestone GTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/926ClassCastException when handling splash screen intent2017-06-09T19:25:51ZakwizgranClassCastException when handling splash screen intentSteps to reproduce:
* Sign into Briar normally
* Open a private conversation that includes at least one message
* Send a splash screen intent: `am start -a android.intent.action.MAIN -n org.briarproject.briar/org.briarproject.briar.an...Steps to reproduce:
* Sign into Briar normally
* Open a private conversation that includes at least one message
* Send a splash screen intent: `am start -a android.intent.action.MAIN -n org.briarproject.briar/org.briarproject.briar.android.splash.SplashScreenActivity`
* The contact list is shown
* Sign out of Briar
Stacktrace:
```
03-29 09:19:26.889 3284-3284/org.briarproject.briar E/ACRA: ACRA caught a RuntimeException for org.briarproject.briar
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar/org.briarproject.briar.android.contact.ConversationActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
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)
Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
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)
Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
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)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
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)
Caused by: java.lang.ClassCastException: android.view.ContextThemeWrapper cannot be cast to org.briarproject.briar.android.activity.BaseActivity
at org.thoughtcrime.securesms.components.emoji.EmojiProvider.getInstance(EmojiProvider.java:80)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.setText(EmojiTextView.java:45)
at android.widget.TextView.<init>(TextView.java:1401)
at android.widget.TextView.<init>(TextView.java:671)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.<init>(EmojiTextView.java:38)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.<init>(EmojiTextView.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
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)
```Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/website/-/issues/22Add favicon to website2021-03-04T10:22:57ZCleopatraAdd favicon to websiteIt'll be nice to see the Briar logo on the browser tab. That should help people easily identify a tab with Briar among many other browser tabs.
![briar-ftab](/uploads/45ce750a73466f7f79fe1a1b462cd394/briar-ftab.png)
This should be as e...It'll be nice to see the Briar logo on the browser tab. That should help people easily identify a tab with Briar among many other browser tabs.
![briar-ftab](/uploads/45ce750a73466f7f79fe1a1b462cd394/briar-ftab.png)
This should be as easy as adding the following withing the `head`:
```
<link rel="icon" type="image/x-icon" href="link-to-favicon.ico">
<link rel="icon" type="image/png" href="link-to-favicon.png">
```
While doing this, change the `title` from "Secure messaging, anywhere - Briar" to "Briar - Secure messaging, anywhere".CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/925Touching the Panic app list crashes if no market is installed.2017-06-09T19:25:51ZJulian DehmTouching the Panic app list crashes if no market is installed.If the list of connected panic apps is <= 1 and you press on it Briar will crash if no market is installed:
`org.briarproject.briar E/ACRA: ACRA caught a ActivityNotFoundException for org.briarproject.briar
android.content.ActivityNo...If the list of connected panic apps is <= 1 and you press on it Briar will crash if no market is installed:
`org.briarproject.briar E/ACRA: ACRA caught a ActivityNotFoundException for org.briarproject.briar
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=info.guardianproject.ripple }`Milestone GJulian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/919Tester was confused by hidden composition area in forums and private groups2017-06-09T19:25:51ZakwizgranTester was confused by hidden composition area in forums and private groupsA tester thought she could only reply to messages in a private group but couldn't start new threads, because the composition area was hidden until she pressed reply. Another tester mentioned the same issue with forums in a previous test.A tester thought she could only reply to messages in a private group but couldn't start new threads, because the composition area was hidden until she pressed reply. Another tester mentioned the same issue with forums in a previous test.https://code.briarproject.org/briar/website/-/issues/24Add RSS feed to briarproject.org/news2020-11-19T10:09:13ZbafoobarAdd RSS feed to briarproject.org/newsIt would be nice to be able to receive news from briarproject.org via briar itself using the RSS component. :)
I was not able to find a feed on your website. Could you add one?It would be nice to be able to receive news from briarproject.org via briar itself using the RSS component. :)
I was not able to find a feed on your website. Could you add one?https://code.briarproject.org/briar/briar/-/issues/916Disabled menu items are not greyed out on all devices2017-06-09T19:25:51ZakwizgranDisabled menu items are not greyed out on all devicesDisabled menu items look the same as enabled items on some devices (possibly the Sony Xperia Tipo, but I didn't make a note). We should make sure they're visually distinct.Disabled menu items look the same as enabled items on some devices (possibly the Sony Xperia Tipo, but I didn't make a note). We should make sure they're visually distinct.https://code.briarproject.org/briar/briar/-/issues/915Fix ForumActivityTest2017-06-09T19:25:51ZakwizgranFix ForumActivityTestForumActivityTest#testNestedEntries() has been failing since 17 December.
```
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:55)
at junit.framework.Assert.assertTrue(Assert.java:22)
at junit.framework...ForumActivityTest#testNestedEntries() has been failing since 17 December.
```
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:55)
at junit.framework.Assert.assertTrue(Assert.java:22)
at junit.framework.Assert.assertTrue(Assert.java:31)
at org.briarproject.briar.android.forum.ForumActivityTest.testNestedEntries(ForumActivityTest.java:120)
```Milestone GTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/914Simplify SecureRandom implementation2017-06-09T19:25:51ZakwizgranSimplify SecureRandom implementationOur current SecureRandom implementation involves XORing a Fortuna-based PRNG with the system's default SecureRandom implementation. This is meant to help protect against any weaknesses in the system's PRNG, such as the Android SecureRand...Our current SecureRandom implementation involves XORing a Fortuna-based PRNG with the system's default SecureRandom implementation. This is meant to help protect against any weaknesses in the system's PRNG, such as the Android SecureRandom bug (CVE-2013-7372, https://android-developers.googleblog.com/2013/08/some-securerandom-thoughts.html). However, the construct is quite complex and not properly documented. We should simplify it and document it.Milestone Ghttps://code.briarproject.org/briar/briar-gtk/-/issues/27Refactor code2020-12-31T12:06:36ZNicoRefactor codeSo far, the code has grown organically. We should refactor the code to reduce duplication and improve maintainability.
#### Useful links
* https://refactoring.guruSo far, the code has grown organically. We should refactor the code to reduce duplication and improve maintainability.
#### Useful links
* https://refactoring.guruGTK 0.1.0-beta3NicoNicohttps://code.briarproject.org/briar/briar/-/issues/913Password strength estimator produces poor results2018-05-22T14:34:15ZakwizgranPassword strength estimator produces poor resultsThe estimates produced by the password strength estimator don't correspond to people's expectations.
The estimate is based on a combination of the number of unique characters and the classes those characters are drawn from (lowercase, u...The estimates produced by the password strength estimator don't correspond to people's expectations.
The estimate is based on a combination of the number of unique characters and the classes those characters are drawn from (lowercase, uppercase, digits and other). We should consider either using a simpler formula - for example, just the length of the password - or a proven formula such as zxcvbn (https://github.com/dropbox/zxcvbn).
This was also reported by a user in a recent test.Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar-gtk/-/issues/28Show notifications in notification bar2020-10-02T09:27:42ZNicoShow notifications in notification barSub issue of https://code.briarproject.org/briar/briar-gtk/issues/31.Sub issue of https://code.briarproject.org/briar/briar-gtk/issues/31.GTK 0.1.0-beta2NicoNicohttps://code.briarproject.org/briar/briar/-/issues/912StreamEncrypterImpl should reject invalid padding length2017-06-09T19:25:52ZakwizgranStreamEncrypterImpl should reject invalid padding lengthPassing a negative paddingLength to StreamEncrypterImpl#writeFrame() causes an infinite loop. The arguments should be more strictly validated.Passing a negative paddingLength to StreamEncrypterImpl#writeFrame() causes an infinite loop. The arguments should be more strictly validated.Milestone Gakwizgranakwizgran