briar issueshttps://code.briarproject.org/groups/briar/-/issues2021-12-07T15:20:36Zhttps://code.briarproject.org/briar/briar/-/issues/2088Sharing Briar offline - Crash when wifi on device is OFF and 'Start sharing' ...2021-12-07T15:20:36ZIvanaSharing Briar offline - Crash when wifi on device is OFF and 'Start sharing' tapped on Briar screenSteps to reproduce:
1. Device: Samsung Mini I9195 (API19) - go to device settings and switch the wi-fi OFF
2. Go to Briar app > settings > Share Briar app offline
3. Tap Start Sharing button
Expected results:
1. As the wifi gets switc...Steps to reproduce:
1. Device: Samsung Mini I9195 (API19) - go to device settings and switch the wi-fi OFF
2. Go to Briar app > settings > Share Briar app offline
3. Tap Start Sharing button
Expected results:
1. As the wifi gets switched ON during this process, the expected would be for the briar app sharing to continue as normal
Actual results:
1. Briar app crashes. (Reproduced 3 times in a row)
Attached screenshot of device settings, movie of user actions on Briar and Android Studio logfile for the device during this process.
![device-2021-06-23-133045](/uploads/03642e88edf23c9f00e13969cc8e08d3/device-2021-06-23-133045.mp4)[crash_samsung_mini_23062021.txt](/uploads/f4e4ca1973fc75867ea1b65b7a533d5a/crash_samsung_mini_23062021.txt)![device-2021-06-23-133011](/uploads/05ff2fdb19bc1d0bcb052c1c4e3fc51b/device-2021-06-23-133011.png)
Crash report sent from the device as well.
Checking what happens in the same scenario for devices:
- Pixel 2 (API30) - user is given a message that the wifi needs to be on and then they are taken to the device settings to enable the wi-fi = OK
- Nokia 3.1 (API29) - as Pixel2 = OK
- Samsung A01 Core (API29) - as Pixel 2 = OK
- HTC One M9 (API24)Android 1.4SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/33Chat doesn't update reliably when selecting different contact2021-12-06T14:25:50ZSebastianChat doesn't update reliably when selecting different contactWhat's broken in particular is that refreshing the conversation history doesn't work completely as expected yet. When selecting a different contact, the history should change, and it does, but not always completely. Resizing the window a...What's broken in particular is that refreshing the conversation history doesn't work completely as expected yet. When selecting a different contact, the history should change, and it does, but not always completely. Resizing the window and scrolling seems to help. We'll need to figure out what's going on there.Desktop 0.1.0https://code.briarproject.org/briar/briar-desktop/-/issues/36Don't rely on having a contact added already2021-12-06T14:25:50ZMikolai GütschowDon't rely on having a contact added alreadyCurrently getting the following exception for an empty contact list:
```
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfB...Currently getting the following exception for an empty contact list:
```
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:459)
at org.briarproject.briar.desktop.paul.views.BriarUIStateManagerKt.BriarUIStateManager(BriarUIStateManager.kt:32)
at org.briarproject.briar.desktop.BriarServiceImpl$login$1$2.invoke(BriarService.kt:103)
at org.briarproject.briar.desktop.BriarServiceImpl$login$1$2.invoke(BriarService.kt:102)
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.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:215)
at org.briarproject.briar.desktop.BriarServiceImpl$login$1.invoke(BriarService.kt:99)
at org.briarproject.briar.desktop.BriarServiceImpl$login$1.invoke(BriarService.kt:82)
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.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:140)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2156)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2399)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2574)
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.recompose$runtime(Composer.kt:2536)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:613)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:763)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:102)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:446)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:415)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:63)
at androidx.compose.ui.platform.DesktopOwners.onFrame(DesktopOwners.desktop.kt:120)
at androidx.compose.desktop.ComposeLayer$1.onRender(ComposeLayer.desktop.kt:122)
at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.kt:296)
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer.update(LinuxOpenGLRedrawer.kt:52)
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer.access$update(LinuxOpenGLRedrawer.kt:14)
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer$Companion$frameDispatcher$1.invokeSuspend(LinuxOpenGLRedrawer.kt:75)
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer$Companion$frameDispatcher$1.invoke(LinuxOpenGLRedrawer.kt)
at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(FrameDispatcher.kt:36)
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:313)
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(Native Method)
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)
```Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/21Startup image broken2021-12-06T14:25:50ZSebastianStartup image brokenLooks like the SVG image we're using doesn't render fine here. Maybe it helps to make the SVG as simple as possible (i.e. avoid "fancy" methods for achieving certain effects). I think Inkscape has a mode to store a SVG in simple mode, wh...Looks like the SVG image we're using doesn't render fine here. Maybe it helps to make the SVG as simple as possible (i.e. avoid "fancy" methods for achieving certain effects). I think Inkscape has a mode to store a SVG in simple mode, which can also help sometimes.Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/2[swing-base] Clock cannot be provided without an @Provides-annotated method2021-12-06T14:25:49ZNico[swing-base] Clock cannot be provided without an @Provides-annotated methodWhile _kapt_ is creating the Dagger Java classes, it fails with this. Happening on branch [swing-base](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/tree/swing-base), where I try to get running @sebkur's Briar Swing c...While _kapt_ is creating the Dagger Java classes, it fails with this. Happening on branch [swing-base](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/tree/swing-base), where I try to get running @sebkur's Briar Swing client in a clean project with briar as a submodule. Here's the corresponding [BriarSwingApp class](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/blob/swing-base/src/main/kotlin/org/briarproject/briar/swing/BriarSwingApp.kt).
```
e: /home/briar/Documents/briar-desktop-legacy/build/tmp/kapt3/stubs/main/org/briarproject/briar/swing/BriarSwingApp.java:14: error: [Dagger/MissingBinding] org.briarproject.bramble.api.system.Clock cannot be provided without an @Provides-annotated method.
public abstract interface BriarSwingApp extends org.briarproject.bramble.BrambleCoreEagerSingletons, org.briarproject.briar.BriarCoreEagerSingletons {
^
org.briarproject.bramble.api.system.Clock is injected at
org.briarproject.bramble.properties.PropertiesModule.getValidator(…, clock)
org.briarproject.bramble.properties.TransportPropertyValidator is injected at
org.briarproject.bramble.properties.PropertiesModule.EagerSingletons.transportPropertyValidator
org.briarproject.bramble.properties.PropertiesModule.EagerSingletons is injected at
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.properties.PropertiesModule.EagerSingletons)
It is also requested at:
org.briarproject.bramble.cleanup.CleanupManagerImpl(…, clock)
org.briarproject.bramble.contact.ContactExchangeManagerImpl(…, clock, …)
org.briarproject.bramble.contact.PendingContactFactoryImpl(…, clock)
org.briarproject.bramble.crypto.ScryptKdf(clock)
org.briarproject.bramble.db.DatabaseModule.provideDatabase(…, clock)
org.briarproject.bramble.identity.IdentityManagerImpl(…, clock)
org.briarproject.bramble.plugin.PollerImpl(…, clock)
org.briarproject.bramble.plugin.tor.UnixTorPluginFactory(…, clock, …)
org.briarproject.bramble.properties.TransportPropertyManagerImpl(…, clock)
org.briarproject.bramble.rendezvous.RendezvousPollerImpl(…, clock)
and 24 others
The following other entry points also depend on it:
org.briarproject.briar.swing.BriarSwingApp.getUI()
org.briarproject.briar.swing.BriarSwingApp.getSecureRandom()
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.cleanup.CleanupModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.contact.ContactModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.crypto.CryptoExecutorModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.db.DatabaseExecutorModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.identity.IdentityModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.lifecycle.LifecycleModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.plugin.PluginModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.rendezvous.RendezvousModule.EagerSingletons) [org.briarproject.briar.swing.BriarSwingApp]
and 15 others
```Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/1[get-briar-running] Clock cannot be provided without an @Provides-annotated m...2021-12-06T14:25:48ZNico[get-briar-running] Clock cannot be provided without an @Provides-annotated methodWhile _kapt_ is creating the Dagger Java classes, it fails with this. Happening on branch [get-briar-running](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/tree/get-briar-running), where I try to get the basics of Bri...While _kapt_ is creating the Dagger Java classes, it fails with this. Happening on branch [get-briar-running](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/tree/get-briar-running), where I try to get the basics of Briar in Kotlin Compose running. Here's the corresponding [BriarSwingApp class](https://code.briarproject.org/briar-staging/briar-desktop-clean/-/blob/get-briar-running/src/main/kotlin/org/briarproject/briar/compose/BriarSwingApp.kt).
```
/home/briar/Documents/briar-desktop-legacy/build/tmp/kapt3/stubs/main/org/briarproject/briar/compose/BriarSwingApp.java:8: error: [Dagger/MissingBinding] org.briarproject.bramble.api.system.Clock cannot be provided without an @Provides-annotated method.
public abstract interface BriarSwingApp extends org.briarproject.bramble.BrambleCoreEagerSingletons, org.briarproject.briar.BriarCoreEagerSingletons {
^
org.briarproject.bramble.api.system.Clock is injected at
org.briarproject.bramble.properties.PropertiesModule.getValidator(…, clock)
org.briarproject.bramble.properties.TransportPropertyValidator is injected at
org.briarproject.bramble.properties.PropertiesModule.EagerSingletons.transportPropertyValidator
org.briarproject.bramble.properties.PropertiesModule.EagerSingletons is injected at
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.properties.PropertiesModule.EagerSingletons)
It is also requested at:
org.briarproject.bramble.cleanup.CleanupManagerImpl(…, clock)
org.briarproject.bramble.contact.ContactExchangeManagerImpl(…, clock, …)
org.briarproject.bramble.contact.PendingContactFactoryImpl(…, clock)
org.briarproject.bramble.crypto.ScryptKdf(clock)
org.briarproject.bramble.db.DatabaseModule.provideDatabase(…, clock)
org.briarproject.bramble.identity.IdentityManagerImpl(…, clock)
org.briarproject.bramble.plugin.PollerImpl(…, clock)
org.briarproject.bramble.plugin.tor.UnixTorPluginFactory(…, clock, …)
org.briarproject.bramble.properties.TransportPropertyManagerImpl(…, clock)
org.briarproject.bramble.rendezvous.RendezvousPollerImpl(…, clock)
and 24 others
The following other entry points also depend on it:
org.briarproject.briar.compose.BriarSwingApp.getUI()
org.briarproject.briar.compose.BriarSwingApp.getSecureRandom()
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.cleanup.CleanupModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.contact.ContactModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.crypto.CryptoExecutorModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.db.DatabaseExecutorModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.identity.IdentityModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.lifecycle.LifecycleModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.plugin.PluginModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
org.briarproject.bramble.BrambleCoreEagerSingletons.inject(org.briarproject.bramble.rendezvous.RendezvousModule.EagerSingletons) [org.briarproject.briar.compose.BriarSwingApp]
and 15 others/home/briar/Documents/briar-desktop-legacy/build/tmp/kapt3/stubs/main/org/briarproject/briar/compose/BriarSwingApp.java:8: error: [Dagger/MissingBinding] org.briarproject.bramble.api.FeatureFlags cannot be provided without an @Provides-annotated method.
```Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/119[jar] SecurityException: Invalid signature file digest for Manifest main attr...2021-12-06T14:25:09ZNico[jar] SecurityException: Invalid signature file digest for Manifest main attributesWhen executing the .jar file (with the correct Java version, i.e., 15+), the following error appears. This comes from signatures of daughter .jar files we're shipping, if I understand it correctly, and can be solved by simply stripping t...When executing the .jar file (with the correct Java version, i.e., 15+), the following error appears. This comes from signatures of daughter .jar files we're shipping, if I understand it correctly, and can be solved by simply stripping those signatures. I already have a commit for this, MR incoming...
I don't think it's a problem to strip the signatures, as we already verify the dependencies integrity with gradle-witness. Once we publish "real" .jar files, we should sign them somehow, though.
```
➜ /tmp cd jdk-17.0.1
➜ jdk-17.0.1 cd bin
➜ bin ./java -jar /home/briar/Documents/briar-desktop/build/compose/jars/Briar-linux-x64-0.0.1.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at java.base/sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:340)
at java.base/sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:282)
at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:277)
at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:234)
at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:762)
at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1033)
at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:72)
at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:883)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:848)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:780)
```Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar/-/issues/2141Private group crash after re-adding contact2021-10-26T10:41:07ZGhost UserPrivate group crash after re-adding contactHello, recently I was testing private groups in Briar and I encountered a bug.
Both accounts were just created and here are the steps to reproduce the bug:
1. Person A and Person B add each other to contacts.
2. Person A created the grou...Hello, recently I was testing private groups in Briar and I encountered a bug.
Both accounts were just created and here are the steps to reproduce the bug:
1. Person A and Person B add each other to contacts.
2. Person A created the group.
3. Person B joins the group.
4. Person A and Person B remove each other from contacts.
5. Person A and Person B add each other to contacts again.
6. Person A clicks on "share" button in the group.
7. Person A device crashes.
I also sent Briar Crash Report (with description: "issue #2141") with following informations attached:
- Basic information
- Stacktrace
- Build configuration
- App log
I didn't want to include all device informations but these may be useful:
- AndroidApi: 29
- AndroidVersion: 10
- Product: lineage_tissot (LineageOS 17.1 27.07.2021)
If any additional informations are needed then let me know.
EDIT:
I noticed that for some reason Person A still sees that Person B is in the group even after Person B left which in my opinion is some problem with synchronization because Person B had no contacts in the group at the time of leaving.
EDIT 2:
I removed unecessary step because Person B doesn't have to leave the group to reproduce the crash.https://code.briarproject.org/briar/briar/-/issues/2209Unable to delete my own blogs2021-10-26T10:35:55ZJerry WhiteUnable to delete my own blogsI'm unable to delete any blogs i create. The option appears from the menu but is greyed out and unavailable.
I can successfully delete RSS feeds and other people's blogs but not my own. This means if i make a mistake, it's permanent and ...I'm unable to delete any blogs i create. The option appears from the menu but is greyed out and unavailable.
I can successfully delete RSS feeds and other people's blogs but not my own. This means if i make a mistake, it's permanent and the only option is to create a new Briar account.https://code.briarproject.org/briar/briar/-/issues/1970Two compose buttons in blog feed2021-09-02T12:27:51ZakwizgranTwo compose buttons in blog feed![device-2021-03-16-145013](/uploads/d05d9fb8ce4bc618a5833929a8bd4d50/device-2021-03-16-145013.png)
Steps to reproduce:
* You need to have at least one blog post in the combined feed - write one if necessary
* Open the combined feed an...![device-2021-03-16-145013](/uploads/d05d9fb8ce4bc618a5833929a8bd4d50/device-2021-03-16-145013.png)
Steps to reproduce:
* You need to have at least one blog post in the combined feed - write one if necessary
* Open the combined feed and tap on the body of a blog post
* The post is shown on its own
* Hamburger menu > Contacts
* Hamburger menu > Blogs
* The combined blog feed is shown
* Back button
* Expected: The contact list should be shown
* Actual: The combined blog feed is still shown, with two compose buttons
The bug exists on master and isn't fixed by !1342. (I rebased on !1342 master for testing, as it predates !1377, which I suspect is related to this bug).Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/2144Graphics size when exporting and importing messages inconsistent + arrow dire...2021-09-02T12:26:36ZIvanaGraphics size when exporting and importing messages inconsistent + arrow direction incorrect for importing dataSteps to reproduce:
- In a conversation with a contact who is offline, go to Menu > connections > transfer data
- tap send data, choose file for export and turn the device in landscape orientation - pay attention to graphics depicting t...Steps to reproduce:
- In a conversation with a contact who is offline, go to Menu > connections > transfer data
- tap send data, choose file for export and turn the device in landscape orientation - pay attention to graphics depicting the ata export
- then navigate back and tap on receive data > choose a file to import and pay attention to the graphi size
Two issues:
- the size of the graphic in the two cases is different
- the green arrow for data importing should be pointing towards the smartphone and nt towards the USB drive
See attached
![device-2021-08-06-115603](/uploads/adecc255f657bc82dca4eecf962e7f7e/device-2021-08-06-115603.png)![device-2021-08-06-115515](/uploads/390bfccdf8231c135c1d6f9defe1326f/device-2021-08-06-115515.png)Transfer content securely via SD cards and USB memory sticksIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/1946Text in blog comments has no padding on the left side (API 16)2021-09-02T12:26:21ZakwizgranText in blog comments has no padding on the left side (API 16)On the Galaxy Ace 2 (Android 4.1.2) blog posts are shown with the correct amount of padding but comments are not: the text touches the left side of the card. On other devices posts and comments have a similar amount of padding.
![device...On the Galaxy Ace 2 (Android 4.1.2) blog posts are shown with the correct amount of padding but comments are not: the text touches the left side of the card. On other devices posts and comments have a similar amount of padding.
![device-2021-02-19-142657](/uploads/afce2bc980a7e1ed9be254a25696e3ec/device-2021-02-19-142657.png)Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/992continuously disconnected/logged out from Briar2021-09-01T10:10:21Zfedecontinuously disconnected/logged out from BriarThe problem I'm reporting does not concern my Briar setup (I'm using LineageOS 14.1), but my friend Briar setup. She uses a stock Android (can't check the version right now). Here's what happens to her:
- when she power-on the phone, Br...The problem I'm reporting does not concern my Briar setup (I'm using LineageOS 14.1), but my friend Briar setup. She uses a stock Android (can't check the version right now). Here's what happens to her:
- when she power-on the phone, Briar autostarts and asks for the password
- for some time she appears logged in and we can send messages each other
- after some time (less than half an hour) she appears offline and she does not receive any message
- even if she starts again Briar and logs in again, after some time she's put out without any notice
I could not see any obvious mistake in her configuration.
But I'm very new to Briar, so do not take anything for granted.
Any hint on how to debug this problem is appreciated.
Thanks in advanceakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2148Hotspot QR codes aren't fully visible without scrolling2021-08-31T12:21:34ZakwizgranHotspot QR codes aren't fully visible without scrollingOn devices with relatively square aspect ratios, the QR codes that are shown when sharing the app offline aren't fully visible without scrolling. It may not be obvious that the view is scrollable.On devices with relatively square aspect ratios, the QR codes that are shown when sharing the app offline aren't fully visible without scrolling. It may not be obvious that the view is scrollable.Install via Bluetooth or Wi-FiDaniel LublinDaniel Lublin2021-07-31https://code.briarproject.org/briar/briar/-/issues/2056IllegalArgumentException: pointerIndex out of range2021-08-27T11:46:15ZakwizgranIllegalArgumentException: pointerIndex out of range* Android version: 11
* Phone model: Redmi Note 5
* Briar version: 1.3.4 (76b7e6f)
* User feedback: "Sent a picture, then click on it to show it."
Log snippet:
```
05-28 06:43:28.401 I/BaseActivity: Pausing ConversationActivity
05-28 06...* Android version: 11
* Phone model: Redmi Note 5
* Briar version: 1.3.4 (76b7e6f)
* User feedback: "Sent a picture, then click on it to show it."
Log snippet:
```
05-28 06:43:28.401 I/BaseActivity: Pausing ConversationActivity
05-28 06:43:28.416 I/BaseActivity: Creating ImageActivity
05-28 06:43:28.441 I/BaseActivity: Starting ImageActivity
05-28 06:43:28.444 I/BaseActivity: Resuming ImageActivity
05-28 06:43:28.894 I/BaseActivity: Stopping ConversationActivity
```
Stacktrace:
```
java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:2401)
at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2072)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2664)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1873)
at android.app.Activity.dispatchTouchEvent(Activity.java:4125)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446)
at android.view.View.dispatchPointerEvent(View.java:14568)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6022)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5825)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5316)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5491)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5548)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8086)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8037)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7998)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8209)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loop(Looper.java:183)
at android.app.ActivityThread.main(ActivityThread.java:7660)
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)
```
[Looks like](https://stackoverflow.com/a/13000343) this is a [very longstanding bug](https://issuetracker.google.com/issues/36931456) in the support library/AndroidX that was fixed recently. We may be able to fix the issue by upgrading the ViewPager library. Alternatively, various people on StackOverflow suggest workarounds that wrap the ViewPager to catch the exception.Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1981NPE from MaterialTapTargetPrompt when setting typeface2021-08-27T11:45:48ZakwizgranNPE from MaterialTapTargetPrompt when setting typeface* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerEx...* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerException: Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
at android.graphics.Typeface.create(Typeface.java:849)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptUtils.setTypefaceFromAttrs(PromptUtils.java:127)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptOptions.load(PromptOptions.java:248)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1139)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1122)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.showTransportsOnboarding(NavDrawerActivity.java:489)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2(NavDrawerActivity.java:181)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$xWqZhXc-2hRSJQvQHp-zwWTmweU.onChanged(Unknown Source:6)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:188)
at androidx.lifecycle.LiveData.observe(LiveData.java:203)
at org.briarproject.briar.android.util.UiUtils.observeOnce(UiUtils.java:397)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3(NavDrawerActivity.java:180)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$LIifbSpjf5QmEgmsWY6XA8WUmPg.onChanged(Unknown Source:4)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:149)
at androidx.lifecycle.LiveData.setValue(LiveData.java:307)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:91)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
```
Log snippet:
```
03-16 17:09:44.556 I/TorPlugin: Country code: IN
```
Perhaps country code IN could mean that the system typeface is different than on our test devices?Android 1.3https://code.briarproject.org/briar/briar/-/issues/2109AssertionError in RssFeedViewModel2021-08-27T11:44:00ZakwizgranAssertionError in RssFeedViewModel* Android version: 10
* Phone model: Xiaomi M2007J17G (gauguin_eea)
* Briar version: 1.3.5 (0040753)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.blog.RssFeedViewModel.retryImportFeed(RssFeedViewMod...* Android version: 10
* Phone model: Xiaomi M2007J17G (gauguin_eea)
* Briar version: 1.3.5 (0040753)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.blog.RssFeedViewModel.retryImportFeed(RssFeedViewModel.java:164)
at org.briarproject.briar.android.blog.RssFeedImportFailedDialogFragment.lambda$onCreateDialog$0(RssFeedImportFailedDialogFragment.java:49)
at org.briarproject.briar.android.blog.RssFeedImportFailedDialogFragment.lambda$onCreateDialog$0$RssFeedImportFailedDialogFragment(Unknown Source:0)
at org.briarproject.briar.android.blog.-$$Lambda$RssFeedImportFailedDialogFragment$pu5aDqHpggPx9uh0wirjeVhuMbA.onClick(Unknown Source:2)
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7574)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
```
Edited log:
```
07-09 09:10:45.890 I/IdentityManagerImpl: Identity loaded
07-09 09:10:45.893 I/LifecycleManagerImpl: Starting services
07-09 09:10:45.895 I/CleanupManagerImpl: Scheduling cleanup task in 1000 ms
07-09 09:10:45.917 I/PluginManagerImpl: Starting simplex plugins
07-09 09:10:45.917 I/PluginManagerImpl: Starting duplex plugins
07-09 09:10:45.963 I/BaseActivity: Pausing StartupActivity
07-09 09:10:45.976 I/BriarActivity: Recreating RssFeedActivity after signing in
07-09 09:10:45.979 I/BaseActivity: Starting RssFeedActivity
07-09 09:10:46.058 I/BaseActivity: Resuming RssFeedActivity
07-09 09:10:46.107 I/BaseActivity: Pausing RssFeedActivity
07-09 09:10:46.110 I/BaseActivity: Stopping RssFeedActivity
07-09 09:10:46.131 I/BaseActivity: Destroying RssFeedActivity
07-09 09:10:46.153 I/BaseActivity: Creating RssFeedActivity
07-09 09:10:46.194 I/BaseActivity: Starting RssFeedActivity
07-09 09:10:46.199 I/BaseActivity: Resuming RssFeedActivity
07-09 09:10:46.558 I/BaseActivity: Stopping StartupActivity
07-09 09:10:46.559 I/BaseActivity: Destroying StartupActivity
```Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/2093Inconsistency when navigating back to intro fragment and rotating device2021-08-27T11:42:38ZSebastianInconsistency when navigating back to intro fragment and rotating deviceOne can start the hotspot and go back to the intro fragment and then rotate the screen. It will then act as if you clicked the button. Maybe tricky to fix, unless going back to the intro fragment should kill the hotspot? Alternatively we...One can start the hotspot and go back to the intro fragment and then rotate the screen. It will then act as if you clicked the button. Maybe tricky to fix, unless going back to the intro fragment should kill the hotspot? Alternatively we could not put the intro fragment onto the back stack, making "back" navigate off the hotspot activity and back to the settings directly.Install via Bluetooth or Wi-FiSebastianSebastian2021-07-31https://code.briarproject.org/briar/briar/-/issues/2092Tapping "start hotspot" twice quickly can mess up the UI2021-08-27T11:41:38ZSebastianTapping "start hotspot" twice quickly can mess up the UI* possibly, "next" can also be tapped twice
* in other places, we just disable buttons after being tapped* possibly, "next" can also be tapped twice
* in other places, we just disable buttons after being tappedInstall via Bluetooth or Wi-FiIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2100We're asking for location permission although we probably don't need to on AP...2021-08-27T11:41:03ZSebastianWe're asking for location permission although we probably don't need to on API < 29Test instructions: on a device on API level 28 or lower, make sure we do not ask for the location permission. I.e. first go to the app settings and if the location permission is currently granted to the app, then revoke it. Afterwards st...Test instructions: on a device on API level 28 or lower, make sure we do not ask for the location permission. I.e. first go to the app settings and if the location permission is currently granted to the app, then revoke it. Afterwards start the app sharing procedure and expect that we do not ask for the location permission.
When starting the hotspot, we ask the user for the location permission on all API levels, although we probably only need to do this on API 29+.
At least on API 23 we can still successfully start the hotspot and share the app even if the location permission is denied.Install via Bluetooth or Wi-FiIvanaIvana2021-07-31