briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-01-12T12:02:46Zhttps://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/421Visual bug in forum with large author names2023-01-11T21:49:54ZMikolai GütschowVisual bug in forum with large author namesalthough the name is abbreviated (with ellipsis), the trust indicators are moved to the right:
![grafik](/uploads/258ace9883049e0d3364bc3f46ba8507/grafik.png)although the name is abbreviated (with ellipsis), the trust indicators are moved to the right:
![grafik](/uploads/258ace9883049e0d3364bc3f46ba8507/grafik.png)https://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/437Refactor deterministic test data2023-01-09T21:52:21ZMikolai GütschowRefactor deterministic test dataAs a follow-up to !267 where forums are not yet shared with contacts. We were discussing the following points:
- change the test data creator API to not use a given number of contacts/private chats, but rather allow to pick specific con...As a follow-up to !267 where forums are not yet shared with contacts. We were discussing the following points:
- change the test data creator API to not use a given number of contacts/private chats, but rather allow to pick specific contacts/private chats from the `main` function (effectively "lifting" the DSL up to that level)
- allow cross-references from defined forums to contacts those can be shared with
- support read and sent flags for private messages (and forum posts?) in the DSLMikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/440Sometimes when starting the test with two connected accounts, the shared foru...2023-01-09T21:51:52ZSebastianSometimes when starting the test with two connected accounts, the shared forum is only available one of both accountsI haven't seen anything unusual in the logs, but will try to record one next time I see this happen.I haven't seen anything unusual in the logs, but will try to record one next time I see this happen.https://code.briarproject.org/briar/briar-desktop/-/issues/275Explain what's currently possible with Briar Desktop2023-01-09T21:39:57ZNicoExplain what's currently possible with Briar DesktopWhen creating a new account or when being on the empty contact list page just after starting to use Briar (latter was recommended), we could use the chance to explain what features Briar Desktop currently offer.
At the same time we coul...When creating a new account or when being on the empty contact list page just after starting to use Briar (latter was recommended), we could use the chance to explain what features Briar Desktop currently offer.
At the same time we could also explain the features, à la "Using Briar you can
* send private messages to contacts that can be only read by your contact and you.
* send (private) messages to a group of contacts that can be read by all members of the private group.
* post messages to a forum that can be read by anyone in the forum.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/315Use private Composable functions where possible2023-01-09T21:39:57ZMikolai GütschowUse private Composable functions where possibleThe following discussion from !165 should be addressed:
- [ ] @sebkur started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/165#note_63088): (+2 comments)
> Hmm, I guess [having private Composab...The following discussion from !165 should be addressed:
- [ ] @sebkur started a [discussion](https://code.briarproject.org/briar/briar-desktop/-/merge_requests/165#note_63088): (+2 comments)
> Hmm, I guess [having private Composable functions has] been possible all the time, we just haven't made use of it the way one usually would. For example looking at `PrivateMessageScreen`, all methods except `PrivateMessageScreen()` could be private. I think that's pretty common in our codebase. I think we didn't stumble upon it as IntelliJ doesn't warn about @Composable functions that could be private like it does with regular methods that could be private.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/268Wrong text when accepting introduction with already-known contact2023-01-09T21:39:57ZNicoWrong text when accepting introduction with already-known contactIt should say something like
> You accepted the introduction to Bob, but as you already have Bob in your contact list, nothing will change.
Currently it shows the same messages as always, à la "You accepted and once Bob accepts, too, th...It should say something like
> You accepted the introduction to Bob, but as you already have Bob in your contact list, nothing will change.
Currently it shows the same messages as always, à la "You accepted and once Bob accepts, too, they will show up in your contact list."Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/265Indicate what timestamp in contact list is about2023-01-09T21:39:56ZNicoIndicate what timestamp in contact list is aboutUntil https://code.briarproject.org/briar/briar-desktop/-/issues/262 is implemented, it might not be clear what the timestamp in the contact list is about. Is it the last time we've seen the contact or the timestamp of the last message i...Until https://code.briarproject.org/briar/briar-desktop/-/issues/262 is implemented, it might not be clear what the timestamp in the contact list is about. Is it the last time we've seen the contact or the timestamp of the last message in that chat? (it's the latter)Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/204Better rendering of multiple images in a single message2023-01-09T21:39:56ZSebastianBetter rendering of multiple images in a single messageWhile !94 already adds support for rendering multi-image messages, it would nice if they were rendered in a similarly nice layout as on Android, see https://code.briarproject.org/briar/briar/-/merge_requests/1010 for a reference.While !94 already adds support for rendering multi-image messages, it would nice if they were rendered in a similarly nice layout as on Android, see https://code.briarproject.org/briar/briar/-/merge_requests/1010 for a reference.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/274Suggets users to put their password inside a password manager2023-01-09T21:39:56ZNicoSuggets users to put their password inside a password managerUsers might not know of password managers and we could therefore provide an incentive to start using them.Users might not know of password managers and we could therefore provide an incentive to start using them.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/236Use native windows for dialogs2023-01-09T21:39:56ZMikolai GütschowUse native windows for dialogse.g. for the AddContactDialog and AboutDialog, which do not strictly require to be modal.e.g. for the AddContactDialog and AboutDialog, which do not strictly require to be modal.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/226NPE when introducing second test contact after already completed introduction2023-01-09T21:39:56ZNicoNPE when introducing second test contact after already completed introduction_I tried to reproduce this but failed because one contact out of 3 didn't want to connect with the other two inside the test environment._
Steps to reproduce:
* Start `TestWithThreeConnectedTemporaryAccounts::main`
* Introduce your firs..._I tried to reproduce this but failed because one contact out of 3 didn't want to connect with the other two inside the test environment._
Steps to reproduce:
* Start `TestWithThreeConnectedTemporaryAccounts::main`
* Introduce your first contact to the second one
* accept the introductions from both accounts
* try to introduce your second account to the first
```
Exception in thread "main" java.lang.NullPointerException
at androidx.compose.ui.layout.SubcomposeLayoutState.disposeCurrentNodes$ui(SubcomposeLayout.kt:386)
at androidx.compose.ui.layout.SubcomposeLayoutKt$SubcomposeLayout$3$invoke$$inlined$onDispose$1.dispose(Effects.kt:484)
at androidx.compose.runtime.DisposableEffectImpl.onForgotten(Effects.kt:85)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:793)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:496)
at androidx.compose.ui.layout.SubcomposeLayoutState.disposeCurrentNodes$ui(SubcomposeLayout.kt:386)
at androidx.compose.ui.layout.SubcomposeLayoutKt$SubcomposeLayout$3$invoke$$inlined$onDispose$1.dispose(Effects.kt:484)
at androidx.compose.runtime.DisposableEffectImpl.onForgotten(Effects.kt:85)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:793)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:496)
at androidx.compose.ui.layout.SubcomposeLayoutState.disposeCurrentNodes$ui(SubcomposeLayout.kt:386)
at androidx.compose.ui.layout.SubcomposeLayoutKt$SubcomposeLayout$3$invoke$$inlined$onDispose$1.dispose(Effects.kt:484)
at androidx.compose.runtime.DisposableEffectImpl.onForgotten(Effects.kt:85)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:793)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:496)
at androidx.compose.ui.ComposeScene.close(ComposeScene.skiko.kt:195)
at androidx.compose.ui.awt.ComposeLayer.dispose(ComposeLayer.desktop.kt:362)
at androidx.compose.ui.awt.ComposeWindowDelegate.dispose(ComposeWindowDelegate.desktop.kt:113)
at androidx.compose.ui.awt.ComposeWindow.dispose(ComposeWindow.desktop.kt:117)
at androidx.compose.ui.window.Window_desktopKt$Window$4.invoke(Window.desktop.kt:193)
at androidx.compose.ui.window.Window_desktopKt$Window$4.invoke(Window.desktop.kt:193)
at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2$invoke$$inlined$onDispose$1.dispose(Effects.kt:484)
at androidx.compose.runtime.DisposableEffectImpl.onForgotten(Effects.kt:85)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:793)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:647)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:488)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:425)
at androidx.compose.ui.window.YieldFrameClock.withFrameNanos(Application.desktop.kt:262)
at androidx.compose.ui.window.YieldFrameClock$withFrameNanos$1.invokeSuspend(Application.desktop.kt)
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)
```
After this the window with the error message got closed. Then I got another error in the second window with this:
```
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.briarproject.briar.desktop.conversation.ConversationRequestItemViewKt$ConversationRequestItemView$4.invoke(ConversationRequestItemView.kt:85)
at org.briarproject.briar.desktop.conversation.ConversationRequestItemViewKt$ConversationRequestItemView$4.invoke(ConversationRequestItemView.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 org.briarproject.briar.desktop.conversation.ConversationItemViewKt$ConversationItemView$2$1$2$1.invoke(ConversationItemView.kt:181)
at org.briarproject.briar.desktop.conversation.ConversationItemViewKt$ConversationItemView$2$1$2$1.invoke(ConversationItemView.kt:180)
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.material.SurfaceKt$Surface$6.invoke(Surface.kt:268)
at androidx.compose.material.SurfaceKt$Surface$6.invoke(Surface.kt:255)
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:228)
at androidx.compose.material.SurfaceKt.Surface-F-jzlyU(Surface.kt:252)
at androidx.compose.material.SurfaceKt.Surface-F-jzlyU(Surface.kt:110)
at androidx.compose.material.CardKt.Card-F-jzlyU(Card.kt:66)
at org.briarproject.briar.desktop.conversation.ConversationItemViewKt$ConversationItemView$2$1$2.invoke(ConversationItemView.kt:174)
at org.briarproject.briar.desktop.conversation.ConversationItemViewKt$ConversationItemView$2$1$2.invoke(ConversationItemView.kt:173)
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.foundation.ContextMenuProvider_desktopKt$ContextMenuArea$2.invoke(ContextMenuProvider.desktop.kt:53)
at androidx.compose.foundation.ContextMenuProvider_desktopKt$ContextMenuArea$2.invoke(ContextMenuProvider.desktop.kt:51)
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.foundation.ContextMenuProvider_desktopKt$ContextMenuDataProvider$2.invoke(ContextMenuProvider.desktop.kt:79)
at androidx.compose.foundation.ContextMenuProvider_desktopKt$ContextMenuDataProvider$2.invoke(ContextMenuProvider.desktop.kt:78)
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:228)
at androidx.compose.foundation.ContextMenuProvider_desktopKt.ContextMenuDataProvider(ContextMenuProvider.desktop.kt:76)
at androidx.compose.foundation.ContextMenuProvider_desktopKt.ContextMenuArea(ContextMenuProvider.desktop.kt:51)
at org.briarproject.briar.desktop.conversation.ConversationItemViewKt.ConversationItemView(ConversationItemView.kt:167)
at org.briarproject.briar.desktop.conversation.ConversationRequestItemViewKt.ConversationRequestItemView(ConversationRequestItemView.kt:82)
at org.briarproject.briar.desktop.conversation.ConversationListKt$ConversationList$1$1$invoke$$inlined$itemsIndexed$default$2.invoke(LazyDsl.kt:270)
at org.briarproject.briar.desktop.conversation.ConversationListKt$ConversationList$1$1$invoke$$inlined$itemsIndexed$default$2.invoke(LazyDsl.kt:119)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:135)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.foundation.lazy.LazyListScopeImpl$items$1$1.invoke(LazyListScopeImpl.kt:39)
at androidx.compose.foundation.lazy.LazyListScopeImpl$items$1$1.invoke(LazyListScopeImpl.kt:39)
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:228)
at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactory$CachedItemContent$content$1.invoke(LazyLayoutItemContentFactory.kt:102)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactory$CachedItemContent$content$1.invoke(LazyLayoutItemContentFactory.kt:93)
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.ui.layout.SubcomposeLayoutState$subcompose$2$1$1.invoke(SubcomposeLayout.kt:251)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2$1$1.invoke(SubcomposeLayout.kt:251)
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.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:72)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2582)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2571)
at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:247)
at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2571)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime(Composer.kt:2522)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:748)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime(Composer.kt:2987)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime(Composer.kt:2987)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime(Composer.kt:2987)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:433)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcomposeInto(SubcomposeLayout.kt:269)
at androidx.compose.ui.layout.SubcomposeLayoutState.access$subcomposeInto(SubcomposeLayout.kt:154)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:244)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:241)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.withNoObservations(SnapshotStateObserver.kt:142)
at androidx.compose.ui.node.OwnerSnapshotObserver.withNoSnapshotReadObservation$ui(OwnerSnapshotObserver.kt:55)
at androidx.compose.ui.node.LayoutNode.withNoSnapshotReadObservation$ui(LayoutNode.kt:1140)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:241)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:235)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose$ui(SubcomposeLayout.kt:224)
at androidx.compose.ui.layout.SubcomposeLayoutState$Scope.subcompose(SubcomposeLayout.kt:490)
at androidx.compose.foundation.lazy.layout.LazyLayoutPlaceablesProvider.getAndMeasure-0kLqBqw(LazyMeasurePolicy.kt:58)
at androidx.compose.foundation.lazy.LazyMeasuredItemProvider.getAndMeasure-ZjPyQlc(LazyMeasuredItemProvider.kt:45)
at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-DCyOChk(LazyListMeasure.kt:140)
at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.measure-3p2s80s(LazyList.kt:230)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke-0kLqBqw(LazyLayout.kt:55)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke(LazyLayout.kt:44)
at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:355)
at androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0(InnerPlaceable.kt:55)
at androidx.compose.foundation.layout.PaddingValuesModifier.measure-3p2s80s(Padding.kt:417)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:306)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:118)
at androidx.compose.foundation.layout.PaddingModifier.measure-3p2s80s(Padding.kt:364)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.foundation.layout.FillModifier.measure-3p2s80s(Size.kt:658)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:99)
at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:98)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1798)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:121)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui(OwnerSnapshotObserver.kt:88)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui(OwnerSnapshotObserver.kt:76)
at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:98)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui(LayoutNode.kt:1269)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui$default(LayoutNode.kt:1265)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure(MeasureAndLayoutDelegate.kt:170)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:228)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:38)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:201)
at androidx.compose.ui.platform.SkiaBasedOwner.measureAndLayout(SkiaBasedOwner.skiko.kt:266)
at androidx.compose.ui.node.Owner$DefaultImpls.measureAndLayout$default(Owner.kt:182)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui(SkiaBasedOwner.skiko.kt:342)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui$default(SkiaBasedOwner.skiko.kt:341)
at androidx.compose.ui.ComposeScene.onMouseMove(ComposeScene.skiko.kt:465)
at androidx.compose.ui.ComposeScene.sendPointerEvent-Kr8mkKM(ComposeScene.skiko.kt:429)
at androidx.compose.ui.ComposeScene.sendPointerEvent-Kr8mkKM$default(ComposeScene.skiko.kt:397)
at androidx.compose.ui.awt.ComposeLayer_desktopKt.onMouseEvent(ComposeLayer.desktop.kt:415)
at androidx.compose.ui.awt.ComposeLayer_desktopKt.access$onMouseEvent(ComposeLayer.desktop.kt:1)
at androidx.compose.ui.awt.ComposeLayer$onMouseEvent$1.invoke(ComposeLayer.desktop.kt:273)
at androidx.compose.ui.awt.ComposeLayer$onMouseEvent$1.invoke(ComposeLayer.desktop.kt:269)
at androidx.compose.ui.awt.ComposeLayer.catchExceptions(ComposeLayer.desktop.kt:89)
at androidx.compose.ui.awt.ComposeLayer.onMouseEvent(ComposeLayer.desktop.kt:269)
at androidx.compose.ui.awt.ComposeLayer.access$onMouseEvent(ComposeLayer.desktop.kt:70)
at androidx.compose.ui.awt.ComposeLayer$3.mouseEntered(ComposeLayer.desktop.kt:251)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6623)
at java.desktop/java.awt.Component.processEvent(Component.java:6379)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
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:742)
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 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/341Briar Desktop Accessibility Audit (Ubuntu+Mac)2023-01-09T21:39:55ZElio Qoshielio@ura.designBriar Desktop Accessibility Audit (Ubuntu+Mac)The accessibility audit supported by OTF has been completed, following is a detailed spreadsheet report with screenshots and recommendations on how to address over 70 accessibility issues. The accessibility audit has been conducted with ...The accessibility audit supported by OTF has been completed, following is a detailed spreadsheet report with screenshots and recommendations on how to address over 70 accessibility issues. The accessibility audit has been conducted with keyboard as well as screen readers (Voice Over on macOS and Orca on Ubuntu).
https://docs.google.com/spreadsheets/d/17G_qYlHzXJJwyc7d2y6vXC-qyDA2ia-dqbBpuQXnteE/edit?usp=sharing
Each issue includes various details for triaging and provided required context:
- Issue Number
- Environment (Operating System details)
- Page Name (which screen of the application this issue appears in)
- Issues/Summary (issue description)
- Actual Result (the behavior of the issue)
- Expected Result (how the experience should behave ideally)
- User Impact (the repercussions of the issue)
- Screen Images (annotated screenshot)
- Recommendation (how to solve this issue)
- WCAG Guideline (link on the WCAG chapter the issue violates)
- Severity ( how severe this issue is)
[Briar_Desktop_Accessibility_Report.ods](/uploads/5360e4fc7f43fe4336d1e29345e2d628/Briar_Desktop_Accessibility_Report.ods)[Screenshots.zip](/uploads/b180dda7e0374769cb8936cca798c546/Screenshots.zip)Desktop 1.0.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/240Improve warning for users about potential attack when creating contacts2023-01-09T21:39:55ZSebastianImprove warning for users about potential attack when creating contactsAs discussed in #82 there can be attacks related to adding contacts where an attacker might try to find out which contacts somebody has.
We plan to implement a simpler variant of the solution from Android in !105 and pick this up here.As discussed in #82 there can be attacks related to adding contacts where an attacker might try to find out which contacts somebody has.
We plan to implement a simpler variant of the solution from Android in !105 and pick this up here.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/208Investigate using sp units instead of dp2023-01-09T21:39:55ZSebastianInvestigate using sp units instead of dpIt's possible we should be using `sp` units instead of `dp`, but I'm not sure.
It's not straightforward to convert `sp` to `dp`, so keeping this here to not having to research this again:
```kotlin
object DensityUtils {
@Composabl...It's possible we should be using `sp` units instead of `dp`, but I'm not sure.
It's not straightforward to convert `sp` to `dp`, so keeping this here to not having to research this again:
```kotlin
object DensityUtils {
@Composable
fun TextUnit.dp() = with(LocalDensity.current) { this@dp.toDp() }
}
```Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/231Handle NoSuchContactException when loading contact or messages in Conversatio...2023-01-09T21:39:55ZNicoHandle NoSuchContactException when loading contact or messages in ConversationViewModelCurrently the whole app most likely crashes, I think.
https://code.briarproject.org/briar/briar-desktop/-/blob/d1e668dec33d8f309a6f6d99bbc8b4af015475d2/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt...Currently the whole app most likely crashes, I think.
https://code.briarproject.org/briar/briar-desktop/-/blob/d1e668dec33d8f309a6f6d99bbc8b4af015475d2/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt#L275Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/205Make images in conversation clickable for bigger view2023-01-09T21:39:55ZSebastianMake images in conversation clickable for bigger viewClicking an image could open a dialog or similar where the image can be shown in greater detail. Well the image quality at 32Kb doesn't really offer greater detail at the size images are currently rendered in the conversation. Maybe, if ...Clicking an image could open a dialog or similar where the image can be shown in greater detail. Well the image quality at 32Kb doesn't really offer greater detail at the size images are currently rendered in the conversation. Maybe, if we decrease their size there, it actually will make more senseDesktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/203Sending multiple images at once2023-01-09T21:39:54ZSebastianSending multiple images at onceOn Android, it's possible to send multiple images at once in a single message.
This is how it's rendered there: https://code.briarproject.org/briar/briar/-/merge_requests/1010
While !94 adds support for sending single images and display...On Android, it's possible to send multiple images at once in a single message.
This is how it's rendered there: https://code.briarproject.org/briar/briar/-/merge_requests/1010
While !94 adds support for sending single images and displaying mutiple received images, we don't yet have a mechanism for sending multiple images.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/277Explain more when adding contacts2023-01-09T21:39:54ZNicoExplain more when adding contactsBriar Android explains what to do with the links, but on the Desktop users currently might think that's it's enough to just paste the friend's link.
We should also use this chance to tell people that contact has to be made within 48 hou...Briar Android explains what to do with the links, but on the Desktop users currently might think that's it's enough to just paste the friend's link.
We should also use this chance to tell people that contact has to be made within 48 hours, otherwise the process of adding links has to be done again. This is most probably also an issue on Android?Desktop 1.0.0