briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-03-07T11:48:17Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/250Inform users that they can't send another introduction when still having one ...2023-03-07T11:48:17ZNicoInform users that they can't send another introduction when still having one pendingTo reproduce: send ~~as many introductions to your friend as you can.~~ 2 introductions to the same friend.
```
23:12:27.249 [pool-2-thread-3] WARN o.b.b.desktop.viewmodel.DbViewModel - Unhandled exception in database executor
org.bria...To reproduce: send ~~as many introductions to your friend as you can.~~ 2 introductions to the same friend.
```
23:12:27.249 [pool-2-thread-3] WARN o.b.b.desktop.viewmodel.DbViewModel - Unhandled exception in database executor
org.briarproject.briar.api.client.ProtocolStateException: null
at org.briarproject.briar.introduction.IntroducerProtocolEngine.onRequestAction(IntroducerProtocolEngine.java:88)
at org.briarproject.briar.introduction.IntroductionManagerImpl.makeIntroduction(IntroductionManagerImpl.java:363)
at org.briarproject.briar.desktop.introduction.IntroductionViewModel$makeIntroduction$1.invoke(IntroductionViewModel.kt:109)
at org.briarproject.briar.desktop.introduction.IntroductionViewModel$makeIntroduction$1.invoke(IntroductionViewModel.kt:106)
at org.briarproject.briar.desktop.viewmodel.DbViewModel$runOnDbThread$1.invoke(DbViewModel.kt:47)
at org.briarproject.briar.desktop.viewmodel.DbViewModel$runOnDbThread$1.invoke(DbViewModel.kt:44)
at org.briarproject.briar.desktop.threading.BriarExecutorsImpl.onDbThread$lambda-0(BriarExecutorsImpl.kt:33)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0(TimeLoggingExecutor.java:36)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
```Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/331Simplify Introduction Contact List2023-03-07T11:48:16ZpaulSimplify Introduction Contact List![after-0.2.1-intro0](/uploads/4fa61a59af8eb4a7bb70bdad09c7b81b/after-0.2.1-intro0.png)
While re-using the code is nice, I'm not sure if the message counters, time of last message, and online status are important to display on the conta...![after-0.2.1-intro0](/uploads/4fa61a59af8eb4a7bb70bdad09c7b81b/after-0.2.1-intro0.png)
While re-using the code is nice, I'm not sure if the message counters, time of last message, and online status are important to display on the contact list for contact introduction. Might be useful to swap this out with a simplified contact list which just displays profile pictures, alias and name?Desktop 0.4.1Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar/-/issues/2421Link to original post is lost when RSS post is very long2023-03-06T16:08:14ZakwizgranLink to original post is lost when RSS post is very longWhen an RSS post is long enough that it needs to be truncated to fit into a Briar blog post, the link to the original post is lost.
This can currently be seen with the feed https://dynomight.net/feed.xml, where the post https://dynomigh...When an RSS post is long enough that it needs to be truncated to fit into a Briar blog post, the link to the original post is lost.
This can currently be seen with the feed https://dynomight.net/feed.xml, where the post https://dynomight.net/scaling/ gets truncated.https://code.briarproject.org/briar/briar/-/issues/110Account backups2023-03-04T16:19:41ZakwizgranAccount backupsMake it possible for the user to backup their Briar account to another device. The backup should use much stronger PBKDF parameters as it's likely to be stored insecurely and doesn't need to be decrypted quickly.Make it possible for the user to backup their Briar account to another device. The backup should use much stronger PBKDF parameters as it's likely to be stored insecurely and doesn't need to be decrypted quickly.https://code.briarproject.org/briar/briar-mailbox/-/issues/23Add Gradle witness (or something similar)2023-03-01T12:15:22ZSebastianAdd Gradle witness (or something similar)We could use the gradle witness plugin as in briar or maybe use the checksum-dependency plugin which has already been discussed here: https://code.briarproject.org/briar/briar/-/merge_requests/1175We could use the gradle witness plugin as in briar or maybe use the checksum-dependency plugin which has already been discussed here: https://code.briarproject.org/briar/briar/-/merge_requests/1175MailboxTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar-desktop/-/issues/500Build of project including briar fails on JDK 172023-02-27T10:52:13ZSebastianBuild of project including briar fails on JDK 17When running not just `./gradlew briar-desktop:test` but `./gradlew test` with JDK 17, then Gradle also runs the briar tests, which currently fails with `PollerImplTest` (and also a few others):
```
Unable to make protected java.securit...When running not just `./gradlew briar-desktop:test` but `./gradlew test` with JDK 17, then Gradle also runs the briar tests, which currently fails with `PollerImplTest` (and also a few others):
```
Unable to make protected java.security.SecureRandom(java.security.SecureRandomSpi,java.security.Provider) accessible: module java.base does not "opens java.security" to unnamed module @498d318c
java.lang.reflect.InaccessibleObjectException: Unable to make protected java.security.SecureRandom(java.security.SecureRandomSpi,java.security.Provider) accessible: module java.base does not "opens java.security" to unnamed module @498d318c
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
at org.jmock.imposters.ByteBuddyClassImposteriser.setConstructorsAccessible(ByteBuddyClassImposteriser.java:86)
at org.jmock.imposters.ByteBuddyClassImposteriser.imposterise(ByteBuddyClassImposteriser.java:65)
at org.jmock.Mockery.mock(Mockery.java:167)
at org.jmock.Mockery.mock(Mockery.java:143)
at org.briarproject.bramble.plugin.PollerImplTest.<init>(PollerImplTest.java:71)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:250)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:260)
at org.junit.runners.BlockJUnit4ClassRunner$2.runReflectiveCall(BlockJUnit4ClassRunner.java:309)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
```
I had a hunch that this was the reason we had the various `--add-opens` flags in `gradle.properties` which I removed in 3451ae6554970dd6dece962a4 because I did not see any reason to keep them. Adding them back however does not seem to solve this. Adding `--add-opens=java.base/java.security=ALL-UNNAMED` which seems to be what the error suggests could help, also does not.https://code.briarproject.org/briar/briar/-/issues/2414Links not clickable in Blogs2023-02-26T08:10:34Zre tiolusLinks not clickable in BlogsIn the latest 1.4.20 version, support for clickable links was implemented (!1757), but that doesn't seem to work on Blogs.In the latest 1.4.20 version, support for clickable links was implemented (!1757), but that doesn't seem to work on Blogs.https://code.briarproject.org/briar/briar/-/issues/1954Voice messages2023-02-26T08:07:02ZakwizgranVoice messagesSeveral users have asked to be able to send asynchronous voice messages (voice notes). This request was previously recorded under #985 (voice/video calls) but I'm moving it to its own ticket as the requirements and implementation are dif...Several users have asked to be able to send asynchronous voice messages (voice notes). This request was previously recorded under #985 (voice/video calls) but I'm moving it to its own ticket as the requirements and implementation are different.
Relevant comments from #985:
* https://code.briarproject.org/briar/briar/-/issues/985#note_28705
* https://code.briarproject.org/briar/briar/-/issues/985#note_44100
* https://code.briarproject.org/briar/briar/-/issues/985#note_47061https://code.briarproject.org/briar/briar/-/issues/1623Ability to share files of any types and size.2023-02-26T08:07:01ZVladislavAbility to share files of any types and size.Hi, it would be great to be able to send and receive any file you want.
I think it can be realized using OnionShare or Torrent.Hi, it would be great to be able to send and receive any file you want.
I think it can be realized using OnionShare or Torrent.https://code.briarproject.org/briar/briar-desktop/-/issues/338Everything is really small on high-density screens2023-02-25T20:22:43ZSebastianEverything is really small on high-density screensI've got a chance to test briar-desktop on an ultra HD screen (3820x2160px on a 14 inch display) on Linux.
Apparently, it's common that the content of apps looks really tiny on such screens, I think we know the issue very well from Andr...I've got a chance to test briar-desktop on an ultra HD screen (3820x2160px on a 14 inch display) on Linux.
Apparently, it's common that the content of apps looks really tiny on such screens, I think we know the issue very well from Android, where it's solved nicely. On XFCE here I do have an option in Settings → Appearance → Settings → Window Scaling where I can select 2x instead of 1x and most apps look good. Our app does not, not sure what we need to do to pick up this setting.
This screenshot makes this visible:
![Screenshot_2022-04-12_12-49-25](/uploads/fe5c04940e58eed1e532632b3a15200d/Screenshot_2022-04-12_12-49-25.png)https://code.briarproject.org/briar/briar-desktop/-/issues/493UI scale slider does not update underlying setting when changing using keyboard2023-02-25T10:28:31ZSebastianUI scale slider does not update underlying setting when changing using keyboardI can navigate to the UI scale slider using tab and change the slider position, however it does not cause an update to our settings.
It looks like the slider reports onValueChange events but no onValueChangeFinished event.
I think this...I can navigate to the UI scale slider using tab and change the slider position, however it does not cause an update to our settings.
It looks like the slider reports onValueChange events but no onValueChangeFinished event.
I think this should be solved on the Compose side and filed an issue there: https://github.com/JetBrains/compose-jb/issues/2798https://code.briarproject.org/briar/briar-desktop/-/issues/477Second login attempt after failed startup results in infinite loading screen2023-02-24T13:50:45ZMikolai GütschowSecond login attempt after failed startup results in infinite loading screenExperienced with the known database migration issue and version 0.4.0 on an old database.
The error screen is correctly shown, but allows to go back:
![image](/uploads/205466faf066bf4afc031ccca4d12137/image.png)
After entering the pas...Experienced with the known database migration issue and version 0.4.0 on an old database.
The error screen is correctly shown, but allows to go back:
![image](/uploads/205466faf066bf4afc031ccca4d12137/image.png)
After entering the password again, the loading screen stays forever and logs show:
```
14:44:19.987 [pool-1-thread-1] WARN o.b.b.desktop.login.StartupViewModel - Startup failed: SERVICE_ERROR
14:45:05.036 [pool-1-thread-1] WARN o.b.b.lifecycle.LifecycleManagerImpl - Already running
14:45:05.037 [pool-1-thread-1] INFO o.b.b.desktop.login.StartupViewModel - Already running
```Desktop 0.4.1SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/443Check and fix all i18n warnings found via code inspection2023-02-24T13:42:05ZSebastianCheck and fix all i18n warnings found via code inspectioneither add NON-NLS comments or `@file:Suppress("nls")` to ignore whole files (mostly useful for testing code)either add NON-NLS comments or `@file:Suppress("nls")` to ignore whole files (mostly useful for testing code)Desktop 0.4.1SebastianSebastianhttps://code.briarproject.org/briar/briar/-/issues/2416F-Droid shows a warning about Briar2023-02-23T14:10:00ZMarek KütheF-Droid shows a warning about BriarHello,
F-Droid tells me that Briar contains a security vulnerability and that I should uninstall Briar. Is this a false positive? If no, is it possible to remove this security hole?
![warn1](/uploads/3d76dde9c8050a84858e3193b4eb42fa/wa...Hello,
F-Droid tells me that Briar contains a security vulnerability and that I should uninstall Briar. Is this a false positive? If no, is it possible to remove this security hole?
![warn1](/uploads/3d76dde9c8050a84858e3193b4eb42fa/warn1.png)
![warn2](/uploads/5bf79a4aaef41049a0cc30e2cd168a67/warn2.png)https://code.briarproject.org/briar/briar/-/issues/2054TTL - Add contact at a distance2023-02-23T12:21:59ZIvanaTTL - Add contact at a distance### Add contact at a distance
- [ ] [Connect at a distance](https://code.briarproject.org/briar/briar/-/wikis/connect-at-a-distance)
- [ ] [Add already added contact at a distance](https://code.briarproject.org/briar/briar/-/wikis/add-...### Add contact at a distance
- [ ] [Connect at a distance](https://code.briarproject.org/briar/briar/-/wikis/connect-at-a-distance)
- [ ] [Add already added contact at a distance](https://code.briarproject.org/briar/briar/-/wikis/add-already-added-contact-at-distance)
- [ ] [Add contact at a distance when one contact is offline](https://code.briarproject.org/briar/briar/-/wikis/add-contact-at-distance-one-contact-offline)
- [ ] [Delete and recreate the contact at a distance](https://code.briarproject.org/briar/briar/-/wikis/delete-and-recreate-contact-at-distance)
- [ ] [Rotate device whilst adding contact at a distance](https://code.briarproject.org/briar/briar/-/wikis/rotate-screen-whilst-adding-contact-at-distance)
- [ ] [Add contacts at a distance whilst some contacts are Pending](https://code.briarproject.org/briar/briar/-/wikis/add-contact-whilst-pending-contacts)
- [ ] [Add contact after Pending contact timeout](https://code.briarproject.org/briar/briar/-/wikis/add-contact-after-time-out)https://code.briarproject.org/briar/briar/-/issues/1909When adding contact at distance, remind that both users need to send link2023-02-23T10:17:39ZIvanaWhen adding contact at distance, remind that both users need to send linkAs a new briar user, Ivana didn't find clear how to connect to other users via internet. These are the points that came up during the walk-through..
When a phone has no access to internet, or wifi, and the briar user select to add a co...As a new briar user, Ivana didn't find clear how to connect to other users via internet. These are the points that came up during the walk-through..
When a phone has no access to internet, or wifi, and the briar user select to add a contact, via 'at a distance' option, they are not warned about absence of internet connection...
- Should there be a message to the user that they are not connected to internet, therefore cannot use the 'connect at a distance option'?
- A sender then sends the code to a contacg via SMS.
- The recipient receives the code in an SMS and retrieves it (using copy/paste of the android phone - which to this user was not immediately clear as they were not familiar with copy/paste facility of the android phones
- The recipient then briar application, add new contact page, and pastes this code into the field provided.
(To a new user who receives a code with no explanation what to do with it, it may not be clear what it is for? this presuposes some familiarity with briar app)
- Then the user taps 'continue button'. What happens next is that they get the next screen where they are given a little green 'tick' that everything was correct, and they are asked to enter a nickname for their new contact.
- However, at this point, the recipient did not send their own code back to the the person who invited them. So alhough they are given the OK by the app, this new contact (on the recipient's phone) stays in the 'connecting', or 'waiting for the contact to come online'..; and nothign else happens.
- Of course the connection cannot be established because the first user (sender) did not receive their firend's (recipient's) code at this point.
Ther was a talk on mattermost about how this could be handled in a way that guides the recipient a bit more, so that connection is actually achieved.
Suggestions made were:
- popup box before the receiving user clicks on 'Continue' - that would remind them to send their code to the person who invited them. But this wqs thought to be quite annoying to the more experienced users - hving to dismiss this popup. To get around this annoyance, they could select, maybe, a checkbox that says: 'do not show this info again'.
- another suggestion was to include a little checkbox before enabling the continue button (like the checkboxes included in webpaged to signal that the user accepts the terms and conditions). It could say something like 'I sent my own code to the person who send me their own' or whatever makes more sense; This could be easy to use for experienced users, as it woudl just be a checkbox ont he screen, but for newbies, it would be guidance to follow the propoer procedure to establish a connection.
-https://code.briarproject.org/briar/briar/-/issues/1230Adding contacts remotely2023-02-23T10:15:44ZakwizgranAdding contacts remotelyUmbrella ticket for adding contacts remotely (sponsor 1, objective 1).Umbrella ticket for adding contacts remotely (sponsor 1, objective 1).Android 1.4https://code.briarproject.org/briar/briar/-/issues/1231Design protocol for adding contacts remotely2023-02-22T18:15:44ZakwizgranDesign protocol for adding contacts remotelySubtask of #1230.Subtask of #1230.akwizgranakwizgranhttps://code.briarproject.org/briar/briar-desktop/-/issues/491Settings screen should be scrollable2023-02-22T11:30:59ZSebastianSettings screen should be scrollableI noticed while testing !226 with a maximum UI scale factor and without the minimum size of the window being reset, that the settings screen gets cramped towards the lower end. Making it scrollable is probably a good idea anyway.I noticed while testing !226 with a maximum UI scale factor and without the minimum size of the window being reset, that the settings screen gets cramped towards the lower end. Making it scrollable is probably a good idea anyway.https://code.briarproject.org/briar/briar-mailbox/-/issues/157Tapping the Unlink (briar side) and Stop (mailbox side) at the same time - ma...2023-02-21T20:12:48ZIvanaTapping the Unlink (briar side) and Stop (mailbox side) at the same time - mailbox stuck in StoppingMailbox**Steps to reproduce**
- On two devices that are linked (I used Nokia 3.2 Android 10 for Briar and HTC E9 Android 5 for Mailbox) I open the mailbox status screen on each device.
- Then on briar I tap the unlink button and immediatley a...**Steps to reproduce**
- On two devices that are linked (I used Nokia 3.2 Android 10 for Briar and HTC E9 Android 5 for Mailbox) I open the mailbox status screen on each device.
- Then on briar I tap the unlink button and immediatley after (almost at the same time) I tap the Stop button on the mailbox side.
**Expected results**
This is a bit of a corner case, and not very likely to happen, but in case it does, the expected result should be graceful handling of this situation - either the wiping complete screen should be seen on the mailbox side, or mailbox stopped.
**Actual result**
Mailbox gets stuck in the Stopping Mailbox state[unlink_and_stop_button_together.txt](/uploads/01bc05f817f642e8fb97117654f106bb/unlink_and_stop_button_together.txt)
![Screenshot_20220810_130437](/uploads/c315d676d6aa79c1cde95cb8ba3f9255/Screenshot_20220810_130437.png)IvanaIvana