briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-02-18T15:59:46Zhttps://code.briarproject.org/briar/briar/-/issues/2168Implement backend for pairing Briar with mailbox2022-02-18T15:59:46ZakwizgranImplement backend for pairing Briar with mailboxThe backend should accept an onion address and a single-use token from the UI and use them to pair with the mailbox. It should return status updates to the UI. If pairing is successful, the onion address and long-term auth token should b...The backend should accept an onion address and a single-use token from the UI and use them to pair with the mailbox. It should return status updates to the UI. If pairing is successful, the onion address and long-term auth token should be stored in the Briar database.
Depends on briar-mailbox#3, briar-mailbox#50, #2169.Mailbox: PairingTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2167Decode QR code for pairing with mailbox2022-02-25T14:52:29ZakwizgranDecode QR code for pairing with mailboxDecode the mailbox's hidden service address and the single-use auth token from the QR code payload.
Depends on briar-mailbox#48.Decode the mailbox's hidden service address and the single-use auth token from the QR code payload.
Depends on briar-mailbox#48.Mailbox: PairingDaniel LublinDaniel Lublin2021-11-15https://code.briarproject.org/briar/briar/-/issues/2166Create a secure random provider for Windows2022-09-19T10:49:02ZNicoCreate a secure random provider for WindowsWhen starting Briar Desktop on Windows, it fails with the following error because so far no SecureRandomProvider for Windows is implemented:
```
C:\Users\Test\.jdks\azul-15.0.4\bin\java.exe "-javaagent:C:\Program Files\JetBrains\Intelli...When starting Briar Desktop on Windows, it fails with the following error because so far no SecureRandomProvider for Windows is implemented:
```
C:\Users\Test\.jdks\azul-15.0.4\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.2\lib\idea_rt.jar=63172:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Test\Documents\briar-desktop\build\classes\java\main;C:\Users\Test\Documents\briar-desktop\build\classes\kotlin\main;C:\Users\Test\Documents\briar-desktop\build\tmp\kapt3\classes\main;C:\Users\Test\Documents\briar-desktop\build\resources\main;C:\Users\Test\Documents\briar-desktop\briar\bramble-java\libs\bluecove-2.1.1-SNAPSHOT-briar.jar;C:\Users\Test\Documents\briar-desktop\briar\bramble-java\libs\bluecove-gpl-2.1.1-SNAPSHOT.jar;C:\Users\Test\Documents\briar-desktop\briar\bramble-java\libs\jssc-0.9-briar.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.5.10\3f4af7aff21c4ec46e3cdd645639d0a63a68d3d0\kotlin-stdlib-jdk8-1.5.10.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.10.0\1127c9cf62f2bb3121a3a2a0a1351d251a602117\jackson-databind-2.10.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.github.ajalt\clikt\2.2.0\a7e7b9b278a6e83cc2d9f2cf0db93dff9a93d8f5\clikt-2.2.0.jar;C:\Users\Test\Documents\briar-desktop\briar\briar-core\build\classes\java\main;C:\Users\Test\Documents\briar-desktop\briar\bramble-java\build\classes\java\main;C:\Users\Test\Documents\briar-desktop\briar\bramble-java\build\resources\main;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.5.10\c49d0703d16c6cb1526cc07b9b46486da1dd8a60\kotlin-stdlib-jdk7-1.5.10.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.5.10\da6a904b132f0402fa4d79169a3c1770598d4702\kotlin-stdlib-1.5.10.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.10.0\e01cfd93b80d6773b3f757c78e756c9755b47b81\jackson-annotations-2.10.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.10.0\4e2c5fa04648ec9772c63e2101c53af6504e624e\jackson-core-2.10.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-icons-extended-desktop\0.4.0\58fb0b18c77a2dde55fa8c749c436d424a220203\material-icons-extended-desktop-0.4.0.jar;C:\Users\Test\Documents\briar-desktop\briar\briar-api\build\classes\java\main;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.rometools\rome\1.15.0\d3614542b857eccc0555d1ee8dfc36d2043d9c1f\rome-1.15.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jdom\jdom2\2.0.6\6f14738ec2e9dd0011e343717fa624a10f8aab64\jdom2-2.0.6.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.squareup.okhttp3\okhttp\3.12.13\528e024f340da35cca5d679b631da85d8db9ed\okhttp-3.12.13.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jsoup\jsoup\1.13.1\f9577f3732bb7caa4fee8aba5053158f4010c118\jsoup-1.13.1.jar;C:\Users\Test\Documents\briar-desktop\briar\bramble-core\build\classes\java\main;C:\Users\Test\Documents\briar-desktop\briar\bramble-core\build\resources\main;C:\Users\Test\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform\4.5.2\741853c07152f6c0fef5194efa6b2dabac22e9c0\jna-platform-4.5.2.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\4.5.2\35d000afbaa4ed425d91873b40f4df9b8236875b\jna-4.5.2.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-common\1.5.10\6b84d926e28493be69daf673e40076f89492ef7\kotlin-stdlib-common-1.5.10.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.desktop\desktop-jvm\0.4.0\58115d964397bd97025cd13a79a055b61194093b\desktop-jvm-0.4.0.jar;C:\Users\Test\Documents\briar-desktop\briar\bramble-api\build\classes\java\main;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.rometools\rome-utils\1.15.0\ab1cb95382bf9a8dec81165d328bcbbf1acfb3ae\rome-utils-1.15.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.16\3a6274f658487d5bfff9af3862beff6da1e7fd52\slf4j-api-1.7.16.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.squareup.okio\okio\1.15.0\bc28b5a964c8f5721eb58ee3f3c47a9bcbf4f4d8\okio-1.15.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.madgag.spongycastle\core\1.58.0.0\e08789f8f1e74f155db8b69c3575b5cb213c156c\core-1.58.0.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.h2database\h2\1.4.192\1106492605db135523d2817881cdf029d9292afa\h2-1.4.192.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.bitlet\weupnp\0.1.4\b99cd791ede89b7c17426e6c51a0f171dc925def\weupnp-0.1.4.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\net.i2p.crypto\eddsa\0.2.0\856a92559c4daf744cb27c93cd8b7eb1f8c4780\eddsa-0.2.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.whispersystems\curve25519-java\0.5.0\787dab46ed8e6f8adf9bbbb945145d503b7f181a\curve25519-java-0.5.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.briarproject\jtorctl\0.3\83622828c5457584d5c1e0a89d893fd3844fd7f5\jtorctl-0.3.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-icons-core-desktop\0.4.0\510ee3df8a1fde982a99a40a09d2f39098b47c72\material-icons-core-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.google.dagger\dagger\2.33\7ac2b51c8cf8e2c1a30fa74b917629c60ae2405d\dagger-2.33.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\3.0.2\25ea2e8b0c338a877313bd4672d3fe056ea78f0d\jsr305-3.0.2.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-desktop\0.4.0\210d13a67c94912e31240eea347b3704e2b6651a\material-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.foundation\foundation-desktop\0.4.0\ab89b6280cadc4866cafe42ec43ab40faccfcc30\foundation-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-desktop\0.4.0\8533de36dc9107fa4e57f377ba147cfc17cba850\ui-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.runtime\runtime-desktop\0.4.0\2452d00191f736d58f2fa50dd1821623adbaefd9\runtime-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\javax.inject\javax.inject\1\6975da39a7040257bd51d21a231b76c915872d38\javax.inject-1.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlinx\kotlinx-coroutines-swing\1.4.3\9da350dc1f729955e20f1f3b45dd14c3c9aa1eeb\kotlinx-coroutines-swing-1.4.3.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-ripple-desktop\0.4.0\e2ccee827f2082402b5111368192fcfb579a97f3\material-ripple-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.animation\animation-core-desktop\0.4.0\d838af1fd2a80d1664ffc073df89463023fb6d4b\animation-core-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-text-desktop\0.4.0\3a8d29230c7565cd98728f2a1bbfc33d97cd12a5\ui-text-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.animation\animation-desktop\0.4.0\af2e490608e458a20c8d51ba602ff6a6e25d7e61\animation-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.runtime\runtime-saveable-desktop\0.4.0\c6c172bc8c57ca718e37858b8d5baf70c9ae5268\runtime-saveable-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-graphics-desktop\0.4.0\428dc38b14978b3fed6a9f1756af36b34baad76e\ui-graphics-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-unit-desktop\0.4.0\41ff9a8c171b9136f06eff80635a2330a6086727\ui-unit-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-geometry-desktop\0.4.0\261a169b4e2816397d8c4e22e63a2d590f99210a\ui-geometry-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlinx\kotlinx-coroutines-core-jvm\1.4.3\1051e11eb789ed1df93412bebe0f06e9d29160e4\kotlinx-coroutines-core-jvm-1.4.3.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.skiko\skiko-jvm\0.3.1\3b01e23f3c72d27d8b85836f0ab81eb32ccb67f5\skiko-jvm-0.3.1.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.foundation\foundation-layout-desktop\0.4.0\dbd71e8c3b90e859b0ca3b7b1e75091033f20960\foundation-layout-desktop-0.4.0.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.skiko\skiko-jvm-runtime-windows-x64\0.3.1\42406736546c8404a1a330a88c5d6b815ddae4e6\skiko-jvm-runtime-windows-x64-0.3.1.jar;C:\Users\Test\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.ui\ui-util-desktop\0.4.0\6de31edde97babd7339e67bb1b82ebff1a805e9c\ui-util-desktop-0.4.0.jar org.briarproject.briar.desktop.MainKt --debug
Exception in thread "main" java.lang.UnsupportedOperationException
at org.briarproject.bramble.system.DesktopSecureRandomModule.provideSecureRandomProvider(DesktopSecureRandomModule.java:22)
at org.briarproject.bramble.system.DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.provideSecureRandomProvider(DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.java:32)
at org.briarproject.bramble.system.DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.get(DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.java:22)
at org.briarproject.bramble.system.DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.get(DesktopSecureRandomModule_ProvideSecureRandomProviderFactory.java:8)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:31)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:21)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:8)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:26)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:9)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:36)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:12)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:40)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:13)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:30)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:10)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:26)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:9)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:35)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:11)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.briar.desktop.DaggerBriarDesktopApp.injectEagerSingletons(DaggerBriarDesktopApp.java:1387)
at org.briarproject.briar.desktop.DaggerBriarDesktopApp.inject(DaggerBriarDesktopApp.java:1279)
at org.briarproject.bramble.BrambleCoreEagerSingletons$Helper.injectEagerSingletons(BrambleCoreEagerSingletons.java:48)
at org.briarproject.briar.desktop.Main$run$1.invoke(Main.kt:64)
at org.briarproject.briar.desktop.Main$run$1.invoke(Main.kt:48)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:3320)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2571)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2567)
at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(SnapshotState.kt:523)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2560)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime(Composer.kt:2515)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:476)
at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:726)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:432)
at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:171)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Process finished with exit code 1
```
Sub-issue of #31.https://code.briarproject.org/briar/briar/-/issues/2165Make use of Tor on Windows2022-09-15T16:14:47ZNicoMake use of Tor on WindowsWe need some mechanism to use the Tor binary on Windows. The relevant class for Linux is [UnixTorPluginFactory](https://code.briarproject.org/briar/briar/-/blob/beta-1.3.8/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/Un...We need some mechanism to use the Tor binary on Windows. The relevant class for Linux is [UnixTorPluginFactory](https://code.briarproject.org/briar/briar/-/blob/beta-1.3.8/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java#L96).
Similar to https://code.briarproject.org/briar/briar/-/merge_requests/1376.
Related to https://code.briarproject.org/briar/briar-desktop/-/issues/31.
Depends on https://code.briarproject.org/briar/tor-reproducer/-/issues/2.https://code.briarproject.org/briar/briar/-/issues/2164Design UI for unpairing the mailbox2022-07-07T11:32:57ZTorsten GroteDesign UI for unpairing the mailboxThe user should be able to remove a mailbox from their briar app. We need a design for that flow. It probably needs a generic entry point and one for when we notice that the connection isn't working anymore.
The ui could be as simple as...The user should be able to remove a mailbox from their briar app. We need a design for that flow. It probably needs a generic entry point and one for when we notice that the connection isn't working anymore.
The ui could be as simple as "Do you want to remove your mailbox? [Yes/No]"Mailbox: UnpairingElio Qoshielio@ura.designElio Qoshielio@ura.designhttps://code.briarproject.org/briar/briar/-/issues/2163Design status UI for mailbox connection2022-04-01T15:56:30ZTorsten GroteDesign status UI for mailbox connectionwould be nice to have a place in the briar app to show the current status of the mailbox connection (like we do for tor).
in case there's a permanent issue with the mailbox, we need to surface this in the UI and alert the user, so if t...would be nice to have a place in the briar app to show the current status of the mailbox connection (like we do for tor).
in case there's a permanent issue with the mailbox, we need to surface this in the UI and alert the user, so if the mailbox is lost, the user can fix it or let us tell all contacts to stop using it.
it *might* be interesting to know which contact supports/has a mailboxMailbox: Status UI for Briar appElio Qoshielio@ura.designElio Qoshielio@ura.designhttps://code.briarproject.org/briar/briar/-/issues/2162Implement UI for pairing Briar with mailbox2022-02-25T14:58:21ZTorsten GroteImplement UI for pairing Briar with mailboxImplement the UI designed in #2161. Depends on #2167.Implement the UI designed in #2161. Depends on #2167.Mailbox: PairingTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2161Design UI for mailbox setup: pairing briar with mailbox app2022-07-07T11:34:17ZTorsten GroteDesign UI for mailbox setup: pairing briar with mailbox appThe Briar app can use *one* mailbox to receive messages when it doesn't have an internet connection. There needs to be some sort of setup flow integrated into the existing app.
Possibly flow:
1. Feature Onboarding
* what is a mailb...The Briar app can use *one* mailbox to receive messages when it doesn't have an internet connection. There needs to be some sort of setup flow integrated into the existing app.
Possibly flow:
1. Feature Onboarding
* what is a mailbox
* how can it help me
* how do I set one up? where to find the mailbox app? link to app
1. Enter single-use setup token shown by mailbox
* could be a QR code
* or some `briar-mailbox://` type of link
1. ~~(optional)~~ Warn when single-use token was used already and prompt user to generate a new one in mailbox
1. Setup may take up to a minute, show waiting/progress indicatorMailbox: PairingElio Qoshielio@ura.designElio Qoshielio@ura.designhttps://code.briarproject.org/briar/briar/-/issues/2160NPE when creating SettingsActivity2021-09-02T12:25:32ZakwizgranNPE when creating SettingsActivity* Android version: 11
* Phone model: Google Pixel 2 (walleye)
* Briar version: 1.3.6 debug (48292d2)
Stacktrace:
```
Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.settings.Set...* Android version: 11
* Phone model: Google Pixel 2 (walleye)
* Briar version: 1.3.6 debug (48292d2)
Stacktrace:
```
Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.settings.SettingsActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void androidx.appcompat.widget.DecorContentParent.setWindowCallback(android.view.Window$Callback)' on a null object reference
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.settings.SettingsActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void androidx.appcompat.widget.DecorContentParent.setWindowCallback(android.view.Window$Callback)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void androidx.appcompat.widget.DecorContentParent.setWindowCallback(android.view.Window$Callback)' on a null object reference
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:900)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:806)
at androidx.appcompat.app.AppCompatDelegateImpl.initWindowDecorActionBar(AppCompatDelegateImpl.java:547)
at androidx.appcompat.app.AppCompatDelegateImpl.getSupportActionBar(AppCompatDelegateImpl.java:534)
at androidx.appcompat.app.AppCompatActivity.getSupportActionBar(AppCompatActivity.java:139)
at org.briarproject.briar.android.settings.SettingsActivity.onCreate(SettingsActivity.java:37)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
... 11 more
```
Edited log:
```
08-16 11:07:39.533 I/BaseActivity: Destroying SettingsActivity
08-16 11:07:39.549 I/BaseActivity: Destroying NavDrawerActivity
08-16 11:08:10.265 I/BaseActivity: Creating SettingsActivity
08-16 11:08:10.271 I/SettingsViewModel: Loading settings took 12 ms
```https://code.briarproject.org/briar/briar/-/issues/2159Power management setup instructions for Tecno phones2022-04-13T10:20:48ZakwizgranPower management setup instructions for Tecno phonesSome Tecno phones have a [padlock button in the recent apps list](https://code.briarproject.org/briar/briar/-/issues/1743#note_49393) that prevents apps from being [killed when the recent apps list is cleared](https://code.briarproject.o...Some Tecno phones have a [padlock button in the recent apps list](https://code.briarproject.org/briar/briar/-/issues/1743#note_49393) that prevents apps from being [killed when the recent apps list is cleared](https://code.briarproject.org/briar/briar/-/issues/992#note_44605). We should find out which phones have this feature and add setup instructions asking the user to lock Briar to the recent apps list.https://code.briarproject.org/briar/briar/-/issues/2158Apps can't be locked to recent apps list in MIUI 12.52022-06-13T13:40:38ZakwizgranApps can't be locked to recent apps list in MIUI 12.5The Redmi Note 7 received an update from MIUI 12.0.1 to 12.5.1, and now the instructions for locking an app to the recent apps list no longer work. In MIUI 12.0, long-pressing an app in the recent apps list showed a set of actions, inclu...The Redmi Note 7 received an update from MIUI 12.0.1 to 12.5.1, and now the instructions for locking an app to the recent apps list no longer work. In MIUI 12.0, long-pressing an app in the recent apps list showed a set of actions, including a lock/unlock action. In MIUI 12.5, long-pressing shows the app info screen instead.
This means we don't have a way of protecting Briar against Xiaomi/Redmi's power management on MIUI 12.5, and the instructions we're showing during account creation can't be followed.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2157Power management instructions for Xiaomi/Redmi are wrong2022-06-13T13:40:52ZakwizgranPower management instructions for Xiaomi/Redmi are wrongThe power management setup instructions for Xiaomi/Redmi devices say "If the padlock is not locked, tap to lock it".
But the button shows the effect of the action (tap to lock) rather than the current state (locked). So if the padlock i...The power management setup instructions for Xiaomi/Redmi devices say "If the padlock is not locked, tap to lock it".
But the button shows the effect of the action (tap to lock) rather than the current state (locked). So if the padlock is **already** locked, the user should tap it.
New instructions:
1. Open the recent apps list (also called the app switcher)
2. If Briar has a small padlock next to its name then you don't need to do anything
3. If there's no padlock, press and hold the image of Briar until the padlock button appears, then tap it
We also need to check whether the instructions for MIUI < 10 need to be updated.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2156Upgrade OkHttp to 3.14.x2023-06-19T14:02:33ZakwizgranUpgrade OkHttp to 3.14.xhttps://square.github.io/okhttp/changelog_3x/#version-3130
OkHttp 3.12.x will receive critical bug fixes until the end of 2021. Newer versions drop support for Android 4, so when we upgrade we'll either need to drop support for Android ...https://square.github.io/okhttp/changelog_3x/#version-3130
OkHttp 3.12.x will receive critical bug fixes until the end of 2021. Newer versions drop support for Android 4, so when we upgrade we'll either need to drop support for Android 4 or restrict features that use HTTP (RSS feeds, mailbox) to Android 5+.
According to Google Play, 0.5% of devices running Briar use Android 4.
Depends on #2221.MailboxTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2155Test whether showing a toast from the app context causes an error/warning on ...2021-08-20T12:38:38ZakwizgranTest whether showing a toast from the app context causes an error/warning on Android 12https://code.briarproject.org/briar/briar/-/issues/2154Reblogged entry appears duplicated in the main blog feed2022-11-23T16:02:58ZIvanaReblogged entry appears duplicated in the main blog feed**Steps to reproduce:**
Write a blog post and publish it.
Reblog it.
**Expected results:**
The reblogged entry is listed on top of the main blog feed, just once
**Actual results:**
The reblogged entry appears on top of the list in t...**Steps to reproduce:**
Write a blog post and publish it.
Reblog it.
**Expected results:**
The reblogged entry is listed on top of the main blog feed, just once
**Actual results:**
The reblogged entry appears on top of the list in the main blog feed, but it is duplicated. See the screenshot. ![device-2021-08-19-115546](/uploads/3e5487cecf1a8d889ca9c68116616360/device-2021-08-19-115546.png)
If then a new blog post is written, or even if the user taps onto a blogpost to go in and read it, and then returns to the main blog feed screen, the problem rights itself, and the duplicate doesn' show any more, see the screenshot
![device-2021-08-19-115754](/uploads/16f306efec8f250513b869093bdcab32/device-2021-08-19-115754.png)
It would seem that as soon as the main blog feed screen gets refreshed, the problem rights itself.https://code.briarproject.org/briar/briar/-/issues/2153Upgrade Tor to 0.3.5.172022-02-25T14:59:07ZakwizgranUpgrade Tor to 0.3.5.17Tor 0.3.5.16 contains a fix for a remotely triggerable denial-of-service vulnerability.
https://gitweb.torproject.org/tor.git/plain/ChangeLogTor 0.3.5.16 contains a fix for a remotely triggerable denial-of-service vulnerability.
https://gitweb.torproject.org/tor.git/plain/ChangeLogAndroid 1.4Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2152RSS icon doesn't appear on older devices2021-08-27T11:39:51ZakwizgranRSS icon doesn't appear on older devicesThe RSS icon doesn't appear next to RSS posts (including reblogged posts) on three API 16-19 test devices. The icon appears as expected on API 30; I haven't tested any of the API levels in between.
![device-2021-08-16-164613](/uploads/6...The RSS icon doesn't appear next to RSS posts (including reblogged posts) on three API 16-19 test devices. The icon appears as expected on API 30; I haven't tested any of the API levels in between.
![device-2021-08-16-164613](/uploads/6df7cfee557f3948a27a79211e45fd67/device-2021-08-16-164613.png)Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/2151Simple UI for Connect via Bluetooth feature2021-08-31T13:11:42ZTorsten GroteSimple UI for Connect via Bluetooth featureThe current UI prototype only uses Toasts to communicate progress to the user.
We should give this a dedicated screen which explains what the feature does and then shows progress information to the user.The current UI prototype only uses Toasts to communicate progress to the user.
We should give this a dedicated screen which explains what the feature does and then shows progress information to the user.Adapt to changes in the Android platformTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2150Briar doesn't detect connectivity change when P2P hotspot is started2021-08-12T15:50:51ZakwizgranBriar doesn't detect connectivity change when P2P hotspot is startedWhen a P2P hotspot is started on the Pixel 2 (Android 11), Briar doesn't detect the connectivity change and thus the wifi plugin doesn't become active unless it's manually turned off and on again.When a P2P hotspot is started on the Pixel 2 (Android 11), Briar doesn't detect the connectivity change and thus the wifi plugin doesn't become active unless it's manually turned off and on again.https://code.briarproject.org/briar/briar/-/issues/2149Wifi plugin is inactive when phone is providing a hotspot on Android 112021-08-27T11:39:37ZakwizgranWifi plugin is inactive when phone is providing a hotspot on Android 11A user reported that on Android 11, when the phone is providing a hotspot configured through the system settings, Briar doesn't detect that a wifi network is available. I can reproduce this on the Pixel 2.A user reported that on Android 11, when the phone is providing a hotspot configured through the system settings, Briar doesn't detect that a wifi network is available. I can reproduce this on the Pixel 2.Android 1.3akwizgranakwizgran