briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-01-26T09:14:50Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/467Theming does not work for preview of ConversationNoticeItemView2023-01-26T09:14:50ZSebastianTheming does not work for preview of ConversationNoticeItemViewI noticed that changing the theme does not work for ConversationNoticeItemView. It does however work for sibilings ConversationRequestItemView and ConversationMessageItemView. At first glance I wasn't able to find out why.
I hope it doe...I noticed that changing the theme does not work for ConversationNoticeItemView. It does however work for sibilings ConversationRequestItemView and ConversationMessageItemView. At first glance I wasn't able to find out why.
I hope it does work in the production / non-preview scenario!https://code.briarproject.org/briar/briar-desktop/-/issues/466Try accessibility on Windows2023-01-25T14:45:14ZSebastianTry accessibility on WindowsFirst step: identify how to use accessibility features on Windows in general. Is a 3rd party app required or is there something built-in?First step: identify how to use accessibility features on Windows in general. Is a 3rd party app required or is there something built-in?SebastianSebastianhttps://code.briarproject.org/briar/briar/-/issues/2411Xiaomi device Android 11, API 30 - crash after 'no battery restrictions' sele...2023-01-25T17:23:06ZIvanaXiaomi device Android 11, API 30 - crash after 'no battery restrictions' selectedSteps to reproduce:
- install briar debug (build 0cea137)
- when prompted go to device settings and select 'no battery restirctions'
- Briar crashes(logfile attached)
When restarted after crash, the user is not prompted to go back to ...Steps to reproduce:
- install briar debug (build 0cea137)
- when prompted go to device settings and select 'no battery restirctions'
- Briar crashes(logfile attached)
When restarted after crash, the user is not prompted to go back to battery restriction settings, but the 'Open Security settings', 'Boost speed', then 'Manual'. But when th euser navigates back to the Briar screen (by tapping the back button on the bottom of the screen, Briar crashes (logfile 2)
[Xiaomi_Briar_crash_settings.txt](/uploads/33d9e54f54cb5ccc95d8ad76205b3e91/Xiaomi_Briar_crash_settings.txt)
[Xiaomi_crash_settings_2.txt](/uploads/591436e71141cdfbf35e82c296a11312/Xiaomi_crash_settings_2.txt)https://code.briarproject.org/briar/briar-spec/-/issues/19Provide test cases as part of specification2023-02-14T22:34:30ZNicoProvide test cases as part of specificationWhen implementing Briar from the specifications in this project, test cases could be useful that allow developers to confirm that their implementations do what they are supposed to do. Some examples:
* given some briar:// link, confirm t...When implementing Briar from the specifications in this project, test cases could be useful that allow developers to confirm that their implementations do what they are supposed to do. Some examples:
* given some briar:// link, confirm that the right byte array including key and version is decoded
* given some public key (as byte array), confirm that the right briar:// link is generated
* given two briar:// links (and one of their private keys), confirm that the correct Tor Hidden Service .onion addresses are derived as part of BRP
I vaguely remember that test cases like those exist for other protocols or specifications. However, I'm not sure if the specifications are the right place to provide them or if there should rather be some sort of "test suite" that allows to test implementations regardless of their programming language.
As part of this issue, I'll link to places where tests like this are done in either briar-java or briar-rust.
### briar-java
* [KeyAgreementTest](https://code.briarproject.org/briar/briar/-/blob/release-1.4.20/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyAgreementTest.java)
### briar-rust
### References
* [Test vector in Elliptic Curve RFC 7748](https://www.rfc-editor.org/rfc/rfc7748#section-6.1)https://code.briarproject.org/briar/briar-desktop/-/issues/462Reply TextField UI Proposal2023-01-16T19:34:03ZpaulReply TextField UI ProposalI wrote up a small UI change to the forum reply UI to make it (in my opinion) a bit cleaner:
Current:
![experimental-reply-ui-before](/uploads/cbd795875ae007495b86dcbec4cb1e6e/experimental-reply-ui-before.png)
Proposal:
![experimental-...I wrote up a small UI change to the forum reply UI to make it (in my opinion) a bit cleaner:
Current:
![experimental-reply-ui-before](/uploads/cbd795875ae007495b86dcbec4cb1e6e/experimental-reply-ui-before.png)
Proposal:
![experimental-reply-ui-after](/uploads/7ef4d40d81e829b50523d2792f29b62f/experimental-reply-ui-after.png)https://code.briarproject.org/briar/briar-desktop/-/issues/461Show pending contact state2023-10-01T19:21:20ZMikolai GütschowShow pending contact stateWe currently don't tell the user a pending contact addition has failed and need to be re-started. Briar Android also shows current state late "Connecting..." iirc.
Related to #279.We currently don't tell the user a pending contact addition has failed and need to be re-started. Briar Android also shows current state late "Connecting..." iirc.
Related to #279.Desktop 0.7.0https://code.briarproject.org/briar/briar-desktop/-/issues/460Investigate Compose best-practices for lists2023-08-02T19:52:34ZMikolai GütschowInvestigate Compose best-practices for listsShould we use or is it worth it using `mutableStateListOf` as currently done in, e.g., `ContactsViewModel`? How to combine two different such state lists as currently done in `ContactListViewModel`? Can we have a common way of expressing...Should we use or is it worth it using `mutableStateListOf` as currently done in, e.g., `ContactsViewModel`? How to combine two different such state lists as currently done in `ContactListViewModel`? Can we have a common way of expressing a "still loading" state?https://code.briarproject.org/briar/briar-desktop/-/issues/459Migrate to using compose built-in `Badge` for unread counters2023-01-13T22:17:18ZMikolai GütschowMigrate to using compose built-in `Badge` for unread counterssee https://developer.android.com/reference/kotlin/androidx/compose/material/package-summary#Badge(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function1)see https://developer.android.com/reference/kotlin/androidx/compose/material/package-summary#Badge(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function1)https://code.briarproject.org/briar/briar-desktop/-/issues/458Research on and decide for across-screen navigation libraries/pattern2023-08-25T13:33:35ZMikolai GütschowResearch on and decide for across-screen navigation libraries/patternE.g. needed for #453. Quoting @grote from there:
> I only know that there's hundreds of competing navigation libraries for compose, not sure we want add our own implementation to the mix. Many of those probably only work on Android.E.g. needed for #453. Quoting @grote from there:
> I only know that there's hundreds of competing navigation libraries for compose, not sure we want add our own implementation to the mix. Many of those probably only work on Android.Desktop 0.7.0https://code.briarproject.org/briar/briar-desktop/-/issues/453Let user open forum from within request message (only) after accepting the in...2023-05-11T21:20:22ZMikolai GütschowLet user open forum from within request message (only) after accepting the invitationThis issue consists of two parts:
- Currently clicking on "Open" does not do anything (`ConversationRequestItem(onOpenRequestedShareable = {})` is the default)
- After declining an invitation, "Open" is also shown to the user which doesn...This issue consists of two parts:
- Currently clicking on "Open" does not do anything (`ConversationRequestItem(onOpenRequestedShareable = {})` is the default)
- After declining an invitation, "Open" is also shown to the user which doesn't make sense:
![image](/uploads/4c950cc496d574839b90d876ac1adf3a/image.png)https://code.briarproject.org/briar/briar-desktop/-/issues/452User needs to allow access because Windows Defender initially blocks connections2023-01-12T12:02:46ZSebastianUser needs to allow access because Windows Defender initially blocks connectionsThis is what it looks like when initially starting Briar Desktop on Windows 10:
![Firewall](/uploads/d9e56e866fb4fbd05fc45e512e9b99cc/Firewall.png)
This was initially brought up in [this thread](https://code.briarproject.org/briar/bria...This is what it looks like when initially starting Briar Desktop on Windows 10:
![Firewall](/uploads/d9e56e866fb4fbd05fc45e512e9b99cc/Firewall.png)
This was initially brought up in [this thread](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/274#note_73767).
Suggestions include:
* @ialokim: Perhaps we should consider showing information to the user explaining that they should accept connections if they want Briar to work correctly. Or if we want to be even fancier, somehow check if the connections are blocked by the firewall and then show some kind of dialog to the user explaining how the block can be undone. Probably something for a new issue in any case.
* @akwizgran: BTW there's an API for adding firewall rules, which IIRC prevents the Windows Defender dialog from popping up.
https://learn.microsoft.com/en-gb/previous-versions/windows/desktop/ics/windows-firewall-advanced-security-start-pagehttps://code.briarproject.org/briar/briar-desktop/-/issues/450Add explainer information for release on how to install downloaded MSI from t...2023-08-25T13:33:35ZSebastianAdd explainer information for release on how to install downloaded MSI from the internetDesktop 0.7.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/448Problem to add contact among Windows and one Android test device2023-01-11T10:17:00ZSebastianProblem to add contact among Windows and one Android test deviceI have a combination of devices that doesn't seem to be able to be added to one another successfully. First reported here: https://code.briarproject.org/briar/briar-desktop/-/merge_requests/8#note_73316
One device is the Nokia 2.4 with ...I have a combination of devices that doesn't seem to be able to be added to one another successfully. First reported here: https://code.briarproject.org/briar/briar-desktop/-/merge_requests/8#note_73316
One device is the Nokia 2.4 with some debug version of Briar Android installed. The other device is a Windows machine running Briar Desktop. The issue has been reproduced with a second Windows machine and the same Android device. I have not reset the account on the Android device since or installed a different version in order to still have access to the problematic combination of devices. In both cases, a different Android device could add the Windows machine and vice versa.https://code.briarproject.org/briar/briar-desktop/-/issues/446Add preference for setting an Avatar image2023-01-07T18:43:04ZSebastianAdd preference for setting an Avatar imagehttps://code.briarproject.org/briar/briar-spec/-/issues/17Include spec of briar:// links in BRP spec2023-01-06T16:52:10ZNicoInclude spec of briar:// links in BRP specContacts can be added in Briar by exchanging briar:// links. Underneath the Bramble Rendezvous Protocol (BRP) is used, however, nowhere it's specified how the briar:// links are constructed.
Asking @akwizgran, he pointed me to [`Pending...Contacts can be added in Briar by exchanging briar:// links. Underneath the Bramble Rendezvous Protocol (BRP) is used, however, nowhere it's specified how the briar:// links are constructed.
Asking @akwizgran, he pointed me to [`PendingContactFactoryImpl#parseHandshakeLink()`](https://code.briarproject.org/briar/briar/-/blob/beta-1.4.19/bramble-core/src/main/java/org/briarproject/bramble/contact/PendingContactFactoryImpl.java#L59), adding:
> it's a version byte (zero is the current version) followed by a 32-byte curve25519 public key, all base32-encoded to give 53 base32 charshttps://code.briarproject.org/briar/briar-mailbox/-/issues/181Splash screen on Android 12 does not look nice2023-08-28T16:00:10ZSebastianSplash screen on Android 12 does not look niceWith Android 12 there are now [Splash screens](https://developer.android.com/develop/ui/views/launch/splash-screen) when launching the app, showing our logo. In our case that logo is white on a gray background. I think we should probably...With Android 12 there are now [Splash screens](https://developer.android.com/develop/ui/views/launch/splash-screen) when launching the app, showing our logo. In our case that logo is white on a gray background. I think we should probably set the tint in the app icon directly instead of the fragment. We just need to check light mode and dark mode both look good.https://code.briarproject.org/briar/briar/-/issues/2406Error fragment after scanning QR code for adding contacts does not auto-rotat...2022-12-21T12:21:47ZSebastianError fragment after scanning QR code for adding contacts does not auto-rotate to landscape modeAfter trying to add a contact nearby and scanning a random QR code, an error fragment is displayed. Since we're disabling auto-rotation in the scanning fragment and set that on the activity, the following fragment has the same restrictio...After trying to add a contact nearby and scanning a random QR code, an error fragment is displayed. Since we're disabling auto-rotation in the scanning fragment and set that on the activity, the following fragment has the same restriction. We call there:
```
requireActivity().setRequestedOrientation(SCREEN_ORIENTATION_NOSENSOR);
```
and probably could just call this in the error fragment:
```
requireActivity().setRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED);
```https://code.briarproject.org/briar/briar-desktop/-/issues/444Fine grained notification settings2022-12-20T13:04:13ZSebastianFine grained notification settingsCurrently it's only possible to change visual and sound notifications separately but not whether notifications are shown/played for private messages, forums etc. individually.Currently it's only possible to change visual and sound notifications separately but not whether notifications are shown/played for private messages, forums etc. individually.https://code.briarproject.org/briar/briar-desktop/-/issues/442Use bisection method for finding the best image compression2022-12-10T07:45:37ZJens KorteUse bisection method for finding the best image compressionAt https://code.briarproject.org/briar/briar-desktop/-/blob/main/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt#L66 the best image size is found by
```
for (quality in 100 downTo 1 ...At https://code.briarproject.org/briar/briar-desktop/-/blob/main/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt#L66 the best image size is found by
```
for (quality in 100 downTo 1 step 10) {
```
How about replacing the for loop with a loop using the [bisection method](https://en.wikipedia.org/wiki/Bisection_method).https://code.briarproject.org/briar/briar-desktop/-/issues/441Kotlin BackendException while compiling2022-12-20T12:20:00ZSebwinKotlin BackendException while compilingI recently get this error frequently while trying to build the app. Often after switching branches, happens both on Windows and Linux. Not sure what's the exact cause.
```
org.jetbrains.kotlin.backend.common.BackendException: Backend In...I recently get this error frequently while trying to build the app. Often after switching branches, happens both on Windows and Linux. Not sure what's the exact cause.
```
org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: ~/gitlab/briar/briar-desktop/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
The root cause java.lang.AssertionError was thrown at: org.jetbrains.kotlin.ir.util.IrUtilsKt.copyValueParametersToStatic(IrUtils.kt:887)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:239)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:235)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:68)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:55)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:41)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:96)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:29)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:96)
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:43)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeLowerings(JvmIrCodegenFactory.kt:294)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.runLowerings(KotlinToJVMBytecodeCompiler.kt:339)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:126)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:58)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:158)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:53)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:99)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:47)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:475)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:125)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:373)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally$default(IncrementalCompilerRunner.kt:318)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:180)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:79)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:625)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:101)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1746)
at jdk.internal.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
```