briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-04-23T10:44:40Zhttps://code.briarproject.org/briar/briar/-/issues/1177Viewfinder is blank after connection fails2018-04-23T10:44:40ZakwizgranViewfinder is blank after connection failsWhen a connection fails while adding a contact, the viewfinder is shown again but it's blank. This is a regression caused by stopping the camera preview after scanning the QR code.When a connection fails while adding a contact, the viewfinder is shown again but it's blank. This is a regression caused by stopping the camera preview after scanning the QR code.Android 1.0akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1176NPE: ScreenFilterMonitor.getApps()2018-03-08T11:33:15ZTorsten GroteNPE: ScreenFilterMonitor.getApps()When you start Briar on an outdated database, you get the notification about the database being corrupted. When you click this, you currently get this crash on `master`:
```
E/ACRA: ACRA caught a RuntimeException for org.briarproject.br...When you start Briar on an outdated database, you get the notification about the database being corrupted. When you click this, you currently get this crash on `master`:
```
E/ACRA: ACRA caught a RuntimeException for org.briarproject.briar.android.debug
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.StartupFailureActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Collection org.briarproject.briar.api.android.ScreenFilterMonitor.getApps()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Collection org.briarproject.briar.api.android.ScreenFilterMonitor.getApps()' on a null object reference
at org.briarproject.briar.android.activity.BaseActivity.protectToolbar(BaseActivity.java:218)
at org.briarproject.briar.android.activity.BaseActivity.onStart(BaseActivity.java:106)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334)
at android.app.Activity.performStart(Activity.java:7019)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2741)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
```Android Beta 2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1174Crash when opening link from RSS post2018-03-08T11:33:15ZakwizgranCrash when opening link from RSS postI got this crash when opening a link from an RSS post, before the link warning dialog appeared.
* Android version: 4.3
* Phone model: Samsung Galaxy Nexus (yakju)
* Briar version: 0.16.18 (812522a)
Stacktrace:
```
java.lang.ClassCastEx...I got this crash when opening a link from an RSS post, before the link warning dialog appeared.
* Android version: 4.3
* Phone model: Samsung Galaxy Nexus (yakju)
* Briar version: 0.16.18 (812522a)
Stacktrace:
```
java.lang.ClassCastException: android.support.v7.widget.TintContextWrapper cannot be cast to android.support.v7.app.AppCompatActivity
at org.briarproject.briar.android.util.UiUtils$1.onClick(UiUtils.java:125)
at org.briarproject.briar.android.view.ArticleMovementMethod.onTouchEvent(ArticleMovementMethod.java:61)
at android.widget.TextView.onTouchEvent(TextView.java:7609)
at android.view.View.dispatchTouchEvent(View.java:7384)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
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.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
at android.view.View.dispatchPointerEvent(View.java:7564)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:132)
at android.os.Looper.loop(Looper.java:124)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
```Android Beta 2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1173Use first byte of QR code payload to indicate format version2018-02-22T17:11:38ZakwizgranUse first byte of QR code payload to indicate format versionThe QR code payload currently includes the format version as part of a BDF list, which is base64 encoded on the beta branch but not on the master branch. This makes it awkward to detect incompatible versions.
Move the format version to ...The QR code payload currently includes the format version as part of a BDF list, which is base64 encoded on the beta branch but not on the master branch. This makes it awkward to detect incompatible versions.
Move the format version to the first byte of the payload and reserve the byte that's at the start of base64-encoded BDF lists so it's never used as a format version. This will allow us to detect incompatible versions by checking the first byte without having to try different encodings.Android 1.0akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1171Could not connect via wifi to phone running hotspot2018-04-23T10:44:40ZakwizgranCould not connect via wifi to phone running hotspotA user reported that when their phone was running a wifi hotspot, devices connected to the hotspot could connect to each other but not to the phone running the hotspot.
* Android version: 7.1
* Phone model: OnePlus5
* Briar version: 0.16.2A user reported that when their phone was running a wifi hotspot, devices connected to the hotspot could connect to each other but not to the phone running the hotspot.
* Android version: 7.1
* Phone model: OnePlus5
* Briar version: 0.16.2Android Beta 2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1169NPE when opening settings during failed startup2018-03-14T12:42:51ZakwizgranNPE when opening settings during failed startup* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 0.16.17 (347c2f2)
* User feedback: "Infinite init loop after password entry in Contacts, Blogs, ... Entering Settings, Crash Report"
Stacktrace:
```
java.lang.Nul...* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 0.16.17 (347c2f2)
* User feedback: "Infinite init loop after password entry in Contacts, Blogs, ... Entering Settings, Crash Report"
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.briarproject.bramble.api.StringMap.getBoolean(java.lang.String, boolean)' on a null object reference
at org.briarproject.briar.android.settings.SettingsFragment.lambda$onCreatePreferences$0$SettingsFragment(SettingsFragment.java:151)
at org.briarproject.briar.android.settings.SettingsFragment$$Lambda$0.onPreferenceClick(Unknown Source)
at android.support.v7.preference.Preference.performClick(Preference.java:1116)
at android.support.v7.preference.Preference.performClick(Preference.java:1099)
at android.support.v7.preference.Preference$1.onClick(Preference.java:169)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
The user's comment about "infinite init loop" seems to refer to the database failing to open. The log shows `LifecycleManagerImpl` starting services at 06:52, then apparently the call to `DatabaseComponent#open()` still hasn't returned at 08:37 when the user opens the settings screen.
So we seem to have two bugs here:
* Startup failed for some reason
* SettingsFragment didn't wait for startup to complete before trying to access settings
Log extract:
```
02-16 06:52:35.663 I/ACRA (21540): ACRA is enabled for org.briarproject.briar.beta, initializing...
02-16 06:52:35.804 I/BriarApplicationImpl(21540): Created
02-16 06:52:35.904 I/CryptoComponentImpl(21540): Default SecureRandom: AndroidOpenSSL SHA1PRNG
02-16 06:52:35.985 I/CryptoComponentImpl(21540): Installed SecureRandom: LinuxPRNG SHA1PRNG
02-16 06:52:36.013 I/BriarApplicationImpl(21560): Created
02-16 06:52:36.027 I/CryptoComponentImpl(21560): Default SecureRandom: AndroidOpenSSL SHA1PRNG
02-16 06:52:36.049 I/CryptoComponentImpl(21560): Installed SecureRandom: LinuxPRNG SHA1PRNG
02-16 06:52:36.052 I/LifecycleManagerImpl(21540): Registering executor TimeLoggingExecutor
02-16 06:52:36.055 I/LifecycleManagerImpl(21540): Registering executor ThreadPoolExecutor
02-16 06:52:36.055 I/LifecycleManagerImpl(21540): Registering executor DelegatedScheduledExecutorService
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor TimeLoggingExecutor
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor ThreadPoolExecutor
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor DelegatedScheduledExecutorService
02-16 06:52:36.061 I/LifecycleManagerImpl(21540): Registering service KeyManagerImpl
02-16 06:52:36.061 I/LifecycleManagerImpl(21540): Registering executor TimeLoggingExecutor
02-16 06:52:36.064 I/LifecycleManagerImpl(21560): Registering service KeyManagerImpl
02-16 06:52:36.064 I/LifecycleManagerImpl(21540): Registering service ValidationManagerImpl
02-16 06:52:36.064 I/LifecycleManagerImpl(21560): Registering executor TimeLoggingExecutor
02-16 06:52:36.065 I/LifecycleManagerImpl(21560): Registering service ValidationManagerImpl
02-16 06:52:36.065 I/LifecycleManagerImpl(21540): Registering client TransportPropertyManagerImpl
02-16 06:52:36.065 I/LifecycleManagerImpl(21540): Registering service PluginManagerImpl
02-16 06:52:36.069 I/LifecycleManagerImpl(21540): Registering client BlogManagerImpl
02-16 06:52:36.070 I/LifecycleManagerImpl(21540): Registering client FeedManagerImpl
02-16 06:52:36.071 I/LifecycleManagerImpl(21540): Registering client GroupInvitationManagerImpl
02-16 06:52:36.071 I/LifecycleManagerImpl(21540): Registering client MessagingManagerImpl
02-16 06:52:36.072 I/LifecycleManagerImpl(21560): Registering client TransportPropertyManagerImpl
02-16 06:52:36.072 I/LifecycleManagerImpl(21560): Registering service PluginManagerImpl
02-16 06:52:36.073 I/LifecycleManagerImpl(21560): Registering client BlogManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21540): Registering client ForumSharingManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client FeedManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21540): Registering client BlogSharingManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client GroupInvitationManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client MessagingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21560): Registering client ForumSharingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21560): Registering client BlogSharingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21540): Registering client IntroductionManagerImpl
02-16 06:52:36.082 I/LifecycleManagerImpl(21560): Registering client IntroductionManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service AndroidNotificationManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service AndroidNotificationManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service NetworkUsageLogger
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service DozeWatchdogImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service NetworkUsageLogger
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service DozeWatchdogImpl
02-16 06:52:36.925 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 06:52:36.994 I/TextInputLayout(21540): EditText added is not a TextInputEditText. Please switch to using that class instead.
02-16 06:52:37.744 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 06:52:42.510 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 06:52:42.526 I/BriarService(21540): Created
02-16 06:52:42.554 I/LifecycleManagerImpl(21540): Starting services
02-16 06:52:43.037 W/IInputConnectionWrapper(21540): finishComposingText on inactive InputConnection
02-16 06:52:45.991 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 07:14:58.613 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 07:15:04.718 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:34:42.669 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 08:34:54.789 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:34:54.798 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 08:35:54.856 I/BriarRecyclerView(21540): Updating Content...
02-16 08:36:54.916 I/BriarRecyclerView(21540): Updating Content...
02-16 08:37:11.963 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:37:34.413 E/ACRA (21540): ACRA caught a NullPointerException for org.briarproject.briar.beta
```Android Beta 2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1168Show status message while opening and migrating DB2018-03-08T11:33:15ZakwizgranShow status message while opening and migrating DBAndroid Beta 2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1164Bluetooth address and UUID aren't stored until contact connections are enabled2018-02-22T17:11:39ZakwizgranBluetooth address and UUID aren't stored until contact connections are enabledThe fix for #1001 caused a regression: the Bluetooth address and UUID aren't stored in the local transport properties until contact connections are enabled. This causes the following issue:
* Turn off wifi
* Start Briar with a fresh acc...The fix for #1001 caused a regression: the Bluetooth address and UUID aren't stored in the local transport properties until contact connections are enabled. This causes the following issue:
* Turn off wifi
* Start Briar with a fresh account, add a contact via Bluetooth
* Messages can be exchanged with the contact
* Sign out and back in
* Enable Bluetooth contact connections in Briar settings
* Bluetooth plugin can't connect to contact because it doesn't have contact's address or UUID
On the beta branch, which doesn't have the fix for #1001, the Bluetooth plugin connects in the last step.Android 1.0akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1163Check whether our key agreement procotols assume contributory behaviour2018-04-28T13:38:03ZakwizgranCheck whether our key agreement procotols assume contributory behaviourWe're migrating to Curve25519 for key agreement, and RFC 7748 [warns](https://tools.ietf.org/html/rfc7748#section-7) that protocols based on Curve25519 should not assume contributory behaviour:
> Protocol designers using Diffie-Hellman ...We're migrating to Curve25519 for key agreement, and RFC 7748 [warns](https://tools.ietf.org/html/rfc7748#section-7) that protocols based on Curve25519 should not assume contributory behaviour:
> Protocol designers using Diffie-Hellman over the curves defined in this document must not assume "contributory behaviour". Specially, contributory behaviour means that both parties' private keys contribute to the resulting shared key. Since curve25519 and curve448 have cofactors of 8 and 4 (respectively), an input point of small order will eliminate any contribution from the other party's private key. This situation can be detected by checking for the all-zero output, which implementations MAY do, as specified in Section 6. However, a large number of existing implementations do not do this.
The Curve25519 website also has a [warning](https://cr.yp.to/ecdh.html#validate):
> There are some unusual non-Diffie-Hellman elliptic-curve protocols that need to ensure ``contributory'' behavior. In those protocols, you should reject the 32-byte strings that, in little-endian form, represent 0, 1, 325606250916557431795983626356110631294008115727848805560023387167927233504 (which has order 8), 39382357235489614581723060781553021112529911719440698176882885853963445705823 (which also has order 8), 2^255 - 19 - 1, 2^255 - 19, 2^255 - 19 + 1, 2^255 - 19 + 325606250916557431795983626356110631294008115727848805560023387167927233504, 2^255 - 19 + 39382357235489614581723060781553021112529911719440698176882885853963445705823, 2(2^255 - 19) - 1, 2(2^255 - 19), and 2(2^255 - 19) + 1. But these exclusions are unnecessary for Diffie-Hellman.
It's not clear to me whether the special public keys listed in the second quote will produce the all-zero output as described in the first quote. This is something we can confirm, and we can check for the all-zero output in our usage of Curve25519. But for defence in depth we should also check whether our key agreement protocols (BQP, the contact exchange protocol and the introduction protocol) assume contributory behaviour.
One thing we need to clarify is whether hashing both public keys into the shared secret (which we already do) is enough to ensure contributory behaviour.Android 1.0akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1162Syncing a lot of messages causes a flood of GenerateOffer tasks2018-02-01T17:22:44ZakwizgranSyncing a lot of messages causes a flood of GenerateOffer tasksWhen syncing a forum with 100+ posts, every post that's received causes a MessageSharedEvent to be broadcast, which causes every DuplexOutgoingSession to queue a GenerateOffer task on the DatabaseExecutor. These tasks overload the execut...When syncing a forum with 100+ posts, every post that's received causes a MessageSharedEvent to be broadcast, which causes every DuplexOutgoingSession to queue a GenerateOffer task on the DatabaseExecutor. These tasks overload the executor and are still being run long after the last post is received, which hurts performance and wastes resources.
At minimum, DuplexOutgoingSession should check whether it already has a task that's been queued but not started. A more complete solution would involve sharing this logic between sessions with the same contact, and perhaps attaching information about the message's visibility to the event so unaffected sessions can avoid reacting to the event.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1160Allow users to change the language2018-06-14T20:19:16ZJulian DehmAllow users to change the languageUsers should be able to set the language independently of their OS language.Users should be able to set the language independently of their OS language.Android 1.1Julian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/1159Overhaul notifications for Android 82018-03-28T11:39:16ZakwizgranOverhaul notifications for Android 8On Android 8, notification settings for each notification channel are managed through the system settings app. Changes made through Briar's settings screen are ineffective.
* Check that the default behaviour of our notifications (sound,...On Android 8, notification settings for each notification channel are managed through the system settings app. Changes made through Briar's settings screen are ineffective.
* Check that the default behaviour of our notifications (sound, vibration, etc) is consistent across versions
* Don't show Briar's notification settings on Android 8 (maybe link to the system settings instead, if possible?)Android 1.0Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1157Migrate account from beta to 1.02018-06-11T10:13:00ZakwizgranMigrate account from beta to 1.0A user asked for the ability to migrate their account from the beta version to the final release. We're unlikely to implement this as it would involve a lot of work and beta testers have already been warned that it won't be possible.A user asked for the ability to migrate their account from the beta version to the final release. We're unlikely to implement this as it would involve a lot of work and beta testers have already been warned that it won't be possible.https://code.briarproject.org/briar/briar/-/issues/1156ClassNotFoundException in fork of Briar2018-01-31T14:08:41ZakwizgranClassNotFoundException in fork of BriarWe've had a couple of crash reports from a fork of Briar with the package name `org.chagolchana.noconnect.beta`. This isn't our problem, but I'm opening this ticket to document the crashes in case the information becomes relevant.
```
C...We've had a couple of crash reports from a fork of Briar with the package name `org.chagolchana.noconnect.beta`. This isn't our problem, but I'm opening this ticket to document the crashes in case the information becomes relevant.
```
Caused by: java.lang.ClassNotFoundException: org.briarproject.briar.android.view.BriarRecyclerViewBehavior
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:324)
at android.support.design.widget.CoordinatorLayout.parseBehavior(CoordinatorLayout.java:579)
```https://code.briarproject.org/briar/briar/-/issues/1154Notification light not working on some Android versions2018-03-08T15:59:19ZakwizgranNotification light not working on some Android versionsA user asked for the notification light to be supported, which should already be the case. The user was using Briar 0.16.16 on Android 7.1.2, phone model unknown.
I tested the notification light on several Android versions and it works ...A user asked for the notification light to be supported, which should already be the case. The user was using Briar 0.16.16 on Android 7.1.2, phone model unknown.
I tested the notification light on several Android versions and it works as expected up to Android 6.0.1, but it doesn't work on Android 8.1. I don't have an Android 7 device for testing.Android Beta 2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1152Tests for briar-android use stale bramble-android artifact2018-05-11T13:47:26ZakwizgranTests for briar-android use stale bramble-android artifactThe tests for the briar-android module use a cached version of the bramble-android AAR, which may be stale. They should use the AAR created by the bramble-android module during the same build.
On my system the cached AAR is loaded from ...The tests for the briar-android module use a cached version of the bramble-android AAR, which may be stale. They should use the AAR created by the bramble-android module during the same build.
On my system the cached AAR is loaded from `~/.gradle/caches`.
The issue is visible when changing between branches where the Dagger modules exposed by bramble-android have changed. For example, try adding an argument to `AndroidPluginModule#providePluginConfig()`, running the tests, then switching to a branch that doesn't have the change and running the tests again.
Running `gradle clean` doesn't help, perhaps because the cached AAR is outside the build directory.
!666 was an attempt to fix this, but it doesn't seem to have worked.
We've had issues in the past with Briar releases including stale versions of Bramble. Could that have been caused by the same issue?akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1151In the Navigation window print the word "Tor" (or "Tor connection established...2020-08-12T16:25:37ZWikinautIn the Navigation window print the word "Tor" (or "Tor connection established") below the word "Internet"I propose to have "Tor" indicated when a Tor connection is established. This would make it clear for the user what is this (Internet? Tor!) compared to the other non-Tor-connections.I propose to have "Tor" indicated when a Tor connection is established. This would make it clear for the user what is this (Internet? Tor!) compared to the other non-Tor-connections.Android 1.2https://code.briarproject.org/briar/briar/-/issues/1149Confirmation before creating test data2018-04-25T13:44:12ZWikinautConfirmation before creating test dataFor the second time I accidentally clicked the "create test data" -- with all the immediate "negative" consequences.
Please add a conformation question "Are you really sure?" before this action is performed. Even in the beta version.For the second time I accidentally clicked the "create test data" -- with all the immediate "negative" consequences.
Please add a conformation question "Are you really sure?" before this action is performed. Even in the beta version.Julian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/1148LAN plugin picks wrong network interface2018-02-01T17:22:44ZakwizgranLAN plugin picks wrong network interfaceDuring testing, @grote and @str4d were unable to add each other as contacts because @str4d's LAN plugin picked the wrong network interface, so although the devices were connected to the same wifi network they weren't able to connect to e...During testing, @grote and @str4d were unable to add each other as contacts because @str4d's LAN plugin picked the wrong network interface, so although the devices were connected to the same wifi network they weren't able to connect to each other.
One of the addresses was in the 10/8 range, the other was in the 192.168/16 range.Android Beta 2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1146Foreground service icon appears in status bar on Android 8.12021-02-18T17:03:03ZakwizgranForeground service icon appears in status bar on Android 8.1Since roughly Android 4.2, the foreground service icon hasn't been visible in the status bar, but it has become visible again on Android 8.1 with Briar 0.16.16.
The problem may be related to the new notification channels. The channel fo...Since roughly Android 4.2, the foreground service icon hasn't been visible in the status bar, but it has become visible again on Android 8.1 with Briar 0.16.16.
The problem may be related to the new notification channels. The channel for the foreground service icon is enabled by default; disabling it hides the icon.akwizgranakwizgran